Giter Site home page Giter Site logo

jacktrip / jacktrip Goto Github PK

View Code? Open in Web Editor NEW
881.0 36.0 107.0 28.21 MB

JackTrip: multi-machine audio network performance over the Internet.

Home Page: https://jacktrip.github.io/jacktrip

License: Other

C 0.22% C++ 84.64% Makefile 0.15% Shell 1.46% QMake 0.57% Faust 0.74% Meson 0.60% CMake 0.36% Objective-C++ 0.22% Batchfile 0.11% Python 0.02% QML 10.81% Dockerfile 0.11%

jacktrip's Introduction

JackTrip is a multi-machine audio system used for network music performance over the Internet.

It supports any number of channels (as many as the computer/network can handle) of bidirectional, high quality, uncompressed audio signal streaming.

It runs on several platforms, such as Linux, macOS, Windows or FreeBSD. You can use it between any combination of machines e.g., one end using Linux can connect to another using macOS.

Further information and instructions are available on https://jacktrip.github.io/jacktrip/.

Please report any security concerns to [email protected]

jacktrip's People

Contributors

antonrunov avatar brunoruviaro avatar cchafe avatar chimeworld avatar daveccrma avatar dhing1024 avatar driechers avatar dyfer avatar foaly avatar forsythac avatar jborden avatar josmithiii avatar luzpaz avatar madwort avatar maingig avatar mattahorton avatar mawe42 avatar michaeldessen avatar mikedickey avatar nikai3d avatar noahhorn avatar ntonnaett avatar nwang92 avatar omarcostahamido avatar psiborg112 avatar spencersalazar avatar trebmuh avatar umlaeute avatar vrslev avatar wholenotes avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jacktrip's Issues

Option to enable lossy compression for audio streams

Lossless streams are generally preferable to lossy streams, but the bandwidth requirements for this may be too great for a certain percentage of the overall potential user population.

Jamulus for example uses the Opus codec to compress audio, consuming only about 300 Kbps for high quality (highest setting at least) and low latency audio stereo versus 750+ Kbps for JackTrip. Having the option available to enable Opus (or another codec) would help improve the broader accessibility of JackTrip.

Option for client to send mono, receive stereo

Currently, one can use the -n parameter to specify mono or stereo, but this applies to both directions. I would like to be able to specify a different number of send versus receive channels.

Justification: Most Internet connections have significantly better downstream versus upstream performance. Furthermore, most musicians likely are only sending a mono audio signal to JackTrip. However, there is great value to mixing a stereo signal on the server (adding panning, reverb, etc) and returning stereo back to these clients. Today, this requires using twice as much upstream bandwidth as necessary (sending same signal twice, or sending on empty channel), which may be too much for some Internet connections. Even if they have "enough" bandwidth, more utilization may contribute to more jitter, and lead to a poorer experience overall.

Desired behavior is to split this into two parameters: one for send channels, and one for receive channels. This would allow clients to send mono sound, and receive a stereo mix back from a hubpatch server.

jacktrip does not compile with recent compilers

What steps will reproduce the problem?
1. get jacktrip-1.0.5 sources (
2. install all dependencies
3. run ./build (using a modern compiler, like gcc 4.4.5)

What is the expected output? What do you see instead?

i expect to have a binary  after compilation.
instead i get errors when compiling jacktrip_worker.cpp and JackTripWorker.cpp, 
because of missing includes.
the attached patch fixes this


What version of the product are you using? On what operating system?
jacktrip-1.0.5
debian squeeze/sid


Please provide any additional information below.
it seems to work find with todays trunk

Original issue reported on code.google.com by [email protected] on 3 Nov 2010 at 5:47

Attachments:

Client hangs when Server drops connection

When running JackTrip as a client (-C) to connect to a hubpatch server (-S), the client enters an endless loop of printing error messages when the server disconnects (due to shutdown, etc). The only way to recover from this seems to be killing the client with a signal (Ctrl-C etc).

When a client disconnects from a server, the server will print error messages for some reasonable period of time and then eventually remove the client. This appears to be a graceful recovery/behavior.

Expected behavior is that the client should respond to lost connections in a similar manner as the server, where after a reasonable period of time it disconnects and exits the process, preferably with an exit code != 0.

feature request: dropout concealment

What steps will reproduce the problem?
1. connect a server/client over a WAN link
2. play a sine-wave
3. here clicks every now and then

What is the expected output? What do you see instead?
no clicks :-)


What version of the product are you using? On what operating system?
1.0.5, debian/linux (graz, austria) connected to osx (belfast, uk) over a 1gbit 
backbone with 16channels

Please provide any additional information below.

i don't know exactly the cause of the dropouts, as the link is fairly stable 
and it doesn't sound like sync problems (e.g. regularity pattern).
i re-compiled jacktrip with some debugging messages in queue, and noticed that 
i do get buffer underruns quite often (though i practically never get one of 
the "UDP waited too long" messages)
i suspect this to be the cause of my trouble.

now, i do think that the 2 available strategies to handle buffer underrungs 
(zeroing out and "wavetable") are inadequate.

it would probably be great to be able to implement dropout concealment 
strategies as plugins to jacktrip (or at least provide a solid API for 
implementing such a thing).

Original issue reported on code.google.com by [email protected] on 29 Nov 2010 at 10:25

Feature request: option to not connect to default ports

Hello,

I use jacktrip with gladish as part of a studio for live podcast/radio production with IDJC. I can add jacktrip to my flow, but I have to manually disconnect the default ports even when I save the studio.

