Don’t fret. An iPad can open up new ways of touching musical ideas.

What if you could touch sound more directly, using sophisticated sensing to play between most common notes – even with hundreds of levels of microtonal pitch? Cantor lets you do just that – and it’s here now, proving that Apple will indeed allow the use of a little-known API for sensing finger area. (Hey, Apple: please, please keep this around, as it’s essential to making the iPad more expressive.)

It’s an important development, and it’s real and something you can use right now, today. So, we provide a look at this from two angles. For end users, we have an in-depth hands-one from Brian Ginsburg (aka Guaranath), a musician working with Cantor. Brian describes in practical terms how you can use this in your music. For developers, we dive in deep with creator Rob Fielding, who provides insight into the techniques used to create the application, talks about why it’s relevant, and even shares some code. So, if you just want a fun toy for your iPhone, or your idea of a fun Saturday night involves Xcode, we’ve got something for you.

See what the fuss is about in the hands-on video at top. Now, I’ll let our user – and developer – take it away.

The User, Hands-on

Brian sums up the idea behind the app, which builds on Rob’s previous work as a core developer of the Geo synth:

It has a few improvements, as a controller, over Geo synth – finger-area sensing for velocity and aftertouch messages (ala Orphion), individually assignable frets in a few different tunings (from 7-tet to 665-tet).

And Brian also tells CDM what it’s like to get your fingers on the software:

Experiencing the app: I’m using this app as Midi controller, both with other backgrounded ios apps (Thumbjam, Arctic Keys) and as a controller for softsynths (VSTi) in my DAWs (Podium and Reaper).

Impressions: Very positive overall. That being said I am happy with this app simply being a powerful and capable Midi controller/instrument. It GUI is not particularly attractive and it has only a rudimentary wavetable sound engine. So clearly, this is not an app for everyone.

My setup I have an iPad 2 and a 4th generation iPod. The app runs and works smoothly on both. My PC setup is Windows 7, 64-bit machine (connected to my home network via ethernet cable). For control of the PC VSTi I am using a Wifi Midi connection hosted by rtpMidi, at least until I scrape together the money to get a wired Midi connection setup. I have likely too many ios music apps, but have found myself attached to my PC for the most part (due to — processing power, love VSTs, not many ios apps support microtonal music…)

Playability and musicality: Fantastic. I principally write microtonal/xenoharmonic music so, in that regard, this app is a godsend for me. Geo synth was a good start, however the ability to assign individual frets within 7-tet, 12-tet, 19-tet, 31-tet, 53-tet (Pythagorean/close just intonation approximation), and 665-tet has been a giant leap forward in my opinion. (Incidentally, the derivations from 12-tet are established via pitch-bend messages). I should also say that my training includes 10+ years of Hindustani classical vocal music, so not only are the microtonal capabilities of this app important to me, but it’s facility with pitch-bends is vitally important to me as well.

There is a small learning curve in getting accustomed to this app as it’s layout is a bit unique – it’s setup is a bit like a guitar fretboard, however it consistently skips perfect fourths and disregards the G-B skip used on a typical guitar. The layout is consistent with Geo synth and Rob Fielding’s first app Mugician. I have heard a couple of guitarists bemoan this variation from the guitar fretboard; however, I think it makes a lot of sense for consistent chord and arpeggio layouts. I have also found it a lot easier to learn chords and patterns than it was when I leaned to play guitar – you have the notes labeled right in front of you!

The finger-area sensing velocity functionality of this app works fantastically well and is quite adaptable in these regards: 1) Initial velocity response: when you tap with the tip of your finger, less initial velocity – when you use more finger pad, a larger initial velocity signal. This makes a lot of sense in terms of correlation between a lighter versus harder tap/strike, 2) Aftertouch: accomplished by lifting or depressing your finger pad, 3) A velocity slider to to establish a range (or perhaps also median?) for the velocity signals, 4) Sensitivity slider: Adjusts the finger-area sensing to allow for both fat and thin fingers. (Note: It think that items 3 and 4 make it a lot more useful than Orphion, which I also own. The same holds true with the ability to assign individual frets and therefore any scale/mode).

