Generative Music Part IV – Noatikl

Noatikl Continuing my look at generative music software, I’m now going to talk about a program developed by Pete and Tim Cole called Noatikl, from Intermorphic. Pronounced “noh – tickle”, the Intermorphic website describes Noatikl as “a powerful, easy to use generative music tool that helps you come up with new musical ideas – and your own generative music. It uses techniques developed over the last 17 years through our work on the award-winning Koan generative music system.”

Noatikl costs $99 (there’s a 30-day demo available). It’s available as a plugin (AU/VSTi/DXi) for various DAWs or as a standalone application. I used the standalone version.

Set-up is relatively painless, but following a continuing theme with third-party applications, setting it up to sync with Logic is not so simple, in part because the documentation is out of date. If you want to try it yourself with Logic, here’s what you need to do:


• Download the Logic 8 template here.
• Create TWO ports via IAC (if you don’t know what this is, see my earlier post here). For the sake of argument, let’s call them Port_Noatikl_1 and Port_Noatikl_2
• In Noatikl, set MIDI Output to Port_Noatikl_1 and the MIDI Input to Port_Noatikl_2, then check the Sync button. (The Listening button is used if you want to input MIDI into Noatikl in order to have a “Listening Voice” respond to that data with MIDI data of its own.)
• In Logic, under Settings>Synchronization>MIDI (tab), check the Transmit MIDI clock box, and at the pull down menu, select Port_Noatikl_2
• In Noatikl, in the Object/Parameter View column on the left, scroll down to Voice – Envelope – User Envelope 1 (Volume) and either uncheck the enable button or change the envelope settings (assuming you’ve already created some “Voices,” which I’ll get to in a minute). Its default position sets the respective channel faders in Logic to +6.0 dB, and chances are you don’t want that.

Now that the preliminaries are out of the way, let’s make some music! Well, not so fast there, cowboy. Via Intermorphic’s forum, youtube, or vimeo, and my own first attempts with it, I quickly (and maybe too quickly) came to the conclusion that the majority of the stuff being produced with this program falls under the category Ambient. Now, Ambient music has its place, I suppose, but it’s not what I’m interested in, and it seems at odds with how the program is described by Intermorphic. I can walk into any Sam Ash in New York and hear some doofus noodling with some synth pad while testing the newest keyboards and hear something no different from what people are taking pains to get this program to do. Harsh? Maybe.

Anyway, let’s dig in a bit. You have the option to control multiple global parameters: piece length, tempo, meter (*ahem*, not really – more later), scale, harmony. With the scales and harmony, you can ask the program to favor some intervals over others, in terms of percentages. So, for example, you can say a piece should have %35 major 7ths, and the program will try to respect that parameter as best it can, given the other parameters you set.

Individual parts also have assignable parameters, depending on the type of part you’ve created. Those parameters basically evoke strategies for how that part will produce its next pitch, how many pitches it will create simultaneously, what kinds of rhythms will be produced and how often, how long the phrases can be, the number of rests, etc.

Noatikl allows you to create several types of voices:
Rhythmic Voices are the default voice type. Notes have their durations composed according to the rhythm rules you define for your voice, to fit as well as possible within the bar structure of your piece.

Ambient Voices play notes irrespective of tempo or bar timings. Ambient Voices are used for creating drifting, floating sounds, drones or general texture.

Following Voices work in a call-response manner, following the behavior of other Voices according to rules you set.

Repeat Bar Voices are like Rhythmic Voices, that can be defined to repeat material that they have composed in previous bars.

Fixed Pattern Voices are Voices that play in accordance with various fixed MIDI patterns that you import into noatikl. These patterns are able to follow generative sequencing rules, and can adapt automatically according to properties you define. I did not try this one.

Listening Voices respond to incoming MIDI note events in definable ways.

Okay, so first, let me say that after digging through the Intermorphic users forum I did find a small sampling of pieces created with Noatikl that were truly interesting, though how much editing was involved after capturing the MIDI is hard to say. And I suppose that’s okay. Given the nature of this kind of software, to expect some kind of musical magic to happen by pressing a button is both unrealistic and perhaps happily so. It seems that in order to make real music with Noatikl still demands the ear and effort of a real, human composer. James Anthony Walker has posted a couple of intriguing examples here and here. Jovan Pesec posted a two-movement piece using Noatikl, the second of which I found charming. You can download an MP3 and PDF of the score here.