The ports I want to connect are always connected, but I always get connections to the default jack capture and output at startup. Could we have a command line option to not connect any ports automatically?

Jacktrip is awesome, thanks!

allow DNS-names

What steps will reproduce the problem?
1. ./jacktrip -c example.com

What is the expected output? What do you see instead?
i expect jacktrip to connect to the server given ('example.com')
instead it refuses to connect, as 'example.com' is not a valid IP-address 
(which is true, but really jacktrip should be able to resolve a DNS-name to an 
IP)

What version of the product are you using? On what operating system?
both 1.0.5 and todays SVN, on debian/GNU linux


Please provide any additional information below.
dunno which

Original issue reported on code.google.com by [email protected] on 25 Nov 2010 at 2:51

OSX version only works up to macOS El Capitan with JackRouter 0.92 b3

Greetings

I would like to point out that:

  • OSX current release only works up to macOS El Capitan with JackRouter 0.92 b3

that means that:

  • there are some broken dependencies that are macOS version related, that need to be fixed, in order for the program to properly execute

the only way to currently run jacktrip is to:

  • Install the latest release dating from 2015 (two years old)
  • get El Capitan;
  • get Jackrouter 0.92 b3
  • getting the latest JackTrip release

i should also notice that:

  • it doesn't allow you to install jacktrip to bin folder, but you can run it locally (i tried it cp with sudo command and it wouldn't work)
  • there should be a script that temporarily brute forces system integrity to allow the installation of the program

--clientname option is broken in trunk

What steps will reproduce the problem?
1. specify a JACK client name on the command line using --clientname
2. the JACK client name is set to the default "JackTrip" no matter what was 
specified

What is the expected output? What do you see instead?
The JACK client name should be set to what was specified on the command line

What version of the product are you using? On what operating system?
Latest trunk code on opensuse 11.4

Please provide any additional information below.
Looks like this was broken in rev. 415
In JackTrip::setupAudio(), mAudioInterface->setClientName(mJackClientName) 
needs to happen before mAudioInterface->setup() is called

Original issue reported on code.google.com by [email protected] on 25 Aug 2011 at 9:28

Option to enable lossless compression for audio streams

If I understand correctly, audio streams currently have no compression applied. If we could get even as little as 2x compression from using a lossless codec like FLAC, it would be WELL worthwhile and improve the experience for a broader range of users.

new release

Hi! I'm packaging jacktrip for Arch Linux.

Given that jacktrip 1.1 doesn't work without dangerously high realtime settings applied, it would be great to tag a new release so a working version of this software can be packaged by downstreams again.

copyright issues with published tarball

What steps will reproduce the problem?
1. download the tarball
2. extract it
3. inspect the images in documentation/img/

What is the expected output? What do you see instead?
the images embed color-profiles holding a copyright notice
"Copyright, Apple Inc."

i'm currently packaging jacktrip for debian
debian is very strict in what to include, and if some data have a problematic 
copyright, packages are usually rejected.
since i don't see any good reason why the screenshots should have a 
color-profile saved with them (esp. if it is copyrighted) it would be good if 
you could remove that :-)


What version of the product are you using? On what operating system?
debian

Please provide any additional information below.
i'd really love to have jacktrip as a standard debian package (which means it 
would come with ubuntu and all kinds of other debian-clones)

Original issue reported on code.google.com by [email protected] on 24 Nov 2010 at 3:46

--clientname option seems broken in v1.2

I'm using a binary build from https://ccrma.stanford.edu/software/jacktrip/osx/index.html

I'm having a problem with long hostnames when using JackTrip v1.2. I think the problem might be traced to using the (long) hostname as JACK client name. To circumvent that I tried to set custom client name and this seems to not work in v 1.2.

It seems that provided --clientname is overwritten in https://github.com/jacktrip/jacktrip/blob/master/src/JackTrip.cpp#L164

It is unclear to me what WAIR (Wide Area Internet Reverberation?) is exactly in terms of JackTrip functionality so I'm not sure what the proper solution is. I'd guess that if custom client name is provided, it shouldn't be overwritten in the code linked above, however I'm not sure how to best achieve that.

running -r 2, can't connect with more than -n 2

Hi there! While we are able to connect client>server with 3 channels of audio, and with redundancy set at its default value. But when we tried a redundancy value of 2 the connection couldn't be established using 3 channels (but redundancy of 2 and 2 channels did work)

One machine running OSX Sierra (client), the other running El Capitan (sierra).

Tagging my colleague @kieranmaraj in this to follow along and add insight

build script out of date

Installed

qt5 and qmake is working. Getting the following output from ./build:

[17:22 src]$ ./build
Building on Mac OS X
Project ERROR: failed to parse default search paths from compiler output
make: *** No rule to make target `clean'.  Stop.
Project ERROR: failed to parse default search paths from compiler output
make: *** No rule to make target `release'.  Stop.

Ubuntu Lucid Build Errors (resolution suggested)

What steps will reproduce the problem?
1. Download jacktrip-1.0.5.tar.gz on Ubuntu Lucid && tar -xzvf it.
2. Use Synaptic Package Manager to get: libjack-dev and qt4-dev-tools
3. cd src/ && ./build

