LMMS
Loading...
Searching...
No Matches
juce::AudioIODevice Class Referenceabstract

#include <juce_AudioIODevice.h>

Inheritance diagram for juce::AudioIODevice:
juce::ASIOAudioIODevice juce::BelaAudioIODevice juce::CoreAudioClasses::AudioIODeviceCombiner juce::CoreAudioClasses::CoreAudioIODevice juce::DSoundAudioIODevice juce::JackAudioIODevice juce::WasapiClasses::WASAPIAudioIODevice

Public Member Functions

virtual ~AudioIODevice ()
const StringgetName () const noexcept
const StringgetTypeName () const noexcept
virtual StringArray getOutputChannelNames ()=0
virtual StringArray getInputChannelNames ()=0
virtual Array< double > getAvailableSampleRates ()=0
virtual Array< intgetAvailableBufferSizes ()=0
virtual int getDefaultBufferSize ()=0
virtual String open (const BigInteger &inputChannels, const BigInteger &outputChannels, double sampleRate, int bufferSizeSamples)=0
virtual void close ()=0
virtual bool isOpen ()=0
virtual void start (AudioIODeviceCallback *callback)=0
virtual void stop ()=0
virtual bool isPlaying ()=0
virtual String getLastError ()=0
virtual int getCurrentBufferSizeSamples ()=0
virtual double getCurrentSampleRate ()=0
virtual int getCurrentBitDepth ()=0
virtual BigInteger getActiveOutputChannels () const =0
virtual BigInteger getActiveInputChannels () const =0
virtual int getOutputLatencyInSamples ()=0
virtual int getInputLatencyInSamples ()=0
virtual bool hasControlPanel () const
virtual bool showControlPanel ()
virtual bool setAudioPreprocessingEnabled (bool shouldBeEnabled)
virtual int getXRunCount () const noexcept

Protected Member Functions

 AudioIODevice (const String &deviceName, const String &typeName)

Protected Attributes

String name
String typeName

Detailed Description

Base class for an audio device with synchronised input and output channels.

Subclasses of this are used to implement different protocols such as DirectSound, ASIO, CoreAudio, etc.

To create one of these, you'll need to use the AudioIODeviceType class - see the documentation for that class for more info.

For an easier way of managing audio devices and their settings, have a look at the AudioDeviceManager class.

See also
AudioIODeviceType, AudioDeviceManager

@tags{Audio}

Constructor & Destructor Documentation

◆ ~AudioIODevice()

juce::AudioIODevice::~AudioIODevice ( )
virtual

Destructor.

◆ AudioIODevice()

juce::AudioIODevice::AudioIODevice ( const String & deviceName,
const String & typeName )
protected

Creates a device, setting its name and type member variables.

Member Function Documentation

◆ close()

◆ getActiveInputChannels()

virtual BigInteger juce::AudioIODevice::getActiveInputChannels ( ) const
pure virtual

Returns a mask showing which of the available input channels are currently enabled.

See also
getInputChannelNames

Implemented in juce::ASIOAudioIODevice, juce::BelaAudioIODevice, juce::CoreAudioClasses::AudioIODeviceCombiner, juce::CoreAudioClasses::CoreAudioIODevice, juce::DSoundAudioIODevice, juce::JackAudioIODevice, and juce::WasapiClasses::WASAPIAudioIODevice.

◆ getActiveOutputChannels()

virtual BigInteger juce::AudioIODevice::getActiveOutputChannels ( ) const
pure virtual

Returns a mask showing which of the available output channels are currently enabled.

See also
getOutputChannelNames

Implemented in juce::ASIOAudioIODevice, juce::BelaAudioIODevice, juce::CoreAudioClasses::AudioIODeviceCombiner, juce::CoreAudioClasses::CoreAudioIODevice, juce::DSoundAudioIODevice, juce::JackAudioIODevice, and juce::WasapiClasses::WASAPIAudioIODevice.

◆ getAvailableBufferSizes()

virtual Array< int > juce::AudioIODevice::getAvailableBufferSizes ( )
pure virtual

◆ getAvailableSampleRates()

virtual Array< double > juce::AudioIODevice::getAvailableSampleRates ( )
pure virtual

◆ getCurrentBitDepth()

virtual int juce::AudioIODevice::getCurrentBitDepth ( )
pure virtual

Returns the device's current physical bit-depth.

If the device isn't actually open, this value doesn't really mean much.

Implemented in juce::ASIOAudioIODevice, juce::BelaAudioIODevice, juce::CoreAudioClasses::AudioIODeviceCombiner, juce::CoreAudioClasses::CoreAudioIODevice, juce::DSoundAudioIODevice, juce::JackAudioIODevice, and juce::WasapiClasses::WASAPIAudioIODevice.

