view SFDemoUnit.h @ 1:f3fd4e19cec0 tip

first binary upload
author wenx <xue.wen@eecs.qmul.ac.uk>
date Wed, 10 Aug 2011 14:56:28 +0100
parents a6a46af64546
children
line wrap: on
line source
/*
    Harmonic Visualiser

    An audio file viewer and editor.
    Centre for Digital Music, Queen Mary, University of London.
    This file copyright 2011 Wen Xue.

    This program is free software; you can redistribute it and/or
    modify it under the terms of the GNU General Public License as
    published by the Free Software Foundation; either version 2 of the
    License, or (at your option) any later version. 
*/
//---------------------------------------------------------------------------

#ifndef SFDemoUnitH
#define SFDemoUnitH
//---------------------------------------------------------------------------
/*
  SFDemoUnit.cpp implements the source-filter modelling demo of HV.
*/

#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
#include "AudioPac.h"
#include "WaveView.h"
#include "EventBoxUnit.h"
#include "hssf.h"
#include "SUThread.h"
#include <ComCtrls.hpp>
#include <Dialogs.hpp>

//---------------------------------------------------------------------------



class TSFDemoForm : public TForm
{
__published:	// IDE-managed Components
  TPanel *Panel1;
  TPanel *Panel2;
  TSplitter *Splitter1;
  TSplitter *Splitter2;
  TPanel *Panel3;
  TSaveDialog *SaveDialog1;
	TPanel *Panel4;
	TSplitter *Splitter3;
	TPanel *Panel5;
	TPanel *Panel10;
	TLabel *Label13;
	TPageControl *PageControl1;
	TTabSheet *AmpOverSheet;
	TTabSheet *AmpCycleSheet;
	TLabel *Label9;
	TLabel *Label15;
	TLabel *Label16;
	TSplitter *Splitter5;
	TPanel *PanelControl;
  TListBox *MethodListBox;
	TEdit *FEdit;
	TComboBox *FScaleCombo;
	TEdit *ThetaEdit;
	TPanel *Panel7;
	TSplitter *Splitter4;
	TPanel *Panel8;
	TSplitter *Splitter6;
	TImage *Image0;
	TImage *Image1;
	TPanel *Panel9;
	TLabel *Label7;
	TPanel *Panel15;
	TImage *AImage3;
	TSplitter *Splitter7;
	TPanel *Panel12;
	TPanel *Panel13;
	TImage *AImage1;
	TPanel *Panel6;
	TLabel *Label8;
	TPanel *Panel11;
	TImage *AImage4;
	TSplitter *Splitter8;
	TPanel *Panel14;
	TPanel *Panel16;
	TImage *AImage2;
	TEdit *updbEdit;
	TEdit *downdbEdit;
	TEdit *FShiftdBEdit;
	TCheckBox *CheckBox1;
	TEdit *fmaxEdit;
	TEdit *SFPicShift;
  TListBox *TmplListBox;
  TButton *Button1;
  TCheckBox *SFCheck;
  TCheckBox *MACheck;
  TLabel *Label1;
  TTrackBar *TrackBar1;
  TComboBox *ComboBox1;
  TButton *SaveButton;
  TButton *UseButton;
  TTrackBar *TrackBar2;
  void __fastcall Image1MouseMove(TObject *Sender, TShiftState Shift,
          int X, int Y);
  void __fastcall SFCheckClick(TObject *Sender);
  void __fastcall AImage3MouseMove(TObject *Sender, TShiftState Shift,
          int X, int Y);
  void __fastcall AImage1MouseDown(TObject *Sender, TMouseButton Button,
          TShiftState Shift, int X, int Y);
  void __fastcall AImage1MouseUp(TObject *Sender, TMouseButton Button,
          TShiftState Shift, int X, int Y);
  void __fastcall PageControl1Change(TObject *Sender);
  void __fastcall SaveButtonClick(TObject *Sender);
  void __fastcall UseButtonClick(TObject *Sender);
  void __fastcall Panel4Resize(TObject *Sender);
  void __fastcall Panel1Resize(TObject *Sender);
  void __fastcall AmpCycleSheetResize(TObject *Sender);
	void __fastcall MethodListBoxClick(TObject *Sender);
	void __fastcall AmpOverSheetResize(TObject *Sender);
	void __fastcall Splitter7Moved(TObject *Sender);
	void __fastcall AImage3DblClick(TObject *Sender);
	void __fastcall Panel7Resize(TObject *Sender);
	void __fastcall Panel8Resize(TObject *Sender);
	void __fastcall CheckBox1Click(TObject *Sender);
  void __fastcall fmaxEditKeyPress(TObject *Sender, char &Key);
  void __fastcall Button1Click(TObject *Sender);
private:	// User declarations
	bool analyze2;
public:		// User declarations
  __fastcall TSFDemoForm(TComponent* Owner);
	__fastcall ~TSFDemoForm();

	double dbrange;

  bool ForceUpdate;

	TSUThread* SUThread;
	int pThread;
	TSUThread* ThreadList[ThreadCaps];

  void __fastcall SUTerminate(TObject* Sender);
  DYNAMIC void __fastcall MouseWheelHandler(TMessage& Msg);
	void __fastcall Image1MouseWheel(TObject* Sender, TShiftState Shift, int WheelDelta, const TPoint &MousePos, bool &Handled);
	void __fastcall AImage3MouseWheel(TObject* Sender, TShiftState Shift, int WheelDelta, const TPoint &MousePos, bool &Handled);

  int StartPos;
  TWaveAudio* WaveAudio1;
  TWaveView* WaveView1;
  TWaveAudio* WaveAudio2;
  TWaveView* WaveView2;

	TSF SF;
  TSF SF0;

  THS* HS;
  double f_c, f_ex;
  double* cyclefrs;
  double* cyclefs;
	int cyclefrcount;
	int CurrentPartial;
	int CurrentFB;
	int CurrentFr;
	int CurrentP;
	int CurrentK;
	int CurrentB;
  int CurrentC;
  double FXX[64];
  double NAF[4096];
	int SX[128]; //size related to number of partials
	int FX[128]; //size related to number of filter control points
	int FY[128]; //ditto
  int SXcycle[128];
  int KX1[64]; //size related to number of frames per cycle
	int KX2[64];
	int BX1[128];	//size related to number of cycles
	int BX2[128];
  int CX1[128];  //size related to number of cycles
  int CX2[128];
  int CY1[128];
  int CY2[128];
  int SXc;
  int SXcyclec;
  int FirstStartDrag;
	int StartDrag;
	int FirstStartDragX;
	int StartDragX;

  __int16* Wave1;

  __int16* datain;

  void Copydata();
  void DrawModulator();
  void __fastcall ExternalInput();
  void FindNote();
  void Reset();
  void __fastcall SaveSF();
  void __fastcall SaveSF0();
  void __fastcall SaveWave();
  void __fastcall S_U(bool sf=false);
  void Synthesize();
  void UpdateDisplay(bool f0=true, bool f0s=true, bool f0d=true, bool sf=true);
  int __fastcall WaveView1CustomInfo(TObject*);
  void __fastcall WaveView1OpMode(TObject* Sender, TShiftState Shift, int& OpMode);
};
//---------------------------------------------------------------------------
extern PACKAGE TSFDemoForm *SFDemoForm;
//---------------------------------------------------------------------------
#endif