History

Reset sample counter when pressing Play Song (reduces tiny delay)

Also some code cleanup (more sensible variable names).

Olav Sørensen committed 6 years ago

Commit e8a29be1 parent b8597d34 files · +113 −112Browse files

Unified · Split

4 files
  1. src/ft2_audio.c +24 −26
  2. src/ft2_audio.h +2 −1
  3. src/ft2_replayer.c +2 −0
  4. vs2019_project/ft2-clone/ft2-clone.vcxproj.filters +85 −85
src/ft2_audio.c+24−26
@@ -20,7 +20,7 @@ · 19 unmodified lines
20 20
21static int8_t pmpCountDiv, pmpChannels = 2;21static int8_t pmpCountDiv, pmpChannels = 2;
22static uint16_t smpBuffSize;22static uint16_t smpBuffSize;
23static int32_t masterVol, oldAudioFreq, pmpLeft, randSeed = INITIAL_DITHER_SEED;23static int32_t masterVol, oldAudioFreq, randSeed = INITIAL_DITHER_SEED;
24static int32_t prngStateL, prngStateR;24static int32_t prngStateL, prngStateR;
25static uint32_t tickTimeLen, tickTimeLenFrac;25static uint32_t tickTimeLen, tickTimeLenFrac;
26static float fAudioAmpMul;26static float fAudioAmpMul;
@@ -161,7 +161,7 @@ void setSpeed(uint16_t bpm) · 134 unmodified lines
161 if (bpm > MAX_BPM)161 if (bpm > MAX_BPM)
162 return;162 return;
163 163
164 audio.speedVal = audio.speedValTab[bpm];164 audio.samplesPerTick = audio.speedValTab[bpm];
165 165
166 // get tick time length for audio/video sync timestamp166 // get tick time length for audio/video sync timestamp
167 const uint64_t tickTimeLen64 = audio.tickTimeLengthTab[bpm];167 const uint64_t tickTimeLen64 = audio.tickTimeLengthTab[bpm];
@@ -261,7 +261,7 @@ static void voiceUpdateVolumes(int32_t i, uint8_t status) · 93 unmodified lines
261 }261 }
262 else262 else
263 {263 {
264 v->SVolIPLen = audio.speedVal;264 v->SVolIPLen = audio.samplesPerTick;
265 v->SLVolIP = ((int64_t)destVolL * audio.rampSpeedValMul) >> 32;265 v->SLVolIP = ((int64_t)destVolL * audio.rampSpeedValMul) >> 32;
266 v->SRVolIP = ((int64_t)destVolR * audio.rampSpeedValMul) >> 32;266 v->SRVolIP = ((int64_t)destVolR * audio.rampSpeedValMul) >> 32;
267 }267 }
@@ -584,8 +584,8 @@ uint32_t mixReplayerTickToBuffer(uint8_t *stream, uint8_t bitDepth) · 316 unmodified lines
584 voice_t *v, *r;584 voice_t *v, *r;
585 585
586 assert(audio.speedVal <= MAX_WAV_RENDER_SAMPLES_PER_TICK);586 assert(audio.speedVal <= MAX_WAV_RENDER_SAMPLES_PER_TICK);
587 memset(audio.mixBufferL, 0, audio.speedVal * sizeof (int32_t));587 memset(audio.mixBufferL, 0, audio.samplesPerTick * sizeof (int32_t));
588 memset(audio.mixBufferR, 0, audio.speedVal * sizeof (int32_t));588 memset(audio.mixBufferR, 0, audio.samplesPerTick * sizeof (int32_t));
589 589
590 // mix channels590 // mix channels
591 v = voice; // normal voices591 v = voice; // normal voices
@@ -594,24 +594,24 @@ uint32_t mixReplayerTickToBuffer(uint8_t *stream, uint8_t bitDepth) · 2 unmodified lines
594 for (int32_t i = 0; i < song.antChn; i++, v++, r++)594 for (int32_t i = 0; i < song.antChn; i++, v++, r++)
595 {595 {
596 // call the mixing routine currently set for the voice596 // call the mixing routine currently set for the voice
597 if (v->mixRoutine != NULL) v->mixRoutine(v, audio.speedVal); // mix normal voice597 if (v->mixRoutine != NULL) v->mixRoutine(v, audio.samplesPerTick); // mix normal voice
598 if (r->mixRoutine != NULL) r->mixRoutine(r, audio.speedVal); // mix volume ramp voice598 if (r->mixRoutine != NULL) r->mixRoutine(r, audio.samplesPerTick); // mix volume ramp voice
599 }599 }
600 600
601 // normalize mix buffer and send to audio stream601 // normalize mix buffer and send to audio stream
602 if (bitDepth == 16)602 if (bitDepth == 16)
603 {603 {
604 if (config.specialFlags2 & DITHERED_AUDIO)604 if (config.specialFlags2 & DITHERED_AUDIO)
605 sendSamples16BitDitherStereo(stream, audio.speedVal, 2);605 sendSamples16BitDitherStereo(stream, audio.samplesPerTick, 2);
606 else606 else
607 sendSamples16BitStereo(stream, audio.speedVal, 2);607 sendSamples16BitStereo(stream, audio.samplesPerTick, 2);
608 }608 }
609 else609 else
610 {610 {
611 sendSamples24BitStereo(stream, audio.speedVal, 2);611 sendSamples24BitStereo(stream, audio.samplesPerTick, 2);
612 }612 }
613 613
614 return audio.speedVal;614 return audio.samplesPerTick;
615}615}
616 616
617int32_t pattQueueReadSize(void)617int32_t pattQueueReadSize(void)
@@ -930,18 +930,16 @@ static void fillVisualsSyncBuffer(void) · 312 unmodified lines
930 930
931static void SDLCALL audioCallback(void *userdata, Uint8 *stream, int len)931static void SDLCALL audioCallback(void *userdata, Uint8 *stream, int len)
932{932{
933 int32_t a, b;
934
935 assert(len < 65536); // limitation in mixer933 assert(len < 65536); // limitation in mixer
936 assert(pmpCountDiv > 0);934 assert(pmpCountDiv > 0);
937 935
938 a = len / pmpCountDiv;936 int32_t samplesLeft = len / pmpCountDiv;
939 if (a <= 0)937 if (samplesLeft <= 0)
940 return;938 return;
941 939
942 while (a > 0)940 while (samplesLeft > 0)
943 {941 {
944 if (pmpLeft == 0)942 if (audio.tickSampleCounter == 0)
945 {943 {
946 // new replayer tick944 // new replayer tick
947 945
@@ -954,20 +952,20 @@ static void SDLCALL audioCallback(void *userdata, Uint8 *stream, int len) · 6 unmodified lines
954 mix_UpdateChannelVolPanFrq();952 mix_UpdateChannelVolPanFrq();
955 fillVisualsSyncBuffer();953 fillVisualsSyncBuffer();
956 954
957 pmpLeft = audio.speedVal;955 audio.tickSampleCounter = audio.samplesPerTick;
958 956
959 replayerBusy = false;957 replayerBusy = false;
960 }958 }
961 959
962 b = a;960 int32_t samplesToMix = samplesLeft;
963 if (b > pmpLeft)961 if (samplesToMix > audio.tickSampleCounter)
964 b = pmpLeft;962 samplesToMix = audio.tickSampleCounter;
965 963
966 mixAudio(stream, b, pmpChannels);964 mixAudio(stream, samplesToMix, pmpChannels);
967 stream += b * pmpCountDiv;965 stream += samplesToMix * pmpCountDiv;
968 966
969 a -= b;967 samplesLeft -= samplesToMix;
970 pmpLeft -= b;968 audio.tickSampleCounter -= samplesToMix;
971 }969 }
972 970
973 (void)userdata;971 (void)userdata;
@@ -1225,7 +1223,7 @@ bool setupAudio(bool showErrorMsg) · 251 unmodified lines
1225 1223
1226 stopAllScopes();1224 stopAllScopes();
1227 1225
1228 pmpLeft = 0; // reset sample counter1226 audio.tickSampleCounter = 0; // zero tick sample counter so that it will instantly initiate a tick
1229 1227
1230 calcReplayRate(audio.freq);1228 calcReplayRate(audio.freq);
1231 1229
src/ft2_audio.h+2−1
@@ -51,8 +51,9 @@ typedef struct audio_t · 50 unmodified lines
51 int32_t inputDeviceNum, outputDeviceNum, lastWorkingAudioFreq, lastWorkingAudioBits;51 int32_t inputDeviceNum, outputDeviceNum, lastWorkingAudioFreq, lastWorkingAudioBits;
52 int32_t quickVolSizeVal, *mixBufferL, *mixBufferR, *mixBufferLUnaligned, *mixBufferRUnaligned;52 int32_t quickVolSizeVal, *mixBufferL, *mixBufferR, *mixBufferLUnaligned, *mixBufferRUnaligned;
53 int32_t rampQuickVolMul, rampSpeedValMul, speedValTab[MAX_BPM+1], rampSpeedValMulTab[MAX_BPM+1];53 int32_t rampQuickVolMul, rampSpeedValMul, speedValTab[MAX_BPM+1], rampSpeedValMulTab[MAX_BPM+1];
54 int32_t tickSampleCounter;
54 uint32_t freq;55 uint32_t freq;
55 uint32_t audLatencyPerfValInt, audLatencyPerfValFrac, speedVal, musicTimeSpeedVal;56 uint32_t audLatencyPerfValInt, audLatencyPerfValFrac, samplesPerTick, musicTimeSpeedVal;
56 uint64_t tickTime64, tickTime64Frac, tickTimeLengthTab[MAX_BPM+1];57 uint64_t tickTime64, tickTime64Frac, tickTimeLengthTab[MAX_BPM+1];
57 double dAudioLatencyMs;58 double dAudioLatencyMs;
58 SDL_AudioDeviceID dev;59 SDL_AudioDeviceID dev;
src/ft2_replayer.c+2−0
@@ -2780,6 +2780,8 @@ void startPlaying(int8_t mode, int16_t row) · 2779 unmodified lines
2780 if (song.tempo == 0)2780 if (song.tempo == 0)
2781 song.tempo = song.initialTempo;2781 song.tempo = song.initialTempo;
2782 2782
2783 audio.tickSampleCounter = 0; // zero tick sample counter so that it will instantly initiate a tick
2784
2783 unlockMixerCallback();2785 unlockMixerCallback();
2784 2786
2785 ui.updatePosSections = true;2787 ui.updatePosSections = true;
vs2019_project/ft2-clone/ft2-clone.vcxproj.filters+85−85
@@ -1,57 +1,62 @@
1<?xml version="1.0" encoding="utf-8"?>1<?xml version="1.0" encoding="utf-8"?>
2<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">2<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3 <ItemGroup>3 <ItemGroup>
4 <ClCompile Include="..\..\src\ft2_about.c" />
4 <ClCompile Include="..\..\src\ft2_audio.c" />5 <ClCompile Include="..\..\src\ft2_audio.c" />
6 <ClCompile Include="..\..\src\ft2_audioselector.c" />
7 <ClCompile Include="..\..\src\ft2_bmp.c" />
8 <ClCompile Include="..\..\src\ft2_checkboxes.c" />
5 <ClCompile Include="..\..\src\ft2_config.c" />9 <ClCompile Include="..\..\src\ft2_config.c" />
10 <ClCompile Include="..\..\src\ft2_diskop.c" />
6 <ClCompile Include="..\..\src\ft2_edit.c" />11 <ClCompile Include="..\..\src\ft2_edit.c" />
12 <ClCompile Include="..\..\src\ft2_events.c" />
7 <ClCompile Include="..\..\src\ft2_gui.c" />13 <ClCompile Include="..\..\src\ft2_gui.c" />
8 <ClCompile Include="..\..\src\ft2_help.c" />14 <ClCompile Include="..\..\src\ft2_help.c" />
9 <ClCompile Include="..\..\src\ft2_inst_ed.c" />15 <ClCompile Include="..\..\src\ft2_inst_ed.c" />
16 <ClCompile Include="..\..\src\ft2_intrp_table.c" />
10 <ClCompile Include="..\..\src\ft2_keyboard.c" />17 <ClCompile Include="..\..\src\ft2_keyboard.c" />
11 <ClCompile Include="..\..\src\ft2_main.c" />18 <ClCompile Include="..\..\src\ft2_main.c" />
19 <ClCompile Include="..\..\src\ft2_midi.c" />
20 <ClCompile Include="..\..\src\ft2_mix.c" />
21 <ClCompile Include="..\..\src\ft2_module_loader.c" />
22 <ClCompile Include="..\..\src\ft2_module_saver.c" />
12 <ClCompile Include="..\..\src\ft2_mouse.c" />23 <ClCompile Include="..\..\src\ft2_mouse.c" />
13 <ClCompile Include="..\..\src\ft2_nibbles.c" />24 <ClCompile Include="..\..\src\ft2_nibbles.c" />
25 <ClCompile Include="..\..\src\ft2_palette.c" />
26 <ClCompile Include="..\..\src\ft2_pattern_draw.c" />
27 <ClCompile Include="..\..\src\ft2_pattern_ed.c" />
28 <ClCompile Include="..\..\src\ft2_pushbuttons.c" />
29 <ClCompile Include="..\..\src\ft2_radiobuttons.c" />
14 <ClCompile Include="..\..\src\ft2_replayer.c" />30 <ClCompile Include="..\..\src\ft2_replayer.c" />
15 <ClCompile Include="..\..\src\ft2_scopes.c" />
16 <ClCompile Include="..\..\src\ft2_video.c" />
17 <ClCompile Include="..\..\src\ft2_sample_ed.c" />31 <ClCompile Include="..\..\src\ft2_sample_ed.c" />
18 <ClCompile Include="..\..\src\ft2_pattern_ed.c" />32 <ClCompile Include="..\..\src\ft2_sample_ed_features.c" />
19 <ClCompile Include="..\..\src\ft2_sample_loader.c" />33 <ClCompile Include="..\..\src\ft2_sample_loader.c" />
20 <ClCompile Include="..\..\src\ft2_sample_saver.c" />34 <ClCompile Include="..\..\src\ft2_sample_saver.c" />
21 <ClCompile Include="..\..\src\ft2_diskop.c" />35 <ClCompile Include="..\..\src\ft2_sampling.c" />
22 <ClCompile Include="..\..\src\ft2_unicode.c" />36 <ClCompile Include="..\..\src\ft2_scopedraw.c" />
23 <ClCompile Include="..\..\src\ft2_midi.c" />37 <ClCompile Include="..\..\src\ft2_scopes.c" />
24 <ClCompile Include="..\..\src\ft2_wav_renderer.c" />
25 <ClCompile Include="..\..\src\ft2_trim.c" />
26 <ClCompile Include="..\..\src\ft2_checkboxes.c" />
27 <ClCompile Include="..\..\src\ft2_pushbuttons.c" />
28 <ClCompile Include="..\..\src\ft2_radiobuttons.c" />
29 <ClCompile Include="..\..\src\ft2_scrollbars.c" />38 <ClCompile Include="..\..\src\ft2_scrollbars.c" />
30 <ClCompile Include="..\..\src\ft2_textboxes.c" />39 <ClCompile Include="..\..\src\ft2_structs.c" />
31 <ClCompile Include="..\..\src\ft2_sysreqs.c" />40 <ClCompile Include="..\..\src\ft2_sysreqs.c" />
32 <ClCompile Include="..\..\src\ft2_module_loader.c" />41 <ClCompile Include="..\..\src\ft2_tables.c" />
33 <ClCompile Include="..\..\src\ft2_module_saver.c" />42 <ClCompile Include="..\..\src\ft2_textboxes.c" />
34 <ClCompile Include="..\..\src\ft2_mix.c" />43 <ClCompile Include="..\..\src\ft2_trim.c" />
35 <ClCompile Include="..\..\src\ft2_sampling.c" />44 <ClCompile Include="..\..\src\ft2_unicode.c" />
36 <ClCompile Include="..\..\src\ft2_audioselector.c" />45 <ClCompile Include="..\..\src\ft2_video.c" />
37 <ClCompile Include="..\..\src\ft2_events.c" />46 <ClCompile Include="..\..\src\ft2_wav_renderer.c" />
38 <ClCompile Include="..\..\src\ft2_pattern_draw.c" />
39 <ClCompile Include="..\..\src\ft2_sample_ed_features.c" />
40 <ClCompile Include="..\..\src\rtmidi\RtMidi.cpp">47 <ClCompile Include="..\..\src\rtmidi\RtMidi.cpp">
41 <Filter>rtmidi</Filter>48 <Filter>rtmidi</Filter>
42 </ClCompile>49 </ClCompile>
43 <ClCompile Include="..\..\src\rtmidi\rtmidi_c.cpp">50 <ClCompile Include="..\..\src\rtmidi\rtmidi_c.cpp">
44 <Filter>rtmidi</Filter>51 <Filter>rtmidi</Filter>
45 </ClCompile>52 </ClCompile>
46 <ClCompile Include="..\..\src\ft2_palette.c" />53 <ClCompile Include="..\..\src\gfxdata\ft2_bmp_fonts.c">
47 <ClCompile Include="..\..\src\ft2_scopedraw.c" />
48 <ClCompile Include="..\..\src\ft2_tables.c" />
49 <ClCompile Include="..\..\src\ft2_intrp_table.c" />
50 <ClCompile Include="..\..\src\ft2_bmp.c" />
51 <ClCompile Include="..\..\src\gfxdata\ft2_bmp_nibbles.c">
52 <Filter>graphics</Filter>54 <Filter>graphics</Filter>
53 </ClCompile>55 </ClCompile>
54 <ClCompile Include="..\..\src\gfxdata\ft2_bmp_midi.c">56 <ClCompile Include="..\..\src\gfxdata\ft2_bmp_gui.c">
57 <Filter>graphics</Filter>
58 </ClCompile>
59 <ClCompile Include="..\..\src\gfxdata\ft2_bmp_instr.c">
55 <Filter>graphics</Filter>60 <Filter>graphics</Filter>
56 </ClCompile>61 </ClCompile>
57 <ClCompile Include="..\..\src\gfxdata\ft2_bmp_logo.c">62 <ClCompile Include="..\..\src\gfxdata\ft2_bmp_logo.c">
@@ -60,164 +65,159 @@ · 2 unmodified lines
60 <ClCompile Include="..\..\src\gfxdata\ft2_bmp_looppins.c">65 <ClCompile Include="..\..\src\gfxdata\ft2_bmp_looppins.c">
61 <Filter>graphics</Filter>66 <Filter>graphics</Filter>
62 </ClCompile>67 </ClCompile>
63 <ClCompile Include="..\..\src\gfxdata\ft2_bmp_mouse.c">68 <ClCompile Include="..\..\src\gfxdata\ft2_bmp_midi.c">
64 <Filter>graphics</Filter>69 <Filter>graphics</Filter>
65 </ClCompile>70 </ClCompile>
66 <ClCompile Include="..\..\src\gfxdata\ft2_bmp_fonts.c">71 <ClCompile Include="..\..\src\gfxdata\ft2_bmp_mouse.c">
67 <Filter>graphics</Filter>72 <Filter>graphics</Filter>
68 </ClCompile>73 </ClCompile>
69 <ClCompile Include="..\..\src\gfxdata\ft2_bmp_instr.c">74 <ClCompile Include="..\..\src\gfxdata\ft2_bmp_nibbles.c">
70 <Filter>graphics</Filter>75 <Filter>graphics</Filter>
71 </ClCompile>76 </ClCompile>
72 <ClCompile Include="..\..\src\gfxdata\ft2_bmp_scopes.c">77 <ClCompile Include="..\..\src\gfxdata\ft2_bmp_scopes.c">
73 <Filter>graphics</Filter>78 <Filter>graphics</Filter>
74 </ClCompile>79 </ClCompile>
75 <ClCompile Include="..\..\src\gfxdata\ft2_bmp_gui.c">
76 <Filter>graphics</Filter>
77 </ClCompile>
78 <ClCompile Include="..\..\src\ft2_structs.c" />
79 <ClCompile Include="..\..\src\ft2_about.c" />
80 </ItemGroup>80 </ItemGroup>
81 <ItemGroup>81 <ItemGroup>
82 <ClInclude Include="..\..\src\ft2_audio.h">82 <ClInclude Include="..\..\src\rtmidi\RtMidi.h">
83 <Filter>rtmidi</Filter>
84 </ClInclude>
85 <ClInclude Include="..\..\src\rtmidi\rtmidi_c.h">
86 <Filter>rtmidi</Filter>
87 </ClInclude>
88 <ClInclude Include="..\..\src\ft2_about.h">
83 <Filter>headers</Filter>89 <Filter>headers</Filter>
84 </ClInclude>90 </ClInclude>
85 <ClInclude Include="..\..\src\ft2_config.h">91 <ClInclude Include="..\..\src\ft2_audio.h">
86 <Filter>headers</Filter>92 <Filter>headers</Filter>
87 </ClInclude>93 </ClInclude>
88 <ClInclude Include="..\..\src\ft2_edit.h">94 <ClInclude Include="..\..\src\ft2_audioselector.h">
89 <Filter>headers</Filter>95 <Filter>headers</Filter>
90 </ClInclude>96 </ClInclude>
91 <ClInclude Include="..\..\src\ft2_gui.h">97 <ClInclude Include="..\..\src\ft2_bmp.h">
92 <Filter>headers</Filter>98 <Filter>headers</Filter>
93 </ClInclude>99 </ClInclude>
94 <ClInclude Include="..\..\src\ft2_header.h">100 <ClInclude Include="..\..\src\ft2_checkboxes.h">
95 <Filter>headers</Filter>101 <Filter>headers</Filter>
96 </ClInclude>102 </ClInclude>
97 <ClInclude Include="..\..\src\ft2_help.h">103 <ClInclude Include="..\..\src\ft2_config.h">
98 <Filter>headers</Filter>104 <Filter>headers</Filter>
99 </ClInclude>105 </ClInclude>
100 <ClInclude Include="..\..\src\ft2_inst_ed.h">106 <ClInclude Include="..\..\src\ft2_diskop.h">
101 <Filter>headers</Filter>107 <Filter>headers</Filter>
102 </ClInclude>108 </ClInclude>
103 <ClInclude Include="..\..\src\ft2_keyboard.h">109 <ClInclude Include="..\..\src\ft2_edit.h">
104 <Filter>headers</Filter>110 <Filter>headers</Filter>
105 </ClInclude>111 </ClInclude>
106 <ClInclude Include="..\..\src\ft2_mouse.h">112 <ClInclude Include="..\..\src\ft2_events.h">
107 <Filter>headers</Filter>113 <Filter>headers</Filter>
108 </ClInclude>114 </ClInclude>
109 <ClInclude Include="..\..\src\ft2_nibbles.h">115 <ClInclude Include="..\..\src\ft2_gfxdata.h">
110 <Filter>headers</Filter>116 <Filter>headers</Filter>
111 </ClInclude>117 </ClInclude>
112 <ClInclude Include="..\..\src\ft2_replayer.h">118 <ClInclude Include="..\..\src\ft2_gui.h">
113 <Filter>headers</Filter>119 <Filter>headers</Filter>
114 </ClInclude>120 </ClInclude>
115 <ClInclude Include="..\..\src\ft2_scopes.h">121 <ClInclude Include="..\..\src\ft2_header.h">
116 <Filter>headers</Filter>122 <Filter>headers</Filter>
117 </ClInclude>123 </ClInclude>
118 <ClInclude Include="..\..\src\ft2_sample_ed.h">124 <ClInclude Include="..\..\src\ft2_help.h">
119 <Filter>headers</Filter>125 <Filter>headers</Filter>
120 </ClInclude>126 </ClInclude>
121 <ClInclude Include="..\..\src\ft2_pattern_ed.h">127 <ClInclude Include="..\..\src\ft2_inst_ed.h">
122 <Filter>headers</Filter>128 <Filter>headers</Filter>
123 </ClInclude>129 </ClInclude>
124 <ClInclude Include="..\..\src\ft2_sample_loader.h">130 <ClInclude Include="..\..\src\ft2_intrp_table.h">
125 <Filter>headers</Filter>131 <Filter>headers</Filter>
126 </ClInclude>132 </ClInclude>
127 <ClInclude Include="..\..\src\ft2_sample_saver.h">133 <ClInclude Include="..\..\src\ft2_keyboard.h">
128 <Filter>headers</Filter>134 <Filter>headers</Filter>
129 </ClInclude>135 </ClInclude>
130 <ClInclude Include="..\..\src\ft2_video.h">136 <ClInclude Include="..\..\src\ft2_midi.h">
131 <Filter>headers</Filter>137 <Filter>headers</Filter>
132 </ClInclude>138 </ClInclude>
133 <ClInclude Include="..\..\src\ft2_diskop.h">139 <ClInclude Include="..\..\src\ft2_mix.h">
134 <Filter>headers</Filter>140 <Filter>headers</Filter>
135 </ClInclude>141 </ClInclude>
136 <ClInclude Include="..\..\src\ft2_unicode.h">142 <ClInclude Include="..\..\src\ft2_mix_macros.h">
137 <Filter>headers</Filter>143 <Filter>headers</Filter>
138 </ClInclude>144 </ClInclude>
139 <ClInclude Include="..\..\src\ft2_midi.h">145 <ClInclude Include="..\..\src\ft2_module_loader.h">
140 <Filter>headers</Filter>146 <Filter>headers</Filter>
141 </ClInclude>147 </ClInclude>
142 <ClInclude Include="..\..\src\ft2_wav_renderer.h">148 <ClInclude Include="..\..\src\ft2_module_saver.h">
143 <Filter>headers</Filter>149 <Filter>headers</Filter>
144 </ClInclude>150 </ClInclude>
145 <ClInclude Include="..\..\src\ft2_about.h">151 <ClInclude Include="..\..\src\ft2_mouse.h">
146 <Filter>headers</Filter>152 <Filter>headers</Filter>
147 </ClInclude>153 </ClInclude>
148 <ClInclude Include="..\..\src\ft2_trim.h">154 <ClInclude Include="..\..\src\ft2_nibbles.h">
149 <Filter>headers</Filter>155 <Filter>headers</Filter>
150 </ClInclude>156 </ClInclude>
151 <ClInclude Include="..\..\src\ft2_checkboxes.h">157 <ClInclude Include="..\..\src\ft2_palette.h">
152 <Filter>headers</Filter>158 <Filter>headers</Filter>
153 </ClInclude>159 </ClInclude>
154 <ClInclude Include="..\..\src\ft2_pushbuttons.h">160 <ClInclude Include="..\..\src\ft2_pattern_draw.h">
155 <Filter>headers</Filter>161 <Filter>headers</Filter>
156 </ClInclude>162 </ClInclude>
157 <ClInclude Include="..\..\src\ft2_radiobuttons.h">163 <ClInclude Include="..\..\src\ft2_pattern_ed.h">
158 <Filter>headers</Filter>164 <Filter>headers</Filter>
159 </ClInclude>165 </ClInclude>
160 <ClInclude Include="..\..\src\ft2_scrollbars.h">166 <ClInclude Include="..\..\src\ft2_pushbuttons.h">
161 <Filter>headers</Filter>167 <Filter>headers</Filter>
162 </ClInclude>168 </ClInclude>
163 <ClInclude Include="..\..\src\ft2_textboxes.h">169 <ClInclude Include="..\..\src\ft2_radiobuttons.h">
164 <Filter>headers</Filter>170 <Filter>headers</Filter>
165 </ClInclude>171 </ClInclude>
166 <ClInclude Include="..\..\src\ft2_sysreqs.h">172 <ClInclude Include="..\..\src\ft2_replayer.h">
167 <Filter>headers</Filter>173 <Filter>headers</Filter>
168 </ClInclude>174 </ClInclude>
169 <ClInclude Include="..\..\src\ft2_module_loader.h">175 <ClInclude Include="..\..\src\ft2_sample_ed.h">
170 <Filter>headers</Filter>176 <Filter>headers</Filter>
171 </ClInclude>177 </ClInclude>
172 <ClInclude Include="..\..\src\ft2_module_saver.h">178 <ClInclude Include="..\..\src\ft2_sample_ed_features.h">
173 <Filter>headers</Filter>179 <Filter>headers</Filter>
174 </ClInclude>180 </ClInclude>
175 <ClInclude Include="..\..\src\ft2_gfxdata.h">181 <ClInclude Include="..\..\src\ft2_sample_loader.h">
176 <Filter>headers</Filter>182 <Filter>headers</Filter>
177 </ClInclude>183 </ClInclude>
178 <ClInclude Include="..\..\src\ft2_mix.h">184 <ClInclude Include="..\..\src\ft2_sample_saver.h">
179 <Filter>headers</Filter>185 <Filter>headers</Filter>
180 </ClInclude>186 </ClInclude>
181 <ClInclude Include="..\..\src\ft2_sampling.h">187 <ClInclude Include="..\..\src\ft2_sampling.h">
182 <Filter>headers</Filter>188 <Filter>headers</Filter>
183 </ClInclude>189 </ClInclude>
184 <ClInclude Include="..\..\src\ft2_audioselector.h">190 <ClInclude Include="..\..\src\ft2_scopedraw.h">
185 <Filter>headers</Filter>191 <Filter>headers</Filter>
186 </ClInclude>192 </ClInclude>
187 <ClInclude Include="..\..\src\ft2_mix_macros.h">193 <ClInclude Include="..\..\src\ft2_scopes.h">
188 <Filter>headers</Filter>194 <Filter>headers</Filter>
189 </ClInclude>195 </ClInclude>
190 <ClInclude Include="..\..\src\ft2_events.h">196 <ClInclude Include="..\..\src\ft2_scrollbars.h">
191 <Filter>headers</Filter>197 <Filter>headers</Filter>
192 </ClInclude>198 </ClInclude>
193 <ClInclude Include="..\..\src\ft2_pattern_draw.h">199 <ClInclude Include="..\..\src\ft2_structs.h">
194 <Filter>headers</Filter>200 <Filter>headers</Filter>
195 </ClInclude>201 </ClInclude>
196 <ClInclude Include="..\..\src\ft2_palette.h">202 <ClInclude Include="..\..\src\ft2_sysreqs.h">
197 <Filter>headers</Filter>203 <Filter>headers</Filter>
198 </ClInclude>204 </ClInclude>
199 <ClInclude Include="..\..\src\ft2_sample_ed_features.h">205 <ClInclude Include="..\..\src\ft2_tables.h">
200 <Filter>headers</Filter>206 <Filter>headers</Filter>
201 </ClInclude>207 </ClInclude>
202 <ClInclude Include="..\..\src\rtmidi\RtMidi.h">208 <ClInclude Include="..\..\src\ft2_textboxes.h">
203 <Filter>rtmidi</Filter>
204 </ClInclude>
205 <ClInclude Include="..\..\src\rtmidi\rtmidi_c.h">
206 <Filter>rtmidi</Filter>
207 </ClInclude>
208 <ClInclude Include="..\..\src\ft2_scopedraw.h">
209 <Filter>headers</Filter>209 <Filter>headers</Filter>
210 </ClInclude>210 </ClInclude>
211 <ClInclude Include="..\..\src\ft2_tables.h">211 <ClInclude Include="..\..\src\ft2_trim.h">
212 <Filter>headers</Filter>212 <Filter>headers</Filter>
213 </ClInclude>213 </ClInclude>
214 <ClInclude Include="..\..\src\ft2_intrp_table.h">214 <ClInclude Include="..\..\src\ft2_unicode.h">
215 <Filter>headers</Filter>215 <Filter>headers</Filter>
216 </ClInclude>216 </ClInclude>
217 <ClInclude Include="..\..\src\ft2_bmp.h">217 <ClInclude Include="..\..\src\ft2_video.h">
218 <Filter>headers</Filter>218 <Filter>headers</Filter>
219 </ClInclude>219 </ClInclude>
220 <ClInclude Include="..\..\src\ft2_structs.h">220 <ClInclude Include="..\..\src\ft2_wav_renderer.h">
221 <Filter>headers</Filter>221 <Filter>headers</Filter>
222 </ClInclude>222 </ClInclude>
223 </ItemGroup>223 </ItemGroup>

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t