Go to the documentation of this file.
38 #ifndef __JACKTRIP_H__
39 #define __JACKTRIP_H__
131 int NumNetRevChans = 0,
150 if (
gVerboseFlag) std::cout <<
"Settings:startJackTrip before mJackTrip->run" << std::endl;
167 )
throw(std::invalid_argument);
186 { mJackTripMode = JacktripMode; }
189 { mDataProtocol = DataProtocolType; }
193 mPacketHeaderType = PacketHeaderType;
194 delete mPacketHeader;
195 mPacketHeader = NULL;
200 { mBufferQueueLength = BufferQueueLength; }
203 { mAudioBitResolution = AudioBitResolution; }
206 { mUnderRunMode = UnderRunMode; }
211 mReceiverBindPort = port;
212 mSenderPeerPort = port;
213 mSenderBindPort = port;
214 mReceiverPeerPort = port;
219 mReceiverBindPort = port;
220 mSenderBindPort = port;
225 mSenderPeerPort = port;
226 mReceiverPeerPort = port;
230 { mJackClientName = ClientName; }
233 { mNumChans = num_chans; }
237 {mConnectDefaultAudioPorts = connect;}
240 {
return mReceiverBindPort; }
242 {
return mSenderPeerPort; }
244 {
return mSenderBindPort; }
246 {
return mReceiverPeerPort; }
249 {
return mDataProtocolSender; }
251 {
return mDataProtocolReceiver; }
253 { mDataProtocolSender = DataProtocolSender; }
255 { mDataProtocolReceiver = DataProtocolReceiver; }
258 {
return mSendRingBuffer; }
260 {
return mReceiveRingBuffer; }
262 { mSendRingBuffer = SendRingBuffer; }
264 { mReceiveRingBuffer = ReceiveRingBuffer; }
273 { mAudiointerfaceMode = audiointerface_mode; }
279 { mSampleRate = sample_rate; }
281 { mDeviceID = device_id; }
283 { mAudioBufferSize = buf_size; }
287 {
return mConnectionMode; }
289 { mConnectionMode = connection_mode; }
292 {
return mHubConnectionModeT; }
294 { mHubConnectionModeT = connection_mode; }
297 {
return mJackTripMode; }
300 {
return mPeerAddress; }
303 {
return mReceivedConnection; }
306 {
return mTcpConnectionError; }
328 {
return mAudioBufferSize; }
330 {
return mDeviceID; }
335 {
return mSampleRate; }
338 {
return mAudioBitResolution*8; }
340 {
return mNumChans; }
342 {
return mNumChans; }
399 std::cout <<
"Stopping JackTrip..." << std::endl;
411 int wait_time = 10000;
412 if ( !(wait_msec%wait_time) ) {
413 std::cerr <<
"UDP WAITED MORE THAN 10 seconds." << std::endl;
418 { std::cout <<
"=== TESTING ===" << std::endl; }
420 { mReceivedConnection =
true; }
454 throw(std::invalid_argument, std::runtime_error);
474 int mBufferQueueLength;
479 QString mPeerAddress;
494 int mReceiverBindPort;
497 int mReceiverPeerPort;
500 unsigned int mRedundancy;
501 const char* mJackClientName;
506 QVector<ProcessPlugin*> mProcessPlugins;
508 volatile bool mReceivedConnection;
509 volatile bool mTcpConnectionError;
510 volatile bool mStopped;
512 bool mConnectDefaultAudioPorts;
void printTextTest()
Definition: JackTrip.h:392
virtual void setPacketHeaderType(DataProtocol::packetHeaderTypeT PacketHeaderType)
Sets the Packet header type.
Definition: JackTrip.h:191
unsigned int getNumOutputChannels() const
Definition: JackTrip.h:341
int getSampleRate() const
Definition: JackTrip.h:334
virtual int getSenderBindPort() const
Definition: JackTrip.h:243
virtual int clientPingToServerStart()
Stats for the Client to Ping Server.
Definition: JackTrip.cpp:587
@ WAVETABLE
Loops on the last received packet.
Definition: JackTrip.h:91
virtual void setJackTripMode(jacktripModeT JacktripMode)
Sets (override) JackTrip Mode after construction.
Definition: JackTrip.h:185
const int gDefaultRedundancy
Definition: jacktrip_globals.h:91
@ SCTP
NOT IMPLEMENTED: Use SCTP (Stream Control Transmission Protocol)
Definition: JackTrip.h:78
virtual int getReceiverPeerPort() const
Definition: JackTrip.h:245
@ KSTRONG
Karplus Strong.
Definition: JackTrip.h:104
Base class that defines the transmission protocol.
Definition: DataProtocol.h:93
virtual void startProcess()
Start the processing threads.
Definition: JackTrip.cpp:318
quint8 uint8_t
Typedef for unsigned char. This type is guaranteed to be 8-bit.
Definition: jacktrip_types.h:69
virtual void receiveNetworkPacket(int8_t *ptrToReadSlot)
Definition: JackTrip.h:321
virtual void setSendRingBuffer(RingBuffer *const SendRingBuffer)
Definition: JackTrip.h:261
int getHeaderSizeInBytes() const
Definition: JackTrip.h:378
JackTrip::connectionModeT getConnectionMode() const
Definition: JackTrip.h:286
void signalTcpClientConnected()
Definition: moc_JackTrip.cpp:205
virtual samplingRateT getSampleRateType() const
Get the Jack Server Sampling Rate Enum Type samplingRateT.
Definition: AudioInterface.cpp:544
virtual void setAudioInterface(AudioInterface *const AudioInterface)
Definition: JackTrip.h:274
virtual void waitThreads()
Wait for all the threads to finish. This functions is used when JackTrip is run as a thread.
Definition: JackTrip.cpp:465
quint16 uint16_t
Typedef for unsigned short. This type is guaranteed to be 16-bit.
Definition: jacktrip_types.h:71
void slotUdpWaitingTooLongClientGoneProbably(int wait_msec)
This slot emits in turn the signal signalNoUdpPacketsForSeconds when UDP has waited for more than 30 ...
Definition: JackTrip.h:409
const int gDefaultPort
Default JackTrip Port.
Definition: jacktrip_globals.h:100
void readSlotBlocking(int8_t *ptrToReadSlot)
Read a slot from the RingBuffer into ptrToReadSlot. This method will block until there's space in the...
Definition: RingBuffer.cpp:125
virtual DataProtocol * getDataProtocolReceiver() const
Definition: JackTrip.h:250
virtual void run()
Starting point for the thread.
Definition: JackTrip.h:149
uint32_t getDeviceID() const
Definition: JackTrip.h:329
virtual DataProtocol * getDataProtocolSender() const
Definition: JackTrip.h:248
uint8_t getPeerSamplingRate(int8_t *full_packet) const
Definition: JackTrip.h:364
unsigned int getNumChannels() const
Definition: JackTrip.h:343
virtual void setAudioBitResolution(AudioInterface::audioBitResolutionT AudioBitResolution)
Sets (override) Audio Bit Resolution after construction.
Definition: JackTrip.h:202
int serverStart(bool timeout=false, int udpTimeout=gTimeOutMultiThreadedServer)
Starts for the SERVER mode.
Definition: JackTrip.cpp:489
virtual void stop()
Stop the processing threads.
Definition: JackTrip.cpp:442
Main class to creates a SERVER (to listen) or a CLIENT (to connect to a listening server) to send aud...
Definition: JackTrip.h:67
qint8 int8_t
Typedef for unsigned long long int. This type is guaranteed to be 64-bit.
Definition: jacktrip_types.h:78
virtual void setNumChannels(int num_chans)
Set the number of audio channels.
Definition: JackTrip.h:232
JackTrip::jacktripModeT getJackTripMode() const
Definition: JackTrip.h:296
uint16_t getPeerBufferSize(int8_t *full_packet) const
Definition: JackTrip.h:361
virtual int getSenderPeerPort() const
Definition: JackTrip.h:241
virtual int getRingBuffersSlotSize()
Definition: JackTrip.h:269
virtual void readAudioBuffer(int8_t *ptrToReadSlot)
Definition: JackTrip.h:323
void setupRingBuffers()
Set the RingBuffer objects.
Definition: JackTrip.cpp:262
size_t getSizeInBytesPerChannel() const
Definition: JackTrip.h:376
uint32_t getBufferSizeInSamples() const
Definition: JackTrip.h:327
@ SERVER
Run in Server Mode.
Definition: JackTrip.h:83
@ UDP
Use UDP (User Datagram Protocol)
Definition: JackTrip.h:76
virtual RingBuffer * getSendRingBuffer() const
Definition: JackTrip.h:257
virtual void setDataProtocolSender(DataProtocol *const DataProtocolSender)
Definition: JackTrip.h:252
@ RTAUDIO
RtAudio Mode.
Definition: JackTrip.h:98
@ SERVERPINGSERVER
Server of the MultiThreaded JackTrip.
Definition: JackTrip.h:86
@ CLIENTTOPINGSERVER
Client of the Ping Server Mode.
Definition: JackTrip.h:85
void signalUdpTimeOut()
Definition: moc_JackTrip.cpp:187
void clientStart()
Starts for the CLIENT mode.
Definition: JackTrip.cpp:473
Interface for the process plugins to add to the JACK callback process in JackAudioInterface.
Definition: ProcessPlugin.h:52
void setConnectionMode(JackTrip::connectionModeT connection_mode)
Definition: JackTrip.h:288
@ CLIENTECHO
Client Echo (client self-to-self)
Definition: JackTrip.h:111
void closeAudio()
Close the JackAudioInteface and disconnects it from JACK.
Definition: JackTrip.cpp:212
virtual void checkIfPortIsBinded(int port)
Check if UDP port is already binded.
Definition: JackTrip.cpp:848
uint8_t getPeerBitResolution(int8_t *full_packet) const
Definition: JackTrip.h:367
dataProtocolT
Enum for the data Protocol. At this time only UDP is implemented.
Definition: JackTrip.h:75
virtual void checkPeerSettings(int8_t *full_packet)
Definition: JackTrip.cpp:841
virtual void sendNetworkPacket(const int8_t *ptrToSlot)
Definition: JackTrip.h:319
virtual void setPeerPorts(int port)
Sets port numbers for the peer (remote) machine.
Definition: JackTrip.h:223
virtual void writeAudioBuffer(const int8_t *ptrToSlot)
Definition: JackTrip.h:325
audioBitResolutionT
Enum for Audio Resolution in bits.
Definition: AudioInterface.h:61
jacktripModeT
Enum for the JackTrip mode.
Definition: JackTrip.h:82
void increaseSequenceNumber()
Definition: JackTrip.h:350
underrunModeT
Enum for the JackTrip Underrun Mode, when packets.
Definition: JackTrip.h:90
virtual size_t getSizeInBytesPerChannel() const
Definition: AudioInterface.cpp:194
audiointerfaceModeT
Enum for Audio Interface Mode.
Definition: JackTrip.h:96
virtual void slotStopProcesses()
Slot to stop all the processes and threads.
Definition: JackTrip.h:397
void signalNoUdpPacketsForSeconds()
Signal emitted when no UDP Packets have been received for a while.
Definition: moc_JackTrip.cpp:199
void setDeviceID(uint32_t device_id)
Definition: JackTrip.h:280
int getSequenceNumber() const
Definition: JackTrip.h:352
@ FULLMIX
Client Fan Out to Clients and Fan In from Clients (including self-to-self)
Definition: JackTrip.h:114
void setHubConnectionModeT(JackTrip::hubConnectionModeT connection_mode)
Definition: JackTrip.h:293
virtual void setPeerAddress(const char *PeerHostOrIP)
Set the Peer Address for jacktripModeT::CLIENT mode only.
Definition: JackTrip.cpp:303
quint32 uint32_t
Typedef for unsigned int. This type is guaranteed to be 32-bit.
Definition: jacktrip_types.h:73
void signalProcessesStopped()
Signal emitted when all the processes and threads are stopped.
Definition: moc_JackTrip.cpp:193
virtual void setBindPorts(int port)
Sets port numbers to bind in RECEIVER and SENDER sockets.
Definition: JackTrip.h:217
const int gDefaultNumInChannels
Definition: jacktrip_globals.h:52
@ BIT16
16 bits (default)
Definition: AudioInterface.h:63
virtual void setReceiveRingBuffer(RingBuffer *const ReceiveRingBuffer)
Definition: JackTrip.h:263
connectionModeT
Enum for Connection Mode (in packet header)
Definition: JackTrip.h:102
void readSlotNonBlocking(int8_t *ptrToReadSlot)
Same as readSlotBlocking but non-blocking (asynchronous)
Definition: RingBuffer.cpp:175
samplingRateT
Sampling Rates supported by JACK.
Definition: AudioInterface.h:69
void parseAudioPacket(int8_t *full_packet, int8_t *audio_packet)
Definition: JackTrip.cpp:830
virtual void setupDataProtocol()
Set the DataProtocol objects.
Definition: JackTrip.cpp:224
virtual void setPacketHeader(PacketHeader *const PacketHeader)
Definition: JackTrip.h:266
virtual void setClientName(const char *ClientName)
Set Client Name to something different that the default (JackTrip)
Definition: JackTrip.h:229
virtual void setupAudio()
Set the AudioInteface object.
Definition: JackTrip.cpp:132
hubConnectionModeT
Enum for Hub Server Audio Connection Mode (connections to hub server are automatically patched in Jac...
Definition: JackTrip.h:109
virtual void setDataProtocolReceiver(DataProtocol *const DataProtocolReceiver)
Definition: JackTrip.h:254
uint64_t getPeerTimeStamp(int8_t *full_packet) const
Definition: JackTrip.h:355
virtual void setAudiointerfaceMode(JackTrip::audiointerfaceModeT audiointerface_mode)
Definition: JackTrip.h:272
void setSampleRate(uint32_t sample_rate)
Definition: JackTrip.h:278
int gVerboseFlag
Verbose mode flag declaration.
Definition: Settings.cpp:59
void putHeaderInPacket(int8_t *full_packet, int8_t *audio_packet)
Definition: JackTrip.cpp:805
QString getPeerAddress() const
Definition: JackTrip.h:299
uint8_t getPeerNumChannels(int8_t *full_packet) const
Definition: JackTrip.h:370
virtual void createHeader(const DataProtocol::packetHeaderTypeT headertype)
Definition: JackTrip.cpp:784
void insertSlotNonBlocking(const int8_t *ptrToSlot)
Same as insertSlotBlocking but non-blocking (asynchronous)
Definition: RingBuffer.cpp:149
virtual void appendProcessPlugin(ProcessPlugin *plugin)
Append a process plugin. Processes will be appended in order.
Definition: JackTrip.cpp:310
@ TCP
NOT IMPLEMENTED: Use TCP (Transmission Control Protocol)
Definition: JackTrip.h:77
virtual void setAllPorts(int port)
Sets port numbers for the local and peer machine. Receive port is port
Definition: JackTrip.h:209
@ JACK
Jack Mode.
Definition: JackTrip.h:97
@ DEFAULT
Default application header.
Definition: DataProtocol.h:102
@ CLIENTFOFI
Client Fan Out to Clients and Fan In from Clients (but not self-to-self)
Definition: JackTrip.h:112
@ NORMAL
Normal Mode.
Definition: JackTrip.h:103
@ CLIENT
Run in Client Mode.
Definition: JackTrip.h:84
bool receivedConnectionFromPeer()
Definition: JackTrip.h:302
uint8_t getPeerConnectionMode(int8_t *full_packet) const
Definition: JackTrip.h:373
uint8_t getAudioBitResolution() const
Definition: JackTrip.h:337
const int gTimeOutMultiThreadedServer
Definition: jacktrip_globals.h:92
virtual void setConnectDefaultAudioPorts(bool connect)
Set to connect or not default audio ports (only implemented in Jack)
Definition: JackTrip.h:236
JackTrip::hubConnectionModeT getHubConnectionModeT() const
Definition: JackTrip.h:291
Provides a ring-buffer (or circular-buffer) that can be written to and read from asynchronously (bloc...
Definition: RingBuffer.h:57
@ RESERVEDMATRIX
Reserved for custom patch matrix (for TUB ensemble)
Definition: JackTrip.h:113
@ JAMTEST
Karplus Strong.
Definition: JackTrip.h:105
@ SERVERTOCLIENT
Normal Mode, Sever to All Clients (but not client to any client)
Definition: JackTrip.h:110
packetHeaderTypeT
Enum to define packet header types.
Definition: DataProtocol.h:101
@ ZEROS
Set new buffers to zero if there are no new ones.
Definition: JackTrip.h:92
uint16_t getPeerSequenceNumber(int8_t *full_packet) const
Definition: JackTrip.h:358
virtual RingBuffer * getReceiveRingBuffer() const
Definition: JackTrip.h:259
JackTrip(jacktripModeT JacktripMode=CLIENT, dataProtocolT DataProtocolType=UDP, int NumChans=gDefaultNumInChannels, int BufferQueueLength=gDefaultQueueLength, unsigned int redundancy=gDefaultRedundancy, AudioInterface::audioBitResolutionT AudioBitResolution=AudioInterface::BIT16, DataProtocol::packetHeaderTypeT PacketHeaderType=DataProtocol::DEFAULT, underrunModeT UnderRunMode=WAVETABLE, int receiver_bind_port=gDefaultPort, int sender_bind_port=gDefaultPort, int receiver_peer_port=gDefaultPort, int sender_peer_port=gDefaultPort)
The class Constructor with Default Parameters.
Definition: JackTrip.cpp:68
void printTextTest2()
Definition: JackTrip.h:393
virtual ~JackTrip()
The class destructor.
Definition: JackTrip.cpp:119
bool tcpConnectionError()
Definition: JackTrip.h:305
Base Class that provides an interface with audio.
Definition: AudioInterface.h:56
virtual void setUnderRunMode(underrunModeT UnderRunMode)
Sets (override) Underrun Mode.
Definition: JackTrip.h:205
unsigned int getNumInputChannels() const
Definition: JackTrip.h:339
void slotReceivedConnectionFromPeer()
Definition: JackTrip.h:419
AudioInterface::samplingRateT getSampleRateType() const
Definition: JackTrip.h:332
virtual void setDataProtocoType(dataProtocolT DataProtocolType)
Sets (override) DataProtocol Type after construction.
Definition: JackTrip.h:188
const int gDefaultQueueLength
Definition: jacktrip_globals.h:85
void slotPrintTest()
Definition: JackTrip.h:417
virtual int getTotalAudioPacketSizeInBytes() const
Definition: JackTrip.h:380
virtual int getReceiverBindPort() const
Definition: JackTrip.h:239
virtual int getPacketSizeInBytes()
Definition: JackTrip.cpp:819
virtual void setBufferQueueLength(int BufferQueueLength)
Sets (override) Buffer Queue Length Mode after construction.
Definition: JackTrip.h:199
void setAudioBufferSizeInSamples(uint32_t buf_size)
Definition: JackTrip.h:282