Bug Loop Soup

OK, put away the magnifying glass; this is serious. We're going to have fun with a little bug I discovered in V2 that pops up when automating the Arp. It requires a keyboard controller that transmits true MIDI Note Off messages, and it only shows up with note messages played below G2 (using Project5's note convention). The other requirement is to use a velocity message to trigger the Arpeggiator's Latch function via MIDI Remote Control. The reason for doing so is to add a natural breathing technique to the arpeggiated patterns that can be controlled directly with playing technique.

So how do you find out which flavor of Note Off message your controller features? If you're lucky, you can decipher it from your KB documentation and MIDI Implementation Chart. If not, get some visible feedback from a MIDI monitor app, like Bome's postcardware: SendSX. Open it up, set the MIDI Input to the device under scrutiny, and play a note on the KB. You'll see a couple of sets of three hexidecimal numbers each. Here's an example of what you might expect to see for a medium-velocity note at middle C:

Example 1

90 3C 57

80 3C 1A

The 90 indicates a MIDI Note On message on MIDI Channel 1 (the zero part). It's been transmitted at the hex equivalent [3C] of middle C [C5, or MIDI Note# 60]. The third number in the set is the velocity value. In this case, it's a velocity of 87 out of 128 possible values. The second string of status bytes shows a Note Off message, indicated by the 8 (Note Off) and the 0 (MIDI Channel = this hex digit +1). It's also at a middle C note value (of course), and has a release velocity of 26. Now you know what that Dimension source is all about in the MIDI Matrix, and not all keyboards feature this. But you'll also see why the velocity messages can't be separated from the note that they ride in on. They're inextricably tied together, although velocity can be copied, and/or used as a source message by MIDI Remote Control (without being "intercepted").

The Note Off message cuts off the companion Note On message; otherwise, a note would drift on forever without any resolution. This has nothing to do with release times on envelope generators, or anything that's synth-specific. It happens the instant that you lift your finger from the KB, and measures the speed in which you do so. You might instead see some messages like the following examples:

Example 2

90 3C 7C

90 3C 00

Example 3

90 3C 7F

80 3C 40

Example 4

90 3C 40

90 3C 00

In the second and fourth examples, the manufacturer has chosen to use an alternate version of the MIDI spec. That is, instead of using a Note Off message to stop a note, they've implemented a second MIDI Note On message at a velocity value of zero, which effectively shuts off that companion note before it with one of a velocity that's inaudible. It works well in most cases, and many KBs use this technique. All M-Audio products come to mind.

The third example displays a message from a KB sending a static velocity, like you might use for a drum pattern or a "glue loop" that anchors your composition's background. You'll see that the velocity in Ex. 3 is set here to send a maximum value on each note, and the the shutoff message is set to a velocity of 64. Note that this cutoff velocity value is just over the halfway point in the value range, so anything that was MIDI-controlled by velocity could be "turned on", but not off again. Keyboards that are incapable of velocity-sensitivity are still required to send a Note On message with a static velocity value of 64, or you wouldn't hear anything on the receiving end [Example 4].

OK, so now you know what you're transmitting with your KB. If you have the Note On/Note Off variety, you can now load up any synth into a track and play along with our game here. Any synth will do, but keep in mind that many sample-driven engines won't have the raw material at these extreme KB ranges to work with, so I'd suggest a VA or similar synth with wide range oscillators. Normally, the MIDI-controlled Latch function would latch on with stronger velocities, and release the Latch with a softer note. But ...

Recipe for Bug Loop Soup:

1). In your loaded synth track, enable the Arp at default settings, and right-click on Latch. Select Velocity as a source, and OK out.

2). Open up the Editor for some visual feedback, and play any note from G2 downward on your KB. It's got to be live input, not a pattern or the preview keyboard.

3). Listen to the stuck notes play back endlessly. You can keep adding to those in the given range for more complexity, and you'll even see them "stick" in the Editor's keyboard as "blue notes". Add other notes above that range to modulate the evolving "pattern". Triggering the same note keys from your KB or any other device will not stop the latched notes, but it may modify the timbre, depending on the synth patch chosen and it's polyphony settings.

Here's the cool part: All of the Arp parameters are still active, so you can change the Pitch Offset, Shape, Octaves, Rate, and everything else and "play" the stuck loop. It'll persist through patch changes, but not through a Replace Synth action. You're not going to destroy it; even an All Notes Off [Panic] over MIDI only dents the loop, muting it temporarily (as another compositional device). The only general ways out is by double-clicking on the CPU meter, or by pressing Play then Stop [double Spacebar] in succession [in this case: effectively the same action]. Unfortunately, this can only be recorded with an outside application, but using something like Sound Forge's Remote mode will capture the moment for use later on as a wavfile.

Since this bug loop inserts itself into the Arp stream, you can play other notes over the top and have those slide in-between successive iterations of the bug loop. If you've got five notes bugging out, it'll carve out 5 slots from your fingered input. Now this is also tres cool. Mouse the Transpose slider in your track over it's extreme ranges, and the looping bug travels with it. Incredible sounds result from mashing this loop up against the extreme boundaries of your oscillators. Add some audio effects to the track; you've got a new sound source to play with.

My best guess as to why this happens is that the Note Offs are somehow lost in the Arp or Project5's engine, but why only in this range? I used the Transpose track function to try and work around this thing, but that seems to actually modify the incoming MIDI Note values and shift them to the problematic range. Hey, I'd rather just roll with it. I kept having this anomaly pop up in my compositions, and now I realize it's a direct result of my technique. I treat the octave switches on my two-octave KBs as I would any other note, used as frequently as anything else, and that caused me to dip into the "capture range" in the course of my playing.

Hey, it's not your bread-and-butter technique, but, after all, this is the X-Treme "Special" FX series. It's small point of contention here, but a sound effect label to me implies a Foley effect of some sort. I look at these techniques here as more of a special effect. As a parallel to the graphics CG departments in film, sometimes the best special effects are those not immediately obvious or invisible to the naked eye.

The content provided on this web site is public information which was originally posted in the Cakewalk User Forums and on the old Project5 Wiki. Project5™ and Cakewalk™ are registered trademarks of Cakewalk, Inc. Other product names or companies names may be trademarks of their respective companies whether marked as such or not. Portions of this web site are copyright © 2024 Robert J. Hammond ( A member of the Technetos family of web sites ).