xue@0: /* xue@0: Harmonic Visualiser xue@0: xue@0: An audio file viewer and editor. xue@0: Centre for Digital Music, Queen Mary, University of London. xue@0: This file copyright 2011 Wen Xue. xue@0: xue@0: This program is free software; you can redistribute it and/or xue@0: modify it under the terms of the GNU General Public License as xue@0: published by the Free Software Foundation; either version 2 of the xue@0: License, or (at your option) any later version. xue@0: */ xue@0: //--------------------------------------------------------------------------- xue@0: #ifndef VibratoDemoUnitH xue@0: #define VibratoDemoUnitH xue@0: //--------------------------------------------------------------------------- xue@0: /* xue@0: VibratoDemoUnit implements the Vibrato analysis and synthesis demo GUI xue@0: of HV. xue@0: */ xue@0: xue@0: #include xue@0: #include xue@0: #include xue@0: #include xue@0: #include xue@0: #include "AudioPac.h" xue@0: #include "WaveView.h" xue@0: #include "EventBoxUnit.h" xue@0: #include "SUThread.h" xue@0: #include xue@0: #include xue@0: #include "vibrato.h" xue@0: //--------------------------------------------------------------------------- xue@0: xue@0: xue@0: class TSUThread; xue@0: const ThreadCaps=1024; xue@0: xue@0: class TVibratoDemoForm : public TForm xue@0: { xue@0: __published: // IDE-managed Components xue@0: TPanel *Panel1; xue@0: TPanel *Panel2; xue@0: TSplitter *Splitter1; xue@0: TSplitter *Splitter2; xue@0: TPanel *Panel3; xue@0: TPanel *Panel4; xue@0: TPanel *Panel5; xue@0: TSplitter *Splitter3; xue@0: TPanel *Panel8; xue@0: TPanel *Panel7; xue@0: TImage *Image1; xue@0: TPanel *Panel6; xue@0: TImage *Image2; xue@0: TSplitter *Splitter4; xue@0: TPanel *Panel9; xue@0: TSplitter *Splitter5; xue@0: TImage *Image0; xue@0: TSplitter *Splitter6; xue@0: TPanel *Panel10; xue@0: TPageControl *PageControl1; xue@0: TTabSheet *ModOverSheet; xue@0: TTabSheet *ModCycleSheet; xue@0: TLabel *Label1; xue@0: TEdit *RegEdit; xue@0: TLabel *Label2; xue@0: TEdit *RateEdit; xue@0: TLabel *Label3; xue@0: TEdit *CycleRateEdit; xue@0: TLabel *Label4; xue@0: TEdit *CycleDurationEdit; xue@0: TPanel *Panel11; xue@0: TImage *MImage1; xue@0: TLabel *Label5; xue@0: TEdit *CycleExtentEdit; xue@0: TLabel *Label6; xue@0: TEdit *CycleAvgPDEdit; xue@0: TEdit *CyclePitchEdit; xue@0: TPanel *Panel12; xue@0: TImage *MImage2; xue@0: TTabSheet *AmpOverSheet; xue@0: TPanel *Panel13; xue@0: TImage *AImage1; xue@0: TTabSheet *AmpCycleSheet; xue@0: TPanel *Panel14; xue@0: TImage *AImage2; xue@0: TCheckBox *PeakMarksCheck; xue@0: TButton *RegButton; xue@0: TPanel *Panel15; xue@0: TImage *AImage3; xue@0: TPanel *Panel16; xue@0: TImage *AImage4; xue@0: TLabel *Label7; xue@0: TLabel *Label8; xue@0: TLabel *Label9; xue@0: TLabel *Label10; xue@0: TLabel *Label11; xue@0: TLabel *Label12; xue@0: TLabel *Label13; xue@0: TLabel *Label14; xue@0: TEdit *DurationEdit; xue@0: TSaveDialog *SaveDialog1; xue@0: TListBox *ListBox1; xue@0: TEdit *FEdit; xue@0: TComboBox *FScaleCombo; xue@0: TEdit *ThetaEdit; xue@0: TButton *Button1; xue@0: TCheckBox *ResidueCheck; xue@0: TCheckBox *SFCheck; xue@0: TCheckBox *MACheck; xue@0: TLabel *Label15; xue@0: void __fastcall Image1MouseMove(TObject *Sender, TShiftState Shift, xue@0: int X, int Y); xue@0: void __fastcall Image2MouseMove(TObject *Sender, TShiftState Shift, xue@0: int X, int Y); xue@0: void __fastcall SFCheckClick(TObject *Sender); xue@0: void __fastcall RegButtonClick(TObject *Sender); xue@0: void __fastcall AImage3MouseMove(TObject *Sender, TShiftState Shift, xue@0: int X, int Y); xue@0: void __fastcall MImage1MouseMove(TObject *Sender, TShiftState Shift, xue@0: int X, int Y); xue@0: void __fastcall Image2DblClick(TObject *Sender); xue@0: void __fastcall AImage1MouseDown(TObject *Sender, TMouseButton Button, xue@0: TShiftState Shift, int X, int Y); xue@0: void __fastcall AImage1MouseUp(TObject *Sender, TMouseButton Button, xue@0: TShiftState Shift, int X, int Y); xue@0: void __fastcall CycleRateEditMouseMove(TObject *Sender, xue@0: TShiftState Shift, int X, int Y); xue@0: void __fastcall PageControl1Change(TObject *Sender); xue@0: void __fastcall Panel4Resize(TObject *Sender); xue@0: void __fastcall Panel8Resize(TObject *Sender); xue@0: void __fastcall Panel1Resize(TObject *Sender); xue@0: void __fastcall AmpOverSheetResize(TObject *Sender); xue@0: void __fastcall AmpCycleSheetResize(TObject *Sender); xue@0: void __fastcall ListBox1Click(TObject *Sender); xue@0: void __fastcall Button1Click(TObject *Sender); xue@0: void __fastcall Panel9Resize(TObject *Sender); xue@0: void __fastcall Panel7Resize(TObject *Sender); xue@0: private: // User declarations xue@0: public: // User declarations xue@0: __fastcall TVibratoDemoForm(TComponent* Owner); xue@0: __fastcall ~TVibratoDemoForm(); xue@0: xue@0: bool ForceUpdate; xue@0: xue@0: TSUThread* SUThread; xue@0: int pThread; xue@0: TSUThread* ThreadList[ThreadCaps]; xue@0: xue@0: void __fastcall SUTerminate(TObject* Sender); xue@0: DYNAMIC void __fastcall MouseWheelHandler(TMessage& Msg); xue@0: void __fastcall Image1MouseWheel(TObject* Sender, TShiftState Shift, int WheelDelta, const TPoint &MousePos, bool &Handled); xue@0: void __fastcall Image2MouseWheel(TObject* Sender, TShiftState Shift, int WheelDelta, const TPoint &MousePos, bool &Handled); xue@0: void __fastcall AImage3MouseWheel(TObject* Sender, TShiftState Shift, int WheelDelta, const TPoint &MousePos, bool &Handled); xue@0: void __fastcall AImage4MouseWheel(TObject* Sender, TShiftState Shift, int WheelDelta, const TPoint &MousePos, bool &Handled); xue@0: void __fastcall MImage1MouseWheel(TObject* Sender, TShiftState Shift, int WheelDelta, const TPoint &MousePos, bool &Handled); xue@0: void __fastcall RateEditMouseWheel(TObject* Sender, TShiftState Shift, int WheelDelta, const TPoint &MousePos, bool &Handled); xue@0: void __fastcall DurationEditMouseWheel(TObject* Sender, TShiftState Shift, int WheelDelta, const TPoint &MousePos, bool &Handled); xue@0: void __fastcall PitchEditMouseWheel(TObject* Sender, TShiftState Shift, int WheelDelta, const TPoint &MousePos, bool &Handled); xue@0: xue@0: int StartPos; xue@0: TWaveAudio* WaveAudio1; xue@0: TWaveView* WaveView1; xue@0: TWaveAudio* WaveAudio2; xue@0: TWaveView* WaveView2; xue@0: xue@0: TVo V; xue@0: xue@0: THS* HS; xue@0: double f_c, f_ex; xue@0: double* peaky; xue@0: double* cyclefrs; xue@0: double* cyclefs; xue@0: int cyclefrcount; xue@0: int CurrentModCycle; xue@0: double CurrentModCycleStart; xue@0: double CurrentModCycleEnd; xue@0: int CurrentPartial; xue@0: int CurrentK; xue@0: int CurrentC; xue@0: double FXX[64]; xue@0: double NAF[4096]; xue@0: int SX[128]; //size related to number of partials xue@0: int SXcycle[128]; xue@0: int KX1[64]; //size related to number of frames per cycle xue@0: int KX2[64]; xue@0: int CX1[128]; //size related to number of cycles xue@0: int CX2[128]; xue@0: int CY1[128]; xue@0: int CY2[128]; xue@0: int SXc; xue@0: int SXcyclec; xue@0: int FirstStartDrag; xue@0: int StartDrag; xue@0: xue@0: __int16* datain; xue@0: xue@0: void Copydata(); xue@0: void DrawModulator(); xue@0: void __fastcall ExternalInput(); xue@0: void FindNote(); xue@0: void Reset(); xue@0: void __fastcall SaveV(); xue@0: void __fastcall S_U(bool sf=false); xue@0: void Synthesize(); xue@0: void UpdateDisplay(bool f0=true, bool f0s=true, bool f0d=true, bool sf=true); xue@0: int __fastcall WaveView1CustomInfo(TObject*); xue@0: void __fastcall WaveView1OpMode(TObject* Sender, TShiftState Shift, int& OpMode); xue@0: }; xue@0: //--------------------------------------------------------------------------- xue@0: extern PACKAGE TVibratoDemoForm *VibratoDemoForm; xue@0: //--------------------------------------------------------------------------- xue@0: #endif