115 double sampleRate = 0;
134 bool useDefaultInputChannels =
true;
147 bool useDefaultOutputChannels =
true;
268 void closeAudioDevice();
278 void restartLastAudioDevice();
309 double getCpuUsage()
const;
368 void setDefaultMidiOutput (
const String& deviceName);
406 void playTestSound();
421 double getCurrentLevel()
const noexcept;
429 void updateLevel (
const float*
const*,
int numChannels,
int numSamples)
noexcept;
471 OwnedArray<AudioDeviceSetup> lastDeviceTypeConfigs;
473 AudioDeviceSetup currentSetup;
476 int numInputChansNeeded = 0, numOutputChansNeeded = 2;
477 String preferredDeviceName, currentDeviceType;
479 std::unique_ptr<
XmlElement> lastExplicitSettings;
489 StringArray midiInsFromXml;
490 OwnedArray<MidiInput> enabledMidiInputs;
491 Array<MidiCallbackInfo> midiCallbacks;
493 String defaultMidiOutputName;
494 std::unique_ptr<MidiOutput> defaultMidiOutput;
495 CriticalSection audioCallbackLock, midiCallbackLock;
497 std::unique_ptr<AudioBuffer<float>> testSound;
498 int testSoundPosition = 0;
500 AudioProcessLoadMeasurer loadMeasurer;
502 LevelMeter::Ptr inputLevelGetter {
new LevelMeter() },
503 outputLevelGetter {
new LevelMeter() };
506 class CallbackHandler;
507 std::unique_ptr<CallbackHandler> callbackHandler;
509 void audioDeviceIOCallbackInt (
const float** inputChannelData,
int totalNumInputChannels,
510 float** outputChannelData,
int totalNumOutputChannels,
int numSamples);
511 void audioDeviceAboutToStartInt (AudioIODevice*);
512 void audioDeviceStoppedInt();
513 void audioDeviceErrorInt (
const String&);
514 void handleIncomingMidiMessageInt (MidiInput*,
const MidiMessage&);
515 void audioDeviceListChanged();
517 String restartDevice (
int blockSizeToUse,
double sampleRateToUse,
518 const BigInteger& ins,
const BigInteger& outs);
523 void createDeviceTypesIfNeeded();
524 void scanDevicesIfNeeded();
525 void deleteCurrentDevice();
526 double chooseBestSampleRate (
double preferred)
const;
527 int chooseBestBufferSize (
int preferred)
const;
528 void insertDefaultDeviceNames (AudioDeviceSetup&)
const;
529 String initialiseDefault (
const String& preferredDefaultDeviceName,
const AudioDeviceSetup*);
530 String initialiseFromXML (
const XmlElement&,
bool selectDefaultDeviceOnFailure,
531 const String& preferredDefaultDeviceName,
const AudioDeviceSetup*);
533 AudioIODeviceType* findType (
const String& inputName,
const String& outputName);
534 AudioIODeviceType* findType (
const String& typeName);
536 JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (AudioDeviceManager)