Commit a48de16

Nick committed on
WIP conversion of noise channel notes
commit a48de16915834a332bbcc9abbb36b34e52317384 parent 696b3df
4 changed files +549−435
Modifiedconstants.pas +71−1
@@ -8,9 +8,10 @@ uses
8 fgl, Graphics, LMessages; 8 fgl, Graphics, LMessages;
9 9
10 type 10 type
11 TIntToIntMap = specialize TFPGMap<Integer, Integer>;
11 TNoteMap = specialize TFPGMap<Integer, String>; 12 TNoteMap = specialize TFPGMap<Integer, String>;
12 TNoteToCodeMap = specialize TFPGMap<String, Integer>; 13 TNoteToCodeMap = specialize TFPGMap<String, Integer>;
13 TNoteToFreqMap = specialize TFPGMap<Integer, Integer>; 14 TNoteToFreqMap = TIntToIntMap;
14 15
15 TInstrumentIndex = 1..15; 16 TInstrumentIndex = 1..15;
16 TWaveIndex = 0..15; 17 TWaveIndex = 0..15;
@@ -144,6 +145,7 @@ var
144 NoteMap, NoteToDriverMap, NoteToCMap: TNoteMap; 145 NoteMap, NoteToDriverMap, NoteToCMap: TNoteMap;
145 NotesToFreqs: TNoteToFreqMap; 146 NotesToFreqs: TNoteToFreqMap;
146 NoteToCodeMap: TNoteToCodeMap; 147 NoteToCodeMap: TNoteToCodeMap;
148 Ch4FreqToNoteCodeMap: TIntToIntMap;
147 149
148 function NoteCodeToString(NoteCode: Integer): String; 150 function NoteCodeToString(NoteCode: Integer): String;
149 151
@@ -165,6 +167,8 @@ begin
165 NotesToFreqs := TNoteToFreqMap.Create; 167 NotesToFreqs := TNoteToFreqMap.Create;
166 NoteToCodeMap := TNoteToCodeMap.Create; 168 NoteToCodeMap := TNoteToCodeMap.Create;
167 169
170 Ch4FreqToNoteCodeMap := TIntToIntMap.Create;
171
168 {%Region Notes->Freqs} 172 {%Region Notes->Freqs}
169 NotesToFreqs.Add(C_3, 44); 173 NotesToFreqs.Add(C_3, 44);
170 NotesToFreqs.Add(CS3, 156); 174 NotesToFreqs.Add(CS3, 156);
@@ -540,4 +544,70 @@ begin
540 NoteToCMap.add(B_8, 'B_8'); 544 NoteToCMap.add(B_8, 'B_8');
541 {%EndRegion} 545 {%EndRegion}
542 546
547 {%Region Ch4 Frequency -> Note Code}
548 Ch4FreqToNoteCodeMap.Add(524288, 0);
549 Ch4FreqToNoteCodeMap.Add(262144, 1);
550 Ch4FreqToNoteCodeMap.Add(131072, 2);
551 Ch4FreqToNoteCodeMap.Add(87381, 3);
552 Ch4FreqToNoteCodeMap.Add(65536, 4);
553 Ch4FreqToNoteCodeMap.Add(52428, 5);
554 Ch4FreqToNoteCodeMap.Add(43690, 6);
555 Ch4FreqToNoteCodeMap.Add(37449, 7);
556 Ch4FreqToNoteCodeMap.Add(32768, 8);
557 Ch4FreqToNoteCodeMap.Add(26214, 9);
558 Ch4FreqToNoteCodeMap.Add(21845, 10);
559 Ch4FreqToNoteCodeMap.Add(18724, 11);
560 Ch4FreqToNoteCodeMap.Add(16384, 12);
561 Ch4FreqToNoteCodeMap.Add(13107, 13);
562 Ch4FreqToNoteCodeMap.Add(10922, 14);
563 Ch4FreqToNoteCodeMap.Add(9362, 15);
564 Ch4FreqToNoteCodeMap.Add(8192, 16);
565 Ch4FreqToNoteCodeMap.Add(6553, 17);
566 Ch4FreqToNoteCodeMap.Add(5461, 18);
567 Ch4FreqToNoteCodeMap.Add(4681, 19);
568 Ch4FreqToNoteCodeMap.Add(4096, 20);
569 Ch4FreqToNoteCodeMap.Add(3276, 21);
570 Ch4FreqToNoteCodeMap.Add(2730, 22);
571 Ch4FreqToNoteCodeMap.Add(2340, 23);
572 Ch4FreqToNoteCodeMap.Add(2048, 24);
573 Ch4FreqToNoteCodeMap.Add(1638, 25);
574 Ch4FreqToNoteCodeMap.Add(1365, 26);
575 Ch4FreqToNoteCodeMap.Add(1170, 27);
576 Ch4FreqToNoteCodeMap.Add(1024, 28);
577 Ch4FreqToNoteCodeMap.Add(819, 29);
578 Ch4FreqToNoteCodeMap.Add(682, 30);
579 Ch4FreqToNoteCodeMap.Add(585, 31);
580 Ch4FreqToNoteCodeMap.Add(512, 32);
581 Ch4FreqToNoteCodeMap.Add(409, 33);
582 Ch4FreqToNoteCodeMap.Add(341, 34);
583 Ch4FreqToNoteCodeMap.Add(292, 35);
584 Ch4FreqToNoteCodeMap.Add(256, 36);
585 Ch4FreqToNoteCodeMap.Add(204, 37);
586 Ch4FreqToNoteCodeMap.Add(170, 38);
587 Ch4FreqToNoteCodeMap.Add(146, 39);
588 Ch4FreqToNoteCodeMap.Add(128, 40);
589 Ch4FreqToNoteCodeMap.Add(102, 41);
590 Ch4FreqToNoteCodeMap.Add(85, 42);
591 Ch4FreqToNoteCodeMap.Add(73, 43);
592 Ch4FreqToNoteCodeMap.Add(64, 44);
593 Ch4FreqToNoteCodeMap.Add(51, 45);
594 Ch4FreqToNoteCodeMap.Add(42, 46);
595 Ch4FreqToNoteCodeMap.Add(36, 47);
596 Ch4FreqToNoteCodeMap.Add(32, 48);
597 Ch4FreqToNoteCodeMap.Add(25, 49);
598 Ch4FreqToNoteCodeMap.Add(21, 50);
599 Ch4FreqToNoteCodeMap.Add(18, 51);
600 Ch4FreqToNoteCodeMap.Add(16, 52);
601 Ch4FreqToNoteCodeMap.Add(12, 53);
602 Ch4FreqToNoteCodeMap.Add(10, 54);
603 Ch4FreqToNoteCodeMap.Add(9, 55);
604 Ch4FreqToNoteCodeMap.Add(8, 56);
605 Ch4FreqToNoteCodeMap.Add(6, 57);
606 Ch4FreqToNoteCodeMap.Add(5, 58);
607 Ch4FreqToNoteCodeMap.Add(4, 60);
608 Ch4FreqToNoteCodeMap.Add(3, 61);
609 Ch4FreqToNoteCodeMap.Add(2, 64);
610 Ch4FreqToNoteCodeMap.Add(1, 67);
611 {%EndRegion}
612
543 end. 613 end.
Modifiedsong.pas +46−4
@@ -1,13 +1,13 @@
1 unit Song; 1 unit Song;
2 2
3 {$mode delphi} 3 {$mode objfpc}{$H+}
4 4
5 // TODO: Lots of duplicated code in here. At some point this should switch over 5 // TODO: Lots of duplicated code in here. At some point this should switch over
6 // to a more parsable format, like NBT, JSON, or XML or something. 6 // to a more parsable format, like NBT, JSON, or XML or something.
7 7
8 interface 8 interface
9 9
10 uses Classes, HugeDatatypes, instruments, Constants, waves; 10 uses Classes, HugeDatatypes, instruments, Constants, waves, math;
11 11
12 type 12 type
13 TSongV1 = packed record 13 TSongV1 = packed record
@@ -538,7 +538,43 @@ end;
538 function UpgradeSong(S: TSongV3): TSong; 538 function UpgradeSong(S: TSongV3): TSong;
539 var 539 var
540 SV4: TSongV4; 540 SV4: TSongV4;
541 I: Integer; 541 I, K: Integer;
542 Pat: PPattern;
543
544 function UsedInCH4(PatternIndex: Integer): Boolean;
545 var
546 J: Integer;
547 begin
548 for J := Low(SV4.OrderMatrix[3]) to High(SV4.OrderMatrix[3])-1 do // off by one error....
549 if SV4.OrderMatrix[3, J] = PatternIndex then
550 Exit(True);
551
552 Result := False;
553 end;
554
555 procedure ConvertPattern(var Pat: TPattern);
556 var
557 I: Integer;
558 Regs: TRegisters;
559 PolyCounter: TPolynomialCounterRegister absolute Regs.NR43;
560 Ch4Freq: Integer;
561 RealR: Double;
562 begin
563 for I := Low(Pat) to High(Pat) do begin
564 if (Pat[I].Instrument = 0) or (Pat[I].Note = NO_NOTE) then Continue;
565
566 Regs := NoiseInstrumentToRegisters(NotesToFreqs.KeyData[Pat[I].Note], False, SV4.Instruments.Noise[Pat[I].Instrument]);
567 if PolyCounter.DividingRatio = 0 then
568 RealR := 0.5
569 else
570 RealR := PolyCounter.DividingRatio;
571
572 Ch4Freq := Trunc((524288 / RealR) / 2**(PolyCounter.ShiftClockFrequency+1));
573 if not Ch4FreqToNoteCodeMap.TryGetData(Ch4Freq, Pat[I].Note) then
574 writeln(Regs.NR43, ' not found!');
575 //Pat[I].Note := Ch4PolyCounterToNoteCodeMap.KeyData[];
576 end;
577 end;
542 begin 578 begin
543 SV4.Version:=4; 579 SV4.Version:=4;
544 SV4.Name:=S.Name; 580 SV4.Name:=S.Name;
@@ -550,12 +586,18 @@ begin
550 SV4.Routines:=S.Routines; 586 SV4.Routines:=S.Routines;
551 SV4.Waves := S.Waves; 587 SV4.Waves := S.Waves;
552 588
553 // for now just generate a blank noise macro 589 // Create a blank noise macro for all noise instruments
554 for I := Low(S.Instruments.All) to High(S.Instruments.All) do begin 590 for I := Low(S.Instruments.All) to High(S.Instruments.All) do begin
555 Move(S.Instruments.All[I], SV4.Instruments.All[I], SizeOf(TInstrumentV1)); 591 Move(S.Instruments.All[I], SV4.Instruments.All[I], SizeOf(TInstrumentV1));
556 SV4.Instruments.All[I].NoiseMacro := Default(TNoiseMacro); 592 SV4.Instruments.All[I].NoiseMacro := Default(TNoiseMacro);
557 end; 593 end;
558 594
595 // Rewrite noise patterns to accomodate the new noise instruments...
596 for I := 0 to SV4.Patterns.Count-1 do
597 if UsedInCH4(SV4.Patterns.Keys[I]) then begin
598 //ConvertPattern(SV4.Patterns.Data[I]^);
599 end;
600
559 Result := UpgradeSong(SV4); 601 Result := UpgradeSong(SV4);
560 end; 602 end;
561 603
Modifiedtracker.lfm +431−429
@@ -1,12 +1,13 @@
1 object frmTracker: TfrmTracker 1 object frmTracker: TfrmTracker
2 Left = 1794 2 Left = 255
3 Height = 806 3 Height = 1125
4 Top = 68 4 Top = 114
5 Width = 1270 5 Width = 2220
6 AllowDropFiles = True 6 AllowDropFiles = True
7 Caption = 'hUGETracker' 7 Caption = 'hUGETracker'
8 ClientHeight = 786 8 ClientHeight = 1091
9 ClientWidth = 1270 9 ClientWidth = 2220
10 DesignTimePPI = 168
10 KeyPreview = True 11 KeyPreview = True
11 Menu = MainMenu1 12 Menu = MainMenu1
12 OnCloseQuery = FormCloseQuery 13 OnCloseQuery = FormCloseQuery
@@ -20,9 +21,9 @@ object frmTracker: TfrmTracker
20 LCLVersion = '2.0.9.0' 21 LCLVersion = '2.0.9.0'
21 object TreeView1: TTreeView 22 object TreeView1: TTreeView
22 Left = 0 23 Left = 0
23 Height = 674 24 Height = 895
24 Top = 89 25 Top = 153
25 Width = 193 26 Width = 338
26 Align = alLeft 27 Align = alLeft
27 ParentFont = False 28 ParentFont = False
28 ReadOnly = True 29 ReadOnly = True
@@ -40,27 +41,27 @@ object frmTracker: TfrmTracker
40 } 41 }
41 end 42 end
42 object Splitter1: TSplitter 43 object Splitter1: TSplitter
43 Left = 193 44 Left = 338
44 Height = 674 45 Height = 895
45 Top = 89 46 Top = 153
46 Width = 5 47 Width = 9
47 end 48 end
48 object Panel1: TPanel 49 object Panel1: TPanel
49 Left = 198 50 Left = 347
50 Height = 674 51 Height = 895
51 Top = 89 52 Top = 153
52 Width = 1072 53 Width = 1873
53 Align = alClient 54 Align = alClient
54 BevelOuter = bvNone 55 BevelOuter = bvNone
55 ClientHeight = 674 56 ClientHeight = 895
56 ClientWidth = 1072 57 ClientWidth = 1873
57 ParentFont = False 58 ParentFont = False
58 TabOrder = 2 59 TabOrder = 2
59 object PageControl1: TPageControl 60 object PageControl1: TPageControl
60 Left = 0 61 Left = 0
61 Height = 674 62 Height = 895
62 Top = 0 63 Top = 0
63 Width = 1072 64 Width = 1873
64 ActivePage = InstrumentTabSheet 65 ActivePage = InstrumentTabSheet
65 Align = alClient 66 Align = alClient
66 ParentFont = False 67 ParentFont = False
@@ -72,68 +73,68 @@ object frmTracker: TfrmTracker
72 ClientWidth = 1064 73 ClientWidth = 1064
73 ParentFont = False 74 ParentFont = False
74 object SongInformationGroupbox: TGroupBox 75 object SongInformationGroupbox: TGroupBox
75 Left = 8 76 Left = 14
76 Height = 136 77 Height = 238
77 Top = 8 78 Top = 14
78 Width = 305 79 Width = 534
79 Caption = 'Song information' 80 Caption = 'Song information'
80 ClientHeight = 116 81 ClientHeight = 203
81 ClientWidth = 301 82 ClientWidth = 530
82 ParentFont = False 83 ParentFont = False
83 TabOrder = 0 84 TabOrder = 0
84 object Label15: TLabel 85 object Label15: TLabel
85 Left = 8 86 Left = 14
86 Height = 15 87 Height = 15
87 Top = 16 88 Top = 28
88 Width = 27 89 Width = 27
89 Caption = 'Song' 90 Caption = 'Song'
90 ParentColor = False 91 ParentColor = False
91 ParentFont = False 92 ParentFont = False
92 end 93 end
93 object Label16: TLabel 94 object Label16: TLabel
94 Left = 7 95 Left = 12
95 Height = 15 96 Height = 15
96 Top = 48 97 Top = 84
97 Width = 28 98 Width = 28
98 Caption = 'Artist' 99 Caption = 'Artist'
99 ParentColor = False 100 ParentColor = False
100 ParentFont = False 101 ParentFont = False
101 end 102 end
102 object SongEdit: TEdit 103 object SongEdit: TEdit
103 Left = 56 104 Left = 98
104 Height = 23 105 Height = 23
105 Hint = 'The name of your composition' 106 Hint = 'The name of your composition'
106 Top = 8 107 Top = 14
107 Width = 216 108 Width = 378
108 OnChange = SongEditChange 109 OnChange = SongEditChange
109 ParentFont = False 110 ParentFont = False
110 TabOrder = 0 111 TabOrder = 0
111 end 112 end
112 object ArtistEdit: TEdit 113 object ArtistEdit: TEdit
113 Left = 56 114 Left = 98
114 Height = 23 115 Height = 23
115 Hint = 'Your name or handle' 116 Hint = 'Your name or handle'
116 Top = 40 117 Top = 70
117 Width = 216 118 Width = 378
118 OnChange = ArtistEditChange 119 OnChange = ArtistEditChange
119 ParentFont = False 120 ParentFont = False
120 TabOrder = 1 121 TabOrder = 1
121 end 122 end
122 object Label21: TLabel 123 object Label21: TLabel
123 Left = 8 124 Left = 14
124 Height = 15 125 Height = 15
125 Top = 78 126 Top = 136
126 Width = 114 127 Width = 114
127 Caption = 'Tempo (ticks per row)' 128 Caption = 'Tempo (ticks per row)'
128 ParentColor = False 129 ParentColor = False
129 ParentFont = False 130 ParentFont = False
130 end 131 end
131 object TicksPerRowSpinEdit: TSpinEdit 132 object TicksPerRowSpinEdit: TSpinEdit
132 Left = 133 133 Left = 233
133 Height = 23 134 Height = 23
134 Hint = 'How many ticks should happen before the row changes. Higher means slower' 135 Hint = 'How many ticks should happen before the row changes. Higher means slower'
135 Top = 73 136 Top = 128
136 Width = 50 137 Width = 88
137 MaxValue = 20 138 MaxValue = 20
138 MinValue = 1 139 MinValue = 1
139 OnChange = TicksPerRowSpinEditChange 140 OnChange = TicksPerRowSpinEditChange
@@ -160,7 +161,7 @@ object frmTracker: TfrmTracker
160 TabOrder = 0 161 TabOrder = 0
161 object HeaderControl1: THeaderControl 162 object HeaderControl1: THeaderControl
162 Left = 1 163 Left = 1
163 Height = 30 164 Height = 52
164 Hint = 'Left click to mute, right click to solo' 165 Hint = 'Left click to mute, right click to solo'
165 Top = 1 166 Top = 1
166 Width = 838 167 Width = 838
@@ -169,35 +170,35 @@ object frmTracker: TfrmTracker
169 Sections = < 170 Sections = <
170 item 171 item
171 Alignment = taLeftJustify 172 Alignment = taLeftJustify
172 Width = 32 173 Width = 56
173 Visible = True 174 Visible = True
174 end 175 end
175 item 176 item
176 Alignment = taCenter 177 Alignment = taCenter
177 ImageIndex = 1 178 ImageIndex = 1
178 Text = 'Duty 1' 179 Text = 'Duty 1'
179 Width = 133 180 Width = 233
180 Visible = True 181 Visible = True
181 end 182 end
182 item 183 item
183 Alignment = taCenter 184 Alignment = taCenter
184 ImageIndex = 1 185 ImageIndex = 1
185 Text = 'Duty 2' 186 Text = 'Duty 2'
186 Width = 133 187 Width = 233
187 Visible = True 188 Visible = True
188 end 189 end
189 item 190 item
190 Alignment = taCenter 191 Alignment = taCenter
191 ImageIndex = 1 192 ImageIndex = 1
192 Text = 'Wave' 193 Text = 'Wave'
193 Width = 133 194 Width = 233
194 Visible = True 195 Visible = True
195 end 196 end
196 item 197 item
197 Alignment = taCenter 198 Alignment = taCenter
198 ImageIndex = 1 199 ImageIndex = 1
199 Text = 'Noise' 200 Text = 'Noise'
200 Width = 133 201 Width = 233
201 Visible = True 202 Visible = True
202 end> 203 end>
203 OnSectionClick = HeaderControl1SectionClick 204 OnSectionClick = HeaderControl1SectionClick
@@ -231,11 +232,11 @@ object frmTracker: TfrmTracker
231 Left = 0 232 Left = 0
232 Height = 614 233 Height = 614
233 Top = 0 234 Top = 0
234 Width = 32 235 Width = 56
235 Align = alLeft 236 Align = alLeft
236 BorderStyle = bsNone 237 BorderStyle = bsNone
237 ColCount = 1 238 ColCount = 1
238 DefaultColWidth = 32 239 DefaultColWidth = 56
239 Enabled = False 240 Enabled = False
240 ParentFont = False 241 ParentFont = False
241 RowCount = 64 242 RowCount = 64
@@ -248,41 +249,41 @@ object frmTracker: TfrmTracker
248 Left = 0 249 Left = 0
249 Height = 646 250 Height = 646
250 Top = 0 251 Top = 0
251 Width = 224 252 Width = 392
252 Align = alLeft 253 Align = alLeft
253 AutoEdit = False 254 AutoEdit = False
254 AutoFillColumns = True 255 AutoFillColumns = True
255 Columns = < 256 Columns = <
256 item 257 item
257 Alignment = taCenter 258 Alignment = taCenter
258 MinSize = 33 259 MinSize = 58
259 MaxSize = 33 260 MaxSize = 58
260 Title.Caption = 'Dty1' 261 Title.Caption = 'Dty1'
261 Width = 34 262 Width = 61
262 end 263 end
263 item 264 item
264 Alignment = taCenter 265 Alignment = taCenter
265 MinSize = 33 266 MinSize = 58
266 MaxSize = 33 267 MaxSize = 58
267 Title.Caption = 'Dty2' 268 Title.Caption = 'Dty2'
268 Width = 34 269 Width = 61
269 end 270 end
270 item 271 item
271 Alignment = taCenter 272 Alignment = taCenter
272 MinSize = 33 273 MinSize = 58
273 MaxSize = 33 274 MaxSize = 58
274 Title.Caption = 'Wav' 275 Title.Caption = 'Wav'
275 Width = 34 276 Width = 61
276 end 277 end
277 item 278 item
278 Alignment = taCenter 279 Alignment = taCenter
279 MinSize = 33 280 MinSize = 58
280 MaxSize = 33 281 MaxSize = 58
281 Title.Caption = 'Nse' 282 Title.Caption = 'Nse'
282 Width = 37 283 Width = 63
283 end> 284 end>
284 DefaultColWidth = 17 285 DefaultColWidth = 30
285 DefaultRowHeight = 21 286 DefaultRowHeight = 37
286 ExtendedSelect = False 287 ExtendedSelect = False
287 Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goRangeSelect, goRowMoving, goEditing, goTabs, goSmoothScroll, goFixedRowNumbering, goRowHighlight] 288 Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goRangeSelect, goRowMoving, goEditing, goTabs, goSmoothScroll, goFixedRowNumbering, goRowHighlight]
288 ParentFont = False 289 ParentFont = False
@@ -302,28 +303,28 @@ object frmTracker: TfrmTracker
302 OnKeyDown = OrderEditStringGridKeyDown 303 OnKeyDown = OrderEditStringGridKeyDown
303 OnValidateEntry = OrderEditStringGridValidateEntry 304 OnValidateEntry = OrderEditStringGridValidateEntry
304 ColWidths = ( 305 ColWidths = (
305 64 306 112
306 34 307 61
307 34 308 61
308 34 309 61
309 37 310 63
310 ) 311 )
311 end 312 end
312 end 313 end
313 object InstrumentTabSheet: TTabSheet 314 object InstrumentTabSheet: TTabSheet
314 Caption = 'Instruments' 315 Caption = 'Instruments'
315 ClientHeight = 646 316 ClientHeight = 852
316 ClientWidth = 1064 317 ClientWidth = 1865
317 ParentFont = False 318 ParentFont = False
318 object PaintBox1: TPaintBox 319 object PaintBox1: TPaintBox
319 AnchorSideTop.Control = FlowPanel1 320 AnchorSideTop.Control = FlowPanel1
320 AnchorSideTop.Side = asrBottom 321 AnchorSideTop.Side = asrBottom
321 AnchorSideBottom.Side = asrBottom 322 AnchorSideBottom.Side = asrBottom
322 Left = 0 323 Left = 0
323 Height = 154 324 Height = 0
324 Hint = 'Preview of how the resulting waveform will look with envelope applied' 325 Hint = 'Preview of how the resulting waveform will look with envelope applied'
325 Top = 492 326 Top = 852
326 Width = 1064 327 Width = 1865
327 Align = alClient 328 Align = alClient
328 Color = clBlack 329 Color = clBlack
329 ParentColor = False 330 ParentColor = False
@@ -333,9 +334,9 @@ object frmTracker: TfrmTracker
333 end 334 end
334 object FlowPanel1: TFlowPanel 335 object FlowPanel1: TFlowPanel
335 Left = 0 336 Left = 0
336 Height = 492 337 Height = 860
337 Top = 0 338 Top = 0
338 Width = 1064 339 Width = 1865
339 Align = alTop 340 Align = alTop
340 AutoSize = True 341 AutoSize = True
341 BevelOuter = bvNone 342 BevelOuter = bvNone
@@ -370,26 +371,26 @@ object frmTracker: TfrmTracker
370 ParentFont = False 371 ParentFont = False
371 TabOrder = 0 372 TabOrder = 0
372 object InstrumentGroupBox: TGroupBox 373 object InstrumentGroupBox: TGroupBox
373 Left = 7 374 Left = 12
374 Height = 241 375 Height = 422
375 Top = 7 376 Top = 12
376 Width = 271 377 Width = 474
377 Anchors = [] 378 Anchors = []
378 BorderSpacing.Left = 7 379 BorderSpacing.Left = 12
379 BorderSpacing.Top = 7 380 BorderSpacing.Top = 12
380 BorderSpacing.Right = 7 381 BorderSpacing.Right = 12
381 BorderSpacing.Bottom = 7 382 BorderSpacing.Bottom = 12
382 Caption = 'Instrument' 383 Caption = 'Instrument'
383 ClientHeight = 221 384 ClientHeight = 387
384 ClientWidth = 267 385 ClientWidth = 470
385 ParentFont = False 386 ParentFont = False
386 TabOrder = 0 387 TabOrder = 0
387 object InstrumentNumberSpinner: TSpinEdit 388 object InstrumentNumberSpinner: TSpinEdit
388 Left = 80 389 Left = 140
389 Height = 23 390 Height = 38
390 Hint = 'What instrument to edit' 391 Hint = 'What instrument to edit'
391 Top = 38 392 Top = 66
392 Width = 176 393 Width = 308
393 MaxValue = 15 394 MaxValue = 15
394 MinValue = 1 395 MinValue = 1
395 OnChange = InstrumentNumberSpinnerChange 396 OnChange = InstrumentNumberSpinnerChange
@@ -398,50 +399,50 @@ object frmTracker: TfrmTracker
398 Value = 1 399 Value = 1
399 end 400 end
400 object Label1: TLabel 401 object Label1: TLabel
401 Left = 8 402 Left = 14
402 Height = 15 403 Height = 30
403 Top = 46 404 Top = 80
404 Width = 58 405 Width = 101
405 Caption = 'Instrument' 406 Caption = 'Instrument'
406 ParentColor = False 407 ParentColor = False
407 ParentFont = False 408 ParentFont = False
408 end 409 end
409 object Label2: TLabel 410 object Label2: TLabel
410 Left = 8 411 Left = 14
411 Height = 15 412 Height = 30
412 Top = 78 413 Top = 136
413 Width = 32 414 Width = 56
414 Caption = 'Name' 415 Caption = 'Name'
415 ParentColor = False 416 ParentColor = False
416 ParentFont = False 417 ParentFont = False
417 end 418 end
418 object InstrumentNameEdit: TEdit 419 object InstrumentNameEdit: TEdit
419 Left = 80 420 Left = 140
420 Height = 23 421 Height = 38
421 Hint = 'The name of the instrument' 422 Hint = 'The name of the instrument'
422 Top = 70 423 Top = 122
423 Width = 176 424 Width = 308
424 OnChange = InstrumentNameEditChange 425 OnChange = InstrumentNameEditChange
425 ParentFont = False 426 ParentFont = False
426 TabOrder = 1 427 TabOrder = 1
427 end 428 end
428 object Label3: TLabel 429 object Label3: TLabel
429 Left = 8 430 Left = 14
430 Height = 15 431 Height = 30
431 Top = 16 432 Top = 28
432 Width = 44 433 Width = 80
433 Caption = 'Channel' 434 Caption = 'Channel'
434 Font.Style = [fsBold] 435 Font.Style = [fsBold]
435 ParentColor = False 436 ParentColor = False
436 ParentFont = False 437 ParentFont = False
437 end 438 end
438 object InstrumentTypeCombobox: TComboBox 439 object InstrumentTypeCombobox: TComboBox
439 Left = 78 440 Left = 136
440 Height = 23 441 Height = 38
441 Hint = 'What type of channel this instrument will be played on' 442 Hint = 'What type of channel this instrument will be played on'
442 Top = 8 443 Top = 14
443 Width = 178 444 Width = 312
444 ItemHeight = 15 445 ItemHeight = 30
445 ItemIndex = 0 446 ItemIndex = 0
446 Items.Strings = ( 447 Items.Strings = (
447 'Square' 448 'Square'
@@ -455,52 +456,52 @@ object frmTracker: TfrmTracker
455 Text = 'Square' 456 Text = 'Square'
456 end 457 end
457 object LengthEnabledCheckbox: TCheckBox 458 object LengthEnabledCheckbox: TCheckBox
458 Left = 12 459 Left = 21
459 Height = 19 460 Height = 34
460 Hint = 'Cut the sound after a certain length of time' 461 Hint = 'Cut the sound after a certain length of time'
461 Top = 118 462 Top = 206
462 Width = 57 463 Width = 98
463 Caption = 'Length' 464 Caption = 'Length'
464 OnChange = LengthEnabledCheckboxChange 465 OnChange = LengthEnabledCheckboxChange
465 ParentFont = False 466 ParentFont = False
466 TabOrder = 3 467 TabOrder = 3
467 end 468 end
468 object InstrumentImportButton: TButton 469 object InstrumentImportButton: TButton
469 Left = 12 470 Left = 21
470 Height = 25 471 Height = 44
471 Top = 184 472 Top = 322
472 Width = 116 473 Width = 203
473 Caption = 'Import' 474 Caption = 'Import'
474 OnClick = InstrumentImportButtonClick 475 OnClick = InstrumentImportButtonClick
475 ParentFont = False 476 ParentFont = False
476 TabOrder = 4 477 TabOrder = 4
477 end 478 end
478 object InstrumentExportButton: TButton 479 object InstrumentExportButton: TButton
479 Left = 138 480 Left = 242
480 Height = 25 481 Height = 44
481 Top = 184 482 Top = 322
482 Width = 116 483 Width = 203
483 Caption = 'Export' 484 Caption = 'Export'
484 OnClick = InstrumentExportButtonClick 485 OnClick = InstrumentExportButtonClick
485 ParentFont = False 486 ParentFont = False
486 TabOrder = 5 487 TabOrder = 5
487 end 488 end
488 object Button1: TButton 489 object Button1: TButton
489 Left = 12 490 Left = 21
490 Height = 25 491 Height = 44
491 Hint = 'Test out the instrument with a C-5 note' 492 Hint = 'Test out the instrument with a C-5 note'
492 Top = 152 493 Top = 266
493 Width = 242 494 Width = 424
494 Caption = 'Test C-5' 495 Caption = 'Test C-5'
495 OnClick = Button1Click 496 OnClick = Button1Click
496 ParentFont = False 497 ParentFont = False
497 TabOrder = 6 498 TabOrder = 6
498 end 499 end
499 object LengthTrackbar: TTrackBar 500 object LengthTrackbar: TTrackBar
500 Left = 76 501 Left = 133
501 Height = 25 502 Height = 44
502 Top = 112 503 Top = 196
503 Width = 178 504 Width = 312
504 Max = 63 505 Max = 63
505 OnChange = LengthSpinnerChange 506 OnChange = LengthSpinnerChange
506 Position = 0 507 Position = 0
@@ -510,45 +511,45 @@ object frmTracker: TfrmTracker
510 end 511 end
511 end 512 end
512 object EnvelopeGroupBox: TGroupBox 513 object EnvelopeGroupBox: TGroupBox
513 Left = 292 514 Left = 510
514 Height = 136 515 Height = 238
515 Top = 7 516 Top = 12
516 Width = 582 517 Width = 1018
517 Anchors = [] 518 Anchors = []
518 BorderSpacing.Left = 7 519 BorderSpacing.Left = 12
519 BorderSpacing.Top = 7 520 BorderSpacing.Top = 12
520 BorderSpacing.Right = 7 521 BorderSpacing.Right = 12
521 BorderSpacing.Bottom = 7 522 BorderSpacing.Bottom = 12
522 Caption = 'Envelope' 523 Caption = 'Envelope'
523 ClientHeight = 116 524 ClientHeight = 203
524 ClientWidth = 578 525 ClientWidth = 1014
525 ParentFont = False 526 ParentFont = False
526 TabOrder = 1 527 TabOrder = 1
527 object Label4: TLabel 528 object Label4: TLabel
528 Left = 8 529 Left = 14
529 Height = 15 530 Height = 30
530 Top = 9 531 Top = 16
531 Width = 46 532 Width = 80
532 Caption = 'Start vol.' 533 Caption = 'Start vol.'
533 ParentColor = False 534 ParentColor = False
534 ParentFont = False 535 ParentFont = False
535 end 536 end
536 object Label5: TLabel 537 object Label5: TLabel
537 Left = 8 538 Left = 14
538 Height = 15 539 Height = 30
539 Top = 48 540 Top = 84
540 Width = 48 541 Width = 84
541 Caption = 'Direction' 542 Caption = 'Direction'
542 ParentColor = False 543 ParentColor = False
543 ParentFont = False 544 ParentFont = False
544 end 545 end
545 object DirectionComboBox: TComboBox 546 object DirectionComboBox: TComboBox
546 Left = 82 547 Left = 144
547 Height = 23 548 Height = 38
548 Hint = 'Whether to fade the sound in or out' 549 Hint = 'Whether to fade the sound in or out'
549 Top = 46 550 Top = 80
550 Width = 198 551 Width = 346
551 ItemHeight = 15 552 ItemHeight = 30
552 ItemIndex = 1 553 ItemIndex = 1
553 Items.Strings = ( 554 Items.Strings = (
554 'Up' 555 'Up'
@@ -561,40 +562,40 @@ object frmTracker: TfrmTracker
561 Text = 'Down' 562 Text = 'Down'
562 end 563 end
563 object Label6: TLabel 564 object Label6: TLabel
564 Left = 8 565 Left = 14
565 Height = 15 566 Height = 30
566 Top = 86 567 Top = 150
567 Width = 41 568 Width = 71
568 Caption = 'Change' 569 Caption = 'Change'
569 ParentColor = False 570 ParentColor = False
570 ParentFont = False 571 ParentFont = False
571 end 572 end
572 object Panel5: TPanel 573 object Panel5: TPanel
573 Left = 300 574 Left = 525
574 Height = 104 575 Height = 182
575 Top = 0 576 Top = 0
576 Width = 270 577 Width = 472
577 BevelOuter = bvLowered 578 BevelOuter = bvLowered
578 ClientHeight = 104 579 ClientHeight = 182
579 ClientWidth = 270 580 ClientWidth = 472
580 ParentFont = False 581 ParentFont = False
581 TabOrder = 1 582 TabOrder = 1
582 object EnvelopePaintbox: TPaintBox 583 object EnvelopePaintbox: TPaintBox
583 Left = 1 584 Left = 1
584 Height = 102 585 Height = 180
585 Hint = 'Preview of the volume envelope' 586 Hint = 'Preview of the volume envelope'
586 Top = 1 587 Top = 1
587 Width = 268 588 Width = 470
588 Align = alClient 589 Align = alClient
589 ParentFont = False 590 ParentFont = False
590 OnPaint = EnvelopePaintboxPaint 591 OnPaint = EnvelopePaintboxPaint
591 end 592 end
592 end 593 end
593 object StartVolTrackbar: TTrackBar 594 object StartVolTrackbar: TTrackBar
594 Left = 82 595 Left = 144
595 Height = 25 596 Height = 44
596 Top = 8 597 Top = 14
597 Width = 196 598 Width = 343
598 Max = 15 599 Max = 15
599 OnChange = StartVolSpinnerChange 600 OnChange = StartVolSpinnerChange
600 Position = 0 601 Position = 0
@@ -602,10 +603,10 @@ object frmTracker: TfrmTracker
602 TabOrder = 2 603 TabOrder = 2
603 end 604 end
604 object EnvChangeTrackbar: TTrackBar 605 object EnvChangeTrackbar: TTrackBar
605 Left = 82 606 Left = 144
606 Height = 25 607 Height = 44
607 Top = 82 608 Top = 144
608 Width = 196 609 Width = 343
609 Max = 7 610 Max = 7
610 OnChange = EnvChangeSpinnerChange 611 OnChange = EnvChangeSpinnerChange
611 Position = 0 612 Position = 0
@@ -614,36 +615,36 @@ object frmTracker: TfrmTracker
614 end 615 end
615 end 616 end
616 object SquareGroupBox: TGroupBox 617 object SquareGroupBox: TGroupBox
617 Left = 7 618 Left = 12
618 Height = 169 619 Height = 296
619 Top = 262 620 Top = 458
620 Width = 319 621 Width = 558
621 Anchors = [] 622 Anchors = []
622 BorderSpacing.Left = 7 623 BorderSpacing.Left = 12
623 BorderSpacing.Top = 7 624 BorderSpacing.Top = 12
624 BorderSpacing.Right = 7 625 BorderSpacing.Right = 12
625 BorderSpacing.Bottom = 7 626 BorderSpacing.Bottom = 12
626 Caption = 'Square' 627 Caption = 'Square'
627 ClientHeight = 149 628 ClientHeight = 261
628 ClientWidth = 315 629 ClientWidth = 554
629 ParentFont = False 630 ParentFont = False
630 TabOrder = 2 631 TabOrder = 2
631 object Label7: TLabel 632 object Label7: TLabel
632 Left = 8 633 Left = 14
633 Height = 15 634 Height = 30
634 Top = 16 635 Top = 28
635 Width = 61 636 Width = 107
636 Caption = 'Sweep time' 637 Caption = 'Sweep time'
637 ParentColor = False 638 ParentColor = False
638 ParentFont = False 639 ParentFont = False
639 end 640 end
640 object SweepTimeCombobox: TComboBox 641 object SweepTimeCombobox: TComboBox
641 Left = 104 642 Left = 182
642 Height = 23 643 Height = 38
643 Hint = 'How long to sweep' 644 Hint = 'How long to sweep'
644 Top = 8 645 Top = 14
645 Width = 200 646 Width = 350
646 ItemHeight = 15 647 ItemHeight = 30
647 ItemIndex = 0 648 ItemIndex = 0
648 Items.Strings = ( 649 Items.Strings = (
649 'Off - no frequency change' 650 'Off - no frequency change'
@@ -664,12 +665,12 @@ object frmTracker: TfrmTracker
664 Text = 'Off - no frequency change' 665 Text = 'Off - no frequency change'
665 end 666 end
666 object SweepDirectionCombobox: TComboBox 667 object SweepDirectionCombobox: TComboBox
667 Left = 104 668 Left = 182
668 Height = 23 669 Height = 38
669 Hint = 'The direction of the sweep' 670 Hint = 'The direction of the sweep'
670 Top = 40 671 Top = 70
671 Width = 200 672 Width = 350
672 ItemHeight = 15 673 ItemHeight = 30
673 ItemIndex = 1 674 ItemIndex = 1
674 Items.Strings = ( 675 Items.Strings = (
675 'Up' 676 'Up'
@@ -684,39 +685,39 @@ object frmTracker: TfrmTracker
684 Text = 'Down' 685 Text = 'Down'
685 end 686 end
686 object Label8: TLabel 687 object Label8: TLabel
687 Left = 8 688 Left = 14
688 Height = 15 689 Height = 30
689 Top = 48 690 Top = 84
690 Width = 84 691 Width = 147
691 Caption = 'Sweep direction' 692 Caption = 'Sweep direction'
692 ParentColor = False 693 ParentColor = False
693 ParentFont = False 694 ParentFont = False
694 end 695 end
695 object Label9: TLabel 696 object Label9: TLabel
696 Left = 8 697 Left = 14
697 Height = 15 698 Height = 30
698 Top = 84 699 Top = 147
699 Width = 56 700 Width = 101
700 Caption = 'Sweep size' 701 Caption = 'Sweep size'
701 ParentColor = False 702 ParentColor = False
702 ParentFont = False 703 ParentFont = False
703 end 704 end
704 object Label10: TLabel 705 object Label10: TLabel
705 Left = 8 706 Left = 14
706 Height = 15 707 Height = 30
707 Top = 120 708 Top = 210
708 Width = 25 709 Width = 44
709 Caption = 'Duty' 710 Caption = 'Duty'
710 ParentColor = False 711 ParentColor = False
711 ParentFont = False 712 ParentFont = False
712 end 713 end
713 object DutyCombobox: TComboBox 714 object DutyCombobox: TComboBox
714 Left = 104 715 Left = 182
715 Height = 23 716 Height = 38
716 Hint = 'Which duty cycle to use (changes timbre of wave)' 717 Hint = 'Which duty cycle to use (changes timbre of wave)'
717 Top = 112 718 Top = 196
718 Width = 200 719 Width = 350
719 ItemHeight = 15 720 ItemHeight = 30
720 ItemIndex = 2 721 ItemIndex = 2
721 Items.Strings = ( 722 Items.Strings = (
722 '12.5%' 723 '12.5%'
@@ -733,10 +734,10 @@ object frmTracker: TfrmTracker
733 Text = '50% (square)' 734 Text = '50% (square)'
734 end 735 end
735 object SweepSizeTrackbar: TTrackBar 736 object SweepSizeTrackbar: TTrackBar
736 Left = 105 737 Left = 184
737 Height = 25 738 Height = 44
738 Top = 80 739 Top = 140
739 Width = 196 740 Width = 343
740 Max = 7 741 Max = 7
741 OnChange = SweepSizeSpinnerChange 742 OnChange = SweepSizeSpinnerChange
742 Position = 0 743 Position = 0
@@ -745,45 +746,45 @@ object frmTracker: TfrmTracker
745 end 746 end
746 end 747 end
747 object WaveGroupBox: TGroupBox 748 object WaveGroupBox: TGroupBox
748 Left = 340 749 Left = 594
749 Height = 169 750 Height = 296
750 Top = 262 751 Top = 458
751 Width = 297 752 Width = 520
752 Anchors = [] 753 Anchors = []
753 BorderSpacing.Left = 7 754 BorderSpacing.Left = 12
754 BorderSpacing.Top = 7 755 BorderSpacing.Top = 12
755 BorderSpacing.Right = 7 756 BorderSpacing.Right = 12
756 BorderSpacing.Bottom = 7 757 BorderSpacing.Bottom = 12
757 Caption = 'Wave' 758 Caption = 'Wave'
758 ClientHeight = 149 759 ClientHeight = 261
759 ClientWidth = 293 760 ClientWidth = 516
760 ParentFont = False 761 ParentFont = False
761 TabOrder = 3 762 TabOrder = 3
762 object Label11: TLabel 763 object Label11: TLabel
763 Left = 8 764 Left = 14
764 Height = 15 765 Height = 30
765 Top = 16 766 Top = 28
766 Width = 40 767 Width = 70
767 Caption = 'Volume' 768 Caption = 'Volume'
768 ParentColor = False 769 ParentColor = False
769 ParentFont = False 770 ParentFont = False
770 end 771 end
771 object Label12: TLabel 772 object Label12: TLabel
772 Left = 8 773 Left = 14
773 Height = 15 774 Height = 30
774 Top = 48 775 Top = 84
775 Width = 55 776 Width = 95
776 Caption = 'Waveform' 777 Caption = 'Waveform'
777 ParentColor = False 778 ParentColor = False
778 ParentFont = False 779 ParentFont = False
779 end 780 end
780 object WaveformCombobox: TComboBox 781 object WaveformCombobox: TComboBox
781 Left = 104 782 Left = 182
782 Height = 23 783 Height = 38
783 Hint = 'Which waveform is associated with this instrument' 784 Hint = 'Which waveform is associated with this instrument'
784 Top = 40 785 Top = 70
785 Width = 176 786 Width = 308
786 ItemHeight = 15 787 ItemHeight = 30
787 ItemIndex = 0 788 ItemIndex = 0
788 Items.Strings = ( 789 Items.Strings = (
789 'Wave #0' 790 'Wave #0'
@@ -810,21 +811,21 @@ object frmTracker: TfrmTracker
810 Text = 'Wave #0' 811 Text = 'Wave #0'
811 end 812 end
812 object Panel4: TPanel 813 object Panel4: TPanel
813 Left = 8 814 Left = 14
814 Height = 59 815 Height = 103
815 Top = 80 816 Top = 140
816 Width = 272 817 Width = 476
817 BevelOuter = bvLowered 818 BevelOuter = bvLowered
818 ClientHeight = 59 819 ClientHeight = 103
819 ClientWidth = 272 820 ClientWidth = 476
820 ParentFont = False 821 ParentFont = False
821 TabOrder = 1 822 TabOrder = 1
822 object WavePaintbox: TPaintBox 823 object WavePaintbox: TPaintBox
823 Left = 1 824 Left = 1
824 Height = 57 825 Height = 101
825 Hint = 'Preview of the waveform associated with this instrument' 826 Hint = 'Preview of the waveform associated with this instrument'
826 Top = 1 827 Top = 1
827 Width = 270 828 Width = 474
828 Align = alClient 829 Align = alClient
829 Color = clBlack 830 Color = clBlack
830 ParentColor = False 831 ParentColor = False
@@ -833,12 +834,12 @@ object frmTracker: TfrmTracker
833 end 834 end
834 end 835 end
835 object WaveVolumeCombobox: TComboBox 836 object WaveVolumeCombobox: TComboBox
836 Left = 104 837 Left = 182
837 Height = 23 838 Height = 38
838 Hint = 'The initial volume of the wave' 839 Hint = 'The initial volume of the wave'
839 Top = 8 840 Top = 14
840 Width = 176 841 Width = 308
841 ItemHeight = 15 842 ItemHeight = 30
842 ItemIndex = 1 843 ItemIndex = 1
843 Items.Strings = ( 844 Items.Strings = (
844 'Mute (No sound)' 845 'Mute (No sound)'
@@ -854,26 +855,26 @@ object frmTracker: TfrmTracker
854 end 855 end
855 end 856 end
856 object NoiseGroupBox: TGroupBox 857 object NoiseGroupBox: TGroupBox
857 Left = 651 858 Left = 1138
858 Height = 223 859 Height = 390
859 Top = 262 860 Top = 458
860 Width = 397 861 Width = 695
861 Anchors = [] 862 Anchors = []
862 BorderSpacing.Left = 7 863 BorderSpacing.Left = 12
863 BorderSpacing.Top = 7 864 BorderSpacing.Top = 12
864 BorderSpacing.Right = 7 865 BorderSpacing.Right = 12
865 BorderSpacing.Bottom = 7 866 BorderSpacing.Bottom = 12
866 Caption = 'Noise' 867 Caption = 'Noise'
867 ClientHeight = 203 868 ClientHeight = 355
868 ClientWidth = 393 869 ClientWidth = 691
869 ParentFont = False 870 ParentFont = False
870 TabOrder = 4 871 TabOrder = 4
871 object SevenBitCounterCheckbox: TCheckBox 872 object SevenBitCounterCheckbox: TCheckBox
872 Left = 8 873 Left = 14
873 Height = 19 874 Height = 34
874 Hint = 'Select LFSR width. When checked, output will sound like a tone rather than noise' 875 Hint = 'Select LFSR width. When checked, output will sound like a tone rather than noise'
875 Top = 8 876 Top = 14
876 Width = 215 877 Width = 373
877 Alignment = taLeftJustify 878 Alignment = taLeftJustify
878 Caption = '7 bit counter (more tone-like output)' 879 Caption = '7 bit counter (more tone-like output)'
879 OnChange = SevenBitCounterCheckboxChange 880 OnChange = SevenBitCounterCheckboxChange
@@ -881,20 +882,20 @@ object frmTracker: TfrmTracker
881 TabOrder = 0 882 TabOrder = 0
882 end 883 end
883 object Panel6: TPanel 884 object Panel6: TPanel
884 Left = 8 885 Left = 14
885 Height = 152 886 Height = 266
886 Top = 40 887 Top = 70
887 Width = 376 888 Width = 658
888 BevelOuter = bvLowered 889 BevelOuter = bvLowered
889 ClientHeight = 152 890 ClientHeight = 266
890 ClientWidth = 376 891 ClientWidth = 658
891 ParentFont = False 892 ParentFont = False
892 TabOrder = 1 893 TabOrder = 1
893 object NoiseMacroPaintbox: TPaintBox 894 object NoiseMacroPaintbox: TPaintBox
894 Left = 1 895 Left = 1
895 Height = 150 896 Height = 264
896 Top = 1 897 Top = 1
897 Width = 374 898 Width = 656
898 Align = alClient 899 Align = alClient
899 ParentFont = False 900 ParentFont = False
900 OnMouseDown = NoiseMacroPaintboxMouseDown 901 OnMouseDown = NoiseMacroPaintboxMouseDown
@@ -920,7 +921,7 @@ object frmTracker: TfrmTracker
920 Width = 1064 921 Width = 1064
921 Align = alBottom 922 Align = alBottom
922 Anchors = [akTop, akLeft, akRight, akBottom] 923 Anchors = [akTop, akLeft, akRight, akBottom]
923 BorderSpacing.Top = 13 924 BorderSpacing.Top = 23
924 ParentFont = False 925 ParentFont = False
925 PopupMenu = WaveEditPopup 926 PopupMenu = WaveEditPopup
926 OnMouseDown = WaveEditPaintBoxMouseDown 927 OnMouseDown = WaveEditPaintBoxMouseDown
@@ -929,61 +930,61 @@ object frmTracker: TfrmTracker
929 OnPaint = WaveEditPaintBoxPaint 930 OnPaint = WaveEditPaintBoxPaint
930 end 931 end
931 object WaveEditGroupBox: TGroupBox 932 object WaveEditGroupBox: TGroupBox
932 Left = 8 933 Left = 14
933 Height = 139 934 Height = 243
934 Top = 8 935 Top = 14
935 Width = 568 936 Width = 994
936 Caption = 'Wave Editor' 937 Caption = 'Wave Editor'
937 ClientHeight = 119 938 ClientHeight = 208
938 ClientWidth = 564 939 ClientWidth = 990
939 ParentFont = False 940 ParentFont = False
940 TabOrder = 0 941 TabOrder = 0
941 object Label20: TLabel 942 object Label20: TLabel
942 Left = 16 943 Left = 28
943 Height = 15 944 Height = 15
944 Top = 16 945 Top = 28
945 Width = 29 946 Width = 29
946 Caption = 'Wave' 947 Caption = 'Wave'
947 ParentColor = False 948 ParentColor = False
948 ParentFont = False 949 ParentFont = False
949 end 950 end
950 object WaveEditNumberSpinner: TSpinEdit 951 object WaveEditNumberSpinner: TSpinEdit
951 Left = 64 952 Left = 112
952 Height = 23 953 Height = 23
953 Top = 8 954 Top = 14
954 Width = 80 955 Width = 140
955 MaxValue = 15 956 MaxValue = 15
956 OnChange = WaveEditNumberSpinnerChange 957 OnChange = WaveEditNumberSpinnerChange
957 ParentFont = False 958 ParentFont = False
958 TabOrder = 0 959 TabOrder = 0
959 end 960 end
960 object ImportWaveButton: TButton 961 object ImportWaveButton: TButton
961 Left = 16 962 Left = 28
962 Height = 25 963 Height = 44
963 Hint = 'Import a wave' 964 Hint = 'Import a wave'
964 Top = 48 965 Top = 84
965 Width = 147 966 Width = 257
966 Caption = 'Import' 967 Caption = 'Import'
967 OnClick = ImportWaveButtonClick 968 OnClick = ImportWaveButtonClick
968 ParentFont = False 969 ParentFont = False
969 TabOrder = 1 970 TabOrder = 1
970 end 971 end
971 object ExportWaveButton: TButton 972 object ExportWaveButton: TButton
972 Left = 16 973 Left = 28
973 Height = 25 974 Height = 44
974 Hint = 'Export a wave' 975 Hint = 'Export a wave'
975 Top = 80 976 Top = 140
976 Width = 147 977 Width = 257
977 Caption = 'Export' 978 Caption = 'Export'
978 OnClick = ExportWaveButtonClick 979 OnClick = ExportWaveButtonClick
979 ParentFont = False 980 ParentFont = False
980 TabOrder = 2 981 TabOrder = 2
981 end 982 end
982 object HexWaveEdit: TEdit 983 object HexWaveEdit: TEdit
983 Left = 288 984 Left = 504
984 Height = 23 985 Height = 23
985 Top = 8 986 Top = 14
986 Width = 264 987 Width = 462
987 MaxLength = 32 988 MaxLength = 32
988 OnChange = HexWaveEditEditingDone 989 OnChange = HexWaveEditEditingDone
989 OnEditingDone = HexWaveEditEditingDone 990 OnEditingDone = HexWaveEditEditingDone
@@ -991,18 +992,18 @@ object frmTracker: TfrmTracker
991 TabOrder = 3 992 TabOrder = 3
992 end 993 end
993 object Label13: TLabel 994 object Label13: TLabel
994 Left = 176 995 Left = 308
995 Height = 15 996 Height = 15
996 Top = 16 997 Top = 28
997 Width = 100 998 Width = 100
998 Caption = 'Hex representation' 999 Caption = 'Hex representation'
999 ParentColor = False 1000 ParentColor = False
1000 ParentFont = False 1001 ParentFont = False
1001 end 1002 end
1002 object PlayWaveWhileDrawingCheckbox: TCheckBox 1003 object PlayWaveWhileDrawingCheckbox: TCheckBox
1003 Left = 176 1004 Left = 308
1004 Height = 19 1005 Height = 19
1005 Top = 40 1006 Top = 70
1006 Width = 149 1007 Width = 149
1007 Caption = 'Play wave while drawing' 1008 Caption = 'Play wave while drawing'
1008 ParentFont = False 1009 ParentFont = False
@@ -1025,16 +1026,16 @@ object frmTracker: TfrmTracker
1025 Width = 939 1026 Width = 939
1026 Align = alBottom 1027 Align = alBottom
1027 Anchors = [akTop, akLeft, akRight, akBottom] 1028 Anchors = [akTop, akLeft, akRight, akBottom]
1028 BorderSpacing.Top = 13 1029 BorderSpacing.Top = 23
1029 MaxLength = 255 1030 MaxLength = 255
1030 OnChange = CommentMemoChange 1031 OnChange = CommentMemoChange
1031 ParentFont = False 1032 ParentFont = False
1032 TabOrder = 0 1033 TabOrder = 0
1033 end 1034 end
1034 object Label17: TLabel 1035 object Label17: TLabel
1035 Left = 8 1036 Left = 14
1036 Height = 15 1037 Height = 15
1037 Top = 8 1038 Top = 14
1038 Width = 333 1039 Width = 333
1039 Caption = 'This is an area to write comments for anyone editing your tune.' 1040 Caption = 'This is an area to write comments for anyone editing your tune.'
1040 ParentColor = False 1041 ParentColor = False
@@ -1054,16 +1055,16 @@ object frmTracker: TfrmTracker
1054 Top = 128 1055 Top = 128
1055 Width = 939 1056 Width = 939
1056 Align = alBottom 1057 Align = alBottom
1057 BorderSpacing.Top = 13 1058 BorderSpacing.Top = 23
1058 Anchors = [akTop, akLeft, akRight, akBottom] 1059 Anchors = [akTop, akLeft, akRight, akBottom]
1059 Font.Height = -13 1060 Font.Height = -23
1060 Font.Name = 'Courier New' 1061 Font.Name = 'Courier New'
1061 Font.Pitch = fpFixed 1062 Font.Pitch = fpFixed
1062 Font.Quality = fqNonAntialiased 1063 Font.Quality = fqNonAntialiased
1063 ParentColor = False 1064 ParentColor = False
1064 ParentFont = False 1065 ParentFont = False
1065 TabOrder = 0 1066 TabOrder = 0
1066 Gutter.Width = 57 1067 Gutter.Width = 100
1067 Gutter.MouseActions = <> 1068 Gutter.MouseActions = <>
1068 RightGutter.Width = 0 1069 RightGutter.Width = 0
1069 RightGutter.MouseActions = <> 1070 RightGutter.MouseActions = <>
@@ -1517,11 +1518,11 @@ object frmTracker: TfrmTracker
1517 OnChange = RoutineSyneditChange 1518 OnChange = RoutineSyneditChange
1518 inline SynLeftGutterPartList1: TSynGutterPartList 1519 inline SynLeftGutterPartList1: TSynGutterPartList
1519 object SynGutterMarks1: TSynGutterMarks 1520 object SynGutterMarks1: TSynGutterMarks
1520 Width = 24 1521 Width = 42
1521 MouseActions = <> 1522 MouseActions = <>
1522 end 1523 end
1523 object SynGutterLineNumber1: TSynGutterLineNumber 1524 object SynGutterLineNumber1: TSynGutterLineNumber
1524 Width = 17 1525 Width = 29
1525 MouseActions = <> 1526 MouseActions = <>
1526 MarkupInfo.Background = clBtnFace 1527 MarkupInfo.Background = clBtnFace
1527 MarkupInfo.Foreground = clNone 1528 MarkupInfo.Foreground = clNone
@@ -1531,18 +1532,19 @@ object frmTracker: TfrmTracker
1531 LeadingZeros = False 1532 LeadingZeros = False
1532 end 1533 end
1533 object SynGutterChanges1: TSynGutterChanges 1534 object SynGutterChanges1: TSynGutterChanges
1534 Width = 4 1535 Width = 7
1535 MouseActions = <> 1536 MouseActions = <>
1536 ModifiedColor = 59900 1537 ModifiedColor = 59900
1537 SavedColor = clGreen 1538 SavedColor = clGreen
1538 end 1539 end
1539 object SynGutterSeparator1: TSynGutterSeparator 1540 object SynGutterSeparator1: TSynGutterSeparator
1540 Width = 2 1541 Width = 4
1541 MouseActions = <> 1542 MouseActions = <>
1542 MarkupInfo.Background = clWhite 1543 MarkupInfo.Background = clWhite
1543 MarkupInfo.Foreground = clGray 1544 MarkupInfo.Foreground = clGray
1544 end 1545 end
1545 object SynGutterCodeFolding1: TSynGutterCodeFolding 1546 object SynGutterCodeFolding1: TSynGutterCodeFolding
1547 Width = 18
1546 MouseActions = <> 1548 MouseActions = <>
1547 MarkupInfo.Background = clNone 1549 MarkupInfo.Background = clNone
1548 MarkupInfo.Foreground = clGray 1550 MarkupInfo.Foreground = clGray
@@ -1552,19 +1554,19 @@ object frmTracker: TfrmTracker
1552 end 1554 end
1553 end 1555 end
1554 object Label18: TLabel 1556 object Label18: TLabel
1555 Left = 8 1557 Left = 14
1556 Height = 15 1558 Height = 15
1557 Top = 16 1559 Top = 28
1558 Width = 41 1560 Width = 41
1559 Caption = 'Routine' 1561 Caption = 'Routine'
1560 ParentColor = False 1562 ParentColor = False
1561 ParentFont = False 1563 ParentFont = False
1562 end 1564 end
1563 object RoutineNumberSpinner: TSpinEdit 1565 object RoutineNumberSpinner: TSpinEdit
1564 Left = 64 1566 Left = 112
1565 Height = 23 1567 Height = 23
1566 Top = 8 1568 Top = 14
1567 Width = 176 1569 Width = 308
1568 MaxValue = 15 1570 MaxValue = 15
1569 MinValue = 1 1571 MinValue = 1
1570 OnChange = RoutineNumberSpinnerChange 1572 OnChange = RoutineNumberSpinnerChange
@@ -1573,9 +1575,9 @@ object frmTracker: TfrmTracker
1573 Value = 1 1575 Value = 1
1574 end 1576 end
1575 object Label19: TLabel 1577 object Label19: TLabel
1576 Left = 8 1578 Left = 14
1577 Height = 75 1579 Height = 75
1578 Top = 40 1580 Top = 70
1579 Width = 506 1581 Width = 506
1580 Caption = 'Routines are an advanced feature of hUGETracker, and you likely won''t need them at all'#13#10'if you are only interested in composing music. If you want to create a custom effect, or interface'#13#10'with game code that you''re writing a soundtrack for, then routines will come in handy.'#13#10#13#10'Refer to the user manual for more information!' 1582 Caption = 'Routines are an advanced feature of hUGETracker, and you likely won''t need them at all'#13#10'if you are only interested in composing music. If you want to create a custom effect, or interface'#13#10'with game code that you''re writing a soundtrack for, then routines will come in handy.'#13#10#13#10'Refer to the user manual for more information!'
1581 ParentColor = False 1583 ParentColor = False
@@ -1586,21 +1588,21 @@ object frmTracker: TfrmTracker
1586 end 1588 end
1587 object Panel2: TPanel 1589 object Panel2: TPanel
1588 Left = 0 1590 Left = 0
1589 Height = 64 1591 Height = 112
1590 Top = 25 1592 Top = 41
1591 Width = 1270 1593 Width = 2220
1592 Align = alTop 1594 Align = alTop
1593 BevelOuter = bvNone 1595 BevelOuter = bvNone
1594 ClientHeight = 64 1596 ClientHeight = 112
1595 ClientWidth = 1270 1597 ClientWidth = 2220
1596 ParentFont = False 1598 ParentFont = False
1597 TabOrder = 3 1599 TabOrder = 3
1598 object LEDMeter1: TLEDMeter 1600 object LEDMeter1: TLEDMeter
1599 AnchorSideRight.Control = Duty1Visualizer 1601 AnchorSideRight.Control = Duty1Visualizer
1600 Left = 0 1602 Left = 0
1601 Height = 32 1603 Height = 56
1602 Top = 32 1604 Top = 56
1603 Width = 482 1605 Width = 840
1604 Anchors = [akTop, akLeft, akRight] 1606 Anchors = [akTop, akLeft, akRight]
1605 BevelStyle = bvLowered 1607 BevelStyle = bvLowered
1606 Colors.Border = 2168839 1608 Colors.Border = 2168839
@@ -1621,9 +1623,9 @@ object frmTracker: TfrmTracker
1621 object LEDMeter2: TLEDMeter 1623 object LEDMeter2: TLEDMeter
1622 AnchorSideRight.Control = Duty1Visualizer 1624 AnchorSideRight.Control = Duty1Visualizer
1623 Left = 0 1625 Left = 0
1624 Height = 32 1626 Height = 56
1625 Top = 0 1627 Top = 0
1626 Width = 482 1628 Width = 840
1627 Anchors = [akTop, akLeft, akRight] 1629 Anchors = [akTop, akLeft, akRight]
1628 BevelStyle = bvLowered 1630 BevelStyle = bvLowered
1629 Colors.Border = 2168839 1631 Colors.Border = 2168839
@@ -1642,40 +1644,40 @@ object frmTracker: TfrmTracker
1642 Section3Value = 48 1644 Section3Value = 48
1643 end 1645 end
1644 object Duty1Visualizer: TPaintBox 1646 object Duty1Visualizer: TPaintBox
1645 Left = 482 1647 Left = 840
1646 Height = 64 1648 Height = 112
1647 Top = 0 1649 Top = 0
1648 Width = 197 1650 Width = 345
1649 Align = alRight 1651 Align = alRight
1650 ParentFont = False 1652 ParentFont = False
1651 OnClick = Duty1VisualizerClick 1653 OnClick = Duty1VisualizerClick
1652 OnPaint = Duty1VisualizerPaint 1654 OnPaint = Duty1VisualizerPaint
1653 end 1655 end
1654 object Duty2Visualizer: TPaintBox 1656 object Duty2Visualizer: TPaintBox
1655 Left = 679 1657 Left = 1185
1656 Height = 64 1658 Height = 112
1657 Top = 0 1659 Top = 0
1658 Width = 197 1660 Width = 345
1659 Align = alRight 1661 Align = alRight
1660 ParentFont = False 1662 ParentFont = False
1661 OnClick = Duty1VisualizerClick 1663 OnClick = Duty1VisualizerClick
1662 OnPaint = Duty2VisualizerPaint 1664 OnPaint = Duty2VisualizerPaint
1663 end 1665 end
1664 object WaveVisualizer: TPaintBox 1666 object WaveVisualizer: TPaintBox
1665 Left = 876 1667 Left = 1530
1666 Height = 64 1668 Height = 112
1667 Top = 0 1669 Top = 0
1668 Width = 197 1670 Width = 345
1669 Align = alRight 1671 Align = alRight
1670 ParentFont = False 1672 ParentFont = False
1671 OnClick = Duty1VisualizerClick 1673 OnClick = Duty1VisualizerClick
1672 OnPaint = WaveVisualizerPaint 1674 OnPaint = WaveVisualizerPaint
1673 end 1675 end
1674 object NoiseVisualizer: TPaintBox 1676 object NoiseVisualizer: TPaintBox
1675 Left = 1073 1677 Left = 1875
1676 Height = 64 1678 Height = 112
1677 Top = 0 1679 Top = 0
1678 Width = 197 1680 Width = 345
1679 Align = alRight 1681 Align = alRight
1680 ParentFont = False 1682 ParentFont = False
1681 OnClick = Duty1VisualizerClick 1683 OnClick = Duty1VisualizerClick
@@ -1684,19 +1686,19 @@ object frmTracker: TfrmTracker
1684 end 1686 end
1685 object StatusBar1: TStatusBar 1687 object StatusBar1: TStatusBar
1686 Left = 0 1688 Left = 0
1687 Height = 23 1689 Height = 43
1688 Top = 763 1690 Top = 1048
1689 Width = 1270 1691 Width = 2220
1690 AutoHint = True 1692 AutoHint = True
1691 Panels = < 1693 Panels = <
1692 item 1694 item
1693 Width = 467 1695 Width = 817
1694 end 1696 end
1695 item 1697 item
1696 Width = 200 1698 Width = 350
1697 end 1699 end
1698 item 1700 item
1699 Width = 200 1701 Width = 350
1700 end> 1702 end>
1701 ParentFont = False 1703 ParentFont = False
1702 ParentShowHint = False 1704 ParentShowHint = False
@@ -1705,9 +1707,9 @@ object frmTracker: TfrmTracker
1705 end 1707 end
1706 object ToolBar1: TToolBar 1708 object ToolBar1: TToolBar
1707 Left = 0 1709 Left = 0
1708 Height = 25 1710 Height = 41
1709 Top = 0 1711 Top = 0
1710 Width = 1270 1712 Width = 2220
1711 AutoSize = True 1713 AutoSize = True
1712 Caption = 'ToolBar1' 1714 Caption = 'ToolBar1'
1713 EdgeBorders = [ebBottom] 1715 EdgeBorders = [ebBottom]
@@ -1724,7 +1726,7 @@ object frmTracker: TfrmTracker
1724 ParentShowHint = False 1726 ParentShowHint = False
1725 end 1727 end
1726 object PanicToolButton: TToolButton 1728 object PanicToolButton: TToolButton
1727 Left = 557 1729 Left = 851
1728 Hint = 'Stops all sound output' 1730 Hint = 'Stops all sound output'
1729 Top = 0 1731 Top = 0
1730 AutoSize = True 1732 AutoSize = True
@@ -1735,17 +1737,17 @@ object frmTracker: TfrmTracker
1735 ShowHint = True 1737 ShowHint = True
1736 end 1738 end
1737 object ToolButton2: TToolButton 1739 object ToolButton2: TToolButton
1738 Left = 147 1740 Left = 221
1739 Top = 0 1741 Top = 0
1740 Action = PlayCursorAction 1742 Action = PlayCursorAction
1741 end 1743 end
1742 object ToolButton4: TToolButton 1744 object ToolButton4: TToolButton
1743 Left = 221 1745 Left = 331
1744 Top = 0 1746 Top = 0
1745 Action = StopAction 1747 Action = StopAction
1746 end 1748 end
1747 object ExportGBButton: TToolButton 1749 object ExportGBButton: TToolButton
1748 Left = 291 1750 Left = 442
1749 Hint = 'Export the song as a standalone ROM' 1751 Hint = 'Export the song as a standalone ROM'
1750 Top = 0 1752 Top = 0
1751 AutoSize = True 1753 AutoSize = True
@@ -1754,49 +1756,49 @@ object frmTracker: TfrmTracker
1754 OnClick = ExportGBButtonClick 1756 OnClick = ExportGBButtonClick
1755 end 1757 end
1756 object ToolButton8: TToolButton 1758 object ToolButton8: TToolButton
1757 Left = 79 1759 Left = 120
1758 Height = 22 1760 Height = 39
1759 Top = 0 1761 Top = 0
1760 Caption = 'ToolButton8' 1762 Caption = 'ToolButton8'
1761 Style = tbsDivider 1763 Style = tbsDivider
1762 end 1764 end
1763 object ToolButton6: TToolButton 1765 object ToolButton6: TToolButton
1764 Left = 286 1766 Left = 433
1765 Height = 22 1767 Height = 39
1766 Top = 0 1768 Top = 0
1767 Caption = 'ToolButton6' 1769 Caption = 'ToolButton6'
1768 Style = tbsDivider 1770 Style = tbsDivider
1769 end 1771 end
1770 object ToolButton7: TToolButton 1772 object ToolButton7: TToolButton
1771 Left = 1097 1773 Left = 1775
1772 Height = 22 1774 Height = 39
1773 Top = 0 1775 Top = 0
1774 Caption = 'ToolButton7' 1776 Caption = 'ToolButton7'
1775 Style = tbsSeparator 1777 Style = tbsSeparator
1776 end 1778 end
1777 object OctaveSpinEdit: TSpinEdit 1779 object OctaveSpinEdit: TSpinEdit
1778 Left = 663 1780 Left = 1016
1779 Height = 23 1781 Height = 38
1780 Hint = 'The octave offset for entering new notes' 1782 Hint = 'The octave offset for entering new notes'
1781 Top = 0 1783 Top = 0
1782 Width = 65 1784 Width = 114
1783 MaxValue = 5 1785 MaxValue = 5
1784 OnChange = OctaveSpinEditChange 1786 OnChange = OctaveSpinEditChange
1785 ParentFont = False 1787 ParentFont = False
1786 TabOrder = 0 1788 TabOrder = 0
1787 end 1789 end
1788 object ToolButton9: TToolButton 1790 object ToolButton9: TToolButton
1789 Left = 612 1791 Left = 927
1790 Height = 22 1792 Height = 39
1791 Top = 0 1793 Top = 0
1792 Caption = 'ToolButton9' 1794 Caption = 'ToolButton9'
1793 Style = tbsSeparator 1795 Style = tbsSeparator
1794 end 1796 end
1795 object Label22: TLabel 1797 object Label22: TLabel
1796 Left = 620 1798 Left = 941
1797 Height = 22 1799 Height = 39
1798 Top = 0 1800 Top = 0
1799 Width = 43 1801 Width = 75
1800 AutoSize = False 1802 AutoSize = False
1801 Caption = 'Octave ' 1803 Caption = 'Octave '
1802 Layout = tlCenter 1804 Layout = tlCenter
@@ -1804,10 +1806,10 @@ object frmTracker: TfrmTracker
1804 ParentFont = False 1806 ParentFont = False
1805 end 1807 end
1806 object Label23: TLabel 1808 object Label23: TLabel
1807 Left = 728 1809 Left = 1130
1808 Height = 22 1810 Height = 39
1809 Top = 0 1811 Top = 0
1810 Width = 70 1812 Width = 122
1811 AutoSize = False 1813 AutoSize = False
1812 Caption = ' Instrument ' 1814 Caption = ' Instrument '
1813 Layout = tlCenter 1815 Layout = tlCenter
@@ -1815,13 +1817,13 @@ object frmTracker: TfrmTracker
1815 ParentFont = False 1817 ParentFont = False
1816 end 1818 end
1817 object InstrumentComboBox: TComboBox 1819 object InstrumentComboBox: TComboBox
1818 Left = 798 1820 Left = 1252
1819 Height = 23 1821 Height = 38
1820 Hint = 'The selected instrument for new notes' 1822 Hint = 'The selected instrument for new notes'
1821 Top = 0 1823 Top = 0
1822 Width = 214 1824 Width = 374
1823 DropDownCount = 999 1825 DropDownCount = 999
1824 ItemHeight = 15 1826 ItemHeight = 30
1825 ItemIndex = 0 1827 ItemIndex = 0
1826 Items.Strings = ( 1828 Items.Strings = (
1827 '(no instrument)' 1829 '(no instrument)'
@@ -1833,10 +1835,10 @@ object frmTracker: TfrmTracker
1833 Text = '(no instrument)' 1835 Text = '(no instrument)'
1834 end 1836 end
1835 object Label24: TLabel 1837 object Label24: TLabel
1836 Left = 1012 1838 Left = 1626
1837 Height = 22 1839 Height = 39
1838 Top = 0 1840 Top = 0
1839 Width = 35 1841 Width = 61
1840 AutoSize = False 1842 AutoSize = False
1841 Caption = ' Step ' 1843 Caption = ' Step '
1842 Layout = tlCenter 1844 Layout = tlCenter
@@ -1844,23 +1846,23 @@ object frmTracker: TfrmTracker
1844 ParentFont = False 1846 ParentFont = False
1845 end 1847 end
1846 object StepSpinEdit: TSpinEdit 1848 object StepSpinEdit: TSpinEdit
1847 Left = 1047 1849 Left = 1687
1848 Height = 23 1850 Height = 38
1849 Hint = 'How many rows to step down after entering a new note' 1851 Hint = 'How many rows to step down after entering a new note'
1850 Top = 0 1852 Top = 0
1851 Width = 50 1853 Width = 88
1852 MaxValue = 63 1854 MaxValue = 63
1853 OnChange = StepSpinEditChange 1855 OnChange = StepSpinEditChange
1854 ParentFont = False 1856 ParentFont = False
1855 TabOrder = 2 1857 TabOrder = 2
1856 end 1858 end
1857 object ToolButton3: TToolButton 1859 object ToolButton3: TToolButton
1858 Left = 84 1860 Left = 129
1859 Top = 0 1861 Top = 0
1860 Action = PlayStartAction 1862 Action = PlayStartAction
1861 end 1863 end
1862 object ExportGBSButton: TToolButton 1864 object ExportGBSButton: TToolButton
1863 Left = 372 1865 Left = 564
1864 Hint = 'Export the song as a GBS soundtrack' 1866 Hint = 'Export the song as a GBS soundtrack'
1865 Top = 0 1867 Top = 0
1866 Caption = 'Export .GBS' 1868 Caption = 'Export .GBS'
@@ -1868,14 +1870,14 @@ object frmTracker: TfrmTracker
1868 OnClick = ExportGBSButtonClick 1870 OnClick = ExportGBSButtonClick
1869 end 1871 end
1870 object ToolButton5: TToolButton 1872 object ToolButton5: TToolButton
1871 Left = 552 1873 Left = 842
1872 Height = 22 1874 Height = 39
1873 Top = 0 1875 Top = 0
1874 Caption = 'ToolButton5' 1876 Caption = 'ToolButton5'
1875 Style = tbsDivider 1877 Style = tbsDivider
1876 end 1878 end
1877 object ToolButton10: TToolButton 1879 object ToolButton10: TToolButton
1878 Left = 459 1880 Left = 697
1879 Hint = 'Export the song as WAV or MP3' 1881 Hint = 'Export the song as WAV or MP3'
1880 Top = 0 1882 Top = 0
1881 Caption = 'Render Song' 1883 Caption = 'Render Song'
@@ -1885,8 +1887,8 @@ object frmTracker: TfrmTracker
1885 end 1887 end
1886 object MainMenu1: TMainMenu 1888 object MainMenu1: TMainMenu
1887 Images = ImageList1 1889 Images = ImageList1
1888 Left = 40 1890 Left = 70
1889 Top = 32 1891 Top = 56
1890 object MenuItem1: TMenuItem 1892 object MenuItem1: TMenuItem
1891 Caption = 'File' 1893 Caption = 'File'
1892 object MenuItem33: TMenuItem 1894 object MenuItem33: TMenuItem
@@ -2033,8 +2035,8 @@ object frmTracker: TfrmTracker
2033 end 2035 end
2034 object MenuBarActionList: TActionList 2036 object MenuBarActionList: TActionList
2035 Images = ImageList1 2037 Images = ImageList1
2036 Left = 104 2038 Left = 182
2037 Top = 72 2039 Top = 126
2038 object FileOpen1: TFileOpen 2040 object FileOpen1: TFileOpen
2039 Category = 'File' 2041 Category = 'File'
2040 Caption = '&Open ...' 2042 Caption = '&Open ...'
@@ -2137,8 +2139,8 @@ object frmTracker: TfrmTracker
2137 end 2139 end
2138 end 2140 end
2139 object ImageList1: TImageList 2141 object ImageList1: TImageList
2140 Left = 152 2142 Left = 266
2141 Top = 32 2143 Top = 56
2142 Bitmap = { 2144 Bitmap = {
2143 4C694E0000001000000010000000000000000000000000000000000000000000 2145 4C694E0000001000000010000000000000000000000000000000000000000000
2144 0000000000000000000000000000000000000000000000000000000000000000 2146 0000000000000000000000000000000000000000000000000000000000000000
@@ -4641,17 +4643,17 @@ object frmTracker: TfrmTracker
4641 end 4643 end
4642 object OpenDialog1: TOpenDialog 4644 object OpenDialog1: TOpenDialog
4643 Filter = 'hUGETracker Instruments|*.ugi' 4645 Filter = 'hUGETracker Instruments|*.ugi'
4644 Left = 80 4646 Left = 140
4645 Top = 56 4647 Top = 98
4646 end 4648 end
4647 object InstrumentSaveDialog: TSaveDialog 4649 object InstrumentSaveDialog: TSaveDialog
4648 Filter = 'hUGETracker Instruments|*.ugi' 4650 Filter = 'hUGETracker Instruments|*.ugi'
4649 Left = 80 4651 Left = 140
4650 Top = 56 4652 Top = 98
4651 end 4653 end
4652 object OrderEditPopup: TPopupMenu 4654 object OrderEditPopup: TPopupMenu
4653 Left = 128 4655 Left = 224
4654 Top = 40 4656 Top = 70
4655 object MenuItem17: TMenuItem 4657 object MenuItem17: TMenuItem
4656 Caption = 'Insert new row' 4658 Caption = 'Insert new row'
4657 Hint = 'Insert a new row filled with brand new patterns' 4659 Hint = 'Insert a new row filled with brand new patterns'
@@ -4682,8 +4684,8 @@ object frmTracker: TfrmTracker
4682 object ImageList2: TImageList 4684 object ImageList2: TImageList
4683 Height = 32 4685 Height = 32
4684 Width = 32 4686 Width = 32
4685 Left = 48 4687 Left = 84
4686 Top = 86 4688 Top = 151
4687 Bitmap = { 4689 Bitmap = {
4688 4C69020000002000000020000000000000000000000000000000000000000000 4690 4C69020000002000000020000000000000000000000000000000000000000000
4689 0000000000000000000000000000000000000000000000000000000000000000 4691 0000000000000000000000000000000000000000000000000000000000000000
@@ -4948,33 +4950,33 @@ object frmTracker: TfrmTracker
4948 Enabled = False 4950 Enabled = False
4949 Interval = 200 4951 Interval = 200
4950 OnTimer = OscilloscopeUpdateTimerTimer 4952 OnTimer = OscilloscopeUpdateTimerTimer
4951 Left = 88 4953 Left = 154
4952 Top = 48 4954 Top = 84
4953 end 4955 end
4954 object GBSSaveDialog: TSaveDialog 4956 object GBSSaveDialog: TSaveDialog
4955 Filter = 'Gameboy Soundtrack|*.gbs' 4957 Filter = 'Gameboy Soundtrack|*.gbs'
4956 Left = 288 4958 Left = 504
4957 Top = 24 4959 Top = 42
4958 end 4960 end
4959 object WaveSaveDialog: TSaveDialog 4961 object WaveSaveDialog: TSaveDialog
4960 Filter = 'hUGETracker Waves|*.ugw' 4962 Filter = 'hUGETracker Waves|*.ugw'
4961 Left = 368 4963 Left = 644
4962 Top = 24 4964 Top = 42
4963 end 4965 end
4964 object GBSaveDialog: TSaveDialog 4966 object GBSaveDialog: TSaveDialog
4965 Filter = 'Gameboy ROM|*.GB' 4967 Filter = 'Gameboy ROM|*.GB'
4966 Left = 328 4968 Left = 574
4967 Top = 24 4969 Top = 42
4968 end 4970 end
4969 object NoteHaltTimer: TTimer 4971 object NoteHaltTimer: TTimer
4970 Enabled = False 4972 Enabled = False
4971 OnTimer = NoteHaltTimerTimer 4973 OnTimer = NoteHaltTimerTimer
4972 Left = 80 4974 Left = 140
4973 Top = 86 4975 Top = 151
4974 end 4976 end
4975 object TrackerGridPopup: TPopupMenu 4977 object TrackerGridPopup: TPopupMenu
4976 Left = 96 4978 Left = 168
4977 Top = 24 4979 Top = 42
4978 object TrackerPopupEditEffect: TMenuItem 4980 object TrackerPopupEditEffect: TMenuItem
4979 Caption = 'Edit effect ...' 4981 Caption = 'Edit effect ...'
4980 OnClick = TrackerPopupEditEffectClick 4982 OnClick = TrackerPopupEditEffectClick
@@ -5121,8 +5123,8 @@ object frmTracker: TfrmTracker
5121 object WavSaveDialog: TSaveDialog 5123 object WavSaveDialog: TSaveDialog
5122 DefaultExt = '.wav' 5124 DefaultExt = '.wav'
5123 Filter = 'Wave files|*.wav' 5125 Filter = 'Wave files|*.wav'
5124 Left = 408 5126 Left = 714
5125 Top = 24 5127 Top = 42
5126 end 5128 end
5127 object SynAnySyn1: TSynAnySyn 5129 object SynAnySyn1: TSynAnySyn
5128 Enabled = False 5130 Enabled = False
@@ -5246,18 +5248,18 @@ object frmTracker: TfrmTracker
5246 Entity = False 5248 Entity = False
5247 DollarVariables = False 5249 DollarVariables = False
5248 ActiveDot = False 5250 ActiveDot = False
5249 Left = 8 5251 Left = 14
5250 Top = 86 5252 Top = 151
5251 end 5253 end
5252 object MODOpenDialog: TOpenDialog 5254 object MODOpenDialog: TOpenDialog
5253 DefaultExt = '.mod' 5255 DefaultExt = '.mod'
5254 Filter = 'GBT Player MOD files|*.mod' 5256 Filter = 'GBT Player MOD files|*.mod'
5255 Left = 448 5257 Left = 784
5256 Top = 32 5258 Top = 56
5257 end 5259 end
5258 object WaveEditPopup: TPopupMenu 5260 object WaveEditPopup: TPopupMenu
5259 Left = 8 5261 Left = 14
5260 Top = 32 5262 Top = 56
5261 object MenuItem37: TMenuItem 5263 object MenuItem37: TMenuItem
5262 Caption = 'Copy' 5264 Caption = 'Copy'
5263 OnClick = MenuItem37Click 5265 OnClick = MenuItem37Click
@@ -5269,8 +5271,8 @@ object frmTracker: TfrmTracker
5269 end 5271 end
5270 object ShortcutsActionList: TActionList 5272 object ShortcutsActionList: TActionList
5271 Images = ImageList1 5273 Images = ImageList1
5272 Left = 208 5274 Left = 364
5273 Top = 32 5275 Top = 56
5274 object PlayStartAction: TAction 5276 object PlayStartAction: TAction
5275 Caption = '▶️ Start' 5277 Caption = '▶️ Start'
5276 DisableIfNoHandler = False 5278 DisableIfNoHandler = False
@@ -5385,17 +5387,17 @@ object frmTracker: TfrmTracker
5385 end 5387 end
5386 object GBDKCSaveDialog: TSaveDialog 5388 object GBDKCSaveDialog: TSaveDialog
5387 Filter = 'GBDK C File|*.c' 5389 Filter = 'GBDK C File|*.c'
5388 Left = 248 5390 Left = 434
5389 Top = 24 5391 Top = 42
5390 end 5392 end
5391 object RGBDSObjSaveDialog: TSaveDialog 5393 object RGBDSObjSaveDialog: TSaveDialog
5392 Filter = 'RGBDS Object|*.obj' 5394 Filter = 'RGBDS Object|*.obj'
5393 Left = 248 5395 Left = 434
5394 Top = 64 5396 Top = 112
5395 end 5397 end
5396 object GBDKObjSaveDialog: TSaveDialog 5398 object GBDKObjSaveDialog: TSaveDialog
5397 Filter = 'GBDK Object|*.o' 5399 Filter = 'GBDK Object|*.o'
5398 Left = 288 5400 Left = 504
5399 Top = 64 5401 Top = 112
5400 end 5402 end
5401 end 5403 end
Modifiedtracker.pas +1−1
@@ -2253,7 +2253,7 @@ begin
2253 if OrderEditStringGrid.Row > -1 then 2253 if OrderEditStringGrid.Row > -1 then
2254 ReloadPatterns; 2254 ReloadPatterns;
2255 2255
2256 if not InFDCallback then begin // Hacky solution, but probably the best there is. 2256 if (not InFDCallback) and Playing then begin // Hacky solution, but probably the best there is.
2257 LockPlayback; 2257 LockPlayback;
2258 PokeSymbol(SYM_NEXT_ORDER, OrderEditStringGrid.Row); 2258 PokeSymbol(SYM_NEXT_ORDER, OrderEditStringGrid.Row);
2259 PokeSymbol(SYM_ROW_BREAK, 1); 2259 PokeSymbol(SYM_ROW_BREAK, 1);