Tempo – The Last DAW Frontier?
Expressive sequenced music is not easily accomplished. Read this to find out how to achieve the fluid timing that’s a key part of the solution.
by David Baer, May 2013
The Virtuosity of Technology
Computer-based music production offers the opportunity of creating musical performances manifesting inhuman levels of virtuosity. An individual with extremely limited keyboard skills could nevertheless construct a note-perfect performance of Chopin’s Minute Waltz that can be shredded out in twelve seconds without the DAW raising a sweat. This is not only true today, but it was possible using a sequencer running on the Intel 286 that constituted my first music computer twenty years ago. Step entry, or note entry using a slowed tempo with subsequent quantization, makes all this possible (no doubt accompanied by edits to move or delete incorrectly placed notes) for even those with limited keyboard chops.
Naturally there is a downside. Performances that are artificially constructed are very difficult to make sound other than mechanical. With a MIDI sequencer, we can easily get notes perfectly placed and polish dynamics to a flawless state. But making the tempo sound not only human but also engaging is not so easily accomplished with modern DAW technology.
Real-time performances recorded on a DAW often need to be the slave of a metronome. This is not that big of a restriction with many forms of contemporary popular music, but stray from that familiar ground and it rapidly becomes an onerous constraint. Both jazz and “classical” forms need room to incorporate much fluidity in pacing. As to “classical”, I’m not even talking about the grandiose flourishes of the Romantic era or the mystical musings of the Impressionistic movement. Even the prim and proper compositions of the Baroque and Classical periods are well-served with the freedom to incorporate ebb and flow in tempo.
Need proof? Consider this performance of Mozart’s Pianoforte Sonata 13 (below) played by Vladimir Horowitz that can be seen in the YouTube video:
This particular example was not cherry-picked to illustrate my point. It was almost the first one I came across when looking for something to use here. The graphic below shows a tempo map created in SONAR that tracks Mr. Horowitz’s playing with reasonable accuracy. What you see are the tempo changes that occur every eighth note. Hardly metronomic, I hope you’ll agree.
One final point. You might think this territory is the exclusive domain of soloists, but that’s just not so. Listen to a string quartet that has played together for years. They can play as if they are psychically linked, with as much tempo fluidity as any single performer. Even a large ensemble like a choral group comprised of 100 singers can deliver tempo magic when they know the music sufficiently well and know how to follow their conductor.
My DAW Ate My Tempo
There is a class of DAW users that don’t care one whit about MIDI tempo control. They use their DAW to record real-time performances without ever turning on the metronome, and they simply let the time signature and initial tempo to remain at their default values. More power to you if you are that type of skilled musician, and you will have no interest in what follows. On the other hand, when MIDI is involved, irrespective of how the data is captured, there are various reasons why aligning the MIDI tracks with measure boundaries is beneficial or even necessary. Once measure alignment enters the picture, if one wants fluid tempo playback, we need to resort to the use of a tempo map.
Although I use only SONAR, I have investigated other DAWs to see if they offer better solutions for creating musically satisfying tempo maps. SONAR in this regard isn’t bad, but it isn’t great. Unfortunately none of the other DAWs I’ve looked at apart from Cubase appear to offer anything superior, and many don’t come close to what’s in SONAR. Cubase looks like it deserves the best grades, but that opinion is based only on what I’ve read in the documentation, not hands-on experience.
In the discussion that follows, I’ll be using SONAR as the basis for some examples, but most SONAR features discussed have equivalent functionality in other DAW brands. If you use a DAW other than SONAR, there’s something that may be of considerable interest to you a bit further on, so please don’t bail out just yet.
Let’s start with randomization of MIDI note-on event start times. This trick just introduces some “slop” in the placement of notes. It can get you a little distance from a mechanical feel, but it’s of very limited use.
SONAR has another feature called quantize to groove that’s more helpful. Here you can apply an external “groove” file (effectively a click track) with which the notes in a MIDI clip can be aligned. You can use your own groove file or one created by a third party. This can be an excellent solution for popular forms where the overall pacing stays loosely in sync with a constant tempo.
The most powerful solution in SONAR is a feature called fit to improv. The idea here is that you have a performance of one or more tracks recorded without a metronome that you want to align with measure boundaries. To use it, you create a click track of MIDI events, exactly one per beat and in sync with the “improv” material. When invoking the process, a tempo map is created so that the playback pacing of the original “improv” is duplicated. Audio data in the project is left alone; that is, it plays back exactly the same way before and after fit to improve is invoked. But MIDI data in the project that is beat aligned now “grooves” along with the original “improv”.
Fit to improv is powerful but has several limitations. To begin with, and this is a major shortcoming, it’s all or nothing. There’s no way to apply it to other than the entire piece. Next, you’re limited to a beat granularity dictated by the time signature. If you’re piece is in 4/4, you cannot “conduct” in eighth notes, for example. Finally, if your project contains MIDI tracks that are already beat-aligned and you want to alter the project to conform to a separately created click track, you need to remember to lock all the MIDI clips before applying fit to improv, or event times will be changed.
Finally, there is the tempo view in which you can enter or edit tempo events. The tempo view (which you saw before in Fig. 2) is great for making spot corrections to a tempo that’s approximately correct, but it’s practically not possible to visually create a credible tempo doing it visually beat by beat.
What’s really called for seems apparent, but it’s a feature that fully exists in no DAW as far as I have been able to ascertain. That feature would be a “conduct” function. Select a range of measures. Specify a conduct-beats-per-quarter-note value. Click start. Beat out the desired tempo on a MIDI controller. Click stop. At this point the DAW would use the time intervals between the note-on events to calculate the tempo map for the selected region.
This seems to me be an obviously useful feature, and yet it’s nowhere to be seen. That’s not too surprising though. Given that the considerable majority of DAW users are focused on creating popular forms of music, where tempo flexibility is less of a perceived need, there’s no doubt insufficient pressure from the user community for improvements.
The Maestrolizer to the Rescue!
With no expectation of a “conduct” feature forthcoming any time soon, it occurred to me that one could be created that would run externally to any DAW that can do the following three things, none of them a stretch by any means:
• save a MIDI track or clip as a standard MIDI file
• open a standard MIDI file
• do a copy-and-paste of MIDI data that includes the tempo information from a standard MIDI file
Using an external utility to create a tempo map from a click track isn’t as effortless as using a built-in DAW function, but it’s certainly better than not having that capability at all. And as things turned out, the workflow isn’t all that disruptive once you’ve done it several times. After all, in the grand scheme of things, creating a “conduct” track is a very occasional activity.
The utility is called Maestrolizer. It is freely available for download here: Maestrolizer
It was written in Java and thus runs on PC or Mac, but it does require the Java run-time to be installed. Details on this can be found in the read-me file included in the download. For those wanting to know a little more about the implementation, see the side bar below: MIDI in Java – a Class Act.
Usage is very simple. I’ll describe how you’d use it in SONAR. From that you can probably work out the steps to using it in your on DAW easily enough. With your DAW running, launch the Maestrolizer (its user interface can below). Go back to your DAW.
You may use a new project with a single MIDI track. Depending on the capabilities of your DAW, you may create the conductor track in an existing project (with audio muted or not as desired). Determine which portion of the piece you want to create a tempo map for. Turn on record (with the metronome off!) and play notes at the pace your mental conductor is directing or as the audio dictates. There must be exactly one note-on for each conductor beat. In other words, if you are in 2/4 and conducting in quarter-note triplets, you are supplying six click beats per measure. The software will not know if you’ve skipped a beat, so you must not do so. Include the first beat of the measure beyond the region for which you’re creating the tempo map. Stop the recording and save the recorded clip as a standard MIDI file. If the conductor track is the only MIDI track, you can just save a SONAR project as a MIDI file. Otherwise, copy the clip and paste it onto the desktop or into a folder (or drag and drop the clip from SONAR).
Switch to Maestrolizer and create the tempo map. We’ll discuss this process in detail shortly. Maestrolizer will create a standard MIDI file containing the tempo map. Return to your DAW. Do a File/Open on the tempo map MIDI file (in SONAR, this starts a new project). Select the track, then copy it. Switch back to the main project, position the Now Time where the tempo map is to start, and do a paste. That’s all there is to it.
Let’s discuss a few nuances: The tempo track file will be named the same as the click track, but with a “TT_” prefix. You may save the conductor track as a type 0 or type 1 standard MIDI file, but if it’s type 1, all the note-on events are expected to be in the first and only track or all the notes are in the second (of two) tracks. It does not matter what the time signature and original tempo of the click track is, but you may not have tempo events in the track beyond the first one.
The fastest tempo SONAR supports appears to be 1000 quarter notes per minute, so that is the upper speed limit allowed in Maestrolizer. If your DAW supports a higher rate, then good for you. But I can’t imagine ever needing anything close to this rate in a conductor track. In any case, should two note-on events dictate a tempo that exceeds 1000 quarter notes per minute, Maestrolizer will flag it as an error. Chances are you “fat-fingered” one or more of the beats in the click track, hitting two adjacent notes at once.
The user interface of Maestrolizer is very straightforward. Identify the click track by using the Browse button. Specify the time signature of the target piece in the obvious way. Then specify the conduct beats per quarter note. This is exactly what it says. If your time signature is 6/8 and you’re conducting in eighth notes, the number in this control is 2. If your time signature is 2/4 and you’re conducting in quarter-note triplets, the number is 3.
Finally there’s the Dummy MIDI Event Number control. I found that things work a little more smoothly in SONAR if there is actual MIDI data other than tempo events in the track. So Maestrolizer will supply two dummy controller change events with a controller number specified in this control and a value of zero (one event is placed at the start of the tempo track and one at the end). You may select None and no controller change events will be included. The other possibilities in the drop-down list are all the undefined controllers in the MIDI standard, so you have many choices. In all likelihood, the dummy events will do no harm if left in the project, but they are easily removed or avoided in the paste operation if they are of concern.
Using Maestrolizer the first few times feels a little awkward, but it quickly becomes second nature. And the results are as accurate as you could hope for. I conducted a test where I entered a series of notes of random durations to use as the conductor track. From this I created a tempo map and applied it to a series of step-entered notes with precisely equal durations. I created an audio track from the initial conductor track and the tempo-map-controlled track, feeding both to a synth preset with a pronounced initial transient. Lining them up one above the other, any timing differences were imperceptible, both by eye and by ear.
So, there you have it. I hope at least some of you find this tool to be of value, at least while we all wait for the DAW developers to bring the tempo specification capabilities up to the level of the many fully developed capabilities of this amazing body of software technology. Now, go forth and conduct yourselves with dignity.
MIDI in Java – a Class Act
I wanted Maestrolizer to be both PC and Mac compatible, and since it’s not a VST, I had the freedom to choose Java as the implementation language (why I have a dim view of C++ isn’t really relevant here). I first expected needing to develop a set of Java classes to encapsulate the characteristics of MIDI files. Imagine my delight when I found there to be a robust solution already available in the Java JDK and free for the taking. Music-geek meets code-geek … a marriage made in heaven!
Briefly, we have the following classes (not a complete list):
• Sequence – the highest level container for MIDI data; an in-memory MIDI file, if you will; contains Track (and possibly other) objects and timing information global to all tracks
• Track – just what you’d think it is
• MidiEvent – represents a MIDI message and timing information expressed as ticks
• MidiMessage – the message in a MidiEvent
• ShortMessage – subclass of MidiMessage; used for all the bread and butter MIDI events like note-on/off, controller message, etc.
While a full-fledged tutorial on how these classes are used is beyond the scope of this article, I have included the Maestrolizer source code as part of the download for anyone who’s curious. I think you can puzzle out how these classes work together with a quick examination of that code. In any case, as is typical with Java’s type-safe coding philosophy, it’s difficult to use these classes other than as intended because the compiler will tell you when you’re attempting to use the wrong class type in an assignment or method call.