« Garageband Updated with Audiobus! | App News | Sonic Touch #22: Arturia iMini vs Model D »

JACK Audio Connection Kit

Crudebyte has released JACK Audio Connection Kit for iOS as a way to connect apps for both audio and MIDI between apps. Previous JACK has been used for many years on desktop OSes, with a lot of popularity among Linux users.

This is a direct, and free, competitor to Audiobus so I feel I should put in some disclaimers here. I have personal and professional relationships with both of the Audiobus developers. Hell, I was playing StarCraft 2 with Sebastian earlier this week.

All that said, I'm very excited about JACK! Unifying MIDI and Audio in a single app is godsend when we still have a mess of different VirtualMIDI implementations between developers. For the most part they've got VirtualMIDI figured out, but it is always slightly different between each developer and just different enough to be confusing for users. JACK has the potential to make this a thing of the past, with all MIDI from all apps being routed visually in the same app. I've been speaking with the developer this morning and he pointed out that nothing is being dictated by JACK here; you can still use good old VirtualMIDI if you prefer while JACK handles the audio!

The interface is not as streamlined as Audiobus, but the more modular view is helpful to create very specific routing. In Audiobus if you throw in an effect all of your inputs will be routed through that before reaching the output. With JACK's architecture you could route a single app through an effect.

I emphasize the could part of that. This was just released and so far the only apps on iTunes that support JACK are those of the developer. Presently that is just MIDI Wrench, a useful free MIDI diagnostic app, and CMP Grand Piano. CMP Grand Piano is a quite serious piano app, but it will take up a serious amount of your iPad storage at 1.7GB!

Users should be excited about this, there is no "buy in" on your part. Developers will have a tough time deciding how to allocate their time though. It only takes an hour to implement either JACK or Audiobus, but there are support issues when implementing third-party SDKs. Between JACK, Audiobus, and Sonoma's AudioCopy/Paste, we ask this of Devs quite a lot.

iTunes Description:

JACK is more than just one app. It is a system that connects the music and audio world on your iOS device. JACK allows audio channels and MIDI ports of your audio & music apps to be connected with each other. It does not force a predefined schema in which way apps shall be connected with each other. You can freely connect them in any way you want, intuitively like drawing on a paper. Besides audio & MIDI interconnection, JACK provides other very useful mechanisms to let your audio apps work together like never before. For example record/playback synchronization between DAWs and sequencer apps. Arbitrary data sharing among apps and much more. Even though JACK is quite new on iOS, it already came a long way. Providing you the most professional and powerful environment for your audio apps, highly optimized with explicit multi core support, low latency and maturity which it gained over many years of usage and development on other operating systems already. JACK is an open standard, which can freely be supported by anybody.

Current Features:

  • Audio connections between apps and external devices.
  • MIDI connections between apps and external devices.
  • Record/Playback synchronization between apps.
  • Multi Core CPU support for high performance (parallelized internal audio graph).
  • Low Latency Performance (configurable, i.e. 2ms buffer sizes).
  • Arbitrary, custom data sharing among apps (allows easy extensions of the system).
  • Arbitrary amount of audio & MIDI ports per app, changeable at runtime.
  • Intuitive user interface that allows you to easily manage all audio and MIDI connections, environment settings, monitor current overall CPU usage and more ...

Buy JACK Audio Connection Kit on iTunes: Free

Buy MIDI Wrench on iTunes: Free

 

Buy CMP Grand Piano on iTunes: $8.99

Reader Comments 26

I installed it before reading the whole article and wondered why it did not work.

March 20, 2013  | person_outline nil

I'm really excited about this! A little competition never hurt anyone--especially if the price of entry is 'free.' JACK is a stable, established interface, and as much as I am rooting for Audiobus, I'm also rooting for JACK too! :-)

--Sean

March 20, 2013  | person_outline Sean Ercanbrack

It does work.... With the 2 apps it works with.....

The midi integration is what AB lacks

March 20, 2013  | person_outline Bianca

I'll bet Audiobus gets MIDI, and I'll bet this app encourages the Audiobus developers to step up their already great game--Win/Win for all! :-)

--Sean

March 20, 2013  | person_outline Sean Ercanbrack

Sonosaurus has announced support for their products as of this morning:

https://twitter.com/thumbjam

--Sean

March 20, 2013  | person_outline Sean Ercanbrack

Like the modular, love the MIDI, hate that I can't use it right away with all of my apps!

March 20, 2013  | person_outline Jesse

Initially very excited to see JACK on iOS but then remembered what a PITA is was running in Linux.When it did work is was great hope its is simpler to setup under iOS.

March 20, 2013  | person_outline AlexK

So far, the audio integration seems very straight forward. It took a couple of hours to get Live Guitar running, and should be ported to the other apps shortly. It would have gone faster if I didn't make a couple of stupid errors. The real question is "where do we actually want to go with the audio"?

