Commit 00be538

Richard Ziegler committed on
Skip through orders while playing, Turn Scopes On Off
You can now scrub patterns while playing, and it will update the music!
Also option to disable scopes since it uses a lot of cpu.
commit 00be5388654aecb4ffb179717a6067fe9a7f2477 parent d5ca00f
4 changed files +103−51
Modifiedoptions.lfm +32−19
@@ -1,38 +1,51 @@
1 object frmOptions: TfrmOptions 1 object frmOptions: TfrmOptions
2 Left = 1762 2 Left = 660
3 Height = 849 3 Height = 485
4 Top = 212 4 Top = 573
5 Width = 762 5 Width = 435
6 BorderStyle = bsDialog 6 BorderStyle = bsDialog
7 Caption = 'Options' 7 Caption = 'Options'
8 ClientHeight = 849 8 ClientHeight = 485
9 ClientWidth = 762 9 ClientWidth = 435
10 DesignTimePPI = 168
11 Position = poMainFormCenter 10 Position = poMainFormCenter
12 LCLVersion = '2.0.6.0' 11 LCLVersion = '2.0.6.0'
13 object Label1: TLabel 12 object Label1: TLabel
14 Left = 24 13 Left = 14
15 Height = 30 14 Height = 15
16 Top = 24 15 Top = 14
17 Width = 211 16 Width = 119
18 Caption = 'Pattern editor font size' 17 Caption = 'Pattern editor font size'
19 ParentColor = False 18 ParentColor = False
19 ParentFont = False
20 end 20 end
21 object Button1: TButton 21 object Button1: TButton
22 Left = 520 22 Left = 297
23 Height = 44 23 Height = 25
24 Top = 784 24 Top = 448
25 Width = 216 25 Width = 123
26 Caption = 'OK' 26 Caption = 'OK'
27 OnClick = Button1Click 27 OnClick = Button1Click
28 ParentFont = False
28 TabOrder = 0 29 TabOrder = 0
29 end 30 end
30 object FontSizeSpinner: TSpinEdit 31 object FontSizeSpinner: TSpinEdit
31 Left = 272 32 Left = 155
32 Height = 38 33 Height = 23
33 Top = 16 34 Top = 9
34 Width = 216 35 Width = 123
36 ParentFont = False
35 TabOrder = 1 37 TabOrder = 1
36 Value = 12 38 Value = 12
37 end 39 end
40 object ScopesCheck: TCheckBox
41 Left = 14
42 Height = 19
43 Top = 40
44 Width = 149
45 Alignment = taLeftJustify
46 Caption = 'Scopes (Uses More CPU)'
47 Checked = True
48 State = cbChecked
49 TabOrder = 2
50 end
38 end 51 end
Modifiedoptions.pas +1−0
@@ -13,6 +13,7 @@ type
13 13
14 TfrmOptions = class(TForm) 14 TfrmOptions = class(TForm)
15 Button1: TButton; 15 Button1: TButton;
16 ScopesCheck: TCheckBox;
16 Label1: TLabel; 17 Label1: TLabel;
17 FontSizeSpinner: TSpinEdit; 18 FontSizeSpinner: TSpinEdit;
18 procedure Button1Click(Sender: TObject); 19 procedure Button1Click(Sender: TObject);
Modifiedtracker.lfm +28−27
@@ -1,11 +1,11 @@
1 object frmTracker: TfrmTracker 1 object frmTracker: TfrmTracker
2 Left = 434 2 Left = 453
3 Height = 661 3 Height = 701
4 Top = 645 4 Top = 598
5 Width = 1145 5 Width = 1145
6 AllowDropFiles = True 6 AllowDropFiles = True
7 Caption = 'hUGETracker' 7 Caption = 'hUGETracker'
8 ClientHeight = 641 8 ClientHeight = 681
9 ClientWidth = 1145 9 ClientWidth = 1145
10 KeyPreview = True 10 KeyPreview = True
11 Menu = MainMenu1 11 Menu = MainMenu1
@@ -21,8 +21,8 @@ object frmTracker: TfrmTracker
21 LCLVersion = '2.0.6.0' 21 LCLVersion = '2.0.6.0'
22 object TreeView1: TTreeView 22 object TreeView1: TTreeView
23 Left = 0 23 Left = 0
24 Height = 530 24 Height = 569
25 Top = 88 25 Top = 89
26 Width = 193 26 Width = 193
27 Align = alLeft 27 Align = alLeft
28 ParentFont = False 28 ParentFont = False
@@ -42,30 +42,30 @@ object frmTracker: TfrmTracker
42 end 42 end
43 object Splitter1: TSplitter 43 object Splitter1: TSplitter
44 Left = 193 44 Left = 193
45 Height = 530 45 Height = 569
46 Top = 88 46 Top = 89
47 Width = 5 47 Width = 5
48 end 48 end
49 object Panel1: TPanel 49 object Panel1: TPanel
50 Left = 198 50 Left = 198
51 Height = 530 51 Height = 569
52 Top = 88 52 Top = 89
53 Width = 947 53 Width = 947
54 Align = alClient 54 Align = alClient
55 BevelOuter = bvNone 55 BevelOuter = bvNone
56 ClientHeight = 530 56 ClientHeight = 569
57 ClientWidth = 947 57 ClientWidth = 947
58 ParentFont = False 58 ParentFont = False
59 TabOrder = 2 59 TabOrder = 2
60 object PageControl1: TPageControl 60 object PageControl1: TPageControl
61 Left = 0 61 Left = 0
62 Height = 530 62 Height = 569
63 Top = 0 63 Top = 0
64 Width = 947 64 Width = 947
65 ActivePage = CommentsTabSheet 65 ActivePage = PatternTabSheet
66 Align = alClient 66 Align = alClient
67 ParentFont = False 67 ParentFont = False
68 TabIndex = 4 68 TabIndex = 1
69 TabOrder = 0 69 TabOrder = 0
70 object GeneralTabSheet: TTabSheet 70 object GeneralTabSheet: TTabSheet
71 Caption = 'General' 71 Caption = 'General'
@@ -146,16 +146,16 @@ object frmTracker: TfrmTracker
146 end 146 end
147 object PatternTabSheet: TTabSheet 147 object PatternTabSheet: TTabSheet
148 Caption = 'Patterns' 148 Caption = 'Patterns'
149 ClientHeight = 502 149 ClientHeight = 541
150 ClientWidth = 939 150 ClientWidth = 939
151 ParentFont = False 151 ParentFont = False
152 object Panel3: TPanel 152 object Panel3: TPanel
153 Left = 224 153 Left = 224
154 Height = 502 154 Height = 541
155 Top = 0 155 Top = 0
156 Width = 715 156 Width = 715
157 Align = alClient 157 Align = alClient
158 ClientHeight = 502 158 ClientHeight = 541
159 ClientWidth = 715 159 ClientWidth = 715
160 ParentFont = False 160 ParentFont = False
161 TabOrder = 0 161 TabOrder = 0
@@ -204,7 +204,7 @@ object frmTracker: TfrmTracker
204 end 204 end
205 object ScrollBox1: TScrollBox 205 object ScrollBox1: TScrollBox
206 Left = 1 206 Left = 1
207 Height = 470 207 Height = 509
208 Top = 31 208 Top = 31
209 Width = 713 209 Width = 713
210 HorzScrollBar.Increment = 1 210 HorzScrollBar.Increment = 1
@@ -225,7 +225,7 @@ object frmTracker: TfrmTracker
225 end 225 end
226 object OrderEditStringGrid: TStringGrid 226 object OrderEditStringGrid: TStringGrid
227 Left = 0 227 Left = 0
228 Height = 502 228 Height = 541
229 Top = 0 229 Top = 0
230 Width = 224 230 Width = 224
231 Align = alLeft 231 Align = alLeft
@@ -1589,19 +1589,20 @@ object frmTracker: TfrmTracker
1589 end 1589 end
1590 object Panel2: TPanel 1590 object Panel2: TPanel
1591 Left = 0 1591 Left = 0
1592 Height = 63 1592 Height = 64
1593 Top = 25 1593 Top = 25
1594 Width = 1145 1594 Width = 1145
1595 Align = alTop 1595 Align = alTop
1596 BevelOuter = bvNone 1596 BevelOuter = bvNone
1597 ClientHeight = 63 1597 Caption = 'Hides if Scopes Off'
1598 ClientHeight = 64
1598 ClientWidth = 1145 1599 ClientWidth = 1145
1599 ParentFont = False 1600 ParentFont = False
1600 TabOrder = 3 1601 TabOrder = 3
1601 object LEDMeter1: TLEDMeter 1602 object LEDMeter1: TLEDMeter
1602 AnchorSideRight.Control = Duty1Visualizer 1603 AnchorSideRight.Control = Duty1Visualizer
1603 Left = 0 1604 Left = 0
1604 Height = 31 1605 Height = 32
1605 Top = 32 1606 Top = 32
1606 Width = 357 1607 Width = 357
1607 Anchors = [akTop, akLeft, akRight] 1608 Anchors = [akTop, akLeft, akRight]
@@ -1646,7 +1647,7 @@ object frmTracker: TfrmTracker
1646 end 1647 end
1647 object Duty1Visualizer: TPaintBox 1648 object Duty1Visualizer: TPaintBox
1648 Left = 357 1649 Left = 357
1649 Height = 63 1650 Height = 64
1650 Top = 0 1651 Top = 0
1651 Width = 197 1652 Width = 197
1652 Align = alRight 1653 Align = alRight
@@ -1656,7 +1657,7 @@ object frmTracker: TfrmTracker
1656 end 1657 end
1657 object Duty2Visualizer: TPaintBox 1658 object Duty2Visualizer: TPaintBox
1658 Left = 554 1659 Left = 554
1659 Height = 63 1660 Height = 64
1660 Top = 0 1661 Top = 0
1661 Width = 197 1662 Width = 197
1662 Align = alRight 1663 Align = alRight
@@ -1666,7 +1667,7 @@ object frmTracker: TfrmTracker
1666 end 1667 end
1667 object WaveVisualizer: TPaintBox 1668 object WaveVisualizer: TPaintBox
1668 Left = 751 1669 Left = 751
1669 Height = 63 1670 Height = 64
1670 Top = 0 1671 Top = 0
1671 Width = 197 1672 Width = 197
1672 Align = alRight 1673 Align = alRight
@@ -1676,7 +1677,7 @@ object frmTracker: TfrmTracker
1676 end 1677 end
1677 object NoiseVisualizer: TPaintBox 1678 object NoiseVisualizer: TPaintBox
1678 Left = 948 1679 Left = 948
1679 Height = 63 1680 Height = 64
1680 Top = 0 1681 Top = 0
1681 Width = 197 1682 Width = 197
1682 Align = alRight 1683 Align = alRight
@@ -1688,7 +1689,7 @@ object frmTracker: TfrmTracker
1688 object StatusBar1: TStatusBar 1689 object StatusBar1: TStatusBar
1689 Left = 0 1690 Left = 0
1690 Height = 23 1691 Height = 23
1691 Top = 618 1692 Top = 658
1692 Width = 1145 1693 Width = 1145
1693 AutoHint = True 1694 AutoHint = True
1694 Panels = < 1695 Panels = <
Modifiedtracker.pas +42−5
@@ -376,6 +376,7 @@ type
376 Playing: Boolean; 376 Playing: Boolean;
377 LoadingFile: Boolean; 377 LoadingFile: Boolean;
378 SaveSucceeded: Boolean; 378 SaveSucceeded: Boolean;
379 ScopesOn: Boolean;
379 380
380 {PatternsNode, } 381 {PatternsNode, }
381 WaveInstrumentsNode, 382 WaveInstrumentsNode,
@@ -904,6 +905,7 @@ begin
904 TrackerGrid.OnResize:=@OnTrackerGridResize; 905 TrackerGrid.OnResize:=@OnTrackerGridResize;
905 906
906 TrackerGrid.FontSize := OptionsFile.ReadInteger('hUGETracker', 'fontsize', 12); 907 TrackerGrid.FontSize := OptionsFile.ReadInteger('hUGETracker', 'fontsize', 12);
908 ScopesOn := OptionsFile.ReadBool('hUGETracker', 'ScopesOn', True);
907 909
908 // Fix the size of the channel headers 910 // Fix the size of the channel headers
909 for Section in HeaderControl1.Sections do 911 for Section in HeaderControl1.Sections do
@@ -1182,7 +1184,8 @@ begin
1182 ResetEmulationThread; //TODO: remove this hack 1184 ResetEmulationThread; //TODO: remove this hack
1183 1185
1184 // Start the Oscilloscope repaint timer 1186 // Start the Oscilloscope repaint timer
1185 OscilloscopeUpdateTimer.Enabled := True; 1187 OscilloscopeUpdateTimer.Enabled := ScopesOn;
1188 Panel2.height := IfThen(ScopesOn, 64, 0);
1186 1189
1187 // Switch to general tab sheet 1190 // Switch to general tab sheet
1188 PageControl1.ActivePageIndex := 0; 1191 PageControl1.ActivePageIndex := 0;
@@ -1800,10 +1803,16 @@ end;
1800 procedure TfrmTracker.MenuItem26Click(Sender: TObject); 1803 procedure TfrmTracker.MenuItem26Click(Sender: TObject);
1801 begin 1804 begin
1802 frmOptions.FontSizeSpinner.Value := TrackerGrid.FontSize; 1805 frmOptions.FontSizeSpinner.Value := TrackerGrid.FontSize;
1806 frmOptions.ScopesCheck.Checked := ScopesOn;
1803 frmOptions.ShowModal; 1807 frmOptions.ShowModal;
1804 TrackerGrid.FontSize := frmOptions.FontSizeSpinner.Value; 1808 TrackerGrid.FontSize := frmOptions.FontSizeSpinner.Value;
1809 ScopesOn := frmOptions.ScopesCheck.Checked;
1805 1810
1806 OptionsFile.WriteInteger('hUGETracker', 'fontsize', TrackerGrid.FontSize); 1811 OptionsFile.WriteInteger('hUGETracker', 'fontsize', TrackerGrid.FontSize);
1812 OptionsFile.WriteBool('hUGETracker', 'ScopesOn', ScopesOn);
1813 OscilloscopeUpdateTimer.Enabled := ScopesOn;
1814 Panel2.height := IfThen(ScopesOn, 64, 0);
1815
1807 end; 1816 end;
1808 1817
1809 procedure TfrmTracker.MenuItem31Click(Sender: TObject); 1818 procedure TfrmTracker.MenuItem31Click(Sender: TObject);
@@ -1888,6 +1897,20 @@ procedure TfrmTracker.OrderEditStringGridAfterSelection(Sender: TObject; aCol,
1888 begin 1897 begin
1889 if OrderEditStringGrid.Row > -1 then 1898 if OrderEditStringGrid.Row > -1 then
1890 ReloadPatterns; 1899 ReloadPatterns;
1900
1901 if Playing = True then begin
1902 if TrackerGrid.HighlightedRow <> 0 then begin
1903 if OrderEditStringGrid.Row = 1 then begin
1904 if PreparePreview then
1905 Playing := True;
1906 end
1907 else begin
1908 PokeSymbol(SYM_CURRENT_ORDER, 2*(OrderEditStringGrid.Row-2));
1909 PokeSymbol(SYM_ROW, 63);
1910 end;
1911 end;
1912 EmulationThread.Start;
1913 end
1891 end; 1914 end;
1892 1915
1893 procedure TfrmTracker.OrderEditStringGridColRowDeleted(Sender: TObject; 1916 procedure TfrmTracker.OrderEditStringGridColRowDeleted(Sender: TObject;
@@ -1923,11 +1946,25 @@ procedure TfrmTracker.OrderEditStringGridDblClick(Sender: TObject);
1923 var 1946 var
1924 Highest: Integer; 1947 Highest: Integer;
1925 begin 1948 begin
1926 Highest := Song.Patterns.MaxKey; 1949 if Playing = True then begin
1950 if OrderEditStringGrid.Row = 1 then begin
1951 if PreparePreview then begin
1952 Playing := True;
1953 end;
1954 end
1955 else begin
1956 PokeSymbol(SYM_CURRENT_ORDER, 2*(OrderEditStringGrid.Row-2));
1957 PokeSymbol(SYM_ROW, 63);
1958 end;
1959 EmulationThread.Start;
1960 end
1961 else begin
1962 Highest := Song.Patterns.MaxKey;
1927 1963
1928 with OrderEditStringGrid do begin 1964 with OrderEditStringGrid do begin
1929 Cells[Col, Row] := IntToStr(Highest); 1965 Cells[Col, Row] := IntToStr(Highest);
1930 TrackerGrid.LoadPattern(Col - 1, Highest); 1966 TrackerGrid.LoadPattern(Col - 1, Highest);
1967 end;
1931 end; 1968 end;
1932 end; 1969 end;
1933 1970