What is the expected output? What do you see instead?
Build is complete.
See:
...
g++ -c -pipe -g -O2 -O2 -D_REENTRANT -Wall -W -D__LINUX__ -DQT_NO_DEBUG 
-DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ 
-I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtNetwork -I/usr/include/qt4 
-I/usr/local/include -Irelease -o release/jacktrip_globals.o 
jacktrip_globals.cpp
jacktrip_globals.cpp: In function ‘int set_fifo_priority(bool)’:
jacktrip_globals.cpp:146: error: ‘stderr’ was not declared in this scope
jacktrip_globals.cpp:148: error: ‘fprintf’ was not declared in this scope
jacktrip_globals.cpp:158: error: ‘stderr’ was not declared in this scope
jacktrip_globals.cpp:159: error: ‘fprintf’ was not declared in this scope
jacktrip_globals.cpp: In function ‘int set_realtime_priority()’:
jacktrip_globals.cpp:177: error: ‘perror’ was not declared in this scope
make[1]: *** [release/jacktrip_globals.o] Error 1
make[1]: Leaving directory `/home/lamblin/src/bk/jacktrip-1.0.5/src'
make: *** [release] Error 2
lamblin@lamblin:~/src/bk/jacktrip-1.0.5/src

Fixed with editing jacktrip_globals.cpp to add #include <stdio.h>

THEN
...
g++ -c -pipe -g -O2 -O2 -D_REENTRANT -Wall -W -D__LINUX__ -DQT_NO_DEBUG 
-DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ 
-I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtNetwork -I/usr/include/qt4 
-I/usr/local/include -Irelease -o release/jacktrip_globals.o 
jacktrip_globals.cpp
jacktrip_globals.cpp: In function ‘int set_fifo_priority(bool)’:
jacktrip_globals.cpp:146: error: ‘stderr’ was not declared in this scope
jacktrip_globals.cpp:148: error: ‘fprintf’ was not declared in this scope
jacktrip_globals.cpp:158: error: ‘stderr’ was not declared in this scope
jacktrip_globals.cpp:159: error: ‘fprintf’ was not declared in this scope
jacktrip_globals.cpp: In function ‘int set_realtime_priority()’:
jacktrip_globals.cpp:177: error: ‘perror’ was not declared in this scope
make[1]: *** [release/jacktrip_globals.o] Error 1
make[1]: Leaving directory `/home/lamblin/src/bk/jacktrip-1.0.5/src'
make: *** [release] Error 2
lamblin@lamblin:~/src/bk/jacktrip-1.0.5/src

Fixed with editing JackTripWorker.cpp to add #include <stdint.h>

