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;
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; }
401 std::cout <<
"Stopping JackTrip..." << std::endl;
413 int wait_time = 10000;
414 if ( !(wait_msec%wait_time) ) {
415 std::cerr <<
"UDP WAITED MORE THAN 10 seconds." << std::endl;
420 { std::cout <<
"=== TESTING ===" << std::endl; }
422 { mReceivedConnection =
true; }
476 int mBufferQueueLength;
481 QString mPeerAddress;
496 int mReceiverBindPort;
499 int mReceiverPeerPort;
502 unsigned int mRedundancy;
503 const char* mJackClientName;
508 QVector<ProcessPlugin*> mProcessPlugins;
510 volatile bool mReceivedConnection;
511 volatile bool mTcpConnectionError;
512 volatile bool mStopped;
514 bool mConnectDefaultAudioPorts;
515 std::ostream mIOStatLogStream;
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:634
@ WAVETABLE
Loops on the last received packet.
Definition: JackTrip.h:91
void startIOStatTimer(int timeout_sec, const std::ostream &log_stream)
Definition: JackTrip.cpp:441
virtual void setJackTripMode(jacktripModeT JacktripMode)
Sets (override) JackTrip Mode after construction.
Definition: JackTrip.h:185
const int gDefaultRedundancy
Definition: jacktrip_globals.h:92
@ 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:94
virtual void startProcess()
Start the processing threads.
Definition: JackTrip.cpp:320
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()
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:513
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:411
const int gDefaultPort
Default JackTrip Port.
Definition: jacktrip_globals.h:101
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:127
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:537
virtual void stop()
Stop the processing threads.
Definition: JackTrip.cpp:490
Main class to creates a SERVER (to listen) or a CLIENT (to connect to a listening server) to send aud...
Definition: JackTrip.h:68
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:264
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 clientStart()
Starts for the CLIENT mode.
Definition: JackTrip.cpp:521
Interface for the process plugins to add to the JACK callback process in JackAudioInterface.
Definition: ProcessPlugin.h:53
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:214
virtual void checkIfPortIsBinded(int port)
Check if UDP port is already binded.
Definition: JackTrip.cpp:895
void onStatTimer()
Definition: JackTrip.cpp:450
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:888
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:399
void signalNoUdpPacketsForSeconds()
Signal emitted when no UDP Packets have been received for a while.
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:305
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.
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:177
samplingRateT
Sampling Rates supported by JACK.
Definition: AudioInterface.h:69
void parseAudioPacket(int8_t *full_packet, int8_t *audio_packet)
Definition: JackTrip.cpp:877
virtual void setupDataProtocol()
Set the DataProtocol objects.
Definition: JackTrip.cpp:226
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:135
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:852
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:831
void insertSlotNonBlocking(const int8_t *ptrToSlot)
Same as insertSlotBlocking but non-blocking (asynchronous)
Definition: RingBuffer.cpp:151
virtual void appendProcessPlugin(ProcessPlugin *plugin)
Append a process plugin. Processes will be appended in order.
Definition: JackTrip.cpp:312
@ 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:93
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:60
@ 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:70
void printTextTest2()
Definition: JackTrip.h:393
virtual ~JackTrip()
The class destructor.
Definition: JackTrip.cpp:122
bool tcpConnectionError()
Definition: JackTrip.h:305
Base Class that provides an interface with audio.
Definition: AudioInterface.h:57
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:421
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:86
void slotPrintTest()
Definition: JackTrip.h:419
virtual int getTotalAudioPacketSizeInBytes() const
Definition: JackTrip.h:380
virtual int getReceiverBindPort() const
Definition: JackTrip.h:239
virtual int getPacketSizeInBytes()
Definition: JackTrip.cpp:866
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