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: xue@0: #ifndef Unit1H xue@0: #define Unit1H xue@0: //--------------------------------------------------------------------------- xue@0: /* xue@0: Unit1.cpp implements the main window of HV. xue@0: */ xue@0: xue@0: #include xue@0: #include xue@0: #include xue@0: #include xue@0: #include xue@0: #include xue@0: #include 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 "Navigator.h" xue@0: xue@0: #include "hs.h" xue@0: #include "EventBoxUnit.h" xue@0: #include "procedures.h" xue@0: #include xue@0: xue@0: #define wopHS 16 xue@0: #define wopCrop 17 xue@0: #define wopSample 18 xue@0: #define wopEdit 32 xue@0: xue@0: //--------------------------------------------------------------------------- xue@0: const MaxRecents=10; xue@0: const MaxPartialsPerCR=32; xue@0: enum objshorttag0 {stNULL, stAtom, stFreqDelimiter, stFloater, stDUMMY, stOnset}; xue@0: //if ShortTag[0]==stAtom, then ShortTag[1]=channel, [2]=m+1, [3]=0, Tag[2]=fr xue@0: xue@0: class TForm1 : public TForm xue@0: { xue@0: __published: // IDE-managed Components xue@0: TMainMenu *MainMenu1; xue@0: TCoolBar *CoolBar1; xue@0: TStatusBar *StatusBar1; xue@0: TMenuItem *File1; xue@0: TMenuItem *Open1; xue@0: TMenuItem *Exit1; xue@0: TPanel *PanelButtons; xue@0: TShape *PanelRightButton; xue@0: TImageList *ImageList1; xue@0: TOpenDialog *OpenDialog1; xue@0: TToolBar *ToolBarFile; xue@0: TSpeedButton *SpeedButtonOpen; xue@0: TMenuItem *Project1; xue@0: TMenuItem *Backup1; xue@0: TToolBar *ToolBarMode; xue@0: TSpeedButton *SpeedButtonS; xue@0: TToolButton *ToolButton2; xue@0: TSpeedButton *SpeedButtonT; xue@0: TSpeedButton *SpeedButtonF; xue@0: TSpeedButton *SpeedButtonM; xue@0: TPanel *BackPanel; xue@0: TPanel *PanelMain; xue@0: TPanel *PanelRight; xue@0: TPanel *PanelNavigator; xue@0: TSplitter *Splitter1; xue@0: TPanel *PanelRightBack; xue@0: TSplitter *Splitter2; xue@0: TPageControl *PageControl1; xue@0: TTabSheet *TabSheet1; xue@0: TTabSheet *TabSheet2; xue@0: TRadioGroup *PlaybackFilterRadio; xue@0: TRadioGroup *PlayChannelRadio; xue@0: TRadioGroup *DisplayChannelRadio; xue@0: TRadioGroup *PanesRadio; xue@0: TStaticText *StaticText1; xue@0: TPopupMenu *NavigatorPopup; xue@0: TMenuItem *Waveform1; xue@0: TMenuItem *Spectrogram1; xue@0: TToolButton *ToolButton4; xue@0: TToolButton *ToolButton3; xue@0: TSpeedButton *SpeedButtonSelect; xue@0: TGroupBox *GroupBox1; xue@0: TCheckBox *LogFreqCheck; xue@0: TCheckBox *FreqLineCheck; xue@0: TPopupMenu *WaveView1PopupMenu; xue@0: TMenuItem *ZoomToSelection1; xue@0: TMenuItem *UndoZoom1; xue@0: TMenuItem *N2; xue@0: TMenuItem *Restore1; xue@0: TMenuItem *TimeZoom1; xue@0: TMenuItem *FrequencyZoom1; xue@0: TMenuItem *AmplitudeZoom1; xue@0: TMenuItem *SpectrogramBrightness1; xue@0: TMenuItem *Play1; xue@0: TSpeedButton *SpeedButtonExit; xue@0: TMenuItem *Help1; xue@0: TMenuItem *Save1; xue@0: TMenuItem *Saveas1; xue@0: TSpeedButton *SpeedButtonSave; xue@0: TMenuItem *N3; xue@0: TMenuItem *Cut1; xue@0: TMenuItem *Extract1; xue@0: TMenuItem *Editorpanel1; xue@0: TMenuItem *Amplify1; xue@0: TMenuItem *AM1; xue@0: TMenuItem *FM1; xue@0: TMenuItem *Timestretching1; xue@0: TMenuItem *Pitchshifting1; xue@0: TMenuItem *DeFM1; xue@0: TMenuItem *View1; xue@0: TMenuItem *Events1; xue@0: TTabSheet *TabSheet5; xue@0: TLabel *Label1; xue@0: TEdit *HSDelmEdit1; xue@0: TEdit *HSDelpEdit1; xue@0: TLabel *Label2; xue@0: TLabel *Label3; xue@0: TEdit *HSMaxpEdit1; xue@0: TLabel *Label4; xue@0: TEdit *HSMaxBEdit1; xue@0: TListBox *PartialSelectCombo; xue@0: TLabel *Label5; xue@0: TEdit *HSMinF0Edit1; xue@0: TLabel *Label6; xue@0: TLabel *Label7; xue@0: TEdit *HSMaxF0Edit1; xue@0: TLabel *Label8; xue@0: TSaveDialog *SaveDialog1; xue@0: TMenuItem *N6; xue@0: TMenuItem *Vibratowizard1; xue@0: TToolButton *ToolButton1; xue@0: TSpeedButton *SpeedButtonRecord; xue@0: TMenuItem *Close1; xue@0: TCheckBox *AutoScrollCheck; xue@0: TRadioGroup *PlayFromRadio; xue@0: TRadioGroup *PlayUntilRadio; xue@0: TCheckBox *LoopCheck; xue@0: TTabSheet *TabSheet6; xue@0: TCheckBox *MouseWheelZoom; xue@0: TPanel *PanelWaveView; xue@0: TScrollBar *ScrollBar1; xue@0: TSplitter *Splitter3; xue@0: TPanel *PanelGrid; xue@0: TShape *PanelRightButton2; xue@0: TPageControl *PageControl2; xue@0: TTabSheet *AmpTab; xue@0: TStringGrid *AmpGrid; xue@0: TTabSheet *ArcTab; xue@0: TStringGrid *PhaseGrid; xue@0: TCheckBox *MBCheck; xue@0: TEdit *FormatEdit; xue@0: TMenuItem *Sourcefilter1; xue@0: TTabSheet *QPkTab; xue@0: TStringGrid *QPkGrid; xue@0: TToolBar *ToolBar1; xue@0: TComboBox *WindowTypeCombo; xue@0: TComboBox *WindowSizeCombo; xue@0: TComboBox *PlayFilterCombo; xue@0: TPopupMenu *PopupMenu1; xue@0: TSpeedButton *SpeedButtonCursorText; xue@0: TSpeedButton *SpeedButtonPaneInfo; xue@0: TSpeedButton *SpeedButtonPlay; xue@0: TToolBar *ToolBarAudio; xue@0: TGroupBox *FadeInGroup; xue@0: TLabel *FadeInLabel; xue@0: TCheckBox *FadeInCheck; xue@0: TComboBox *FadeInCombo; xue@0: TMenuItem *Recent00; xue@0: TMenuItem *Recent11; xue@0: TMenuItem *Retrieve1; xue@0: TMenuItem *N1; xue@0: TMenuItem *Spectrogram2; xue@0: void __fastcall PanelRightButtonMouseUp(TObject *Sender, xue@0: TMouseButton Button, TShiftState Shift, int X, int Y); xue@0: void __fastcall Open1Click(TObject *Sender); xue@0: void __fastcall Exit1Click(TObject *Sender); xue@0: void __fastcall Backup1Click(TObject *Sender); xue@0: void __fastcall SpeedButtonTClick(TObject *Sender); xue@0: void __fastcall SpeedButtonFClick(TObject *Sender); xue@0: void __fastcall SpeedButtonMClick(TObject *Sender); xue@0: void __fastcall LogFreqCheckClick(TObject *Sender); xue@0: void __fastcall WindowSizeComboChange(TObject *Sender); xue@0: void __fastcall WindowTypeComboChange(TObject *Sender); xue@0: void __fastcall WaveView1PopupMenuPopup(TObject *Sender); xue@0: void __fastcall ZoomToSelection1Click(TObject *Sender); xue@0: void __fastcall UndoZoom1Click(TObject *Sender); xue@0: void __fastcall Play1Click(TObject *Sender); xue@0: void __fastcall SpectrogramBrightness1Click(TObject *Sender); xue@0: void __fastcall SpeedButtonSClick(TObject *Sender); xue@0: void __fastcall AmplitudeZoom1Click(TObject *Sender); xue@0: void __fastcall Extract1Click(TObject *Sender); xue@0: void __fastcall FadeInCheckClick(TObject *Sender); xue@0: void __fastcall Cut1Click(TObject *Sender); xue@0: void __fastcall Amplify1Click(TObject *Sender); xue@0: void __fastcall Events1Click(TObject *Sender); xue@0: void __fastcall SpeedButtonSaveClick(TObject *Sender); xue@0: void __fastcall TimeZoom1Click(TObject *Sender); xue@0: void __fastcall FrequencyZoom1Click(TObject *Sender); xue@0: void __fastcall Vibratowizard1Click(TObject *Sender); xue@0: void __fastcall Recent11Click(TObject *Sender); xue@0: void __fastcall SpeedButtonRecordClick(TObject *Sender); xue@0: void __fastcall Close1Click(TObject *Sender); xue@0: void __fastcall AutoScrollCheckClick(TObject *Sender); xue@0: void __fastcall LoopCheckClick(TObject *Sender); xue@0: void __fastcall PlayUntilRadioClick(TObject *Sender); xue@0: void __fastcall MouseWheelZoomClick(TObject *Sender); xue@0: void __fastcall AmpGridDblClick(TObject *Sender); xue@0: void __fastcall Sourcefilter1Click(TObject *Sender); xue@0: void __fastcall PlayFilterComboSelect(TObject *Sender); xue@0: void __fastcall PlaybackFilterRadioClick(TObject *Sender); xue@0: void __fastcall Retrieve1Click(TObject *Sender); xue@0: private: // User declarations xue@0: bool SpectrogramView; xue@0: int fcalculatespcount; xue@0: TSpeedButton* NavButton; xue@0: Graphics::TBitmap* BitmapPlay; xue@0: Graphics::TBitmap* BitmapStop; xue@0: Graphics::TBitmap* BitmapSpectrogram; xue@0: Graphics::TBitmap* BitmapWaveform; xue@0: Graphics::TBitmap* BitmapRecord; xue@0: Graphics::TBitmap* BitmapTimeSelect; xue@0: Graphics::TBitmap* BitmapFreqSelect; xue@0: Graphics::TBitmap* BitmapMultiSelect; xue@0: Graphics::TBitmap* BitmapHSSelect; xue@0: Graphics::TBitmap* BitmapCursorText; xue@0: Graphics::TBitmap* BitmapPaneInfo; xue@0: Graphics::TBitmap* BitmapRecording; xue@0: AnsiString ExePath; xue@0: AnsiString IniFileName; xue@0: AnsiString TmpOutFileName; xue@0: AnsiString TmpInFileName; xue@0: int GridSourcePane; xue@0: public: // User declarations xue@0: xue@0: THS* HS; xue@0: TWaveAudio* WaveAudio1; xue@0: TWaveAudio* WaveAudio2; xue@0: TWaveView* WaveView1; xue@0: TNavigator* Navigator1; xue@0: xue@0: double f1; xue@0: double f2; xue@0: int edfr; xue@0: int anccount; xue@0: int* ancps; xue@0: int* ancfrs; xue@0: double* ancfs; xue@0: double* ancts; xue@0: TMenuItem* Recents[MaxRecents]; xue@0: xue@0: struct ost {int count, wid, offst, *xfr; int** pitches; double** f0s;} onset; xue@0: xue@0: __fastcall TForm1(TComponent* Owner); xue@0: __fastcall ~TForm1(); xue@0: xue@0: void __fastcall AddHSObject(THS* aHS); xue@0: void __fastcall NavButtonClick(TObject*); xue@0: void __fastcall PostWaveViewData(double* data, int Channel, int StartPos, int EndPos, bool fadein, int W); xue@0: void __fastcall PostWaveViewData(__int16* data, int Channel, int StartPos, int EndPos, bool fadein, int W); xue@0: void __fastcall PostWaveViewData(__int16* data, int Channel, int StartPos, int EndPos); xue@0: void Initialize(); xue@0: void PrepareNMSettings(NMSettings* settings); xue@0: void RecentFile(AnsiString); xue@0: void SetGridContents(); xue@0: void SetWaveViewContents(); xue@0: void ShowPanel(TPanel* APanel, bool Hide); xue@0: xue@0: void __fastcall ApplicationIdle(TObject*, bool&); xue@0: void __fastcall CropEventStart(TObject*, TShiftState); xue@0: void __fastcall CropEventEnd(TObject*, TShiftState); xue@0: void __fastcall GetTargetAudio(int& targettype, int& channel, int& from, int& to, double*& target, __int16*& before); xue@0: void __fastcall Navigator1AreaChange(TObject*); xue@0: void __fastcall Navigator1Background(TObject*); xue@0: void __fastcall WaveAudio1Load(TObject*); xue@0: void __fastcall WaveAudio2InAddBuffer(TObject*); xue@0: void __fastcall WaveView1AfterPaint(TObject*); xue@0: void __fastcall WaveView1BeforePlayback(TObject*); xue@0: int __fastcall WaveView1CustomPaneInfo(TObject*); xue@0: int __fastcall WaveView1CustomInfo(TObject*); xue@0: void __fastcall WaveView1DrawFreqLimiter(TObject*, TWaveViewObject&); xue@0: void __fastcall WaveView1DrawObject(TObject*, TWaveViewObject&); xue@0: void __fastcall WaveView1DrawAtom(TObject*, TWaveViewObject&); xue@0: void __fastcall WaveView1InfoDblClick(TObject*); xue@0: void __fastcall WaveView1KeyPress(TObject* Sender, char &Key); xue@0: void __fastcall WaveView1MouseDown(TObject* Sender, TMouseButton Button, TShiftState Shift, int X, int Y); xue@0: void __fastcall WaveView1MouseMove(TObject* Sender, TShiftState Shift, int X, int Y); xue@0: void __fastcall WaveView1MousePointer(TObject* Sender, int Pane, int t, double f); xue@0: void __fastcall WaveView1MouseUp(TObject* Sender, TMouseButton Button, TShiftState Shift, int X, int Y); xue@0: void __fastcall WaveView1MouseWheel(TObject* Sender, TShiftState Shift, int WheelDelta, const TPoint& MousePos, bool& Handled); xue@0: void __fastcall WaveView1ObjectClick(TObject*); xue@0: void __fastcall WaveView1ObjectDblClick(TObject*); xue@0: void __fastcall WaveView1ObjectEnter(TObject*); xue@0: void __fastcall WaveView1ObjectMouseWheel(TObject* Sender, TShiftState Shift, int WheelDelta, const TPoint& MousePos, bool& Handled); xue@0: void __fastcall WaveView1OpMode(TObject* Sender, TShiftState Shift, int& OpMode); xue@0: void __fastcall WaveView1ParKeyDown(TObject*, Word &Key, TShiftState Shift); xue@0: void __fastcall WaveView1ParMouseDown(TObject* Sender, TMouseButton Button, TShiftState Shift, int X, int Y); xue@0: void __fastcall WaveView1ParMouseMove(TObject* Sender, TShiftState Shift, int X, int Y); xue@0: void __fastcall WaveView1ParMouseUp(TObject* Sender, TMouseButton Button, TShiftState Shift, int X, int Y); xue@0: void __fastcall WaveView1ParMouseWheel(TObject* Sender, TShiftState Shift, int WheelDelta, const TPoint& MousePos, bool& Handled); xue@0: void __fastcall WaveView1PlaybackDone(TObject*); xue@0: void __fastcall WaveView1PlaybackStart(TObject*); xue@0: void __fastcall WaveView1PlaybackStartAndEndPos(TObject*, int&, int&, bool); xue@0: xue@0: xue@0: }; xue@0: xue@0: xue@0: xue@0: xue@0: //--------------------------------------------------------------------------- xue@0: extern PACKAGE TForm1 *Form1; xue@0: //--------------------------------------------------------------------------- xue@0: #endif