THEN
...
g++ -c -pipe -g -O2 -O2 -D_REENTRANT -Wall -W -D__LINUX__ -DQT_NO_DEBUG 
-DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ 
-I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtNetwork -I/usr/include/qt4 
-I/usr/local/include -Irelease -o release/moc_JackTripWorker.o 
release/moc_JackTripWorker.cpp
In file included from release/moc_JackTripWorker.cpp:10:
release/../JackTripWorker.h:89: error: ‘uint32_t’ has not been declared
release/../JackTripWorker.h:90: error: ‘uint16_t’ has not been declared
release/../JackTripWorker.h:90: error: ‘uint16_t’ has not been declared
release/../JackTripWorker.h:105: error: ‘uint16_t’ does not name a type
release/../JackTripWorker.h:108: error: ‘uint16_t’ does not name a type
make[1]: *** [release/moc_JackTripWorker.o] Error 1
make[1]: Leaving directory `/home/lamblin/src/bk/jacktrip-1.0.5/src'
make: *** [release] Error 2
lamblin@lamblin:~/src/bk/jacktrip-1.0.5/src$

Fixed by editing JackTripWorker.h to #include <stdint.h>

Now it built. Not sure if it works exactly though.

What version of the product are you using? On what operating system?

I'm pretty sure I told you. 1.0.5 on Ubuntu Lucid

Please provide any additional information below.

Next I need to get jack pulse audio modules.
Just trying to stream audio from a mac to linux. Would settle for pulse audio 
on mac os x if that worked.

Original issue reported on code.google.com by [email protected] on 19 Nov 2010 at 9:13

osx binary missing

I cannot find the osx binary anywhere.
Where may I get it ?

Thank you

Can't install jacktrip on OSX 10.11 El Capitan

I just tried installing on El Capitan using the command

sudo cp jacktrip /usr/bin/

However this leads to the following error message:

cp: /usr/bin/jacktrip: Operation not permitted

I guess this is due to the fact that access to /usr/bin has been crippled in 10.11. Probably Jacktrip now need to be installed somewhere in /usr/local instead?

leftover files in release

What steps will reproduce the problem?
1. download released tarball (1.0.5)
2. extract
3. ls -la

What is the expected output? What do you see instead?
there are leftover files, like .svn, *~
i would suggest to do an 
$ svn export
for releasing (and probably cleaning up the svn :-))

What version of the product are you using? On what operating system?
1.0.5 (haven't checked the new "patch" download)


Please provide any additional information below.
aa

Original issue reported on code.google.com by [email protected] on 24 Nov 2010 at 5:03

questions about INSTALL.txt

I am very grateful to all of you working on the new version, thank you! I use jacktrip a lot and have some suggestions for the install.txt file. Let me know if I should do a pull request instead but in case I'm misunderstanding something, I wanted to ask here first:

  1. line 14-15 ("$ sudo cp jacktrip /usr/local/bin/"): this sudo commands no longer works on Macs (since 10.11) due to System Integrity Protection, and on 10.15 it doesn't even work if you disable SIP because that OS runs from a read-only partition. I have instead been instructing people to cd to jacktrip/src whenever using jacktrip, which is simple and works fine, so maybe that could be explained here, unless someone knows a simple way to get around the read-only partition problem in Catalina.

  2. lines 67: "http://www.jackosx.com/" no longer exists. I'd suggest something like:
    "If you want to build on MacOS X, you need the JACK2 for OSX, available as a binary (version 0.92_b3) here: https://jackaudio.org/downloads/.

  3. The sudo commands on line 95ff are repeated from the ones on line 15ff and in general the flow of sections in this document is very confusing. (It also omits Windows in the title at the very top, but then has a section on Windows further down.)

  4. Lines 149-157 repeat the same link with 2 different texts.

  5. This is probably my ignorance but I find the build instructions very confusing. I've tried to build the new master branch using Qt but have not been successful. If anyone could share further tips on how to build it (I'm on a Mac 10.14) I'd be grateful, since I'd love to try out the new version.

Thanks!

Michael Dessen

IPv6 support?

Are there any plans to add ipv6 support to this?

(also, what's stanford's RTT to sonic's fiber network? :) )

Latency is not constant

I noticed that the audio of a jacktrip transmission jumps forth and back by one block size sporadically. Since the procotol is using a sequence number to identify individual packets, it seems to me this jumping could be avoided.

add -S -C commands to help page

In the new version help page I see the -p command explained but isn't it also necessary to add something under Required Arguments like this, below the 2 lines there now? Otherwise it won't be clear to people how to start Hub mode:

-S, --Server Run in Server Hub Mode
-C, --Client <peer_hostname_or_IP_num> Run in Client Hub Mode

Michael

Add LICENSE file

Judging from the documentation, I assume, that jacktrip is MIT licensed.
For packaging and contribution purposes it would be very helpful if you would state under what license the code is released under.
Usually the license is added in a LICENSE file and any additional/ further clarifications should be done either in the README.md or in a separate COPYING file.

Buffer compatibility Intel/PPC (big/little-endian issue?)

What steps will reproduce the problem?
1. Setup Jack on both Intel and PPC Macs with same configs
2. Launch jacktrip on the PPC Mac as server ( jacktrip -s )
3. Launch jacktrip on the Intel Mac as client ( jacktrip -c ip_address )

What is the expected output? What do you see instead?
There will be a problem with the recognition of the buffer sizes. It will give 
wrong sizes for the 
remote computer. Tricking around with sizes (32 on one side and 2048 on the 
other one) they 
are recognized as the same buffer size but this freezes the PPC Mac (mouse 
still moves but all 
interface is frozen, only solution is to hard reboot)!

What version of the product are you using? On what operating system?
Jacktrip 1.0.5 with JackOSX 0.83 legacy 32 bits on iMac G5 PPC with OS X 10.5.8 
(server)
Jacktrip 1.0.5 with JackOSX 0.83 64/32 bits on MacBook Pro Intel with OS X 
10.6.2 (client)

Please provide any additional information below.


Original issue reported on code.google.com by [email protected] on 15 Dec 2009 at 7:57

Windows Support

Is Jacktrip supported for Windows? If so, where can I get information about building or finding a pre-compiled version for Windows 10 x64?

Other datas/metadatas available to jack for JACK based active crossover

Can the JackTrip protocol be modified such that metadata can be stored on the JackTrip client and be available to the JackTrip master.

For example the name of the device, the latency of the attached amplifiers, etc.

My thoughts are that a JSON type blob would be the most flexible.

My use case is using JackTrip clients in self powered speakers for completely analogue free audio setup where the crossovers/delays are handled on the Jack master/JackTrip master, and we want to store some useful information about the connected device without resorting to SSH or similar to retrieve it. If JackTrip had this information available to us in the Jack patch bay somehow this would keep the information together in the right place.

I have been experimenting with NetJack2, is there any reason why JackTrip would be better than NetJack for my use case. The most critical issue is audio arriving at the amplifiers at the same time.
NetJack has so far not been doing this well.

Cheers

Not compiling under ubuntu 9.10 with gcc 4.4.1

What steps will reproduce the problem?
1. Was compiling fine under Ubuntu 9.04
2. Installed ubuntu 9.10, having trouble now.

Here's the line it breaks at:
g++ -c -pipe -g -O2 -O2 -D_REENTRANT -Wall -W -D__LINUX__ -DQT_NO_DEBUG
-DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED
-I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore
-I/usr/include/qt4/QtNetwork -I/usr/include/qt4 -I/usr/local/include
-Irelease -o release/jacktrip_globals.o jacktrip_globals.cpp
jacktrip_globals.cpp: In function ‘int set_fifo_priority(bool)’:
jacktrip_globals.cpp:146: error: ‘stderr’ was not declared in this scope
jacktrip_globals.cpp:148: error: ‘fprintf’ was not declared in this scope
jacktrip_globals.cpp:158: error: ‘stderr’ was not declared in this scope
jacktrip_globals.cpp:159: error: ‘fprintf’ was not declared in this scope
jacktrip_globals.cpp: In function ‘int set_realtime_priority()’:
jacktrip_globals.cpp:177: error: ‘perror’ was not declared in this scope
make[1]: *** [release/jacktrip_globals.o] Error 1
make[1]: Leaving directory `/home/oleg/Downloads/jacktrip-1.0.5/src'
make: *** [release] Error 2

Is there a possibility for a release of working beta?
Thanks.

Original issue reported on code.google.com by [email protected] on 3 Nov 2009 at 9:32

can't build on Fedora 26

