xue@0
|
1 /*
|
xue@0
|
2 Harmonic Visualiser
|
xue@0
|
3
|
xue@0
|
4 An audio file viewer and editor.
|
xue@0
|
5 Centre for Digital Music, Queen Mary, University of London.
|
xue@0
|
6 This file copyright 2011 Wen Xue.
|
xue@0
|
7
|
xue@0
|
8 This program is free software; you can redistribute it and/or
|
xue@0
|
9 modify it under the terms of the GNU General Public License as
|
xue@0
|
10 published by the Free Software Foundation; either version 2 of the
|
xue@0
|
11 License, or (at your option) any later version.
|
xue@0
|
12 */
|
xue@0
|
13 //---------------------------------------------------------------------------
|
xue@0
|
14
|
xue@0
|
15 #ifndef SFDemoUnitH
|
xue@0
|
16 #define SFDemoUnitH
|
xue@0
|
17 //---------------------------------------------------------------------------
|
xue@0
|
18 /*
|
xue@0
|
19 SFDemoUnit.cpp implements the source-filter modelling demo of HV.
|
xue@0
|
20 */
|
xue@0
|
21
|
xue@0
|
22 #include <Classes.hpp>
|
xue@0
|
23 #include <Controls.hpp>
|
xue@0
|
24 #include <StdCtrls.hpp>
|
xue@0
|
25 #include <Forms.hpp>
|
xue@0
|
26 #include <ExtCtrls.hpp>
|
xue@0
|
27 #include "AudioPac.h"
|
xue@0
|
28 #include "WaveView.h"
|
xue@0
|
29 #include "EventBoxUnit.h"
|
xue@0
|
30 #include "hssf.h"
|
xue@0
|
31 #include "SUThread.h"
|
xue@0
|
32 #include <ComCtrls.hpp>
|
xue@0
|
33 #include <Dialogs.hpp>
|
xue@0
|
34
|
xue@0
|
35 //---------------------------------------------------------------------------
|
xue@0
|
36
|
xue@0
|
37
|
xue@0
|
38
|
xue@0
|
39 class TSFDemoForm : public TForm
|
xue@0
|
40 {
|
xue@0
|
41 __published: // IDE-managed Components
|
xue@0
|
42 TPanel *Panel1;
|
xue@0
|
43 TPanel *Panel2;
|
xue@0
|
44 TSplitter *Splitter1;
|
xue@0
|
45 TSplitter *Splitter2;
|
xue@0
|
46 TPanel *Panel3;
|
xue@0
|
47 TSaveDialog *SaveDialog1;
|
xue@0
|
48 TPanel *Panel4;
|
xue@0
|
49 TSplitter *Splitter3;
|
xue@0
|
50 TPanel *Panel5;
|
xue@0
|
51 TPanel *Panel10;
|
xue@0
|
52 TLabel *Label13;
|
xue@0
|
53 TPageControl *PageControl1;
|
xue@0
|
54 TTabSheet *AmpOverSheet;
|
xue@0
|
55 TTabSheet *AmpCycleSheet;
|
xue@0
|
56 TLabel *Label9;
|
xue@0
|
57 TLabel *Label15;
|
xue@0
|
58 TLabel *Label16;
|
xue@0
|
59 TSplitter *Splitter5;
|
xue@0
|
60 TPanel *PanelControl;
|
xue@0
|
61 TListBox *MethodListBox;
|
xue@0
|
62 TEdit *FEdit;
|
xue@0
|
63 TComboBox *FScaleCombo;
|
xue@0
|
64 TEdit *ThetaEdit;
|
xue@0
|
65 TPanel *Panel7;
|
xue@0
|
66 TSplitter *Splitter4;
|
xue@0
|
67 TPanel *Panel8;
|
xue@0
|
68 TSplitter *Splitter6;
|
xue@0
|
69 TImage *Image0;
|
xue@0
|
70 TImage *Image1;
|
xue@0
|
71 TPanel *Panel9;
|
xue@0
|
72 TLabel *Label7;
|
xue@0
|
73 TPanel *Panel15;
|
xue@0
|
74 TImage *AImage3;
|
xue@0
|
75 TSplitter *Splitter7;
|
xue@0
|
76 TPanel *Panel12;
|
xue@0
|
77 TPanel *Panel13;
|
xue@0
|
78 TImage *AImage1;
|
xue@0
|
79 TPanel *Panel6;
|
xue@0
|
80 TLabel *Label8;
|
xue@0
|
81 TPanel *Panel11;
|
xue@0
|
82 TImage *AImage4;
|
xue@0
|
83 TSplitter *Splitter8;
|
xue@0
|
84 TPanel *Panel14;
|
xue@0
|
85 TPanel *Panel16;
|
xue@0
|
86 TImage *AImage2;
|
xue@0
|
87 TEdit *updbEdit;
|
xue@0
|
88 TEdit *downdbEdit;
|
xue@0
|
89 TEdit *FShiftdBEdit;
|
xue@0
|
90 TCheckBox *CheckBox1;
|
xue@0
|
91 TEdit *fmaxEdit;
|
xue@0
|
92 TEdit *SFPicShift;
|
xue@0
|
93 TListBox *TmplListBox;
|
xue@0
|
94 TButton *Button1;
|
xue@0
|
95 TCheckBox *SFCheck;
|
xue@0
|
96 TCheckBox *MACheck;
|
xue@0
|
97 TLabel *Label1;
|
xue@0
|
98 TTrackBar *TrackBar1;
|
xue@0
|
99 TComboBox *ComboBox1;
|
xue@0
|
100 TButton *SaveButton;
|
xue@0
|
101 TButton *UseButton;
|
xue@0
|
102 TTrackBar *TrackBar2;
|
xue@0
|
103 void __fastcall Image1MouseMove(TObject *Sender, TShiftState Shift,
|
xue@0
|
104 int X, int Y);
|
xue@0
|
105 void __fastcall SFCheckClick(TObject *Sender);
|
xue@0
|
106 void __fastcall AImage3MouseMove(TObject *Sender, TShiftState Shift,
|
xue@0
|
107 int X, int Y);
|
xue@0
|
108 void __fastcall AImage1MouseDown(TObject *Sender, TMouseButton Button,
|
xue@0
|
109 TShiftState Shift, int X, int Y);
|
xue@0
|
110 void __fastcall AImage1MouseUp(TObject *Sender, TMouseButton Button,
|
xue@0
|
111 TShiftState Shift, int X, int Y);
|
xue@0
|
112 void __fastcall PageControl1Change(TObject *Sender);
|
xue@0
|
113 void __fastcall SaveButtonClick(TObject *Sender);
|
xue@0
|
114 void __fastcall UseButtonClick(TObject *Sender);
|
xue@0
|
115 void __fastcall Panel4Resize(TObject *Sender);
|
xue@0
|
116 void __fastcall Panel1Resize(TObject *Sender);
|
xue@0
|
117 void __fastcall AmpCycleSheetResize(TObject *Sender);
|
xue@0
|
118 void __fastcall MethodListBoxClick(TObject *Sender);
|
xue@0
|
119 void __fastcall AmpOverSheetResize(TObject *Sender);
|
xue@0
|
120 void __fastcall Splitter7Moved(TObject *Sender);
|
xue@0
|
121 void __fastcall AImage3DblClick(TObject *Sender);
|
xue@0
|
122 void __fastcall Panel7Resize(TObject *Sender);
|
xue@0
|
123 void __fastcall Panel8Resize(TObject *Sender);
|
xue@0
|
124 void __fastcall CheckBox1Click(TObject *Sender);
|
xue@0
|
125 void __fastcall fmaxEditKeyPress(TObject *Sender, char &Key);
|
xue@0
|
126 void __fastcall Button1Click(TObject *Sender);
|
xue@0
|
127 private: // User declarations
|
xue@0
|
128 bool analyze2;
|
xue@0
|
129 public: // User declarations
|
xue@0
|
130 __fastcall TSFDemoForm(TComponent* Owner);
|
xue@0
|
131 __fastcall ~TSFDemoForm();
|
xue@0
|
132
|
xue@0
|
133 double dbrange;
|
xue@0
|
134
|
xue@0
|
135 bool ForceUpdate;
|
xue@0
|
136
|
xue@0
|
137 TSUThread* SUThread;
|
xue@0
|
138 int pThread;
|
xue@0
|
139 TSUThread* ThreadList[ThreadCaps];
|
xue@0
|
140
|
xue@0
|
141 void __fastcall SUTerminate(TObject* Sender);
|
xue@0
|
142 DYNAMIC void __fastcall MouseWheelHandler(TMessage& Msg);
|
xue@0
|
143 void __fastcall Image1MouseWheel(TObject* Sender, TShiftState Shift, int WheelDelta, const TPoint &MousePos, bool &Handled);
|
xue@0
|
144 void __fastcall AImage3MouseWheel(TObject* Sender, TShiftState Shift, int WheelDelta, const TPoint &MousePos, bool &Handled);
|
xue@0
|
145
|
xue@0
|
146 int StartPos;
|
xue@0
|
147 TWaveAudio* WaveAudio1;
|
xue@0
|
148 TWaveView* WaveView1;
|
xue@0
|
149 TWaveAudio* WaveAudio2;
|
xue@0
|
150 TWaveView* WaveView2;
|
xue@0
|
151
|
xue@0
|
152 TSF SF;
|
xue@0
|
153 TSF SF0;
|
xue@0
|
154
|
xue@0
|
155 THS* HS;
|
xue@0
|
156 double f_c, f_ex;
|
xue@0
|
157 double* cyclefrs;
|
xue@0
|
158 double* cyclefs;
|
xue@0
|
159 int cyclefrcount;
|
xue@0
|
160 int CurrentPartial;
|
xue@0
|
161 int CurrentFB;
|
xue@0
|
162 int CurrentFr;
|
xue@0
|
163 int CurrentP;
|
xue@0
|
164 int CurrentK;
|
xue@0
|
165 int CurrentB;
|
xue@0
|
166 int CurrentC;
|
xue@0
|
167 double FXX[64];
|
xue@0
|
168 double NAF[4096];
|
xue@0
|
169 int SX[128]; //size related to number of partials
|
xue@0
|
170 int FX[128]; //size related to number of filter control points
|
xue@0
|
171 int FY[128]; //ditto
|
xue@0
|
172 int SXcycle[128];
|
xue@0
|
173 int KX1[64]; //size related to number of frames per cycle
|
xue@0
|
174 int KX2[64];
|
xue@0
|
175 int BX1[128]; //size related to number of cycles
|
xue@0
|
176 int BX2[128];
|
xue@0
|
177 int CX1[128]; //size related to number of cycles
|
xue@0
|
178 int CX2[128];
|
xue@0
|
179 int CY1[128];
|
xue@0
|
180 int CY2[128];
|
xue@0
|
181 int SXc;
|
xue@0
|
182 int SXcyclec;
|
xue@0
|
183 int FirstStartDrag;
|
xue@0
|
184 int StartDrag;
|
xue@0
|
185 int FirstStartDragX;
|
xue@0
|
186 int StartDragX;
|
xue@0
|
187
|
xue@0
|
188 __int16* Wave1;
|
xue@0
|
189
|
xue@0
|
190 __int16* datain;
|
xue@0
|
191
|
xue@0
|
192 void Copydata();
|
xue@0
|
193 void DrawModulator();
|
xue@0
|
194 void __fastcall ExternalInput();
|
xue@0
|
195 void FindNote();
|
xue@0
|
196 void Reset();
|
xue@0
|
197 void __fastcall SaveSF();
|
xue@0
|
198 void __fastcall SaveSF0();
|
xue@0
|
199 void __fastcall SaveWave();
|
xue@0
|
200 void __fastcall S_U(bool sf=false);
|
xue@0
|
201 void Synthesize();
|
xue@0
|
202 void UpdateDisplay(bool f0=true, bool f0s=true, bool f0d=true, bool sf=true);
|
xue@0
|
203 int __fastcall WaveView1CustomInfo(TObject*);
|
xue@0
|
204 void __fastcall WaveView1OpMode(TObject* Sender, TShiftState Shift, int& OpMode);
|
xue@0
|
205 };
|
xue@0
|
206 //---------------------------------------------------------------------------
|
xue@0
|
207 extern PACKAGE TSFDemoForm *SFDemoForm;
|
xue@0
|
208 //---------------------------------------------------------------------------
|
xue@0
|
209 #endif
|