Another set of useful features (which were present in Geo synth) revolves around the pitch-bend capabilities of Cantor. Note that compatibility of these features varies from app to app and synth to synth. The ios apps that I know which fully support the Midi protocol used here include: Thumbjam, Arctic Keys, and Sample Wiz. Rob Fielding’s claims that Kontakt4, Korg Karma, and some other hardware synth support this Midi protocol as well (I cannot confirm those)…. Ok, those features are: huge pitch-bends, pitch-bends in a leading line while holding a chord below, independent pitch-bends within a polyphony group. This is all carried out via a note-per-channel protocol with larger pitch-bends being passed along to new channels as needed. If you have time and inclination, Rob Fielding’s blog has a post called “An Ideal MIDI-compatible protocol” – however it is a rather long and dense ‘wall-of-text’ with a few coding references involved. Of further interest, and this is perhaps an ‘another story, another day’ situation, Rob Fielding has been engaged in a public discussion with a representative from the MMA regarding the future of Midi and Midi compatibility in regards to new paradigms in iOS hardware (https://groups.google.com/forum/#!topic/open-music-app-collaboration/2eBccjI0q0g)

Lastly, this app also uses the octave-rounding/auto-octave feature present in Geo synth. This allows you to play very fast runs and arpeggios across multiple octaves by simply playing the repeated pattern over the same set of keys (or ‘frets’).

The Developer, Behind the Scenes

Part of why Cantor is a big deal is, it wasn’t even clear that finger-sensing apps would be allowed on the store at all. Rob Fielding has done some additional research, and explains:

After TenOne had an app rejection with their pressure-sensitive-stylus demo, and not saying exactly what they *did* (I think they were literally linking to private APIs, which we are not doing at all), there was always this assumption being made that we could not use finger area sensing. We asked Apple for 2 years and got no response. We saw nobody else using it openly and getting approved until Orphion, but we never saw anybody brave enough to try it publicly and get rejected either.

1) Orphion uses this feature very prominently, and was getting
featured in the store.
2) Cantor is also using it prominently and mentions it in the description.
3) Mugician does it too, but it’s disabled (not “hidden”… “disabled by default” hehe..) by default and must be re-enabled.

First, this is all it is. A public API call to valueForKey to look for “pathMajorRadius”, which is the long radius of the oval made by your fingertip. This property might not exist, either in the simulator, or in future builds, so you have to handle the case where it disappears. The beauty of it is that it comes not only on touchBegin but on touchMoved so that it’s an aftertouch effect, unlike the “GarageBand accelerometer hack”:

float vf = 10.0;
id valFloat = [thisTouch valueForKey:”pathMajorRadius”];
if(valFloat != nil) { vf = [valFloat floatValue]; }

The accelerometer trick that GarageBand uses, IMHO is almost useless for multiple reasons.

You need overall fingertip-to-speakercone response somewhere in the 30ms range for these instruments. The accelerometer must be sampled at such a rate that you can get a good reading *before* you get a touchBegin, which can eat a lot of CPU. For an in-process synth, you can use it to modulate the attack envelope and be a little late. But if you must send a MIDI message immediately when you get a touchBegin, you can’t wait around for a few accelerometer samples (ie: 60hz of them). The signal is also very noisy, making it almost useless.

Dynamics must be accurate to matter; not simply add noise to signal. GarageBand’s velocity sense via accelerometer is not great, though it might not be the best it can be. In any case, I tried to also add accelerometer sensing to Cantor and Geo, and the result just effectively randomized things; so was taken out.

Accelerometer readings don’t do aftertouch (touchMoved), so the idea that it’s some useful substitute is a ridiculous assertion. Aftertouch is extremely important in Cantor and Mugician (and was in Geo Synthesizer before we removed it in order to ship).

A big chunk of code used in Cantor – the fretless MIDI generation tools – is available as free software; have a look at the source:
https://github.com/rfielding/DSPCompiler

Go Grab It

Find Cantor at CDM Apps

Cantor Released [iOS Musician]
More videos, all relevant to this release even for the older apps, as each app from Rob has built on the others