Installed qt5* and jack-audio-connection-kit-devel with dnf but when i try to build with ./build in the /scr directory i get:

$ ./build
Building on Linux
./build: line 41: -spec: command not found
make: *** No rule to make target 'clean'. Stop.
./build: line 43: -spec: command not found
make: *** No rule to make target 'release'. Stop.

i've tried that on two separate machines. Am I doing something wrong or is it a bug?

Scale testing JackTrip up to 500 clients

This issue is to track JackTrip scale testing, using the jacktrip_load.py script below.

Currently, I am unable to scale past about 254 clients. For more info, see https://25ms.org/2020/07/21/scaling-to-254-and-beyond/


import re
import time
import copy
import argparse
import subprocess
from multiprocessing import Pool

def parse_args():
    parser = argparse.ArgumentParser(description="Spawns JackTrip client processes to test a hubpatch server")
    parser.add_argument("--count", type=int, default=1, help="Number of JackTrip client processes to spawn")
    parser.add_argument("--server", type=str, default=None, help="Hostname or IP address of JackTrip server")
    parser.add_argument("--port", type=int, default=4464, help="Port number of JackTrip server")
    parser.add_argument("--exe", type=str, default="jacktrip", help="JackTrip client executable")
    parser.add_argument("--sleep", type=int, default=0, help="Seconds to sleep in between each client")
    args, extra_args = parser.parse_known_args()
    args.extra_args = extra_args
    if not args.server:
        print("No server specified, using localhost")
        args.server = "localhost"
    return args

def main():
    args = parse_args()
    spawn_clients(args)

def spawn_clients(args):
    jacktrip_args = [args.exe, "-C", args.server, "--peerport", str(args.port)]
    if args.extra_args and args.extra_args != "":
        jacktrip_args.extend(args.extra_args)
    pool = Pool(processes=args.count)
    for x in range(0, args.count):
        result = pool.apply_async(run_client, [x, jacktrip_args])
        if args.sleep > 0:
            time.sleep(args.sleep)
    pool.close()
    pool.join()

def run_client(id, jacktrip_args):
    my_args = copy.deepcopy(jacktrip_args)
    my_args.extend(["--bindport", str(4474+id)])
    cmd = " ".join(my_args)
    print(f'Client #{id} is starting: {cmd}')
    p = subprocess.Popen(cmd, shell=True, universal_newlines=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
    waiting_for_peer = re.compile(".*Waiting.for.Peer.*")
    received_connection = re.compile(".*Received.Connection.from.Peer.*")
    while True:
        line = p.stdout.readline()
        if not line:
            break
        if waiting_for_peer.match(line):
            print(f'Client #{id} is waiting for peer')
        elif received_connection.match(line):
            print(f'Client #{id} received connection from peer')
    retcode = p.wait()
    print(f'Client #{id} return code={retcode}')

if __name__ == '__main__':
    main()

system:playback autoconnection at start

Dear team,

I've noticed that JackTrip:receive_X ports are automagically connected to system:playback_X when "jacktrip -c server" is started, if the ports becomes active as per the server end is available.

I'am currently using jacktrip to receive audio into an active DIY loudspeaker management system. The loudspeakers drivers are directly attached to system:playback_X, these ports are managed by Brutefir as a FIR xover and as a loudness compensated volume control. This is the system that I use:

https://github.com/AudioHumLab/FIRtro

Netjack is not affordable for me because both ends, the sender and the receiver runs Jack over an ALSA backend.

It would be nice if, optionally, jacktrip does not autoconnects to system:playback_X because loudspeakers are not attenuated here, so full power is applied to loudspeaker drivers :-(

Thank you in advance!

Best regards.
Rafael

copyright issues with published tarball

What steps will reproduce the problem?
1. download the tarball
2. extract it
3. inspect the images in documentation/img/

What is the expected output? What do you see instead?
the images embed color-profiles holding a copyright notice
"Copyright, Apple Inc."

i'm currently packaging jacktrip for debian
debian is very strict in what to include, and if some data have a problematic 
copyright, packages are usually rejected.
since i don't see any good reason why the screenshots should have a 
color-profile saved with them (esp. if it is copyrighted) it would be good if 
you could remove that :-)


What version of the product are you using? On what operating system?
debian

Please provide any additional information below.
i'd really love to have jacktrip as a standard debian package (which means it 
would come with ubuntu and all kinds of other debian-clones)

Original issue reported on code.google.com by [email protected] on 24 Nov 2010 at 3:43

Improve handling of client disconnect from hubpatch server

When a client disconnects from hubpatch server, the server prints the following error repeatedly (many times per second):

Jul 19 22:53:39 ip-172-30-0-35 jacktrip[2783]: UDP waiting too long (more than 30ms)...

This is a bit strange, because client disconnect should be a "normal" occurrence. Expected behavior would be a single disconnect notification.

Eventually, the following is logged:

Jul 19 22:53:39 ip-172-30-0-35 jacktrip[2783]: UDP WAITED MORE THAN 10 seconds.
Jul 19 22:53:39 ip-172-30-0-35 jacktrip[2783]: Stopping JackTrip...
Jul 19 22:53:39 ip-172-30-0-35 jacktrip[2783]: JackTrip Processes STOPPED!
Jul 19 22:53:39 ip-172-30-0-35 jacktrip[2783]: ---------------------------------------------------------
Jul 19 22:53:39 ip-172-30-0-35 jacktrip[2783]: releasing jacktripWorker so change patch
...

This seems to indicate that the client is being cleanly removed when no signal is detected for 10 seconds.

