I propose an enhancement (stolen from Roland MRC operating system of yore): instead of a x to mark a note, use numbers from 0 to 9, to allow for varying velocity (0 sending a note-off, useful for many drum effects)
I mentioned it because I genuinely enjoyed drum programming on the MC500 MkII; I still think its interface is the fastest and the best for this (not so much for other things :). 10 velocity levels are enough for drums generally.
Interesting. Not really sure how much mileage there is in an XML representation of MIDI, other than as an implementation detail for bigger packages. I'd venture a guess that 'end-user' adoption is low? In the sense of, for example, people exporting as midi-xml from their sequencer to email to each other?
To be clear, I was more enthused with the collaborative potential and the extremely low barrier to entry, rather than with the notion of a text-file-based representation of sequencing. This project seemed more immediate, hackable, 'tactile' in a way, and more shareable than other formats/tools that I know of; although of course much less powerful.
Great idea, that's an interesting approach. Lay down a score, and play it - truly a 21st century player piano. There's plenty of programs that will do this with confusing graphical interfaces and binary formats, of course. The yaml interface is the best touch.
I'm a musician as well as a programmer, and my favorite mobile/touch apps are the instruments. Now there's one I can play from the command line, too! To the tune of 'scrathing your own itch', my goal is to make an iOS music app or two. I'll definitely be reading the sources for this.
This reminds me of the good old time when trackers like Scream Tracker 3 and Impulse Tracker were the hot thing! They too were programmed by writing sequential "code". This felt more natural and easier to use than most GUIs of that time.
This is incredibly refreshing and inspiring, congrats!
I don't see a lot of audio-related Ruby projects around. How did you implement the audio engine? A quick look in the source files seems to show it's all pure Ruby.
A nice extra feature would be to edit/save and update live, while the loop is running, but I don't know if pure Ruby can fit the bill. And this reminds me of a language I've heard a lot of good things about: Chuck [1], which allows you to modify the code live (apparently it's used in Smule's iOS apps). Has anyone here played with it?
I'm totally illiterate when it comes to music, but I do like electronic music. If you do end up creating something you really like with Beats, please do share the source code. Thanks!