JackTrip
Public Types | Public Member Functions | Static Public Member Functions | List of all members
AudioInterface Class Referenceabstract

Base Class that provides an interface with audio. More...

#include <AudioInterface.h>

Inheritance diagram for AudioInterface:
Inheritance graph
[legend]

Public Types

enum  audioBitResolutionT { BIT8 = 1, BIT16 = 2, BIT24 = 3, BIT32 = 4 }
 Enum for Audio Resolution in bits. More...
 
enum  samplingRateT {
  SR22, SR32, SR44, SR48,
  SR88, SR96, SR192, UNDEF
}
 Sampling Rates supported by JACK. More...
 

Public Member Functions

 AudioInterface (JackTrip *jacktrip, int NumInChans, int NumOutChans, AudioInterface::audioBitResolutionT AudioBitResolution=AudioInterface::BIT16)
 The class constructor. More...
 
virtual ~AudioInterface ()
 The class destructor. More...
 
virtual void setup ()
 Setup the client. This function should be called just before. More...
 
virtual int startProcess () const =0
 Tell the audio server that we are ready to roll. The process-callback will start running. This runs on its own thread. More...
 
virtual int stopProcess () const =0
 Stops the process-callback thread. More...
 
virtual void callback (QVarLengthArray< sample_t * > &in_buffer, QVarLengthArray< sample_t * > &out_buffer, unsigned int n_frames)
 Process callback. Subclass should call this callback after obtaining the in_buffer and out_buffer pointers. More...
 
virtual void appendProcessPlugin (ProcessPlugin *plugin)
 Append a ProcessPlugin. The order of processing is determined by the order by which appending is done. More...
 
virtual void connectDefaultPorts ()=0
 
virtual void setNumInputChannels (int nchannels)
 
virtual void setNumOutputChannels (int nchannels)
 
virtual void setSampleRate (uint32_t sample_rate)
 
virtual void setDeviceID (uint32_t device_id)
 
virtual void setBufferSizeInSamples (uint32_t buf_size)
 
virtual void setClientName (const char *ClientName)=0
 Set Client Name to something different that the default (JackTrip) More...
 
virtual int getNumInputChannels () const
 Get Number of Input Channels. More...
 
virtual int getNumOutputChannels () const
 Get Number of Output Channels. More...
 
virtual uint32_t getBufferSizeInSamples () const
 
virtual uint32_t getDeviceID () const
 
virtual size_t getSizeInBytesPerChannel () const
 
virtual uint32_t getSampleRate () const
 Get the Jack Server Sampling Rate, in samples/second. More...
 
virtual samplingRateT getSampleRateType () const
 Get the Jack Server Sampling Rate Enum Type samplingRateT. More...
 
virtual int getAudioBitResolution () const
 Get the Audio Bit Resolution, in bits. More...
 

Static Public Member Functions

static void fromSampleToBitConversion (const sample_t *const input, int8_t *output, const AudioInterface::audioBitResolutionT targetBitResolution)
 Convert a 32bit number (sample_t) into one of the bit resolution supported (audioBitResolutionT). More...
 
static void fromBitToSampleConversion (const int8_t *const input, sample_t *output, const AudioInterface::audioBitResolutionT sourceBitResolution)
 Convert a audioBitResolutionT bit resolution number into a 32bit number (sample_t) More...
 
static int getSampleRateFromType (samplingRateT rate_type)
 Helper function to get the sample rate (in Hz) for a JackAudioInterface::samplingRateT. More...
 

Detailed Description

Base Class that provides an interface with audio.

Member Enumeration Documentation

◆ audioBitResolutionT

Enum for Audio Resolution in bits.

Enumerator
BIT8 

8 bits

BIT16 

16 bits (default)

BIT24 

24 bits

BIT32 

32 bits

◆ samplingRateT

Sampling Rates supported by JACK.

Enumerator
SR22 

22050 Hz

SR32 

32000 Hz

SR44 

44100 Hz

SR48 

48000 Hz

SR88 

88200 Hz

SR96 

96000 Hz

SR192 

192000 Hz

UNDEF 

Undefined.

Constructor & Destructor Documentation

◆ AudioInterface()

AudioInterface::AudioInterface ( JackTrip jacktrip,
int  NumInChans,
int  NumOutChans,
AudioInterface::audioBitResolutionT  AudioBitResolution = AudioInterface::BIT16 
)

The class constructor.

Parameters
jacktripPointer to the JackTrip class that connects all classes (mediator)
NumInChansNumber of Input Channels
NumOutChansNumber of Output Channels
AudioBitResolutionAudio Sample Resolutions in bits

◆ ~AudioInterface()

AudioInterface::~AudioInterface ( )
virtual

The class destructor.

Member Function Documentation

◆ appendProcessPlugin()

void AudioInterface::appendProcessPlugin ( ProcessPlugin plugin)
virtual

Append a ProcessPlugin. The order of processing is determined by the order by which appending is done.

Parameters
plugina ProcesPlugin smart pointer. Create the object instance using something like:
std::tr1::shared_ptr<ProcessPluginName> loopback(new ProcessPluginName);
Todo:
check that channels in ProcessPlugins are less or same that jack channels

◆ callback()

