view Unit1.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 Unit1H
#define Unit1H
//---------------------------------------------------------------------------
/*
  Unit1.cpp implements the main window of HV.
*/

#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ComCtrls.hpp>
#include <ExtCtrls.hpp>
#include <Menus.hpp>
#include <ToolWin.hpp>
#include <Dialogs.hpp>
#include <ActnList.hpp>
#include <Buttons.hpp>
#include <ImgList.hpp>
#include "AudioPac.h"
#include "WaveView.h"
#include "Navigator.h"

#include "hs.h"
#include "EventBoxUnit.h"
#include "procedures.h"
#include <Grids.hpp>

#define wopHS 16
#define wopCrop 17
#define wopSample 18
#define wopEdit 32

//---------------------------------------------------------------------------
const MaxRecents=10;
const MaxPartialsPerCR=32;
enum objshorttag0 {stNULL, stAtom, stFreqDelimiter, stFloater, stDUMMY, stOnset};
//if ShortTag[0]==stAtom, then ShortTag[1]=channel, [2]=m+1, [3]=0, Tag[2]=fr

class TForm1 : public TForm
{
__published:  // IDE-managed Components
  TMainMenu *MainMenu1;
  TCoolBar *CoolBar1;
  TStatusBar *StatusBar1;
  TMenuItem *File1;
  TMenuItem *Open1;
  TMenuItem *Exit1;
  TPanel *PanelButtons;
  TShape *PanelRightButton;
  TImageList *ImageList1;
  TOpenDialog *OpenDialog1;
  TToolBar *ToolBarFile;
  TSpeedButton *SpeedButtonOpen;
  TMenuItem *Project1;
  TMenuItem *Backup1;
  TToolBar *ToolBarMode;
  TSpeedButton *SpeedButtonS;
  TToolButton *ToolButton2;
  TSpeedButton *SpeedButtonT;
  TSpeedButton *SpeedButtonF;
  TSpeedButton *SpeedButtonM;
  TPanel *BackPanel;
  TPanel *PanelMain;
  TPanel *PanelRight;
  TPanel *PanelNavigator;
  TSplitter *Splitter1;
  TPanel *PanelRightBack;
  TSplitter *Splitter2;
  TPageControl *PageControl1;
  TTabSheet *TabSheet1;
  TTabSheet *TabSheet2;
  TRadioGroup *PlaybackFilterRadio;
  TRadioGroup *PlayChannelRadio;
  TRadioGroup *DisplayChannelRadio;
  TRadioGroup *PanesRadio;
  TStaticText *StaticText1;
  TPopupMenu *NavigatorPopup;
  TMenuItem *Waveform1;
  TMenuItem *Spectrogram1;
  TToolButton *ToolButton4;
  TToolButton *ToolButton3;
  TSpeedButton *SpeedButtonSelect;
  TGroupBox *GroupBox1;
  TCheckBox *LogFreqCheck;
  TCheckBox *FreqLineCheck;
  TPopupMenu *WaveView1PopupMenu;
  TMenuItem *ZoomToSelection1;
  TMenuItem *UndoZoom1;
  TMenuItem *N2;
  TMenuItem *Restore1;
  TMenuItem *TimeZoom1;
  TMenuItem *FrequencyZoom1;
  TMenuItem *AmplitudeZoom1;
  TMenuItem *SpectrogramBrightness1;
  TMenuItem *Play1;
  TSpeedButton *SpeedButtonExit;
  TMenuItem *Help1;
  TMenuItem *Save1;
  TMenuItem *Saveas1;
  TSpeedButton *SpeedButtonSave;
  TMenuItem *N3;
  TMenuItem *Cut1;
  TMenuItem *Extract1;
  TMenuItem *Editorpanel1;
  TMenuItem *Amplify1;
  TMenuItem *AM1;
  TMenuItem *FM1;
  TMenuItem *Timestretching1;
  TMenuItem *Pitchshifting1;
  TMenuItem *DeFM1;
  TMenuItem *View1;
  TMenuItem *Events1;
  TTabSheet *TabSheet5;
  TLabel *Label1;
  TEdit *HSDelmEdit1;
  TEdit *HSDelpEdit1;
  TLabel *Label2;
  TLabel *Label3;
  TEdit *HSMaxpEdit1;
  TLabel *Label4;
  TEdit *HSMaxBEdit1;
  TListBox *PartialSelectCombo;
  TLabel *Label5;
  TEdit *HSMinF0Edit1;
  TLabel *Label6;
  TLabel *Label7;
  TEdit *HSMaxF0Edit1;
  TLabel *Label8;
  TSaveDialog *SaveDialog1;
  TMenuItem *N6;
  TMenuItem *Vibratowizard1;
  TToolButton *ToolButton1;
  TSpeedButton *SpeedButtonRecord;
  TMenuItem *Close1;
  TCheckBox *AutoScrollCheck;
  TRadioGroup *PlayFromRadio;
  TRadioGroup *PlayUntilRadio;
  TCheckBox *LoopCheck;
  TTabSheet *TabSheet6;
  TCheckBox *MouseWheelZoom;
  TPanel *PanelWaveView;
  TScrollBar *ScrollBar1;
  TSplitter *Splitter3;
  TPanel *PanelGrid;
  TShape *PanelRightButton2;
  TPageControl *PageControl2;
  TTabSheet *AmpTab;
  TStringGrid *AmpGrid;
  TTabSheet *ArcTab;
  TStringGrid *PhaseGrid;
  TCheckBox *MBCheck;
  TEdit *FormatEdit;
	TMenuItem *Sourcefilter1;
  TTabSheet *QPkTab;
  TStringGrid *QPkGrid;
  TToolBar *ToolBar1;
  TComboBox *WindowTypeCombo;
  TComboBox *WindowSizeCombo;
  TComboBox *PlayFilterCombo;
  TPopupMenu *PopupMenu1;
  TSpeedButton *SpeedButtonCursorText;
  TSpeedButton *SpeedButtonPaneInfo;
  TSpeedButton *SpeedButtonPlay;
  TToolBar *ToolBarAudio;
  TGroupBox *FadeInGroup;
  TLabel *FadeInLabel;
  TCheckBox *FadeInCheck;
  TComboBox *FadeInCombo;
  TMenuItem *Recent00;
  TMenuItem *Recent11;
  TMenuItem *Retrieve1;
  TMenuItem *N1;
  TMenuItem *Spectrogram2;
  void __fastcall PanelRightButtonMouseUp(TObject *Sender,
          TMouseButton Button, TShiftState Shift, int X, int Y);
  void __fastcall Open1Click(TObject *Sender);
  void __fastcall Exit1Click(TObject *Sender);
  void __fastcall Backup1Click(TObject *Sender);
  void __fastcall SpeedButtonTClick(TObject *Sender);
  void __fastcall SpeedButtonFClick(TObject *Sender);
  void __fastcall SpeedButtonMClick(TObject *Sender);
  void __fastcall LogFreqCheckClick(TObject *Sender);
  void __fastcall WindowSizeComboChange(TObject *Sender);
  void __fastcall WindowTypeComboChange(TObject *Sender);
  void __fastcall WaveView1PopupMenuPopup(TObject *Sender);
  void __fastcall ZoomToSelection1Click(TObject *Sender);
  void __fastcall UndoZoom1Click(TObject *Sender);
  void __fastcall Play1Click(TObject *Sender);
  void __fastcall SpectrogramBrightness1Click(TObject *Sender);
  void __fastcall SpeedButtonSClick(TObject *Sender);
  void __fastcall AmplitudeZoom1Click(TObject *Sender);
  void __fastcall Extract1Click(TObject *Sender);
  void __fastcall FadeInCheckClick(TObject *Sender);
  void __fastcall Cut1Click(TObject *Sender);
  void __fastcall Amplify1Click(TObject *Sender);
  void __fastcall Events1Click(TObject *Sender);
  void __fastcall SpeedButtonSaveClick(TObject *Sender);
  void __fastcall TimeZoom1Click(TObject *Sender);
  void __fastcall FrequencyZoom1Click(TObject *Sender);
  void __fastcall Vibratowizard1Click(TObject *Sender);
  void __fastcall Recent11Click(TObject *Sender);
  void __fastcall SpeedButtonRecordClick(TObject *Sender);
  void __fastcall Close1Click(TObject *Sender);
  void __fastcall AutoScrollCheckClick(TObject *Sender);
  void __fastcall LoopCheckClick(TObject *Sender);
  void __fastcall PlayUntilRadioClick(TObject *Sender);
  void __fastcall MouseWheelZoomClick(TObject *Sender);
  void __fastcall AmpGridDblClick(TObject *Sender);
	void __fastcall Sourcefilter1Click(TObject *Sender);
  void __fastcall PlayFilterComboSelect(TObject *Sender);
  void __fastcall PlaybackFilterRadioClick(TObject *Sender);
  void __fastcall Retrieve1Click(TObject *Sender);
private:	// User declarations
  bool SpectrogramView;
  int fcalculatespcount;
  TSpeedButton* NavButton;
  Graphics::TBitmap* BitmapPlay;
  Graphics::TBitmap* BitmapStop;
  Graphics::TBitmap* BitmapSpectrogram;
  Graphics::TBitmap* BitmapWaveform;
  Graphics::TBitmap* BitmapRecord;
  Graphics::TBitmap* BitmapTimeSelect;
	Graphics::TBitmap* BitmapFreqSelect;
	Graphics::TBitmap* BitmapMultiSelect;
	Graphics::TBitmap* BitmapHSSelect;
	Graphics::TBitmap* BitmapCursorText;
	Graphics::TBitmap* BitmapPaneInfo;
	Graphics::TBitmap* BitmapRecording;
	AnsiString ExePath;
	AnsiString IniFileName;
	AnsiString TmpOutFileName;
	AnsiString TmpInFileName;
  int GridSourcePane;
public:		// User declarations

