Sounding Out with the OLPC XO
My machine runs the ALSA sound system in version 1.0.14. Running dmesg reports that the ALSA device list consists of the CS5535 audio hardware at base address 0x1480 on IRQ5, and modinfo reports that the cs5535audio driver includes only one significant option, a workaround for certain faulty AC97 implementations.
Under normal circumstances, ALSA is completely transparent to the user. Activities (that is, the XO's programs) access the kernel sound services with no intervention from the user, and sound pours forth from the speakers. The expected ALSA utilities are all available from the command prompt, though only to the root user. Alsamixer correctly identifies the CS5535 as the sound card and the AD1888 as the audio chipset, and the range of mixer controls is impressive, particularly with regard to the surround sound capabilities of the AC97. Given this transparency, there isn't much else to add regarding ALSA on the XO. However, readers who want to know more details about the CS5535 audio driver should read the papers by Jaya Kumar, developer of the cs5535audio driver (see Resources for links to his presentations at the Linux Audio Conference 2007 and at FOSS/India 2006).
The XO is designed for the explorative mind. With regard to basic sound, the default system provides activities for simple audio recording and playback in various formats. However, the system's real audio attractions are found in the TamTam activities.
TamTam is a suite of four programs designed for exploring and experimenting with sound and music creation. At first glance, they may seem to be attractive toys, but I can verify that these applications are powerful enough to keep experienced musicians busy with their possibilities. The TamTam designers have created a unique blend of Python and Csound and presented the concoction to the user in an interface that completely conceals its technical foundations. The GUIs are easy to comprehend, and users need no knowledge of Csound or Python or even music to start composing, jamming and making their own sounds.
Alas, there isn't space in this article to describe each program in the suite fully, so I present each application briefly and advise interested readers to listen to the XO audio demos I've posted at linux-sound.org (see Resources).
The TamTam Mini (Figure 2) is an introductory-level program for very young users. The Mini is essentially a preset-style synthesizer played with the computer's keyboard. Users select an instrument from the display, and then play it by pressing the keys Z through M (lower octave) and Q through I (higher octave). A drum set can be added to create a looping play-along beat (with the start/stop button), and further controls include sliders for master volume, tempo, beat complexity and number of beats per bar. Sliders also are included for balance (that is, panning) and a reverb effect. All controls are usable in real time, and users' jams can be recorded for later playback. Finally, in accord with the XO's design philosophy, Mini also supports collaborative play between multiple machines, with all players synchronized to a shared beat. TamTam's Mini may be simple in its operation, but it is a sophisticated learning tool that succeeds at being instructional and fun—a winning design for enticing children into learning more about music and sound.
The TamTam Jam (Figure 3) is the XO's main music performance activity. As with the Mini, users select sounds from the display and play them via the computer keyboard. A beatbox-style drum machine is available for accompaniment grooves, and a sequencer is provided for recording phrases played on the keyboard. Jam also is targeted at younger users, but it is a much more sophisticated program. Polyphonic playing is supported, and users have full control over the accompanying sequences and their instrumentation. A virtual band can be formed with a drum set and up to five instruments, and each instrument is coupled to a series of sequence loops selected from the Loops display. These loops can be added or deleted in real time, and right-clicking on the loop invokes its editor. The loop editor controls the number of beats within the loop and its “regularity” (a randomization control), and a mini-piano roll editor lets users redefine the notes and their order within the loop. It won't take long before users realize that Jam is a powerful MIDI sequencer that can make music in almost any style or degree of complexity.
TamTam's Edit (Figure 4) is a music composition/generation program that can be employed as a more-or-less conventional five-track MIDI sequencer or as a user-definable musical automaton. Beyond its transport controls, Edit's toolset differs between its two modes. Compose mode includes Select, Draw and Paint tools; volume and tempo sliders; and controls for recording from the computer keyboard and saving your work as an Ogg file. Generate mode includes only three tools, a Generate Tune toggle and dialogs for the music generation parameters and for other general properties of the sequence. The generation dialog has a cool interactive graphic interface for setting the conditions for each generated event's rhythm, pitch and duration. Pitch material can be defined further with selections from seven scales and four randomization modes, any of which can be defined in real time.
Playback can be limited to a single sequence to create a real-time loop composition environment. Sequences can be selected in noncontiguous order with a Ctrl-left-click, although playback is always from left to right. Hold and sweep with the same key combination selects multiple continuous sequences.
Edit is an impressive toolkit for serious music composition, whether in real time or off-line. I've worked with dozens of music generation programs in text-based and graphic interfaces, and few of them are as well designed as Edit. In software reviews, the word flexible is usually overworked jargon, but it applies neatly to Edit. The program supports a variety of approaches to music composition, from the strictly deterministic to the utterly aleatoric, and it presents itself with an interface that welcomes interactivity. Edit has its limits, but within those limits, it is one of the coolest music programs I've used to date.
The TamTam SynthLab (Figure 5) is a sound design laboratory for advanced students. According to the TamTam Wiki, the SynthLab is modeled on the famous Max/MSP, a graphic environment for music composition and multimedia development, but it reminds this reviewer of PatchWork, an ancient editor for Csound instruments. In SynthLab, as in the older program, icons representing synthesis primitives are wired together to create a patch—that is, a new sound. SynthLab provides modules for sound generation (FM, sample playback, granular synthesis), modulators (LFO, envelopes) and effects processors (delay, reverb, chorus) that can be wired together in arbitrary connections to create new sounds, all in real time, of course. These sounds can be played on the computer keyboard and/or saved to any of eight slots reserved for use in TamTam Mini.
The TamTam suite is a great achievement, particularly when considered in its hardware context. It certainly proves a point about efficient program design, and there were many times when I forgot that the TamTam software was doing its stuff on a machine with a 433MHz CPU. It also proves a few other points about leveraging the power of contemporary Csound and Python. Those languages have been developed for excellent real-time performance, a factor well exploited by the TamTam programs. Vast thanks and praise must go to Jean Piche, TamTam's master architect and to his crew of talented developers for coming up with this most fascinating, instructive and hugely fun group of activities and for giving it to the children of the world. (And, yes, that includes children of all ages.)
Similis sum folio de quo ludunt venti.
Webinar: 8 Signs You’re Beyond Cron
11am CDT, April 29th
- DevOps: Better Than the Sum of Its Parts
- Return of the Mac
- Drupageddon: SQL Injection, Database Abstraction and Hundreds of Thousands of Web Sites
- Play for Me, Jarvis
- Non-Linux FOSS: .NET?
- Not So Dynamic Updates
- Designing Foils with XFLR5
- Users, Permissions and Multitenant Sites
- diff -u: What's New in Kernel Development