19#ifndef JACK_AUDIO_IO_H
20#define JACK_AUDIO_IO_H
24#include <jack/types.h>
25#include <jack/ringbuffer.h>
30#include "jackringbuffer.hpp"
46 enum cmd_t {add_in_port, add_out_port};
49 jack_client_t *mJackClient;
51 std::vector<jack_port_t *> mOutputPorts;
52 std::vector<jack_port_t *> mInputPorts;
57 unsigned int mNumOutputPorts;
58 unsigned int mNumInputPorts;
68 inline int jackToClassAudioCallback(jack_nframes_t nframes);
69 std::vector<std::string> mPortNames;
100 bool startServer =
false)
102 bool startServer =
true)
109 void createClient(std::string name,
113 bool startServer =
false)
115 bool startServer =
true)
187 virtual
unsigned int addInPort(std::
string name)
194 virtual
unsigned int addOutPort(std::
string name)
202 void connectTo(
unsigned int index, std::
string sourcePortName)
209 void connectFrom(
unsigned int index, std::
string destPortName)
286 std::string
getName(){
return std::string(jack_get_client_name(mJackClient));}
Definition: jackaudioio.hpp:38
void connectFrom(unsigned int index, std::string destPortName) noexcept(false)
Connect our input to a jack client's destination port.
Definition: jackaudioio.cpp:299
void disconnectOutPort(unsigned int index) noexcept(false)
Disconnect output port from all connections.
Definition: jackaudioio.cpp:378
unsigned int numPhysicalSourcePorts()
Get the number of physical audio input ports These are ports that can send audio to your client.
Definition: jackaudioio.cpp:420
jack_nframes_t getBufferSize()
Get the jack buffer size.
Definition: jackaudioio.cpp:489
jack_nframes_t getSampleRate()
Get the sample rate.
Definition: jackaudioio.cpp:485
static int jackProcessCallback(jack_nframes_t nframes, void *arg)
The callback that jack actually gets [static].
Definition: jackaudioio.cpp:47
virtual unsigned int addInPort(std::string name) noexcept(false)
Add a jack input port to our client.
Definition: jackaudioio.cpp:209
void connectToPhysical(unsigned int index, unsigned physical_index) noexcept(false)
Connect our output port to a physical output port.
Definition: jackaudioio.cpp:320
float getCpuLoad()
The current CPU load estimated by JACK.
Definition: jackaudioio.cpp:481
std::vector< jack_default_audio_sample_t * > audioBufVector
A typedef so so that we don't always have to write std::vector<jack_default_audio_sample_t *>
Definition: jackaudioio.hpp:43
virtual int audioCallback(jack_nframes_t nframes, audioBufVector inBufs, audioBufVector outBufs)=0
The method that the user must overload in order to actually process jack data.
virtual void reserveInPorts(unsigned int num) noexcept(false)
Reserve input ports.
Definition: jackaudioio.cpp:192
virtual unsigned int addOutPort(std::string name) noexcept(false)
Add a jack output port to our client.
Definition: jackaudioio.cpp:245
virtual void reserveOutPorts(unsigned int num) noexcept(false)
Reserve output ports.
Definition: jackaudioio.cpp:183
bool portExists(std::string name)
See if a port with the name "name" exists for our client.
Definition: jackaudioio.cpp:173
jack_state_t getState()
Get the state of our Jack client.
Definition: jackaudioio.hpp:288
void connectTo(unsigned int index, std::string sourcePortName) noexcept(false)
Connect our output to a jack client's source port.
Definition: jackaudioio.cpp:279
bool isRealTime()
Check to see if the client is running in real time mode.
Definition: jackaudioio.hpp:275
jack_state_t
An enum indicating the state of our jack client.
Definition: jackaudioio.hpp:41
unsigned int inPorts()
Get the number of jack input ports.
Definition: jackaudioio.cpp:201
jack_nframes_t getFrameTime()
Get an estimate of the current time in frames.
Definition: jackaudioio.hpp:297
std::string getInputPortName(unsigned int index) noexcept(false)
Get the name of our client's input port.
Definition: jackaudioio.cpp:434
unsigned int numPhysicalDestinationPorts()
Get the number of physical audio output ports These are ports that your client can send audio to.
Definition: jackaudioio.cpp:407
unsigned int outPorts()
Get the number of jack output ports.
Definition: jackaudioio.cpp:205
virtual void jackShutdownCallback()
This method is called when Jack shuts down. Override if you want to do something when jack shuts down...
Definition: jackaudioio.cpp:43
void stop() noexcept(false)
Stop the jack client.
Definition: jackaudioio.cpp:465
jack_nframes_t getFramesSinceCycleStart()
Get the time in frames since the JACK server began the current process cycle.
Definition: jackaudioio.hpp:304
virtual ~AudioIO()
The Destructor.
Definition: jackaudioio.cpp:157
bool isBufferMemoryLocked()
Check to see if the buffer is locked into the memory.
Definition: jackaudioio.hpp:277
jack_client_t * client()
Gives users a pointer to the client created and used by this class.
Definition: jackaudioio.cpp:81
void connectFromPhysical(unsigned int index, unsigned physical_index) noexcept(false)
Connect our input port to a physical input port.
Definition: jackaudioio.cpp:344
std::string getName()
Get the name of our client.
Definition: jackaudioio.hpp:286
unsigned int numConnectionsInPort(unsigned int index) noexcept(false)
Get the number of connections to our input port.
Definition: jackaudioio.cpp:389
void start() noexcept(false)
Start the jack client.
Definition: jackaudioio.cpp:452
unsigned int numConnectionsOutPort(unsigned int index) noexcept(false)
Get the number of connections to our output port.
Definition: jackaudioio.cpp:398
void disconnectInPort(unsigned int index) noexcept(false)
Disconnect input port from all connections.
Definition: jackaudioio.cpp:367
void close() noexcept(false)
Close the jack client.
Definition: jackaudioio.cpp:473
std::string getOutputPortName(unsigned int index) noexcept(false)
Get the name of our client's output port.
Definition: jackaudioio.cpp:443
Definition: jackringbuffer.hpp:39
bool isBufferMemoryLocked()
Get whether the ring buffer is locked into the memory.
Definition: jackringbuffer.hpp:71