◆ getCurrentBufferSizeSamples()

virtual int juce::AudioIODevice::getCurrentBufferSizeSamples ( )
pure virtual

Returns the buffer size that the device is currently using.

If the device isn't actually open, this value doesn't really mean much.

Implemented in juce::ASIOAudioIODevice, juce::BelaAudioIODevice, juce::CoreAudioClasses::AudioIODeviceCombiner, juce::CoreAudioClasses::CoreAudioIODevice, juce::DSoundAudioIODevice, juce::JackAudioIODevice, and juce::WasapiClasses::WASAPIAudioIODevice.

◆ getCurrentSampleRate()

virtual double juce::AudioIODevice::getCurrentSampleRate ( )
pure virtual

Returns the sample rate that the device is currently using.

If the device isn't actually open, this value doesn't really mean much.

Implemented in juce::ASIOAudioIODevice, juce::BelaAudioIODevice, juce::CoreAudioClasses::AudioIODeviceCombiner, juce::CoreAudioClasses::CoreAudioIODevice, juce::DSoundAudioIODevice, juce::JackAudioIODevice, and juce::WasapiClasses::WASAPIAudioIODevice.

◆ getDefaultBufferSize()

virtual int juce::AudioIODevice::getDefaultBufferSize ( )
pure virtual

◆ getInputChannelNames()

virtual StringArray juce::AudioIODevice::getInputChannelNames ( )
pure virtual

Returns the names of all the available input channels on this device. To find out which of these are currently in use, call getActiveInputChannels().

Implemented in juce::ASIOAudioIODevice, juce::BelaAudioIODevice, juce::CoreAudioClasses::AudioIODeviceCombiner, juce::CoreAudioClasses::CoreAudioIODevice, juce::DSoundAudioIODevice, juce::JackAudioIODevice, and juce::WasapiClasses::WASAPIAudioIODevice.

◆ getInputLatencyInSamples()

virtual int juce::AudioIODevice::getInputLatencyInSamples ( )
pure virtual

Returns the device's input latency.

This is the delay in samples between some audio actually arriving at the soundcard, and the callback getting passed this block of data.

Implemented in juce::ASIOAudioIODevice, juce::BelaAudioIODevice, juce::CoreAudioClasses::AudioIODeviceCombiner, juce::CoreAudioClasses::CoreAudioIODevice, juce::DSoundAudioIODevice, juce::JackAudioIODevice, and juce::WasapiClasses::WASAPIAudioIODevice.

◆ getLastError()

virtual String juce::AudioIODevice::getLastError ( )
pure virtual

◆ getName()

const String & juce::AudioIODevice::getName ( ) const
inlinenoexcept

Returns the device's name, (as set in the constructor).

◆ getOutputChannelNames()

virtual StringArray juce::AudioIODevice::getOutputChannelNames ( )
pure virtual

Returns the names of all the available output channels on this device. To find out which of these are currently in use, call getActiveOutputChannels().

Implemented in juce::ASIOAudioIODevice, juce::BelaAudioIODevice, juce::CoreAudioClasses::AudioIODeviceCombiner, juce::CoreAudioClasses::CoreAudioIODevice, juce::DSoundAudioIODevice, juce::JackAudioIODevice, and juce::WasapiClasses::WASAPIAudioIODevice.

◆ getOutputLatencyInSamples()

virtual int juce::AudioIODevice::getOutputLatencyInSamples ( )
pure virtual

Returns the device's output latency.

This is the delay in samples between a callback getting a block of data, and that data actually getting played.

Implemented in juce::ASIOAudioIODevice, juce::BelaAudioIODevice, juce::CoreAudioClasses::AudioIODeviceCombiner, juce::CoreAudioClasses::CoreAudioIODevice, juce::DSoundAudioIODevice, juce::JackAudioIODevice, and juce::WasapiClasses::WASAPIAudioIODevice.

◆ getTypeName()

const String & juce::AudioIODevice::getTypeName ( ) const
inlinenoexcept

Returns the type of the device.

E.g. "CoreAudio", "ASIO", etc. - this comes from the AudioIODeviceType that created it.

◆ getXRunCount()

int juce::AudioIODevice::getXRunCount ( ) const
virtualnoexcept

Returns the number of under- or over runs reported by the OS since playback/recording has started.

This number may be different than determining the Xrun count manually (by measuring the time spent in the audio callback) as the OS may be doing some buffering internally - especially on mobile devices.

Returns -1 if playback/recording has not started yet or if getting the underrun count is not supported for this device (Android SDK 23 and lower).

