diff options
Diffstat (limited to 'utils')
-rw-r--r-- | utils/midiplay/adlmidiplay.cpp | 22 |
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); |