I’ve got some code which needs to operate in a time-sensitive way. It
makes a simple drumbeat, and needs to hit the notes at the right time.
Currently this doesn’t happen. Every time you run the code you’ll get
slightly different timing fluctuations. It’s not subtle, either. The
effect is obvious and ruins the beat.
Is there a way to solve this problem without abandoning my preferred language?
That I think is platform-dependent, but it could be something as
“simple” as building an interface to an audio library.
Actually, no; I’m getting the audio from third-party commercial music
production software. I’m currently using Propellerhead Reason, which
is at the consumer end of prosumer, and I may add in Ableton Live
and/or Apple Logic, which are more at the pro end. There’s a standard
protocol called MIDI which I’m using, but the timing my code was
generating was completely unreliable. That was the only problem. But
the error turned out to be in the code. It came from a book, the book
wasn’t concerned with precise timing, just a proof of concept, so I
basically just increased the resolution on the timer and I was good
(which essentially meant just adding a couple zeros to a division
Because I’m using a standard protocol and a Ruby interface to the OS X
core library which handles this standard protocol, you could
essentially use my code (merged with the code from the book, which is
MIT license) with any MIDI sound source, including hardware
Another place you might want to look is Planet CCRMA. This is a
Fedora-based collection of audio software, some of it coming from the
Lisp-based CCRMA project at Stanford.
I don’t have any Linux boxes right now , but that does sound quite
interesting. SynthBuilder looks particularly nifty.