Quaxtrip - low latency audio over the internet in Max - built on Quacktrip/JackTrip

Quaxtrip is a set of Max patches that makes low-latency uncompressed audio and messaging interconnections over the internet, intended for musicians wishing to play together remotely.

Quaxtrip runs Miller Puckette’s Quacktrip Pure Data patch within Cycling ‘74’s Max. Quacktrip, in turn, is an implementation, in Pure Data, of Chris Chafe’s JackTrip network protocol, based on jacktrip.pd by Roman Haefeli and Johannes Schuett. It establishes a low-latency, point-to-point connection between two sites, with no audio compression. Quaxtrip allows up to four of these connections, allowing an ensemble of up to five players at once.

If you’re familiar with Quacktrip for Pd, Quaxtrip works more or less the same, just with a Max facade and a growing list of extra bells and whistles. In fact, since it’s actually running Quacktrip (though hidden in the background) through the pd~ object, it’s even compatible, so you can have one peer running Quacktrip in Pd that is streaming to/from another peer running Quaxtrip in Max. Quacktrip/QuaxTrip simplifies the process of streaming by using a server to connect peers (though once connected the streams are peer-to-peer), bypassing the need to set up port forwarding on your router. You don’t even have to know each other’s IP Addresses.

The basic use of Quaxtrip simply requires you to plug some sound into your audio interface. Once you’ve got Quaxtrip installed properly, a basic session setup can be as simple as:

  • Plug something into your audio interface.
  • Launch Quaxtrip.
  • Set the Call Name box.
  • Toggle On.
  • Wait for your partner to do the same.
  • Rock out.

For more advanced Max users that want to integrate existing patches, Quaxtrip adds a few conveniences that I hope will make this easy. Rather than tearing Quaxtrip apart in order to add streaming to your own patches, you should be able to add some hooks to your patch and run it side-by-side instead. These features include:

  • receive~ objects so you can send audio from your patch instead of audio from the interface.
  • Busses on the local channel for inserting effects.
  • send~ objects on the main output and individual channels.

In addition to the audio stream(s), there is a messaging system to allow the sending of Max messages (symbols, numbers, lists). This works for the types of things you might have previously used the udpsend object for.

Requirements

Download

Quaxtrip can be downloaded here:

Or, if you prefer, clone the repository:

Note that there are some dependencies (Pure Data & PdMax, in addition to Max) so be sure to at least read the Installation section of the included Manual.pdf. Once installed, the Quick Start section of the manual should get you up and running. There’s much more information in the Manual for advanced uses. I know you’re gonna skip that :wink: but it’s there when you need it.

I hope you find this useful. Please let me know how it goes.

22 Likes

Answered my prayers! :raised_hands:t4: I’ve been looking for a way to send messages between me and my friend’s patches! This opens up so much :slight_smile:

Miller Puckette and I were (virtual) guests in Brad Garton’s class at the Columbia Computer Music Center to talk about Quacktrip and Quaxtrip (respectively). The video of the Zoom call is posted here:

My part is a pretty pedestrian overview of Quaxtrip, but Miller goes into more background info about network sound in general.

8 Likes

I’ve made the first major(ish) addition to Quaxtrip since launch. Rather than use a hardware mixer to get my synth setup into the computer, I tend to go directly into my multi-channel audio interface and do the mixing in software. Since Quaxtrip’s release I’ve developed an evolving set of patches to manage my personal integration with Quaxtrip. Figuring that there are likely others who work the same way, I decided to build this functionality into Quaxtrip. When you launch the mixer, you can combine up to eight stereo or mono channels to send to your remote peers as a mono or stereo mix.

There are a few other changes to the patch as well. Two separate mutes — local and remote — were added to the Local Input. This allows you to isolate the remote signals for local monitoring or prevent your signal from being sent to the remote partner(s), respectively. There also were changes to the send and receive objects you can use to hook into Quaxtrip in your own patches. This is a breaking change, so sorry about that, but the old strategy was too confusing.

There was also a minor bug fix or two, so I do recommend all users download this version.

I am planing more features in the coming weeks or months. Here’s some of the stuff I’m thinking about adding:

  • Synced recording of the local input of each performer.
  • Remote clock signal sharing (although it recently dawned on me (duh) that if you have a device with tap tempo, you can pretty much accomplish this manually without fancy clock sharing, but I never met a problem I couldn’t over-engineer…).
  • More robust text chat.

If you think of anything else you’d like to see added to Quaxtrip, don’t be shy. I’d like Quaxtrip to be useful for Max experts and novices alike, so I’ll do as much as I can to make it useful for a wide variety of users.

Installation instructions in the top post of the thread.

3 Likes

This is really exciting and just what Ive been looking for, just found it bc of the '74 article. Excited to try this out

2 Likes

wowow so cool! (and twenty characters)

if anyone is interested we should set up a session and send data to each others patches! or audio of course

Hi Damon, this is truly ground-breaking and we are planning to incorporate Quaxtrip into our Third Space Network platform for online live performance. We are currently working with LiveToAir, a call-in system from Gnural Net. While their WebRTC video works fine, the sound is less than what musicians would require. So we are thinking of integrating Quaxtrip with LiveToAir to have a more complete audio-visual platform for virtual theater & musical performance. I’ll keep you posted because it would be great to consult with you on this. You can find us at: https://www.thirdspacenetwork.com (PS: I was at IRCAM in the 1980s when Miller was giving birth to Max, have been using it since the very beginning. )All the best, Randall Packer

3 Likes