I think all of these logs are great for verbose/debugging mode, but having JackTrip log a single "client disconnected" event would otherwise be preferred.

A more serious problem is that this 10 seconds of UDP waiting generates a buzzing signal that is sent to every other participant on the server. It's sometimes not terrible, but it's always there, and more than once I've experieced a LOAD buzzing noise that caused everyone to cry out in pain.

copyright issues with published tarball

What steps will reproduce the problem?
1. download the tarball
2. extract it
3. inspect the images in documentation/img/

What is the expected output? What do you see instead?
the images embed color-profiles holding a copyright notice
"Copyright, Apple Inc."

i'm currently packaging jacktrip for debian
debian is very strict in what to include, and if some data have a problematic 
copyright, packages are usually rejected.
since i don't see any good reason why the screenshots should have a 
color-profile saved with them (esp. if it is copyrighted) it would be good if 
you could remove that :-)


What version of the product are you using? On what operating system?
debian

Please provide any additional information below.
i'd really love to have jacktrip as a standard debian package (which means it 
would come with ubuntu and all kinds of other debian-clones)

Original issue reported on code.google.com by [email protected] on 24 Nov 2010 at 3:42

folder-layout: please move out of top-level jacktrip/ folder

after switching to github, it seems that the entire jacktrip project is contained within a jacktrip/ directory.

since git (unlike svn) doesn't allow to clone a subdirectory of a repository, this means that after a clone i end up with a jacktrip/jacktrip/ folder for no apparent reason:

$ git clone https://github.com/jcacerec/jacktrip.git
$ cd jacktrip
$ cd jacktrip
$ cat INSTALL.txt

alternatively, downloading the zip-file for a release yields the same result:

$ wget https://github.com/jcacerec/jacktrip/archive/v1.1.tar.gz
$ tar xvzf v1.1.tgz
$ cd jacktrip-1.1
$ cd jacktrip
$ cat INSTALL.txt

The only reason I can guess to keep this layout, is to keep the front-page at github tidy.
however, the inner jacktrip/ folder only contains 8 items, and github automatically renders any README.md file found in the root, so I think that moving everything (but README.md) up one level into /jacktrip/ would be just as beautiful.

Possible AVB Support

Hello all,

I was wondering how feasible it would be for jacktrip to support AVB, or if anyone knows if there is any currently being worked on AVB software, especially for Linux?

I currently have access to a Digiface AVB device, and a MOTU AVB switch if there is anything I could do to facilitate this?

Ubuntu package UDP Socket Bind Error

What steps will reproduce the problem?
1. Start Jack server
2. On Ubuntu 13.10: apt-get install jacktrip
3. jacktrip -c 192.168.178.50

What is the expected output? What do you see instead?

guilala@Olufsen:~$ jacktrip -c 192.168.178.50
SETTING ALL PORTS
Setting JACK Process Callback...
SUCCESS
---------------------------------------------------------
The Sampling Rate is: 48000
---------------------------------------------------------
The Audio Buffer Size is: 256 samples
                      or: 1024 bytes
---------------------------------------------------------
The Number of Channels is: 2
---------------------------------------------------------
Using UDP Protocol
---------------------------------------------------------
Peer Address set to: 192.168.178.50
---------------------------------------------------------
terminate called after throwing an instance of 'std::runtime_error'
  what():  ERROR: UDP Socket Bind Error
Aborted (core dumped)
guilala@Olufsen:~$ 


What version of the product are you using? On what operating system?

Architecture: amd64
Version: 1.0.5.patch2-1ubuntu1
Depends: libc6 (>= 2.14), libgcc1 (>= 1:4.1.1), libjack-jackd2-0 (>= 
1.9.5~dfsg-14) | libjack-0.116, libqt4-network (>= 4:4.5.3), libqtcore4 (>= 
4:4.8.0), libstdc++6 (>= 4.4.0)
Filename: pool/universe/j/jacktrip/jacktrip_1.0.5.patch2-1ubuntu1_amd64.deb

Please provide any additional information below.

Happens on two different computers here with both 64bit Ubuntu 13.10

Note: i would really love to use jacktrip!..

Original issue reported on code.google.com by [email protected] on 22 Nov 2013 at 1:13

Jacktrip on Ubuntu Lucid..error with the compilation

Hello

I wanted to compile Jacktrip  on Ubuntu Lucid but even having installed the 
package qt4-dev-tools I get the following message on compilation (excuse me but 
it is in french :p ):

make -f Makefile.Release
make[1]: entrant dans le répertoire « /media/DATA/jacktrip/src »
g++ -c -pipe -g -O2 -O2 -D_REENTRANT -Wall -W -D__LINUX__ -DQT_NO_DEBUG 
-DQT_NETWORK_LIB -DQT_CORE_LIB -I/usr/share/qt4/mkspecs/linux-g++ -I. 
-I/usr/include/qt4/QtCore -I/usr/include/qt4/QtNetwork -I/usr/include/qt4 
-I/usr/local/include -Irelease -o release/DataProtocol.o DataProtocol.cpp
In file included from DataProtocol.cpp:38:
DataProtocol.h:47:19: error: QThread: Aucun fichier ou dossier de ce type
DataProtocol.h:48:24: error: QHostAddress: Aucun fichier ou dossier de ce type
In file included from jacktrip_globals.h:41,
                 from DataProtocol.cpp:39:
JackAudioInterface.h:45:23: error: jack/jack.h: Aucun fichier ou dossier de ce 
type
JackAudioInterface.h:47:19: error: QVector: Aucun fichier ou dossier de ce type
JackAudioInterface.h:48:27: error: QVarLengthArray: Aucun fichier ou dossier de 
ce type
JackAudioInterface.h:49:18: error: QMutex: Aucun fichier ou dossier de ce type
In file included from JackAudioInterface.h:52,
                 from jacktrip_globals.h:41,
                 from DataProtocol.cpp:39:
jacktrip_types.h:42:24: error: jack/types.h: Aucun fichier ou dossier de ce type
jacktrip_types.h:43:36: error: QtGlobal: Aucun fichier ou dossier de ce type
In file included from JackAudioInterface.h:53,
                 from jacktrip_globals.h:41,
                 from DataProtocol.cpp:39:
ProcessPlugin.h:42:19: error: QObject: Aucun fichier ou dossier de ce type
In file included from DataProtocol.cpp:40:
JackTrip.h:44:19: error: QString: Aucun fichier ou dossier de ce type
In file included from JackTrip.h:49,
                 from DataProtocol.cpp:40:
RingBuffer.h:41:26: error: QWaitCondition: Aucun fichier ou dossier de ce type
RingBuffer.h:43:24: error: QMutexLocker: Aucun fichier ou dossier de ce type
DataProtocol.cpp:45:21: error: QHostInfo: Aucun fichier ou dossier de ce type
In file included from DataProtocol.cpp:38:
DataProtocol.h:84: error: expected class-name before ‘{’ token
In file included from JackAudioInterface.h:52,
                 from jacktrip_globals.h:41,                                                
                 from DataProtocol.cpp:39:                                                  
jacktrip_types.h:52: error: ‘jack_default_audio_sample_t’ does not name a 
type              
jacktrip_types.h:65: error: ‘quint8’ does not name a type
jacktrip_types.h:67: error: ‘quint16’ does not name a type
jacktrip_types.h:69: error: ‘quint32’ does not name a type
jacktrip_types.h:74: error: ‘qint8’ does not name a type
jacktrip_types.h:76: error: ‘qint16’ does not name a type
jacktrip_types.h:78: error: ‘qint32’ does not name a type
In file included from JackAudioInterface.h:53,
                 from jacktrip_globals.h:41,
                 from DataProtocol.cpp:39:
ProcessPlugin.h:53: error: expected class-name before ‘{’ token
In file included from jacktrip_globals.h:41,
                 from DataProtocol.cpp:39:
JackAudioInterface.h:192: error: ISO C++ forbids declaration of ‘sample_t’ 
with no type
JackAudioInterface.h:192: error: expected ‘,’ or ‘...’ before ‘*’ 
token
JackAudioInterface.h:204: error: ‘sample_t’ has not been declared
JackAudioInterface.h:259: error: ‘jack_nframes_t’ has not been declared
JackAudioInterface.h:273: error: ‘jack_nframes_t’ has not been declared
JackAudioInterface.h:282: error: ISO C++ forbids declaration of 
‘jack_client_t’ with no type
JackAudioInterface.h:282: error: expected ‘;’ before ‘*’ token
JackAudioInterface.h:284: error: ISO C++ forbids declaration of 
‘QVarLengthArray’ with no type
JackAudioInterface.h:284: error: expected ‘;’ before ‘<’ token
JackAudioInterface.h:285: error: ISO C++ forbids declaration of 
‘QVarLengthArray’ with no type
JackAudioInterface.h:285: error: expected ‘;’ before ‘<’ token
JackAudioInterface.h:288: error: ISO C++ forbids declaration of 
‘QVarLengthArray’ with no type
JackAudioInterface.h:288: error: expected ‘;’ before ‘<’ token
JackAudioInterface.h:289: error: ISO C++ forbids declaration of 
‘QVarLengthArray’ with no type
JackAudioInterface.h:289: error: expected ‘;’ before ‘<’ token
JackAudioInterface.h:291: error: ISO C++ forbids declaration of 
‘QVarLengthArray’ with no type
JackAudioInterface.h:291: error: expected ‘;’ before ‘<’ token
JackAudioInterface.h:292: error: ISO C++ forbids declaration of 
‘QVarLengthArray’ with no type
JackAudioInterface.h:292: error: expected ‘;’ before ‘<’ token
JackAudioInterface.h:298: error: ISO C++ forbids declaration of ‘QVector’ 
with no type
JackAudioInterface.h:298: error: expected ‘;’ before ‘<’ token
JackAudioInterface.h:301: error: ‘QMutex’ does not name a type
In file included from JackTrip.h:49,
                 from DataProtocol.cpp:40:
RingBuffer.h:137: error: ‘QMutex’ does not name a type
RingBuffer.h:138: error: ‘QWaitCondition’ does not name a type
RingBuffer.h:139: error: ‘QWaitCondition’ does not name a type
In file included from DataProtocol.cpp:40:
JackTrip.h:60: error: expected class-name before ‘{’ token
JackTrip.h:61: error: ISO C++ forbids declaration of ‘Q_OBJECT’ with no type
JackTrip.h:233: error: expected ‘:’ before ‘slots’
JackTrip.h:235: error: expected primary-expression before ‘void’
JackTrip.h:235: error: ISO C++ forbids declaration of ‘slots’ with no type
JackTrip.h:235: error: expected ‘;’ before ‘void’
JackTrip.h:258: error: expected primary-expression before ‘void’
JackTrip.h:258: error: ISO C++ forbids declaration of ‘signals’ with no type
JackTrip.h:258: error: expected ‘;’ before ‘void’
JackTrip.h:287: error: ‘QString’ does not name a type
JackTrip.h:310: error: ISO C++ forbids declaration of ‘QVector’ with no type
JackTrip.h:310: error: expected ‘;’ before ‘<’ token
JackTrip.h: In member function ‘void JackTrip::slotUdpWatingTooLong(int)’:
JackTrip.h:251: error: ‘emit’ was not declared in this scope
JackTrip.h:251: error: expected ‘;’ before 
‘signalNoUdpPacketsForSeconds’
make[1]: *** [release/DataProtocol.o] Erreur 1
make[1]: quittant le répertoire « /media/DATA/jacktrip/src »
make: *** [release] Erreur 2



Original issue reported on code.google.com by [email protected] on 23 Aug 2010 at 8:01

Ubuntu 16.04.2LTS w/ jacktrip 1.1~repack-3: coredump on PtP

Hello all -

Both systems using same repos for JACK, etc., (KXStudio) running Elementary OS 0.4.1 (Ubuntu 16.04.2 LTS derivative) though I believe jacktrip 1.1~repack-3 is being pulled from Ubuntu's repos.

Server: wrkstn00: Linux wrkstn00 4.4.0-83-lowlatency #106-Ubuntu SMP PREEMPT Mon Jun 26 18:42:13 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
Client: x220-eos: Linux x220-eos 4.4.0-87-lowlatency #110-Ubuntu SMP PREEMPT Tue Jul 18 13:54:56 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

ii  jacktrip                                       1.1~repack-3                                              amd64
dpkg -l | grep "jackd"
[ .. snip ... ]
ii  jackd                                          5                                                         all          JACK Audio Connection Kit (default server package)
ii  jackd2                                         2:1.9.11+git20170722-1~kxstudio2v5                        amd64        JACK Audio Connection Kit (server and example clients)
ii  libjack-jackd2-0:amd64                         2:1.9.11+git20170722-1~kxstudio2v5                        amd64        JACK Audio Connection Kit (libraries)
ii  pulseaudio-module-jack                         1:8.0-0ubuntu3.3                                          amd64        jackd modules for PulseAudio sound server

Peer to peer connection, no router, via Cat 6 straight through (ping responses as expected @ <0.30ms). Via Cadence, both interfaces have same settings for Engine

  • RT
  • RT Priority 10
  • Client timeout 500ms
  • 256 port max
  • HPET clock source
  • Don't restrict self connection requests

Both Drivers have same sample rate (48000), 256 buffer size, 3 periods per buffer.

wrkstn00:~$ jacktrip -s
Setting JACK Process Callback...
SUCCESS
---------------------------------------------------------
The Sampling Rate is: 48000
---------------------------------------------------------
The Audio Buffer Size is: 256 samples
                      or: 1024 bytes
---------------------------------------------------------
The Number of Channels is: 2
---------------------------------------------------------
Using UDP Protocol
---------------------------------------------------------
Waiting for Connection From Client...
Client Connection Received from IP : ::ffff:192.168.1.100
---------------------------------------------------------
SuspendRefNum error
JackClient::Execute error name = JackTrip
terminate called after throwing an instance of 'std::runtime_error'
  what():  The Jack Server was shut down!
Aborted (core dumped)

x220-eos:~$ jacktrip -c 192.168.1.101
Setting JACK Process Callback...
SUCCESS
---------------------------------------------------------
The Sampling Rate is: 48000
---------------------------------------------------------
The Audio Buffer Size is: 256 samples
                      or: 1024 bytes
---------------------------------------------------------
The Number of Channels is: 2
---------------------------------------------------------
Using UDP Protocol
---------------------------------------------------------
Peer Address set to: 192.168.1.101
---------------------------------------------------------
UDP Socket Receiving in Port: 4464
---------------------------------------------------------
Waiting for Peer...
SuspendRefNum error
JackClient::Execute error name = JackTrip
terminate called after throwing an instance of 'std::runtime_error'
  what():  The Jack Server was shut down!
Aborted (core dumped)

Please advise is further information need be provided. TIA.

Installation instructions in INSTALL.txt no longer valid for OSX

According to INSTALL.txt:

$ git clone https://github.com/jcacerec/jacktrip.git
$ cd jacktrip/jacktrip/src
$ sudo cp jacktrip /usr/bin/
(enter your password when prompted)

$ sudo chmod 755 /usr/bin/jacktrip
(now you can run jacktrip from any directory using Terminal)

This suggests that the src folder contains a binary called jacktrip which it doesn't.

Also, when attempting to compile using the following instructions:

If you're on Mac OS X or Fedora Linux and have all the dependencies installed,
you can build by simply going to the /src directory and typing the following:
./build

This doesn't work. I get the following:

clang: warning: no such sysroot directory: 'macosx10.9'
In file included from DataProtocol.cpp:38:
./DataProtocol.h:46:10: fatal error: 'netinet/in.h' file not found

include <netinet/in.h> //sockaddr_in{} and other Internet defns

     ^

1 error generated.

Seems this file is well out of date. Suggest the out-of-date instructions should be removed (in the first instance) or updated (ideally).

Add manpage

Manpage is missing. Especially packagers like to have manpages. There should be a way to have one source that can generate help and man.

does jacktrip implement zero copy?

Does jacktrip implement zero-copy protocol?

iperf3 has a zero copy flag, so knowing whether or not jacktrip uses zero-copy would help inform the test parameters

thanks!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.