  THS* HS;
  TWaveAudio* WaveAudio1;
  TWaveAudio* WaveAudio2;
  TWaveView* WaveView1;
  TNavigator* Navigator1;

  double f1;
  double f2;
  int edfr;
  int anccount;
  int* ancps;
  int* ancfrs;
  double* ancfs;
  double* ancts;
  TMenuItem* Recents[MaxRecents];

  struct ost {int count, wid, offst, *xfr; int** pitches; double** f0s;} onset;

  __fastcall TForm1(TComponent* Owner);
  __fastcall ~TForm1();

  void __fastcall AddHSObject(THS* aHS);
  void __fastcall NavButtonClick(TObject*);
  void __fastcall PostWaveViewData(double* data, int Channel, int StartPos, int EndPos, bool fadein, int W);
  void __fastcall PostWaveViewData(__int16* data, int Channel, int StartPos, int EndPos, bool fadein, int W);
  void __fastcall PostWaveViewData(__int16* data, int Channel, int StartPos, int EndPos);
  void Initialize();
  void PrepareNMSettings(NMSettings* settings);
  void RecentFile(AnsiString);
  void SetGridContents();
  void SetWaveViewContents();
  void ShowPanel(TPanel* APanel, bool Hide);

  void __fastcall ApplicationIdle(TObject*, bool&);
  void __fastcall CropEventStart(TObject*, TShiftState);
  void __fastcall CropEventEnd(TObject*, TShiftState);
  void __fastcall GetTargetAudio(int& targettype, int& channel, int& from, int& to, double*& target, __int16*& before);
  void __fastcall Navigator1AreaChange(TObject*);
  void __fastcall Navigator1Background(TObject*);
  void __fastcall WaveAudio1Load(TObject*);
  void __fastcall WaveAudio2InAddBuffer(TObject*);
  void __fastcall WaveView1AfterPaint(TObject*);
  void __fastcall WaveView1BeforePlayback(TObject*);
  int __fastcall WaveView1CustomPaneInfo(TObject*);
  int __fastcall WaveView1CustomInfo(TObject*);
  void __fastcall WaveView1DrawFreqLimiter(TObject*, TWaveViewObject&);
  void __fastcall WaveView1DrawObject(TObject*, TWaveViewObject&);
  void __fastcall WaveView1DrawAtom(TObject*, TWaveViewObject&);
  void __fastcall WaveView1InfoDblClick(TObject*);
  void __fastcall WaveView1KeyPress(TObject* Sender, char &Key);
  void __fastcall WaveView1MouseDown(TObject* Sender, TMouseButton Button, TShiftState Shift, int X, int Y);
  void __fastcall WaveView1MouseMove(TObject* Sender, TShiftState Shift, int X, int Y);
  void __fastcall WaveView1MousePointer(TObject* Sender, int Pane, int t, double f);
  void __fastcall WaveView1MouseUp(TObject* Sender, TMouseButton Button, TShiftState Shift, int X, int Y);
  void __fastcall WaveView1MouseWheel(TObject* Sender, TShiftState Shift, int WheelDelta, const TPoint& MousePos, bool& Handled);
  void __fastcall WaveView1ObjectClick(TObject*);
  void __fastcall WaveView1ObjectDblClick(TObject*);
  void __fastcall WaveView1ObjectEnter(TObject*);
  void __fastcall WaveView1ObjectMouseWheel(TObject* Sender, TShiftState Shift, int WheelDelta, const TPoint& MousePos, bool& Handled);
  void __fastcall WaveView1OpMode(TObject* Sender, TShiftState Shift, int& OpMode);
  void __fastcall WaveView1ParKeyDown(TObject*, Word &Key, TShiftState Shift);
  void __fastcall WaveView1ParMouseDown(TObject* Sender, TMouseButton Button, TShiftState Shift, int X, int Y);
  void __fastcall WaveView1ParMouseMove(TObject* Sender, TShiftState Shift, int X, int Y);
  void __fastcall WaveView1ParMouseUp(TObject* Sender, TMouseButton Button, TShiftState Shift, int X, int Y);
  void __fastcall WaveView1ParMouseWheel(TObject* Sender, TShiftState Shift, int WheelDelta, const TPoint& MousePos, bool& Handled);
  void __fastcall WaveView1PlaybackDone(TObject*);
  void __fastcall WaveView1PlaybackStart(TObject*);
  void __fastcall WaveView1PlaybackStartAndEndPos(TObject*, int&, int&, bool);


};




//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif