At the Sounding Edge: Introducing KeyKit
At the end of last month's column, I promised we'd look at some GUI-based tools for algorithmic and experimental MIDI music composition. Due to the vagaries of obsolete dependencies and software development time, I can focus on only KeyKit in this article. I hope you'll agree that this focus is well deserved.
KeyKit is a powerful MIDI composition and processing environment that includes an abundance of features and tools designed for conventional MIDI music-making--for example, MIDI sequencers and virtual drum machines--as well as for unconventional MIDI music-making. Indeed, for the Linux musician who wants to explore some exotic and unusual ways of composing with MIDI, KeyKit is required software.
KeyKit is available in source and compiled forms. Visit its Web site, read the latest news and then decide if you want to download the program. You must register to download KeyKit, but the registration procedure is painless and free. Download the Linux package, unpack it in your home directory and read the README.linux file. Then, become root and install the software with make linux_install.
After installing KeyKit, you should set two important KeyKit environment variables. KeyKit supports both ALSA (currently only MIDI Out) and OSS/Free devices, but you need to set the particular devices through these variables. Here are my own settings for KeyKit devices, kept in my ~/.bashrc file to define them at log-in:
export ALSA_RAWMIDI_DEVICE=hw:1,0 export MIDIDEVICE=/dev/midi00
Thus, when in ALSA mode, KeyKit sends MIDI data through my first virtual MIDI device (hw:1,0). When in OSS/Free mode, data is sent to the hardware port of my SBLive (hw:0,0 in ALSA). For audio output under ALSA, I connect the virtual MIDI port to a Linux softsynth or a VSTi plugin. Under OSS/Free, the device connects to only my external synthesizer hardware.
Please note that MIDI input is broken in the version of KeyKit, key73d, tested for this article. However, KeyKit does load and save standard MIDI files, so if you can record and save material as MIDI files, you can use them with KeyKit. It's not the best solution, but it's a workaround until direct MIDI input is fixed. KeyKit's MIDI output is fine for ALSA or OSS/Free.
Enter key at an xterm prompt, and KeyKit opens with a single main window that contains a large blank area and a window with a command prompt, KeyKit's language command console. KeyKit's interface is based directly on unadorned X11 graphics; that is, it is not based on a standard GUI toolkit such as GTK or QT. You have to learn some of its unique actions and controls before you can get too far with the program, but the interface can be learned easily and mastered quickly.
When KeyKit starts, the GUI is empty except for the console command window. The space outside the console window has no special name in KeyKit documentation, so I refer to it here as the main window. Left-click anywhere in the main window and KeyKit's main menu appears. The main menu groups include items for window management, Delete, Move, Resize; music functions, the Tools submenus; miscellaneous functions; page management; and window actions. Left-click to select an item from a menu or open a submenu. Click and drag a menu handle--the strip at the top of a menu window--to relocate the menu in the main window, and click the close button--the X in the top right corner--to close the menu window. Figure 1 shows KeyKit's default appearance after startup, with the main menu and a Tools menu open for inspection.
It's plain stuff indeed. Fortunately, you can redefine KeyKit's appearance in some useful ways. You can set basic colors with the Hues utility from the Tools2 menu. You also can "pull off" menu items to copy and relocate them anywhere in the main window for more convenient access. Figure 2 shows off a colorized KeyKit page running the Kboom tool with some menu items pulled off, a resized console window and two other items from the Tools menus made available for permanent access. Page layouts, including multipage configurations, can be saved and reloaded by using the Page submenu in KeyKit's main popup menu.
Check the default settings for the Port Enabler in the Tools1 submenu. In Figure 2, the Port Enabler is set up to send MIDI output through the ALSA device defined by the ALSA_RAWMIDI_DEVICE variable. Selecting the input device may freeze the application, so it has been left unselected for this example. After enabling the appropriate output port, KeyKit is ready to roll.
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
If you already use virtualized infrastructure, you are well on your way to leveraging the power of the cloud. Virtualization offers the promise of limitless resources, but how do you manage that scalability when your DevOps team doesn’t scale? In today’s hypercompetitive markets, fast results can make a difference between leading the pack vs. obsolescence. Organizations need more benefits from cloud computing than just raw resources. They need agility, flexibility, convenience, ROI, and control.
Stackato private Platform-as-a-Service technology from ActiveState extends your private cloud infrastructure by creating a private PaaS to provide on-demand availability, flexibility, control, and ultimately, faster time-to-market for your enterprise.
Sponsored by ActiveState
| Non-Linux FOSS: libnotify, OS X Style | Jun 18, 2013 |
| Containers—Not Virtual Machines—Are the Future Cloud | Jun 17, 2013 |
| Lock-Free Multi-Producer Multi-Consumer Queue on Ring Buffer | Jun 12, 2013 |
| Weechat, Irssi's Little Brother | Jun 11, 2013 |
| One Tail Just Isn't Enough | Jun 07, 2013 |
| Introduction to MapReduce with Hadoop on Linux | Jun 05, 2013 |
- Containers—Not Virtual Machines—Are the Future Cloud
- Non-Linux FOSS: libnotify, OS X Style
- Linux Systems Administrator
- Validate an E-Mail Address with PHP, the Right Way
- Lock-Free Multi-Producer Multi-Consumer Queue on Ring Buffer
- Senior Perl Developer
- Technical Support Rep
- UX Designer
- RSS Feeds
- Introduction to MapReduce with Hadoop on Linux
- One advantage with VMs
2 hours 4 min ago - about info
2 hours 37 min ago - info
2 hours 38 min ago - info
2 hours 39 min ago - info
2 hours 41 min ago - info
2 hours 42 min ago - abut info
2 hours 44 min ago - info
2 hours 45 min ago - info
2 hours 47 min ago - info
2 hours 47 min ago
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...