@@ -8,15 +8,17 @@ uses |
| 8 |
Menus, Spin, StdCtrls, ActnList, StdActns, SynEdit, SynHighlighterAny, |
8 |
Menus, Spin, StdCtrls, ActnList, StdActns, SynEdit, SynHighlighterAny, |
| 9 |
FileUtil, math, Instruments, Waves, Song, EmulationThread, Utils, Constants, |
9 |
FileUtil, math, Instruments, Waves, Song, EmulationThread, Utils, Constants, |
| 10 |
sound, vars, machine, about_hugetracker, TrackerGrid, lclintf, lmessages, |
10 |
sound, vars, machine, about_hugetracker, TrackerGrid, lclintf, lmessages, |
| 11 |
Buttons, Grids, DBCtrls, HugeDatatypes, LCLType, RackCtls, Codegen, SymParser, |
11 |
Buttons, Grids, DBCtrls, HugeDatatypes, LCLType, Clipbrd, RackCtls, Codegen, |
| 12 |
options, IniFiles, bgrabitmap, effecteditor, RenderToWave, modimport, |
12 |
SymParser, options, IniFiles, bgrabitmap, effecteditor, RenderToWave, |
| 13 |
strutils, Types; |
13 |
modimport, strutils, Types; |
| 14 |
|
14 |
|
| 15 |
type |
15 |
type |
| 16 |
{ TfrmTracker } |
16 |
{ TfrmTracker } |
| 17 |
|
17 |
|
| 18 |
TfrmTracker = class(TForm) |
18 |
TfrmTracker = class(TForm) |
| 19 |
Button1: TButton; |
19 |
Button1: TButton; |
|
|
20 |
MenuItem37: TMenuItem; |
|
|
21 |
MenuItem38: TMenuItem; |
| 20 |
PlayWaveWhileDrawingCheckbox: TCheckBox; |
22 |
PlayWaveWhileDrawingCheckbox: TCheckBox; |
| 21 |
Duty1Visualizer: TPaintBox; |
23 |
Duty1Visualizer: TPaintBox; |
| 22 |
Duty2Visualizer: TPaintBox; |
24 |
Duty2Visualizer: TPaintBox; |
@@ -57,6 +59,7 @@ type |
| 57 |
NoiseVisualizer: TPaintBox; |
59 |
NoiseVisualizer: TPaintBox; |
| 58 |
MODOpenDialog: TOpenDialog; |
60 |
MODOpenDialog: TOpenDialog; |
| 59 |
Panel6: TPanel; |
61 |
Panel6: TPanel; |
|
|
62 |
WaveEditPopup: TPopupMenu; |
| 60 |
SynAnySyn1: TSynAnySyn; |
63 |
SynAnySyn1: TSynAnySyn; |
| 61 |
WavSaveDialog: TSaveDialog; |
64 |
WavSaveDialog: TSaveDialog; |
| 62 |
ToolButton10: TToolButton; |
65 |
ToolButton10: TToolButton; |
@@ -228,6 +231,8 @@ type |
| 228 |
procedure FileSaveAs1BeforeExecute(Sender: TObject); |
231 |
procedure FileSaveAs1BeforeExecute(Sender: TObject); |
| 229 |
procedure FormCloseQuery(Sender: TObject; var CanClose: boolean); |
232 |
procedure FormCloseQuery(Sender: TObject; var CanClose: boolean); |
| 230 |
procedure HexWaveEditEditingDone(Sender: TObject); |
233 |
procedure HexWaveEditEditingDone(Sender: TObject); |
|
|
234 |
procedure MenuItem37Click(Sender: TObject); |
|
|
235 |
procedure MenuItem38Click(Sender: TObject); |
| 231 |
procedure MenuItem46Click(Sender: TObject); |
236 |
procedure MenuItem46Click(Sender: TObject); |
| 232 |
procedure ScrollBox1MouseWheelDown(Sender: TObject; Shift: TShiftState; |
237 |
procedure ScrollBox1MouseWheelDown(Sender: TObject; Shift: TShiftState; |
| 233 |
MousePos: TPoint; var Handled: Boolean); |
238 |
MousePos: TPoint; var Handled: Boolean); |
@@ -393,6 +398,7 @@ type |
| 393 |
procedure CopyOrderGridToOrderMatrix; |
398 |
procedure CopyOrderGridToOrderMatrix; |
| 394 |
procedure CopyOrderMatrixToOrderGrid; |
399 |
procedure CopyOrderMatrixToOrderGrid; |
| 395 |
procedure CopyWaveIntoWaveRam(Wave: Integer); |
400 |
procedure CopyWaveIntoWaveRam(Wave: Integer); |
|
|
401 |
function ConvertWaveToHexString(Wave: Integer): String; |
| 396 |
function PreparePreview: Boolean; |
402 |
function PreparePreview: Boolean; |
| 397 |
procedure ResetEmulationThread; |
403 |
procedure ResetEmulationThread; |
| 398 |
|
404 |
|
@@ -474,15 +480,8 @@ begin |
| 474 |
end; |
480 |
end; |
| 475 |
|
481 |
|
| 476 |
procedure TfrmTracker.UpdateHexWaveTextbox; |
482 |
procedure TfrmTracker.UpdateHexWaveTextbox; |
| 477 |
var |
|
|
| 478 |
I: Integer; |
|
|
| 479 |
S: String; |
|
|
| 480 |
begin |
483 |
begin |
| 481 |
S := ''; |
484 |
HexWaveEdit.Text := ConvertWaveToHexString(WaveEditNumberSpinner.Value); |
| 482 |
for I := Low(CurrentWave^) to High(CurrentWave^) do |
|
|
| 483 |
S += hexStr(CurrentWave^[I], 1); |
|
|
| 484 |
|
|
|
| 485 |
HexWaveEdit.Text := S; |
|
|
| 486 |
end; |
485 |
end; |
| 487 |
|
486 |
|
| 488 |
function TfrmTracker.CheckUnsavedChanges: Boolean; |
487 |
function TfrmTracker.CheckUnsavedChanges: Boolean; |
@@ -759,6 +758,15 @@ begin |
| 759 |
Spokeb(AUD3_WAVE_RAM+I, NewWaveform[I]); |
758 |
Spokeb(AUD3_WAVE_RAM+I, NewWaveform[I]); |
| 760 |
end; |
759 |
end; |
| 761 |
|
760 |
|
|
|
761 |
function TfrmTracker.ConvertWaveToHexString(Wave: Integer): String; |
|
|
762 |
var |
|
|
763 |
I: Integer; |
|
|
764 |
begin |
|
|
765 |
Result := ''; |
|
|
766 |
for I := Low(CurrentWave^) to High(CurrentWave^) do |
|
|
767 |
Result += hexStr(CurrentWave^[I], 1); |
|
|
768 |
end; |
|
|
769 |
|
| 762 |
function TfrmTracker.PreparePreview: Boolean; |
770 |
function TfrmTracker.PreparePreview: Boolean; |
| 763 |
var |
771 |
var |
| 764 |
I: Integer; |
772 |
I: Integer; |
@@ -1358,7 +1366,7 @@ var |
| 1358 |
I: Integer; |
1366 |
I: Integer; |
| 1359 |
begin |
1367 |
begin |
| 1360 |
S := DelSpace(HexWaveEdit.Text); |
1368 |
S := DelSpace(HexWaveEdit.Text); |
| 1361 |
if S.Length < High(TWave) then Exit; |
1369 |
if S.Length < High(TWave)+1 then Exit; |
| 1362 |
|
1370 |
|
| 1363 |
try |
1371 |
try |
| 1364 |
for I := Low(TWave) to High(TWave) do |
1372 |
for I := Low(TWave) to High(TWave) do |
@@ -1370,6 +1378,17 @@ begin |
| 1370 |
end; |
1378 |
end; |
| 1371 |
end; |
1379 |
end; |
| 1372 |
|
1380 |
|
|
|
1381 |
procedure TfrmTracker.MenuItem37Click(Sender: TObject); |
|
|
1382 |
begin |
|
|
1383 |
Clipboard.AsText := ConvertWaveToHexString(WaveEditNumberSpinner.Value); |
|
|
1384 |
end; |
|
|
1385 |
|
|
|
1386 |
procedure TfrmTracker.MenuItem38Click(Sender: TObject); |
|
|
1387 |
begin |
|
|
1388 |
HexWaveEdit.Text := Clipboard.AsText; |
|
|
1389 |
HexWaveEditEditingDone(nil); |
|
|
1390 |
end; |
|
|
1391 |
|
| 1373 |
procedure TfrmTracker.MenuItem46Click(Sender: TObject); |
1392 |
procedure TfrmTracker.MenuItem46Click(Sender: TObject); |
| 1374 |
begin |
1393 |
begin |
| 1375 |
|
1394 |
|
@@ -2046,18 +2065,20 @@ procedure TfrmTracker.WaveEditPaintBoxMouseDown(Sender: TObject; |
| 2046 |
var |
2065 |
var |
| 2047 |
TestInstrument: TInstrument; |
2066 |
TestInstrument: TInstrument; |
| 2048 |
begin |
2067 |
begin |
| 2049 |
TestInstrument := Default(TInstrument); |
2068 |
if Button = mbLeft then begin |
| 2050 |
with TestInstrument do begin |
2069 |
TestInstrument := Default(TInstrument); |
| 2051 |
Type_ := itWave; |
2070 |
with TestInstrument do begin |
| 2052 |
OutputLevel := 1; |
2071 |
Type_ := itWave; |
| 2053 |
Waveform := WaveEditNumberSpinner.Value; |
2072 |
OutputLevel := 1; |
| 2054 |
Length := 0; |
2073 |
Waveform := WaveEditNumberSpinner.Value; |
| 2055 |
LengthEnabled := False; |
2074 |
Length := 0; |
| 2056 |
end; |
2075 |
LengthEnabled := False; |
|
|
2076 |
end; |
| 2057 |
|
2077 |
|
| 2058 |
DrawingWave := True; |
2078 |
DrawingWave := True; |
| 2059 |
if PlayWaveWhileDrawingCheckbox.Checked then |
2079 |
if PlayWaveWhileDrawingCheckbox.Checked then |
| 2060 |
PreviewInstrument(NotesToFreqs.Data[C_5], TestInstrument); |
2080 |
PreviewInstrument(NotesToFreqs.Data[C_5], TestInstrument); |
|
|
2081 |
end |
| 2061 |
end; |
2082 |
end; |
| 2062 |
|
2083 |
|
| 2063 |
procedure TfrmTracker.WaveEditPaintBoxMouseMove(Sender: TObject; |
2084 |
procedure TfrmTracker.WaveEditPaintBoxMouseMove(Sender: TObject; |