At the Sounding Edge: Introducing KeyKit
First, we are going to run two simple tests to become familiar with some more KeyKit interface conventions. Open KeyKit's main menu again and then open the Tools1 submenu. When the menu seen in Figure 1 appears, select the Riff item. The menus vanish now, and the normal cursor becomes what is called a sweep cursor. Click and drag the sweep cursor to define and size the Riff window and release the mouse key. The area outlined by the cursor now is filled with the contents of the Riff tool. Open the tool's More menu and select Load From File to load a standard MIDI file into Riff. The results should look something like Figure 3. The Riff data display window is similar to the typical piano-roll display found in many MIDI sequencers, with pitch represented by the vertical axis and duration represented along the horizontal. Toggle playback with the On button or start play by left-clicking anywhere within the data display. Right-click anywhere within the display to stop playback. KeyKit has many other playback options, but we are going to confine this simple example to the simplest methods.
So KeyKit can load and play a MIDI file; that's nice. Now, let's look at something more substantial. Delete the Riff tool and then open and size the Kboom tool from the Tools1 menu. Kboom looks like a typical virtual drum machine (Figure 4), but its modest appearance conceals an interesting and useful set of tools within its More menu. As with most software rhythm programmers, Kboom lets you add and remove beats from the grid by clicking on a grid point. You could select, however, one of the Random items from the More menu and let Kboom program itself. This feature is handy for those of us who like to sculpt patterns from randomly generated parts. Kboom's other musically useful features include Shift and Transpose functions, but you'll have to check them out yourself. It's time to move to a more advanced KeyKit example.
The Group tool from the Tools1 menu looks much like a track-oriented MIDI sequence editor. After loading a MIDI file into Group, you can view and edit its data in merged and per-track displays (Figure 4). But Group soon begins to lose its similarity to conventional MIDI sequencers, especially in its Edit functions. Scrolling through Group's Edit menu reveals some unusual functions and processes, such as BeatStep, Chordize, Evolve, Permutate and Stutter, along with more familiar sequence editing tools, such as Flip (invert), Reverse and Scale. Many tools have nested submenus for finer control over their processes. Figure 4 shows the Group tool at work with its Edit/Randomization menu unfolded to the detail level of its white noise generator.
The lighter-colored events in the Merged and Trk 2 displays were selected with the Pick function in the Trk 2 menu. To pick something in KeyKit isn't merely a process of simple selection. Trk 2's Pick menu includes items for selecting by various event characteristics, including duration, volume and channel; by opposite state, such as making unselected events become selected and vice versa; and even for random selection.
Group is a powerful tool. Events can be selected variously per track, and an edit or series of edits can be performed on the picked events. Then, you can flip the pick status for all events and perform another edit or edits on the newly picked events. At any point in this process, you can save your work as a standard MIDI file, and you can save your page layout as a snapshot from the Page submenu.
You also can snarf the outcome of your edit session at any time. Snarfing is KeyKit's term for pasting a tool's MIDI data to a global data clipboard, making the snarfed data available to any other tool--you can run multiple tools. In the Group tool, snarfing is selected from each track's label menu, the buttons labeled Merged, Trk 1, Trk 2 and so on. Notice that you can choose to snarf all or only the picked events within a track.
KeyKit's Markov Maker (in the Tools2 menu) processes a MIDI file's data through a set of constrained variations known as a Markov process. This tool analyzes input and formulates output according to user-defined values called Set Sim and Make Sim. The Sim here stands for similar. Markov processes yield results that are closely related variants of the original input, making them especially useful for composers wanting to retain more-or-less strong identities between variations.
Click on the Orig button to access the Set Sim parameters. These values determine the analysis window size and temporal increment, the interval at which the window moves through the data. Click on the Sim button to set the Make Sim value; higher values yields longer sims. The Sim data display then fills with the results from the combination of input/output values (Figure 6). Toggle playback with the mouse buttons as described above, and remember to save your work.
No experimental music toolkit would be complete without an image-to-sound converter, and KeyKit's PictSweep tool completes the kit here. PictSweep is another apparently simple tool that includes a respectable set of useful editing functions. Its More menu includes choices for scale selection, setting the key, thinning the color conversion and other musically useful processes. Alas, PictSweep's acceptable image type is restricted to PPM files, but those can be created easily with standard Linux graphics tools.
The KeyKit environment also includes a powerful object-oriented command language with support for real-time MIDI output. The following trivial example sends a Cmaj7 chord to the MIDI output device:
realtime('c e g b')
Unfortunately, I'm out of time here, so I leave the investigation of the KeyKit language to the interested reader. See the files named example*.k in the KeyKit lib directory for a good introduction to its details.
Similis sum folio de quo ludunt venti.
Realizing the promise of Apache® Hadoop® requires the effective deployment of compute, memory, storage and networking to achieve optimal results. With its flexibility and multitude of options, it is easy to over or under provision the server infrastructure, resulting in poor performance and high TCO. Join us for an in depth, technical discussion with industry experts from leading Hadoop and server companies who will provide insights into the key considerations for designing and deploying an optimal Hadoop cluster.
Sponsored by AMD
Built-in forensics, incident response, and security with Red Hat Enterprise Linux 6
Every security policy provides guidance and requirements for ensuring adequate protection of information and data, as well as high-level technical and administrative security requirements for a system in a given environment. Traditionally, providing security for a system focuses on the confidentiality of the information on it. However, protecting the data integrity and system and data availability is just as important. For example, when processing United States intelligence information, there are three attributes that require protection: confidentiality, integrity, and availability.
Learn more about catching the bad guy in this free white paper.
Sponsored by DLT Solutions
| Designing Electronics with Linux | May 22, 2013 |
| Dynamic DNS—an Object Lesson in Problem Solving | May 21, 2013 |
| Using Salt Stack and Vagrant for Drupal Development | May 20, 2013 |
| Making Linux and Android Get Along (It's Not as Hard as It Sounds) | May 16, 2013 |
| Drupal Is a Framework: Why Everyone Needs to Understand This | May 15, 2013 |
| Home, My Backup Data Center | May 13, 2013 |
- Designing Electronics with Linux
- New Products
- Linux Systems Administrator
- Senior Perl Developer
- Technical Support Rep
- UX Designer
- Making Linux and Android Get Along (It's Not as Hard as It Sounds)
- Dynamic DNS—an Object Lesson in Problem Solving
- Web & UI Developer (JavaScript & j Query)
- Using Salt Stack and Vagrant for Drupal Development
- Reply to comment | Linux Journal
6 hours 17 min ago - Dynamic DNS
6 hours 51 min ago - Reply to comment | Linux Journal
7 hours 49 min ago - Reply to comment | Linux Journal
8 hours 39 min ago - Not free anymore
12 hours 41 min ago - Great
16 hours 28 min ago - Reply to comment | Linux Journal
16 hours 36 min ago - Understanding the Linux Kernel
18 hours 51 min ago - General
21 hours 21 min ago - Kernel Problem
1 day 7 hours ago
Enter to Win an Adafruit Pi Cobbler Breakout Kit for Raspberry Pi

It's Raspberry Pi month at Linux Journal. Each week in May, Adafruit will be giving away a Pi-related prize to a lucky, randomly drawn LJ reader. Winners will be announced weekly.
Fill out the fields below to enter to win this week's prize-- a Pi Cobbler Breakout Kit for Raspberry Pi.
Congratulations to our winners so far:
- 5-8-13, Pi Starter Pack: Jack Davis
- 5-15-13, Pi Model B 512MB RAM: Patrick Dunn
- 5-21-13, Prototyping Pi Plate Kit: Philip Kirby
- Next winner announced on 5-27-13!
Featured Jobs
| Linux Systems Administrator | Houston and Austin, Texas | Host Gator |
| Senior Perl Developer | Austin, Texas | Host Gator |
| Technical Support Rep | Houston and Austin, Texas | Host Gator |
| UX Designer | Austin, Texas | Host Gator |
| Web & UI Developer (JavaScript & j Query) | Austin, Texas | Host Gator |
Free Webinar: Hadoop
How to Build an Optimal Hadoop Cluster to Store and Maintain Unlimited Amounts of Data Using Microservers
Realizing the promise of Apache® Hadoop® requires the effective deployment of compute, memory, storage and networking to achieve optimal results. With its flexibility and multitude of options, it is easy to over or under provision the server infrastructure, resulting in poor performance and high TCO. Join us for an in depth, technical discussion with industry experts from leading Hadoop and server companies who will provide insights into the key considerations for designing and deploying an optimal Hadoop cluster.
Some of key questions to be discussed are:
- What is the “typical” Hadoop cluster and what should be installed on the different machine types?
- Why should you consider the typical workload patterns when making your hardware decisions?
- Are all microservers created equal for Hadoop deployments?
- How do I plan for expansion if I require more compute, memory, storage or networking?








Comments
While it looks interesting, t
While it looks interesting, the License Agreement does not give me warm fuzzies. As I am most definately not interested in using it for education or research (the acceptable use listed in the agreement), I'm interesting in using it to make noise and music.
keykit licensing is meant to allow use freely
The license is only meant to prevent someone from making
money from distributing or selling keykit itself, or
from using it as the basis of some commercial product.
The license is not meant to restrict the use of keykit
by musicians and programmers for composing or performing
music (or noise), even things for which they get paid.
You own all music (or noise) made with keykit -
clause 3 in the license was specifically added to say that.
You're also free to distribute any keykit code you
write - as an example, see the Geomaestro system, which
is probably the most impressive and innovative use
of keykit - http://www.zogotounga.net/GM/eGM0.html
...Tim...