JACK - Setup to route audio to/from any ASIO application!

Short technique, but I wanted to log this in the forum somewhere.

If you ever want to route to or from any ASIO program (like Ableton Live), JACK will do it (tested on Windows, not mac).

There’s one trick - USE 32 BIT EVERYTHING!
If your Jack, TouchDesigner, and other programs are 32 bit versions, everything should work correctly with the following steps. (64 Bit versions of everything gives the following error message - “Warning: Audio driver not detected: ASIO2. Unable to initalize ASIO. :Open Error: is JACK server running?” )

  1. Download 32bit TD, and the 32bit install of jack from [url]http://www.jackaudio.org/[/url].
  2. Install Jack
  3. Launch JackControl
  4. In the setup menu, select the following options:
    4a) Driver: PortAudio
    4b) Frames + Sample rate to desired settings
    4c) Click on the ‘>’ dropdowns to the right of Input Device and Output Device and select your desired sound device
  5. Press the Start button

If all goes well, you should start up and see an increasing timecode.

To add Touchdesigner:
6) Start TD 32Bit
7) Create Audio Device In or Out, and change Driver to ASIO and Device to JackRouter
8) Make sure your sample rate matches
9) Back in JackControl, press ‘Connect’. You should now see 4 inputs and outputs under touchdesigner088 labels, and now the channels should be available in TouchDesigner.

If TouchDesigner / other programs fail to appear in the connection bay, you may need to manually register the .dll by opening cmd.exe and entering in the following:
regsvr32 “C:\Program Files (x86)\Jack\32bits\JackRouter.dll”

  1. Connect other programs with the ‘Connect’ Dialog!

If you want to edit the number of connections (defaults to 4 mono channels for both in and out), edit ‘JackRouter.ini’ in the 32bit folder of your jack installation accordingly.

If you use 64-bit TouchDesigner are you finding issues with Jack? 099 does not have a 32-bit build…

I’ve managed to get this to work however the audio coming out of Ableton and the audio coming out of my Audio Device IN/OUT CHOP is inconsistent.

The sound coming out of TouchDesigner is delayed slightly, making the animation move out of sync to the output of Ableton.

Any ideas what could solve this? I’m already using ASIO and an Audio Interface to reduce latency, but the issue seems TD-side. Thanks in advanced.

Is there any reason you need the actual audio? I still haven’t found a real use case for sending full audio streams to TouchDesigner from Ableton when so many free Max for Live patches exist that you can put on a channel that does simple analysis and then sends OSC on the network. I’ve used many setups like that and there isn’t much delay at all.

It’s not exactly audio from Ableton that I’m trying to retrieve.

The setup I envision was having 2 Laptops, one for audio and another for visuals. The Visuals laptop has an Audio Interface which will process this into TD.

At the moment I’m simulating that on my Desktop by routing audio from Ableton. Alternatively, I’ve been testing the latency using Audio Device In CHOP an a microphone.

The audio being processed is delayed enough so that the reactive visuals don’t look in sync.

I’m trying to ascertain if the issue I’m having is a hardware one (currently using a Scarlett 2i2 Interface) or a software one (adjusting parameters in TD or setting up a plugin within TD).

I found a possible solution in this thread, however I’m unable to set a higher FPS for my audio input, while maintaining 60 FPS for my visual

viewtopic.php?f=9&t=8509&p=32097&hilit=audio+device+in#p32097

Basically, I’m trying to minimize or remove the noticeable latency of the audio coming into TD, so that my visuals are syncronized with what’s played out, regardless of the source.

EDIT:

Reading your post again, it seems like you’re saying that you’re processing the audio on Max4Live, and giving out the data to TD to process.

I was looking to do all of the processing in TD for simplicity’s sake, because TD does have the tools for audio analysis.

However if it’s not feasible to do this on TD in real-time, getting snippets of data from Max might be the way to go.

EDIT2:

Just having a play around with AudioToOSC, seems like the way to go to get things moving for now. Thanks!

It does have those tools but I find a little bit of time in Max MSP can really go a long way. Also, I mention below because you shouldn’t have a terribly long delay, but I still recommend sending OSC data. It lets you use all of Max MSPs great audio tools, and then send just the data you need over.

You were using ASIO before? ASIO would have lower latency then DirectSound or similar drivers. Have you tried using Ableton as the input on your visual machine? Ableton is pretty reliable for software, so if you still had the latency issue (which you could compare with headphones on both machines), then you know its outside of TouchDesigner, somewhere between driver and the sound card. Did you lower the buffer size in the ASIO settings and all that good stuff?

Cheers for the response. I wasn’t aware of OSC data when I started the A/V project in mind. It does seem like the way to go. Using AudioToOSC, I can add send OSC data for each channel/stem into TD.

I’ve tried using Ableton as my input, however my audio latency issue still persists. That being said, I haven’t done extensive testing of routing methods. To replicate the current OSC setup , I’ll need a better soundcard on both ends to send audio information.

Changing the ASIO settings did improve my latency, but not to the same extent that using OSC data yields.

The only reason I wanted to analyze the spectrum was to isolate certain frequency ranges and influence my visuals based on the filtered amplitude. However, as I have my exported my stems into Ableton + AudioToOSC, I can achieve a more refined result.

EDIT: The latency seems to stem from the fact that TD only processes at 60FPS. I was unable to find a solution from that route of investigation and the answers I was getting were a bit vague. I should be all good for now looking into OSC methods.

viewtopic.php?f=9&t=8509