"Couldn't change sample rate" error with "sound siphon" device


#1

When this application: http://staticz.com/soundsiphon/ is installed, it shows up as a virtual soundcard in the JUCE device list. However when one selects that device, we get a "Couldn't change sample rate" error. Apparently, the virtual device supports only one sample rate, and the kAudioDevicePropertyNominalSampleRate is not writable.

A fix is to check if kAudioDevicePropertyNominalSampleRate is already at the expected value , and attempt to change it only when it is not the good value. For example:

        bool sample_rate_is_fine = false;
        Float64 current_sr;
        UInt32 sr_size = sizeof(current_sr);
        if (OK (AudioObjectGetPropertyData(deviceID, &pa, 0, 0, &sr_size, &current_sr))) {
          if (current_sr == sr) sample_rate_is_fine = true;
        }

        if (!sample_rate_is_fine && ! OK (AudioObjectSetPropertyData (deviceID, &pa, 0, 0, sizeof (sr), &sr)))
        {
           error = "Couldn't change sample rate to " + String(sr) + " Hz";
        }       
        else
        {
            // Change buffer size
            ...

#2

Thanks - I was actually just looking at that code for other reasons, I'll see what I can do!