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);
          }
        }
      }
    }
  }
}
Esempio n. 2
0
/**
 * 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);
}
Esempio n. 3
0
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) );
}
Esempio n. 4
0
BOOL CALLBACK
fluid_dsound_enum_callback(LPGUID guid, LPCTSTR description, LPCTSTR module, LPVOID context)
{
  fluid_settings_t* settings = (fluid_settings_t*) context;
  fluid_settings_add_option(settings, "audio.dsound.device", (const char *)description);

  return TRUE;
}
Esempio n. 5
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);
}