vicwomg / jamtrip

Front-end GUI for JACK and JackTrip for people using it for realtime music collaboration
MIT License
26 stars 1 forks source link

JamTrip

A graphical user interface (GUI) front end for JackTrip and JACK, specifically for real-time internet music collaboration (AKA "jamming").

The goal is to be as simple to use as possible, since many musicians have had a hard time setting JackTrip up. By contrast, JamTrip does not require manually launching multiple programs, configuring them, connecting audio routes, nor using the command line. It handles all of that for you in one single app.

Wanna leave me a tip? Well, shucks! Support me here:

Buy Me A Coffee

Check out CCRMA for more information about the amazing JackTrip project that makes this possible.

Requirements

Installation

Install JACK and other packages

JACK is software for routing your audio channels to various destinations. In this case, it is used to send your audio inputs to your headphones and over the internet (using JackTrip).

OSX

Windows

Install JamTrip

Configure your hardware and sound settings

Usage

Client mode

To connect to a JackTrip server, enter the "Connection code" you get from the person hosting the server and press "Connect".

As a test, you can use the sample code listed under the "Example" field to do a quick connecttion to Stanford's test servers: jackloop256.stanford.edu_48000_256_h_b16_q4_r1. After connecting, you should hear your microphone being monitored through your headphones and a periodic clapping sound. If so, you should technically be able to connect to any hosted JackTrip server.

Hit disconnect to disconnect from the server.

Server mode

To host a JackTrip server, click the "Host a server" tab in the app, configure your audio (the defaults seem optimal in my testing) and click "Start Server". Then send the listed "connection code" to the other party and have them follow the instructions in the "Client mode" section.

Once you're both connected, you should see the "connected!" indicator and you should both be able to hear each other!

Note: For server hosting to work, you need to have TCP/UDP port 4464 open and if using hub mode, additionally TCP/UDP ports 61000-61020 (depending on how many concurrent connections you want to support. Regular servers are one-on-one connections. Hub mode allows 3 or more people. For info on how to forward ports, this article is pretty good.

Building JamTrip

This is only necessary if you want to contribute to this project:

OSX, Linux, and Windows

Requires node js: https://nodejs.org/en/

yarn
yarn package

This builds the current platform executables into the ./release directory.

Raspberry Pi

Note: in order to build for raspberry pi, there are extra steps:

Install node using these instructions (don't just apt-get it!) https://linuxize.com/post/how-to-install-node-js-on-raspberry-pi/

Install these packages (the ffi version matters!):

sudo npm install --global yarn
sudo apt install ruby ruby-dev libffi-dev rpm
sudo gem install ffi -v 1.9.21
sudo gem install fpm
yarn
yarn package-pi    # for a unpacked dir with the executable file
yarn package-pi-deb    # for a deb package file
yarn package-pi-rpm    # for a rpm package file

Details

In order to simplify setup, JamTrip makes the following assumptions:

More exotic setups such as wanting to send multiple input channels and stereo mixes and other kinds of routing would probably be better suited for using JACK and JackTrip directly for now, but if there is enough interest can be added as new configuration options later.

Built in Electron + React