In terms of basic use, the Noatikl User Guide includes one tutorial that walks you through the creation of a slow (45 BPM), short, ambient soundscape, with a drone that has two following voices at a detuned unison and a perfect 5th, accompanied by a generated melody. The remaining tutorials involve getting Noatikl to work with various DAWs or ways of using Noatikl to generatively send MIDI CC (continuous controller) messages to your DAW. For example, you can use an LFO in Noatikl to send tempo change messages to Logic (MIDI CC22) once you’ve appropriately set up the cabling in Logic’s Environment to receive that message and send it to the Sequencer Input. I found myself wishing for more tutorials on music making.

By just tweaking the various percentages and rules, Noatikl frankly produces roughly 10 seconds of something lovely and 50 seconds of nonsense for every minute it runs. And no matter what meter I set, it pretty much stayed in 4/4. That said, it is possible to edit what comes out into something decent. Here’s an MP3 of 90 seconds that I turned around and tweaked for a couple of hours. I’m used a looped drum kit in Logic, combined two voices into one to make the piano part, editing out (or in) a great deal along the way, and composed a bass line to work beneath it. The result was something jazzy. But if there’s any sense of harmonic progression to it, it didn’t come from Noatikl:

Noatikl Sample     


Now, the thing is, if that’s all that Noatikl could do, it’d be easy enough to pack up, say no thank you, and go home. But everything I’ve described so far is like test driving a car. When you lift up the hood to check out the engine, Noatikl shows a lot more promise. There are two more aspects to Noatikl that potentially make it a powerful tool: Trigger Scripting using the Lua programming language and pattern editing.


I’ll start this section with some praise. A script submitted to the Intermorphic Forum by Chris Gibson based on Maz Kessler’s and Robby Kilgore’s Harmonic Rotation Toy, a MAX/MSP patch featured in this youtube video, worked very well, and was by far the most satisfying experience I’ve had with Noatikl so far.

The Lua script looks like this:

function nt_trigger_composed(noteon, channel, pitch, velocity)
— print (“Composed”, noteon, channel, pitch, velocity)
if (noteon == true)
then
local lCurrent= noatikl_Trigger_Parameter_Get(“Follow Shift/Interval”)
— print (“From lCurrent=”, lCurrent)
if (lCurrent == “3”)
then
lCurrent = “5”
elseif (lCurrent == “5”)
then
lCurrent = “2”
elseif (lCurrent == “2”)
then
lCurrent = “7”
else
lCurrent = “3”
end
noatikl_Trigger_Parameter_Set(“Follow Shift/Interval”, lCurrent)
— local lInterval2= noatikl_Trigger_Parameter_Get(“Follow Shift/Interval”)
— print (“To lInterval2=”, lInterval2)
end
end

The User’s Guide includes a short section on patterns, giving some sample patterns to insert in the Voice – Patterns view. The results were instantly more interesting than most of what the program generated on its own for me. Taken directly from the documentation:

Rhythm: <100 R 60 60 60.127 15>
Both: <100 B 60.15-30 1 60 2 60.127 3 15 7>
Forced: <100 F60 60.127 1 60 4 30 5 15.70-120 7>

In both cases, with patterns and scripting, I found myself wishing the documentation were more thorough in introducing us to this aspect of the program. There are examples of patterns and scripts to peruse, but they’re not broken down or organized in any kind of systematic way that I can discern. Leaving the user guide and turning to various online reference manuals on Lua itself (which most famously has been employed in gaming, like World of Warcraft), it’s not obvious how I might organize my time with it so I target only the aspects of Lua that are useful for driving Noatikl (rather than something for gaming). To touch on the meter question again, if you want Noatikl to give you something in 7/8, assigning the meter of 7/8 globally doesn’t seem to do anything 7/8-ish. Musicians know that 7/8 means that rhythmic and melodic patterns will be expressed together as 3+2+2 or 2+2+3 or 2+3+2. Noatikl really demands that that gets patterned or scripted in.

And while I’m talking about the documentation, let me just vent a little bit about a pet peeve. Exclamation points. I get turned off by any text that sprinkles exclamation points about like confetti. Usually parenting books or self-help books are the worst culprits. What are so many exclamation points doing in the documentation for a generative music software program?


So, to wrap up, I understand that an upgrade of Noatikl is in the works, though I have no idea what those changes will be. But while some obvious items to put on the wish-list would be the building in to the program of scripting options that would be most musically useful, I would happily settle for a really careful, deliberate, systematic walk-through of the pattern and scripting options in the documentation.

Leave a Reply