Jack MIDI stuff, I'm not sold on. Virtual MIDI is much better, IMO. I understand the desire to have a place to rearrange MIDI connections (MIDI Bridge), but I don't see the need to have the audio and MIDI bundled together. Where my MIDI connections go, and where my audio connections go -- two different things, two different kinds of "wires." I think there's a better solution than what I'm seeing here.

Will I support Jack? Yes; pretty easy to do, and no compelling reason not to do it, IMO. Is it better than Audiobus? No, I don't think so (the AB remote pop-out panel is an awesome feature that doesn't get the respect it deserves!). Will it simplify MIDI routing? No way.

But, man-o-man, is there a lot of action in the iOS music world over the past couple of days.

March 20, 2013  | person_outline Fessaboy/Secret Base Design

Good work (as always) Fessaboy.

March 20, 2013  | person_outline Trueyorky

Thanks Fessa for the excellent developer insights! What about the MIDI didn't you like? It seemed to me, with the 2 apps available, that MIDI and Audio could be routed independently in JACK.

ok but which one has the better latency ???

March 20, 2013  | person_outline okidoki

I agree with Fessaboy regarding the AB control panel. Many times I've loaded AB just for that, when no audio streaming between apps was needed.

March 20, 2013  | person_outline iClifDotMe

Ok, so the MIDI stuff... It's possible to create MIDI input and output ports fairly easily, and these are essentially pipes that send MIDI messages in and out. All of the routing has to happen within the Jack app, as far as I can tell. The Jack MIDI universe seems to live completely outside of the Core MIDI/Virtual MIDI universe.

One of the things that I don't like is that a controller app can't switch where MIDI goes. As an example -- my MIDI Control app has dual keyboards, and you can configure them differently. I can send MIDI to Animoog with the top keyboard, MIDI to Magellan on the bottom, or mix and match any way I like. If I want to switch which app gets the MIDI, I can fix this with the interface right at the keyboard -- I don't have to switch to Jack, and then switch back. The next release of MC will also allow multiple MIDI configurations per control surface -- think of it like a bank select button, where you can easily toggle quickly and easily between different MIDI destinations.

Suppose you have a sequencer app -- you could set up things to send to Jack -- but you'd need to assign each channel within your sequencer, then go into Jack, and manually make a bunch of connections. Isn't Virtual MIDI (where you could just tell each track where you want things to go) easier? When you switch from song to song, wouldn't it be better if the sequencer app handled all of the MIDI connections for you, rather than having to go to Jack for that?

Core/Virtual MIDI also offers precise timing on the delivery of MIDI messages. For a sequencer app, you can send out MIDI messages with precise delivery times -- and iOS gets them there *exactly* when they're supposed to arrive. I don't see anything in Jack where they can guarantee the delivery time of a message, so I think you'd wind up with more jitter than with iOS.

I currently support DSMI in my apps, so I'll support Jack too -- but given a choice, I think the Virtual MIDI solution is the way to go. MIDI Bridge is a decent patch-bay for that (with some really complex filter possibilities). What would great would be a solution where there were control surfaces, MIDI routing, and Audiobus, all rolled into one. It would be cool if someone were working on that (*cough*).

** Tim. Check your Testflight account. Don't know where you could take the audio after it gets to Jack, but Jack audio does in fact work, and it's not too hard to code up.

March 20, 2013  | person_outline Fessaboy/Secret Base Design

JACK on Mac OSX has been around for years, and has always been a doddle to set up. Since iOS is essentially Mac OSX anyway, and Core MIDI/Audio and integrated part of OSX this is hardly surprising?

March 20, 2013  | person_outline tom_tm

I tried out MIDI control of CMP Piano from PolyPlayground. Worked perfectly, no setting up required UNTIL I loaded CMP Piano into Jack, then nothing. No way to get it working again other than taking it out of Jack. Would be nice if Jack allowed external MIDI routing for apps loaded up to route audio, but so far, the evidence suggests otherwise.

March 21, 2013  | person_outline Paul

The SDK isn't bad at all. The MIDI.... Do Not Want.
http://youtu.be/72Eka19J_zQ

March 21, 2013  | person_outline Fessaboy/Secret Base Design

The most shocking thing about this article is that Sebastian has time to play Starcraft 2.

No fun allowed until we have Midibus!

March 21, 2013  | person_outline Skippy

@Skippy

Programming IS fun, besides, all work and no play, etc... :)

March 21, 2013  | person_outline gatearray

Fessaboy, thanks for your work and interesting infos!