void AudioInterface::callback ( QVarLengthArray< sample_t * > &  in_buffer,
QVarLengthArray< sample_t * > &  out_buffer,
unsigned int  n_frames 
)
virtual

Process callback. Subclass should call this callback after obtaining the in_buffer and out_buffer pointers.

Parameters
in_bufferArray of input audio samplers for each channel. The user is reponsible to check that each channel has n_frames samplers
in_bufferArray of output audio samplers for each channel. The user is reponsible to check that each channel has n_frames samplers
Todo:
Implement for more than one process plugin, now it just works propertely with one. do it chaining outputs to inputs in the buffers. May need a tempo buffer

◆ connectDefaultPorts()

virtual void AudioInterface::connectDefaultPorts ( )
pure virtual

Implemented in RtAudioInterface, and JackAudioInterface.

◆ fromBitToSampleConversion()

void AudioInterface::fromBitToSampleConversion ( const int8_t *const  input,
sample_t output,
const AudioInterface::audioBitResolutionT  sourceBitResolution 
)
static

Convert a audioBitResolutionT bit resolution number into a 32bit number (sample_t)

The result is stored in an sample_t array of the appropriate size to hold the value. The caller is responsible to allocate enough space to store the result.

◆ fromSampleToBitConversion()

void AudioInterface::fromSampleToBitConversion ( const sample_t *const  input,
int8_t output,
const AudioInterface::audioBitResolutionT  targetBitResolution 
)
static

Convert a 32bit number (sample_t) into one of the bit resolution supported (audioBitResolutionT).

The result is stored in an int_8 array of the appropriate size to hold the value. The caller is responsible to allocate enough space to store the result.

◆ getAudioBitResolution()

virtual int AudioInterface::getAudioBitResolution ( ) const
inlinevirtual

Get the Audio Bit Resolution, in bits.

This is one of the audioBitResolutionT set in construction

◆ getBufferSizeInSamples()

virtual uint32_t AudioInterface::getBufferSizeInSamples ( ) const
inlinevirtual

Reimplemented in JackAudioInterface.

◆ getDeviceID()

virtual uint32_t AudioInterface::getDeviceID ( ) const
inlinevirtual

◆ getNumInputChannels()

virtual int AudioInterface::getNumInputChannels ( ) const
inlinevirtual

Get Number of Input Channels.

◆ getNumOutputChannels()

virtual int AudioInterface::getNumOutputChannels ( ) const
inlinevirtual

Get Number of Output Channels.

◆ getSampleRate()

virtual uint32_t AudioInterface::getSampleRate ( ) const
inlinevirtual

Get the Jack Server Sampling Rate, in samples/second.

Reimplemented in JackAudioInterface.

◆ getSampleRateFromType()

int AudioInterface::getSampleRateFromType ( samplingRateT  rate_type)
static

Helper function to get the sample rate (in Hz) for a JackAudioInterface::samplingRateT.

Parameters
rate_typeJackAudioInterface::samplingRateT enum type
Returns
Sample Rate in Hz

◆ getSampleRateType()

AudioInterface::samplingRateT AudioInterface::getSampleRateType ( ) const
virtual

Get the Jack Server Sampling Rate Enum Type samplingRateT.

Returns
AudioInterface::samplingRateT enum type

◆ getSizeInBytesPerChannel()

size_t AudioInterface::getSizeInBytesPerChannel ( ) const
virtual

Reimplemented in JackAudioInterface.

◆ setBufferSizeInSamples()

virtual void AudioInterface::setBufferSizeInSamples ( uint32_t  buf_size)
inlinevirtual

Reimplemented in JackAudioInterface.

◆ setClientName()

virtual void AudioInterface::setClientName ( const char *  ClientName)
pure virtual

Set Client Name to something different that the default (JackTrip)

Implemented in JackAudioInterface, and RtAudioInterface.

◆ setDeviceID()

virtual void AudioInterface::setDeviceID ( uint32_t  device_id)
inlinevirtual

◆ setNumInputChannels()

virtual void AudioInterface::setNumInputChannels ( int  nchannels)
inlinevirtual

◆ setNumOutputChannels()

virtual void AudioInterface::setNumOutputChannels ( int  nchannels)
inlinevirtual

◆ setSampleRate()

virtual void AudioInterface::setSampleRate ( uint32_t  sample_rate)
inlinevirtual

Reimplemented in JackAudioInterface.

◆ setup()

void AudioInterface::setup ( )
virtual

Setup the client. This function should be called just before.

starting the audio processes, it will setup the audio client with the class parameters, like Sampling Rate, Packet Size, Bit Resolution, etc... Sub-classes should also call the parent method to ensure correct inizialization.

Reimplemented in RtAudioInterface, and JackAudioInterface.

◆ startProcess()

virtual int AudioInterface::startProcess ( ) const
pure virtual

Tell the audio server that we are ready to roll. The process-callback will start running. This runs on its own thread.

Returns
0 on success, otherwise a non-zero error code

Implemented in RtAudioInterface, and JackAudioInterface.

◆ stopProcess()

virtual int AudioInterface::stopProcess ( ) const
pure virtual

Stops the process-callback thread.

Returns
0 on success, otherwise a non-zero error code

Implemented in RtAudioInterface, and JackAudioInterface.


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