Go to the documentation of this file.
38 #ifndef __JACKTRIP_H__
39 #define __JACKTRIP_H__
131 int NumNetRevChans = 0,
151 if (
gVerboseFlag) std::cout <<
"Settings:startJackTrip before mJackTrip->run" << std::endl;
187 { mJackTripMode = JacktripMode; }
190 { mDataProtocol = DataProtocolType; }
194 mPacketHeaderType = PacketHeaderType;
195 delete mPacketHeader;
196 mPacketHeader = NULL;
201 { mBufferQueueLength = BufferQueueLength; }
204 { mAudioBitResolution = AudioBitResolution; }
207 { mUnderRunMode = UnderRunMode; }
212 mReceiverBindPort = port;
213 mSenderPeerPort = port;
214 mSenderBindPort = port;
215 mReceiverPeerPort = port;
220 mReceiverBindPort = port;
221 mSenderBindPort = port;
226 mSenderPeerPort = port;
227 mReceiverPeerPort = port;
231 { mJackClientName = clientName; }
234 { mNumChans = num_chans; }
238 {mConnectDefaultAudioPorts = connect;}
241 {
return mReceiverBindPort; }
243 {
return mSenderPeerPort; }
245 {
return mSenderBindPort; }
247 {
return mReceiverPeerPort; }
250 {
return mDataProtocolSender; }
252 {
return mDataProtocolReceiver; }
254 { mDataProtocolSender = DataProtocolSender; }
256 { mDataProtocolReceiver = DataProtocolReceiver; }
259 {
return mSendRingBuffer; }
261 {
return mReceiveRingBuffer; }
263 { mSendRingBuffer = SendRingBuffer; }
265 { mReceiveRingBuffer = ReceiveRingBuffer; }
274 { mAudiointerfaceMode = audiointerface_mode; }
280 { mSampleRate = sample_rate; }
282 { mDeviceID = device_id; }
284 { mAudioBufferSize = buf_size; }
288 {
return mConnectionMode; }
290 { mConnectionMode = connection_mode; }
293 {
return mHubConnectionModeT; }
295 { mHubConnectionModeT = connection_mode; }
298 {
return mJackTripMode; }
301 {
return mPeerAddress; }
304 {
return mReceivedConnection; }
307 {
return mTcpConnectionError; }
329 {
return mAudioBufferSize; }
331 {
return mDeviceID; }
336 {
return mSampleRate; }
339 {
return mAudioBitResolution*8; }
341 {
return mNumChans; }
343 {
return mNumChans; }
402 std::cout <<
"Stopping JackTrip..." << std::endl;
414 int wait_time = 10000;
415 if ( !(wait_msec%wait_time) ) {
416 std::cerr <<
"UDP WAITED MORE THAN 10 seconds." << std::endl;
421 { std::cout <<
"=== TESTING ===" << std::endl; }
423 { mReceivedConnection =
true; }
477 int mBufferQueueLength;
482 QString mPeerAddress;
497 int mReceiverBindPort;
500 int mReceiverPeerPort;
503 unsigned int mRedundancy;
504 QString mJackClientName;
509 QVector<ProcessPlugin*> mProcessPlugins;
511 volatile bool mReceivedConnection;
512 volatile bool mTcpConnectionError;
513 volatile bool mStopped;
515 bool mConnectDefaultAudioPorts;
516 std::ostream mIOStatLogStream;
void printTextTest()
Definition: JackTrip.h:393
virtual void setPacketHeaderType(DataProtocol::packetHeaderTypeT PacketHeaderType)
Sets the Packet header type.
Definition: JackTrip.h:192
unsigned int getNumOutputChannels() const
Definition: JackTrip.h:342
int getSampleRate() const
Definition: JackTrip.h:335
virtual int getSenderBindPort() const
Definition: JackTrip.h:244
virtual int clientPingToServerStart()
Stats for the Client to Ping Server.
Definition: JackTrip.cpp:644
@ WAVETABLE
Loops on the last received packet.
Definition: JackTrip.h:91
void startIOStatTimer(int timeout_sec, const std::ostream &log_stream)
Definition: JackTrip.cpp:451
virtual void setJackTripMode(jacktripModeT JacktripMode)
Sets (override) JackTrip Mode after construction.
Definition: JackTrip.h:186
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:246
@ 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:330
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:322
virtual void setSendRingBuffer(RingBuffer *const SendRingBuffer)
Definition: JackTrip.h:262
int getHeaderSizeInBytes() const
Definition: JackTrip.h:379
JackTrip::connectionModeT getConnectionMode() const
Definition: JackTrip.h:287
void signalTcpClientConnected()
Definition: moc_JackTrip.cpp:211
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:275
virtual void waitThreads()
Wait for all the threads to finish. This functions is used when JackTrip is run as a thread.
Definition: JackTrip.cpp:523
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:412
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:251
virtual void run()
Starting point for the thread.
Definition: JackTrip.h:150
uint32_t getDeviceID() const
Definition: JackTrip.h:330
virtual DataProtocol * getDataProtocolSender() const
Definition: JackTrip.h:249
uint8_t getPeerSamplingRate(int8_t *full_packet) const
Definition: JackTrip.h:365
unsigned int getNumChannels() const
Definition: JackTrip.h:344
virtual void setAudioBitResolution(AudioInterface::audioBitResolutionT AudioBitResolution)
Sets (override) Audio Bit Resolution after construction.
Definition: JackTrip.h:203
int serverStart(bool timeout=false, int udpTimeout=gTimeOutMultiThreadedServer)
Starts for the SERVER mode.
Definition: JackTrip.cpp:547
virtual void stop()
Stop the processing threads.
Definition: JackTrip.cpp:500
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:233
void setBindPorts(int port)
Sets port numbers to bind in RECEIVER and SENDER sockets.
Definition: JackTrip.h:218
JackTrip::jacktripModeT getJackTripMode() const
Definition: JackTrip.h:297
uint16_t getPeerBufferSize(int8_t *full_packet) const
Definition: JackTrip.h:362
virtual int getSenderPeerPort() const
Definition: JackTrip.h:242
virtual int getRingBuffersSlotSize()
Definition: JackTrip.h:270
virtual void readAudioBuffer(int8_t *ptrToReadSlot)
Definition: JackTrip.h:324
void setupRingBuffers()
Set the RingBuffer objects.
Definition: JackTrip.cpp:274
size_t getSizeInBytesPerChannel() const
Definition: JackTrip.h:377
uint32_t getBufferSizeInSamples() const
Definition: JackTrip.h:328
@ 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:258
virtual void setDataProtocolSender(DataProtocol *const DataProtocolSender)
Definition: JackTrip.h:253
@ 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:193
void clientStart()
Starts for the CLIENT mode.
Definition: JackTrip.cpp:531
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:289
@ CLIENTECHO
Client Echo (client self-to-self)
Definition: JackTrip.h:111
void closeAudio()
Close the JackAudioInteface and disconnects it from JACK.
Definition: JackTrip.cpp:224
virtual void checkIfPortIsBinded(int port)
Check if UDP port is already binded.
Definition: JackTrip.cpp:905
void onStatTimer()
Definition: JackTrip.cpp:460
uint8_t getPeerBitResolution(int8_t *full_packet) const
Definition: JackTrip.h:368
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:898
virtual void sendNetworkPacket(const int8_t *ptrToSlot)
Definition: JackTrip.h:320
virtual void writeAudioBuffer(const int8_t *ptrToSlot)
Definition: JackTrip.h:326
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:351
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:400
void signalNoUdpPacketsForSeconds()
Signal emitted when no UDP Packets have been received for a while.
Definition: moc_JackTrip.cpp:205
void setDeviceID(uint32_t device_id)
Definition: JackTrip.h:281
int getSequenceNumber() const
Definition: JackTrip.h:353
@ 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:294
virtual void setClientName(QString clientName)
Set Client Name to something different that the default (JackTrip)
Definition: JackTrip.h:230
virtual void setPeerAddress(const char *PeerHostOrIP)
Set the Peer Address for jacktripModeT::CLIENT mode only.
Definition: JackTrip.cpp:315
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:199
void setPeerPorts(int port)
Sets port numbers for the peer (remote) machine.
Definition: JackTrip.h:224
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:264
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:887
virtual void setupDataProtocol()
Set the DataProtocol objects.
Definition: JackTrip.cpp:236
virtual void setPacketHeader(PacketHeader *const PacketHeader)
Definition: JackTrip.h:267
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:255
uint64_t getPeerTimeStamp(int8_t *full_packet) const
Definition: JackTrip.h:356
virtual void setAudiointerfaceMode(JackTrip::audiointerfaceModeT audiointerface_mode)
Definition: JackTrip.h:273
void setSampleRate(uint32_t sample_rate)
Definition: JackTrip.h:279
int gVerboseFlag
Verbose mode flag declaration.
Definition: Settings.cpp:59
void putHeaderInPacket(int8_t *full_packet, int8_t *audio_packet)
Definition: JackTrip.cpp:862
QString getPeerAddress() const
Definition: JackTrip.h:300
uint8_t getPeerNumChannels(int8_t *full_packet) const
Definition: JackTrip.h:371
virtual void createHeader(const DataProtocol::packetHeaderTypeT headertype)
Definition: JackTrip.cpp:841
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:322
@ 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:210
@ 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:303
uint8_t getPeerConnectionMode(int8_t *full_packet) const
Definition: JackTrip.h:374
uint8_t getAudioBitResolution() const
Definition: JackTrip.h:338
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, int tcp_peer_port=gDefaultPort)
The class Constructor with Default Parameters.
Definition: JackTrip.cpp:70
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:237
JackTrip::hubConnectionModeT getHubConnectionModeT() const
Definition: JackTrip.h:292
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:359
virtual RingBuffer * getReceiveRingBuffer() const
Definition: JackTrip.h:260
void printTextTest2()
Definition: JackTrip.h:394
virtual ~JackTrip()
The class destructor.
Definition: JackTrip.cpp:122
bool tcpConnectionError()
Definition: JackTrip.h:306
Base Class that provides an interface with audio.
Definition: AudioInterface.h:57
virtual void setUnderRunMode(underrunModeT UnderRunMode)
Sets (override) Underrun Mode.
Definition: JackTrip.h:206
unsigned int getNumInputChannels() const
Definition: JackTrip.h:340
void slotReceivedConnectionFromPeer()
Definition: JackTrip.h:422
AudioInterface::samplingRateT getSampleRateType() const
Definition: JackTrip.h:333
virtual void setDataProtocoType(dataProtocolT DataProtocolType)
Sets (override) DataProtocol Type after construction.
Definition: JackTrip.h:189
const int gDefaultQueueLength
Definition: jacktrip_globals.h:86
void slotPrintTest()
Definition: JackTrip.h:420
virtual int getTotalAudioPacketSizeInBytes() const
Definition: JackTrip.h:381
virtual int getReceiverBindPort() const
Definition: JackTrip.h:240
virtual int getPacketSizeInBytes()
Definition: JackTrip.cpp:876
virtual void setBufferQueueLength(int BufferQueueLength)
Sets (override) Buffer Queue Length Mode after construction.
Definition: JackTrip.h:200
void setAudioBufferSizeInSamples(uint32_t buf_size)
Definition: JackTrip.h:283