I've been at work on my toolset again, and I might as well take the time to describe it in detail.
How I use my tools
- Write music in my concise marching percussion notation and save to file
- Run the composition file through lilyperc to create a lilypond file
- Run the lilypond file through lilypond in PDF mode to create a PDF
- Run the lilypond file through lilypond in MIDI mode to create a MIDI file
- Play the MIDI file using timidity and a custom soundfont of marching percussion instruments. Output to a WAV file
- Convert the WAV file to MP3
The story
When I decided to start writing drumline cadences again, I had to figure out what tools I'd need to help me along. As you can imagine, I needed something that could create sheet music (PDFs) and an audio version of what I write. I know about Finale, but I figured there were tools I could cobble together to take its place. I wanted my only expense to be my brain energy and my time. But that's not the whole story ...
It's been 9 years since I've used Windows on my computer. I use Linux, so that ruled out Finale and Sibelius. I'm also a programmer, so I enjoy writing code to get things done. The thought of writing code to facilitate writing cadences seemed like a great challenge, and it would be good to break away from the world of web programming for a while.
The first challenge was to figure out how I could create audio files from the music I write. In an ideal world, something like Rosegarden would have probably worked for me, but I've never had much luck getting it to actually work.
After some investigation I figured out that you can load different soundfonts into your soundcard in order to play MIDI files using different instruments. Think of those cheap Casio keyboards with buttons for different instruments ... this is exactly what soundfonts enable.
So now I had to find a soundfont with samples of marching percussion instruments. Google didn't turn up anything, but maybe I could create my own using samples of individual drums. This proved to be near impossible. There are tons of drum samples on the internet and it's very hard to comb through hundreds of individual sound files when each one is a single hit of a single drum. It's also no fun at all. I kept looking and found sample collections with good sounding instruments, but nothing that came close to the crispness of a marching snare, or the tonal spacings of bass or tenor drums. I was disheartened, so I took a break from that part of the project.
Lilypond and Denemo are two programs that work together and would allow me to turn music into PDFs and MIDI files. They sounded like the perfect recipe. But Denemo didn't support all of the drum notation that I needed, requires the use of a mouse (slow), and its MIDI output was broken, so I ditched Denemo. Denemo sits atop Lilypond, so I started looking directly at Lilypond.
Over the course of two weeks I learned what I needed to know about Lilypond syntax. I started off by creating a simple file with 1 instrument and a few notes, and eventually figured out how to add staffs for tenors, bass and cymbals. With Lilypond I now had a way to create PDFs.
About 5 months into the project I came across a few companies that offered samples and soundfonts of marching drums. But, as I wrote in this post, that was a dead end. Eventually I found a soundfont that had great samples of actual marching drums. It was enough to get me started.
Writing in Lilypond's syntax became unwieldy very quickly. Composing requires lots and lots of little changes in order to get things just right, and Lilypond slowed me down. This is where writing code came in handy ... I wanted to be able to input music even quicker using only my keyboard. I planned to create my own marching percussion notation and write a program to convert it to Lilypond.
Over the period of a few months, I made notes about my marching percussion notation. I began to imagine what I'd want to type to create snare rolls, flams, diddles, bass unisons, accents, rests, sixtouplets, rimshots, tenor sweeps, etc. And in August, I finally started writing Python code to convert my marching percussion notation into Lilypond format. I still needed Lilypond for creating PDFs and MIDI files, but at least I'd be able to input music quicker.
lilyperc is the first generation of this project and it has done me well for about four months. Everything on this website has been written using it, but it's not perfect. I've been developing an even better marching percussion notation, Lilypond's MIDI output doesn't obey flams the way I want it to, and I'd like to have more control over MIDI volume levels. The next version of my project will address these issues.
blog comments powered by Disqus
Welcome.