Reimplemented in juce::ASIOAudioIODevice, juce::BelaAudioIODevice, juce::CoreAudioClasses::CoreAudioIODevice, juce::DSoundAudioIODevice, juce::JackAudioIODevice, and juce::WasapiClasses::WASAPIAudioIODevice.

◆ hasControlPanel()

bool juce::AudioIODevice::hasControlPanel ( ) const
virtual

True if this device can show a pop-up control panel for editing its settings.

This is generally just true of ASIO devices. If true, you can call showControlPanel() to display it.

Reimplemented in juce::ASIOAudioIODevice.

◆ isOpen()

virtual bool juce::AudioIODevice::isOpen ( )
pure virtual

Returns true if the device is still open.

A device might spontaneously close itself if something goes wrong, so this checks if it's still open.

Implemented in juce::ASIOAudioIODevice, juce::BelaAudioIODevice, juce::CoreAudioClasses::AudioIODeviceCombiner, juce::CoreAudioClasses::CoreAudioIODevice, juce::DSoundAudioIODevice, juce::JackAudioIODevice, and juce::WasapiClasses::WASAPIAudioIODevice.

◆ isPlaying()

virtual bool juce::AudioIODevice::isPlaying ( )
pure virtual

Returns true if the device is still calling back.

The device might mysteriously stop, so this checks whether it's still playing.

Implemented in juce::ASIOAudioIODevice, juce::BelaAudioIODevice, juce::CoreAudioClasses::AudioIODeviceCombiner, juce::CoreAudioClasses::CoreAudioIODevice, juce::DSoundAudioIODevice, juce::JackAudioIODevice, and juce::WasapiClasses::WASAPIAudioIODevice.

◆ open()

virtual String juce::AudioIODevice::open ( const BigInteger & inputChannels,
const BigInteger & outputChannels,
double sampleRate,
int bufferSizeSamples )
pure virtual

Tries to open the device ready to play.

Parameters
inputChannelsa BigInteger in which a set bit indicates that the corresponding input channel should be enabled
outputChannelsa BigInteger in which a set bit indicates that the corresponding output channel should be enabled
sampleRatethe sample rate to try to use - to find out which rates are available, see getAvailableSampleRates()
bufferSizeSamplesthe size of i/o buffer to use - to find out the available buffer sizes, see getAvailableBufferSizes()
Returns
an error description if there's a problem, or an empty string if it succeeds in opening the device
See also
close

Implemented in juce::ASIOAudioIODevice, juce::BelaAudioIODevice, juce::CoreAudioClasses::AudioIODeviceCombiner, juce::CoreAudioClasses::CoreAudioIODevice, juce::DSoundAudioIODevice, juce::JackAudioIODevice, and juce::WasapiClasses::WASAPIAudioIODevice.

◆ setAudioPreprocessingEnabled()

bool juce::AudioIODevice::setAudioPreprocessingEnabled ( bool shouldBeEnabled)
virtual

On devices which support it, this allows automatic gain control or other mic processing to be disabled. If the device doesn't support this operation, it'll return false.

◆ showControlPanel()

bool juce::AudioIODevice::showControlPanel ( )
virtual

Shows a device-specific control panel if there is one.

This should only be called for devices which return true from hasControlPanel().

Reimplemented in juce::ASIOAudioIODevice.

◆ start()

virtual void juce::AudioIODevice::start ( AudioIODeviceCallback * callback)
pure virtual

Starts the device actually playing.

This must be called after the device has been opened.

Parameters
callbackthe callback to use for streaming the data.
See also
AudioIODeviceCallback, open

Implemented in juce::ASIOAudioIODevice, juce::BelaAudioIODevice, juce::CoreAudioClasses::AudioIODeviceCombiner, juce::CoreAudioClasses::CoreAudioIODevice, juce::DSoundAudioIODevice, juce::JackAudioIODevice, and juce::WasapiClasses::WASAPIAudioIODevice.

◆ stop()

virtual void juce::AudioIODevice::stop ( )
pure virtual

Stops the device playing.

Once a device has been started, this will stop it. Any pending calls to the callback class will be flushed before this method returns.

Implemented in juce::ASIOAudioIODevice, juce::BelaAudioIODevice, juce::CoreAudioClasses::AudioIODeviceCombiner, juce::CoreAudioClasses::CoreAudioIODevice, juce::DSoundAudioIODevice, juce::JackAudioIODevice, and juce::WasapiClasses::WASAPIAudioIODevice.

Member Data Documentation

◆ name

String juce::AudioIODevice::name
protected

◆ typeName

String juce::AudioIODevice::typeName
protected

The documentation for this class was generated from the following files: