aboutsummaryrefslogtreecommitdiff
path: root/utils
diff options
context:
space:
mode:
authorJP Cimalando <jpcima@users.noreply.github.com>2018-07-07 02:57:45 +0200
committerJP Cimalando <jpcima@users.noreply.github.com>2018-07-07 03:00:29 +0200
commitba37698fd82cab2513cd9f316189d433af4519df (patch)
tree0487adc817c4f2f4289d663e73a33f985c1fbf88 /utils
parent7cb0fe9dad9f7ef24d1142d866450305102bf3a9 (diff)
downloadlibADLMIDI-ba37698fd82cab2513cd9f316189d433af4519df.tar.gz
libADLMIDI-ba37698fd82cab2513cd9f316189d433af4519df.tar.bz2
libADLMIDI-ba37698fd82cab2513cd9f316189d433af4519df.zip
add midiplay option for solo track
Diffstat (limited to 'utils')
-rw-r--r--utils/midiplay/adlmidiplay.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/utils/midiplay/adlmidiplay.cpp b/utils/midiplay/adlmidiplay.cpp
index cfc8b94..8cdfef5 100644
--- a/utils/midiplay/adlmidiplay.cpp
+++ b/utils/midiplay/adlmidiplay.cpp
@@ -342,6 +342,8 @@ int main(int argc, char **argv)
int emulator = ADLMIDI_EMU_NUKED;
#endif
+ size_t soloTrack = ~(size_t)0;
+
#if !defined(HARDWARE_OPL3) && !defined(OUTPUT_WAVE_ONLY)
g_audioFormat.type = ADLMIDI_SampleType_S16;
g_audioFormat.containerSize = sizeof(Sint16);
@@ -404,6 +406,18 @@ int main(int argc, char **argv)
multibankFromEnbededTest = true;
else if(!std::strcmp("-s", argv[2]))
adl_setScaleModulators(myDevice, 1);//Turn on modulators scaling by volume
+
+ else if(!std::strcmp("--solo", argv[2]))
+ {
+ if(argc <= 3)
+ {
+ printError("The option --solo requires an argument!\n");
+ return 1;
+ }
+ soloTrack = std::strtoul(argv[3], NULL, 0);
+ had_option = true;
+ }
+
else break;
std::copy(argv + (had_option ? 4 : 3),
@@ -586,6 +600,14 @@ int main(int argc, char **argv)
return 2;
}
+ std::fprintf(stdout, " - Track count: %lu\n", (unsigned long)adl_trackCount(myDevice));
+
+ if(soloTrack != ~(size_t)0)
+ {
+ std::fprintf(stdout, " - Solo track: %lu\n", (unsigned long)soloTrack);
+ adl_setTrackOptions(myDevice, soloTrack, ADL_TrackOption_Solo);
+ }
+
std::fprintf(stdout, " - File [%s] opened!\n", musPath.c_str());
flushout(stdout);