diff options
Diffstat (limited to 'utils/midiplay')
| -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); |