void fluid_core_audio_driver_settings(fluid_settings_t* settings) { int i; UInt32 size; AudioObjectPropertyAddress pa; pa.mSelector = kAudioHardwarePropertyDevices; pa.mScope = kAudioObjectPropertyScopeWildcard; pa.mElement = kAudioObjectPropertyElementMaster; fluid_settings_register_str (settings, "audio.coreaudio.device", "default", 0, NULL, NULL); fluid_settings_add_option (settings, "audio.coreaudio.device", "default"); if (OK (AudioObjectGetPropertyDataSize (kAudioObjectSystemObject, &pa, 0, 0, &size))) { int num = size / (int) sizeof (AudioDeviceID); AudioDeviceID devs [num]; if (OK (AudioObjectGetPropertyData (kAudioObjectSystemObject, &pa, 0, 0, &size, devs))) { for (i = 0; i < num; ++i) { char name [1024]; size = sizeof (name); pa.mSelector = kAudioDevicePropertyDeviceName; if (OK (AudioObjectGetPropertyData (devs[i], &pa, 0, 0, &size, name))) { if ( get_num_outputs (devs[i]) > 0) { fluid_settings_add_option (settings, "audio.coreaudio.device", name); } } } } } }
/** * Registers settings related to the MIDI player */ void fluid_player_settings(fluid_settings_t* settings) { /* player.timing-source can be either "system" (use system timer) or "sample" (use timer based on number of written samples) */ fluid_settings_register_str(settings, "player.timing-source", "sample", 0, NULL, NULL); fluid_settings_add_option(settings, "player.timing-source", "sample"); fluid_settings_add_option(settings, "player.timing-source", "system"); /* Selects whether the player should reset the synth between songs, or not. */ fluid_settings_register_int(settings, "player.reset-synth", 1, 0, 1, FLUID_HINT_TOGGLED, NULL, NULL); }
void fluid_portaudio_driver_settings (fluid_settings_t *settings) { const PaDeviceInfo *deviceInfo; int numDevices; PaError err; int i; char tmp_setting__name[1024]; fluid_settings_register_str (settings, "audio.portaudio.device", PORTAUDIO_DEFAULT_DEVICE, 0, NULL, NULL); fluid_settings_add_option (settings, "audio.portaudio.device", PORTAUDIO_DEFAULT_DEVICE); snprintf(tmp_setting__name, sizeof(tmp_setting__name), "audio.portaudio.%s.channels", PORTAUDIO_DEFAULT_DEVICE); fluid_settings_register_int (settings, tmp_setting__name, 2, 0, 32, 0, NULL, NULL); fluid_settings_register_int (settings, "audio.portaudio.channelL", 0, 0, 32, 0, NULL, NULL); fluid_settings_register_int (settings, "audio.portaudio.channelR", 1, 0, 32, 1, NULL, NULL); err = Pa_Initialize(); if (err != paNoError) { FLUID_LOG (FLUID_ERR, "Error initializing PortAudio driver: %s", Pa_GetErrorText (err)); return; } numDevices = Pa_GetDeviceCount(); if (numDevices < 0) { FLUID_LOG (FLUID_ERR, "PortAudio returned unexpected device count %d", numDevices); return; } for (i = 0; i < numDevices; i++) { deviceInfo = Pa_GetDeviceInfo (i); if ( deviceInfo->maxOutputChannels >= 2 ) fluid_settings_add_option (settings, "audio.portaudio.device", deviceInfo->name); { int nb_outputs = deviceInfo->maxOutputChannels; snprintf(tmp_setting__name, sizeof(tmp_setting__name), "audio.portaudio.%s.channels", deviceInfo->name); fluid_settings_register_int (settings, tmp_setting__name, nb_outputs, 0, 32, 0, NULL, NULL); } } /* done with PortAudio for now, may get reopened later */ err = Pa_Terminate(); if (err != paNoError) printf ("PortAudio termination error: %s\n", Pa_GetErrorText (err) ); }
void fluid_dart_audio_driver_settings(fluid_settings_t* settings) { fluid_settings_register_str(settings, "audio.dart.device", "default", 0, NULL, NULL); }
void fluid_sndio_audio_driver_settings(fluid_settings_t* settings) { fluid_settings_register_str(settings, "audio.sndio.device", "default", 0); }
void fluid_dsound_audio_driver_settings(fluid_settings_t* settings) { fluid_settings_register_str(settings, "audio.dsound.device", "default", 0, NULL, NULL); fluid_settings_add_option(settings, "audio.dsound.device", "default"); DirectSoundEnumerate((LPDSENUMCALLBACK) fluid_dsound_enum_callback, settings); }