Skip to content

Commit

Permalink
Added command line option to select audio output device (the same way…
Browse files Browse the repository at this point in the history
… as Midi port)

Use -a:<audio_device_index> command line argument to specify audio output device..
  • Loading branch information
Falcosoft authored and nukeykt committed Apr 12, 2024
1 parent d053a46 commit 9ec511b
Showing 1 changed file with 28 additions and 19 deletions.
47 changes: 28 additions & 19 deletions src/mcu.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1054,7 +1054,7 @@ static const char* audio_format_to_str(int format)
return "UNK";
}

int MCU_OpenAudio(void)
int MCU_OpenAudio(int deviceIndex)
{
SDL_AudioSpec spec = {};
SDL_AudioSpec spec_actual = {};
Expand All @@ -1064,12 +1064,16 @@ int MCU_OpenAudio(void)
spec.channels = 2;
spec.callback = audio_callback;
spec.samples = audio_page_size / 4;

const char* audioDevicename = SDL_GetAudioDeviceName(deviceIndex, 0);

sdl_audio = SDL_OpenAudioDevice(NULL, 0, &spec, &spec_actual, 0);
sdl_audio = SDL_OpenAudioDevice(audioDevicename, 0, &spec, &spec_actual, 0);
if (!sdl_audio)
{
return 0;
}

printf("Audio Device: %s\n", audioDevicename);

printf("Audio Requested: F=%s, C=%d, R=%d, B=%d\n",
audio_format_to_str(spec.format),
Expand Down Expand Up @@ -1151,6 +1155,7 @@ int main(int argc, char *argv[])
std::string basePath;

int port = 0;
int audioDeviceIndex = 0;
bool autodetect = true;

romset = ROM_SET_MK2;
Expand All @@ -1162,6 +1167,10 @@ int main(int argc, char *argv[])
{
port = atoi(argv[i] + 3);
}
else if (!strncmp(argv[i], "-a:", 3))
{
audioDeviceIndex = atoi(argv[i] + 3);
}
else if (!strcmp(argv[i], "-mk2"))
{
romset = ROM_SET_MK2;
Expand Down Expand Up @@ -1226,23 +1235,23 @@ int main(int argc, char *argv[])
}
printf("ROM set autodetect: %s\n", rs_name[romset]);
}

mcu_mk1 = false;
mcu_cm300 = false;

mcu_mk1 = false;
mcu_cm300 = false;
mcu_st = false;
switch (romset)
{
case ROM_SET_ST:
mcu_st = true;
break;
case ROM_SET_MK1:
mcu_mk1 = true;
mcu_st = false;
break;
case ROM_SET_CM300:
mcu_mk1 = true;
mcu_cm300 = true;
break;
switch (romset)
{
case ROM_SET_ST:
mcu_st = true;
break;
case ROM_SET_MK1:
mcu_mk1 = true;
mcu_st = false;
break;
case ROM_SET_CM300:
mcu_mk1 = true;
mcu_cm300 = true;
break;
}

std::string rpaths[5] =
Expand Down Expand Up @@ -1378,7 +1387,7 @@ int main(int argc, char *argv[])
return 2;
}

if (!MCU_OpenAudio())
if (!MCU_OpenAudio(audioDeviceIndex))
{
fprintf(stderr, "FATAL ERROR: Failed to open the audio stream.\n");
fflush(stderr);
Expand Down

0 comments on commit 9ec511b

Please sign in to comment.