Home : Keykit : Notes 
  Note 1 - expresso, looping, window copying, realtime transposing

The steps below will show you how a number of things in keykit can be used together. A quick summary of what these steps will do: the expresso tool will be used to generate something, you'll copy it to the Group tool to scale it to a particular scale and start looping it. You'll make copies of the Group tool and start looping multiple things simultaneously. And finally you'll start transposing the generated music in realtime under control of an external keyboard. Now the details:

  1. First, make sure your MIDI controller is attached and working. You will probably have to use the Tools1->Port Enabler tool to enable your MIDI input device. Just bring up the Port Enable tool, and highlight the MIDI INput to which your controller is attached.

  2. Bring up the Tools2->Monitor tool. Press some keys on your controller, and you should see the notes appear (and scroll from right to left) inside the Monitor tool. Okay, now you know you have MIDI input working...

  3. Bring up an Expresso tool, with Tools2->Expresso.

  4. The phrases generated by expresso are, by default, limited to 8 beats. We want to generate longer phrases, so invoke More->AutoLength->Off.

  5. Go ahead and press the Gen button several times, and you will see and hear different things generated. They will start playing automatically. Click the mouse within the piano-roll window to stop (and restart) the playback.

  6. By default, the expresso tool doesn't put its notes on any particular scale. You can invoke some of the things in its various menus to automatically scale the generated notes to particular sets of notes, but let's not do that in the expresso tool, for this example. Let's use the Group tool, because it's a little more flexible in that area, and we're going to do other things as well. Bring up a Tools1->Group tool.

  7. Press the Gen button in the Expresso tool until you have a fairly complex/long result. (Remember that clicking inside the phrase window of the Expresso tool will start/stop its playing.) We want to copy that to the Group tool - we could do that with Snarf, but there's an even more convenient way. In the Root menu (the one with the Tools1/Tools2 items), invoke "Window->Copy". The cursor will change to crosshairs. You should then click the left mouse button once inside the Expresso tool, and once inside the Group tool - the result will be that the phrase in the Expresso tool will be copied to the Group tool. Window->Copy and two clicks, that's all you do.

  8. In the Group tool, let's scale the phrase to a given scale. First invoke "Merged->Pick->All" to select everything in the Group tool. Then "Edit->Scadjust->C->Aeolian" to adjust everything to a C Aeolian scale.

  9. Now let's loop bits of this. The upper-right button of the Group controls what the right mouse button does when you click it inside the phrase window of the Group tool. By default it is Play. Click on that button and select "Loop". Now, whenever you press the right mouse button in the phrase window of the Group tool, it will loop whatever the current "audition" area is.

  10. Use the left mouse button inside the phrase window of the Group tool to select a short (several beat) section of the phrase. Press the right mouse button inside the phrase window, and that section should start repeating, forever.

  11. Use the left mouse button to select a different section of the phrase, and it will start repeating that section. Use the right mouse button start/stop the looping.

  12. Let's make a copy of this Group tool (and all its settings) so that we can loop several things. In the Root menu, select "Window->Snarf Tool" and click on the Group tool. You should see the words "Snarfed the wgroup tool" in the console window. Now, in the Root menu, select "Window->Paste Tool" and sweep out a window. You should see an exact copy of your Group tool, with the same contents.

  13. In the second Group tool, use the left mouse button to select a section, and use the right mouse button to start it looping. At this point, you have two things looping independently, with independent loop lengths, and you can interactively select new sections of the phrases to loop, without interrupting anything.

  14. Now let's interactively transpose what's happening. Bring up the "Tools->Offset Walker" tool. The "1" button in that tool means that it is going to be watching channel 1, and we'll assume that your external controller is transmitting on channel 1. Click on "Watch" to turn it on. Now press several notes on your external controller. If you still have the loops playing, you should now hear the music being transposed as you press notes on your controller. When you first turn "Watch" on, the first note you play will be the "base" note. Subsequent notes are compared to that base note, to determine the pitch offset.

Subsequent Exploration

  • Create additional copies of the Group tool (with "Window->Paste Tool") to add more looping layers.
  • Put each Group tool on a different channel, by using View->All Tracks to view the track, change its MIDI channel, and select a different sound.
  • Continue to select (left-sweep in the Group tool) different sections of the music, while it is looping.
  • Use "Scafilt" rather than "Scadjust", when setting the scale to be used. Scafilt will remove (rather than adjust) all notes that don't fall on the specified scale - this will leave spaces in the music, which can sound more interesting and rhythmic than a continous stream of notes.
  • Use different music (Expresso-generated or not) in the Group tools, for looping.


  • The "Recsched" feature allows you to record all music generated dynmically by Keykit, but it does not yet record the pitch offsets that are controlled by the "Offset Walker" tool.