As a JACK user myself, please keep in mind that MIDI events in JACK are timestamped, they just raw MIDI events with a timestamp attached (timestamp measured in audio frames (samples), so the resolution is 1/samplerat.e ig 1/44100 = 22 usecs.
http://www.crudebyte.com/jack-ios/sdk/doc/struct__jack__midi__event.html

You can use the jack_connect() and jack_disconnect() to connect or disconnect a pair of audio or MIDI ports
http://www.crudebyte.com/jack-ios/sdk/doc/group__PortFunctions.html#ga4e1e75b151b88575d12fd86c3b824ba4

You can do it from any app that is JACK compatible so you can have external patchbays (like qjackcontrol , http://qjackctl.sourceforge.net/ ) or write your custom GUIs or even automate the process of connecting, disconnecting, rerouting.

Of course in JACK, MIDI ports are internal, they are separate from CoreMIDI ports since JACK is a cross-plattform system, and the goal is to have an interoperable Audio/MIDI API, regardless what the underlying Audio/MIDI API of the OS is.

I did not check if Virtual CoreMIDI ports show up in JACK yet. If not, I will contact the JACK iOS devs and ask to implement it. (Should be trivial since the API for virtual and physical CoreMIDI ports is the same).

I agree with you that this is very useful, because you can then just pipe MIDI data from apps supporting Virtual MIDI into JACK and then route it there to all apps supporting JACK.

Of course if you implement Audio support via JACK in your app, you are free to open a Virtual MIDI port and use that instead of the native JACK MIDI API, but in my opinion if JACK supports Virtual MIDI ports, there will no need to do so in future since for the developer it's easier to use a single API to handle everything ( Audio, MIDI, transport control, custom data).

March 21, 2013  | person_outline jackuser

Thanks for adding more clarity to the debate jackuser, appreciate it.

March 21, 2013  | person_outline Green on the outside

Okay, non dev here. what i want to know is if this thing can handle 24 bit audio? thats whats lacking in AB and many apps. If it can, that'll make me want to try and use this more for serious music making. Garageband is a joke. does anybody really think U2, NIN, Dr.Dre (name any other well known artist) use garageband for serious music making? If auria works with jack and jack can do 24 bit, thats what'll set it apart

March 25, 2013  | person_outline whatevers clever

AB uses (I think) 16 bit/44.1 per channel between apps, which is more than enough -- it's at least CD quality. Michael and Sebastian are no dummies; they did it right. Because all of the audio is digitally generated, there's no "noise floor" to worry about, which might ordinarily justify 24-bit (or so a handful of audiophiles claim). JACK seems to use 32-bit floats (that's what I've seen on the interface), but I don't believe that's an advantage -- if anything, it could be a barrier due to increased bandwidth requirements (resulting in higher latency, more glitches, less audio processing). Bottom line is that both systems have great sound quality; this is not something to worry about.

What we have now for a few hundred bucks on an iPad is better than what the Beatles had (or U2, NIN, Dr. Dre, back when they were starting out and making names for themselves). What matters most is the song writing and the performance. If you've got the song and the chops, you can record into a cassette deck, and you'll get noticed. If you don't have those two, all the equipment in the world won't matter.

Here's a good article on the topic -- http://tweakheadz.com/16-bit-vs-24-bit-audio/

Now get off of my lawn, and go write some great music. That's the hard part. And learn how to perform it. That's the other hard part.

March 25, 2013  | person_outline Fessaboy/Secret Base Design

here's a visual demo of 'noise floor'. about 9 minutes in. (worth watching all of it though, and the first episode too).
http://www.youtube.com/watch?v=d7kJdFGH-WI

March 25, 2013  | person_outline a1

@Fessaboy/Secret Base Design

"...go write some great music. That's the hard part. And learn how to perform it. That's the other hard part."

I got words: PRE + CISELY

People need to get off the tinkering mindset and just start producing stuff, trial and error, with or without music theory classes, tons of practice practice practice. There is a large chasm between getting the main jingle out of your head and into the ipad (which is so much easier these days... we went a long way since 2010) AND actually make a whole beginning-to-end song. And I'm not talking about making a chart topper, just something that people can recognize as a song. If I did that, I would be a happier man :)

March 25, 2013  | person_outline hoyas79

@Fessaboy So true on the 'just write something good' front. You can really hear it on records made before 1965. A few mics in a room, a good song and talented people creating and capturing it... So much magic. On one track, occasionally two.

On the iPad vs Beatles gear front though... I get your point but I'd definitely take Abbey Road 1967's gear over mine! I'd throw in 4 or 5 extra iPads with every app on the store for good measure. And my truck. Especially if it came with John Leckie as a tape op!

March 26, 2013  | person_outline Will

itunes update live now..."virtual midi ports activated"

April 05, 2013  | person_outline a1
comment

  Post a New Comment

Anonymous comments are closed for old articles. If you'd like to comment please Register.

Comment:

Do not use HTML in your comments. Tags: [b] Bold Text [/b] [i] Italic Text [/i]
Links will be generated if you include http:// or https:// at the beginning of a URL.
Submit