@@ -1,7 +1,7 @@ |
| 1 |
unit Tracker; |
1 |
unit Tracker; |
| 2 |
|
2 |
|
| 3 |
{$mode objfpc}{$H+} |
3 |
{$mode objfpc}{$H+} |
| 4 |
|
4 |
{$WARN 4055 off : Conversion between ordinals and pointers is not portable} |
| 5 |
interface |
5 |
interface |
| 6 |
|
6 |
|
| 7 |
uses |
7 |
uses |
@@ -236,6 +236,7 @@ type |
| 236 |
procedure ToolButton3Click(Sender: TObject); |
236 |
procedure ToolButton3Click(Sender: TObject); |
| 237 |
procedure ToolButton4Click(Sender: TObject); |
237 |
procedure ToolButton4Click(Sender: TObject); |
| 238 |
procedure ExportGBButtonClick(Sender: TObject); |
238 |
procedure ExportGBButtonClick(Sender: TObject); |
|
|
239 |
procedure TreeView1DblClick(Sender: TObject); |
| 239 |
procedure WaveEditNumberSpinnerChange(Sender: TObject); |
240 |
procedure WaveEditNumberSpinnerChange(Sender: TObject); |
| 240 |
procedure WaveEditPaintBoxMouseDown(Sender: TObject; Button: TMouseButton; |
241 |
procedure WaveEditPaintBoxMouseDown(Sender: TObject; Button: TMouseButton; |
| 241 |
Shift: TShiftState; X, Y: Integer); |
242 |
Shift: TShiftState; X, Y: Integer); |
@@ -334,6 +335,9 @@ begin |
| 334 |
for I := Low(Song.Instruments) to High(song.Instruments) do |
335 |
for I := Low(Song.Instruments) to High(song.Instruments) do |
| 335 |
InstrumentComboBox.Items[I] := IntToStr(I)+': '+Song.Instruments[I].Name; |
336 |
InstrumentComboBox.Items[I] := IntToStr(I)+': '+Song.Instruments[I].Name; |
| 336 |
|
337 |
|
|
|
338 |
for I := Low(Song.Instruments) to High(song.Instruments) do |
|
|
339 |
InstrumentsNode.Items[I-1].Text := IntToStr(I)+': '+Song.Instruments[I].Name; |
|
|
340 |
|
| 337 |
LoadingFile := False; // HACK!!!! |
341 |
LoadingFile := False; // HACK!!!! |
| 338 |
|
342 |
|
| 339 |
OrderEditStringGrid.Row := 1; |
343 |
OrderEditStringGrid.Row := 1; |
@@ -844,10 +848,18 @@ begin |
| 844 |
|
848 |
|
| 845 |
// Fetch the tree items |
849 |
// Fetch the tree items |
| 846 |
with TreeView1 do begin |
850 |
with TreeView1 do begin |
| 847 |
PatternsNode := Items[0]; |
851 |
//PatternsNode := Items[0]; |
| 848 |
InstrumentsNode := Items[1]; |
852 |
InstrumentsNode := Items[0]; |
| 849 |
WavesNode := Items[2]; |
853 |
WavesNode := Items[1]; |
| 850 |
RoutinesNode := Items[3]; |
854 |
RoutinesNode := Items[2]; |
|
|
855 |
end; |
|
|
856 |
|
|
|
857 |
for I := 1 to 15 do |
|
|
858 |
TreeView1.Items.AddChild(InstrumentsNode, IntToStr(I)+':').Data := Pointer(I); |
|
|
859 |
|
|
|
860 |
for I := 0 to 15 do begin |
|
|
861 |
TreeView1.Items.AddChild(WavesNode, 'Wave '+IntToStr(I)).Data := Pointer(I); |
|
|
862 |
TreeView1.Items.AddChild(RoutinesNode, 'Routine '+IntToStr(I)).Data := Pointer(I); |
| 851 |
end; |
863 |
end; |
| 852 |
|
864 |
|
| 853 |
// Initialize order table |
865 |
// Initialize order table |
@@ -872,7 +884,7 @@ var |
| 872 |
Note: Integer; |
884 |
Note: Integer; |
| 873 |
Freq: Integer; |
885 |
Freq: Integer; |
| 874 |
begin |
886 |
begin |
| 875 |
if not Keybindings.TryGetData(Key, Note) then Exit; |
887 |
{if not Keybindings.TryGetData(Key, Note) then Exit; |
| 876 |
Inc(Note, OctaveSpinEdit.Value*12); |
888 |
Inc(Note, OctaveSpinEdit.Value*12); |
| 877 |
EnsureRange(Note, LOWEST_NOTE, HIGHEST_NOTE); |
889 |
EnsureRange(Note, LOWEST_NOTE, HIGHEST_NOTE); |
| 878 |
|
890 |
|
@@ -887,7 +899,7 @@ begin |
| 887 |
if not NotesToFreqs.TryGetData(Note, Freq) then Exit; |
899 |
if not NotesToFreqs.TryGetData(Note, Freq) then Exit; |
| 888 |
|
900 |
|
| 889 |
PreviewInstrument(Freq, InstrumentNumberSpinner.Value); |
901 |
PreviewInstrument(Freq, InstrumentNumberSpinner.Value); |
| 890 |
PreviewingInstrument := Note; |
902 |
PreviewingInstrument := Note;} |
| 891 |
end; |
903 |
end; |
| 892 |
|
904 |
|
| 893 |
procedure TfrmTracker.FormKeyUp(Sender: TObject; var Key: Word; |
905 |
procedure TfrmTracker.FormKeyUp(Sender: TObject; var Key: Word; |
@@ -1109,6 +1121,8 @@ begin |
| 1109 |
CurrentInstrument^.Name := InstrumentNameEdit.Text; |
1121 |
CurrentInstrument^.Name := InstrumentNameEdit.Text; |
| 1110 |
InstrumentComboBox.Items[InstrumentNumberSpinner.Value] := |
1122 |
InstrumentComboBox.Items[InstrumentNumberSpinner.Value] := |
| 1111 |
IntToStr(InstrumentNumberSpinner.Value) + ': ' + InstrumentNameEdit.Text; |
1123 |
IntToStr(InstrumentNumberSpinner.Value) + ': ' + InstrumentNameEdit.Text; |
|
|
1124 |
InstrumentsNode.Items[InstrumentNumberSpinner.Value-1].Text := |
|
|
1125 |
InstrumentComboBox.Items[InstrumentNumberSpinner.Value]; |
| 1112 |
end; |
1126 |
end; |
| 1113 |
|
1127 |
|
| 1114 |
procedure TfrmTracker.InstrumentNumberSpinnerChange(Sender: TObject); |
1128 |
procedure TfrmTracker.InstrumentNumberSpinnerChange(Sender: TObject); |
@@ -1353,6 +1367,24 @@ begin |
| 1353 |
end; |
1367 |
end; |
| 1354 |
end; |
1368 |
end; |
| 1355 |
|
1369 |
|
|
|
1370 |
procedure TfrmTracker.TreeView1DblClick(Sender: TObject); |
|
|
1371 |
begin |
|
|
1372 |
if TreeView1.Selected.Parent = InstrumentsNode then begin |
|
|
1373 |
InstrumentNumberSpinner.Value := PtrUInt(TreeView1.Selected.Data); |
|
|
1374 |
PageControl1.ActivePage := InstrumentTabSheet; |
|
|
1375 |
end; |
|
|
1376 |
|
|
|
1377 |
if TreeView1.Selected.Parent = WavesNode then begin |
|
|
1378 |
WaveEditNumberSpinner.Value := PtrUInt(TreeView1.Selected.Data); |
|
|
1379 |
PageControl1.ActivePage := WavesTabSheet; |
|
|
1380 |
end; |
|
|
1381 |
|
|
|
1382 |
if TreeView1.Selected.Parent = RoutinesNode then begin |
|
|
1383 |
RoutineNumberSpinner.Value := PtrUInt(TreeView1.Selected.Data); |
|
|
1384 |
PageControl1.ActivePage := RoutinesTabSheet; |
|
|
1385 |
end; |
|
|
1386 |
end; |
|
|
1387 |
|
| 1356 |
procedure TfrmTracker.WaveEditNumberSpinnerChange(Sender: TObject); |
1388 |
procedure TfrmTracker.WaveEditNumberSpinnerChange(Sender: TObject); |
| 1357 |
begin |
1389 |
begin |
| 1358 |
LoadWave(WaveEditNumberSpinner.Value); |
1390 |
LoadWave(WaveEditNumberSpinner.Value); |