precise timing issues with ruby

G

Giles Bowkett

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?

--
Giles Bowkett

Podcast: http://hollywoodgrit.blogspot.com
Blog: http://gilesbowkett.blogspot.com
Portfolio: http://www.gilesgoatboy.org
Tumblelog: http://giles.tumblr.com
 
M

M. Edward (Ed) Borasky

Giles said:
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. I only know
Linux, so that's the approach I'd take. There are at least three Linux
distros -- JAD, Studio64 and dyne:bolic -- dedicated to real-time audio
processing. I haven't done anything with dyne:bolic, but I have used
both JAD and Studio64.

I can't really tell which of the two is "better" -- both of them seemed
to be excellent, and neither of them had anything I couldn't get on
Gentoo. That may change if I don't get CSound running on Gentoo soon,
however. :)

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.
 
G

Giles Bowkett

I've got some code which needs to operate in a time-sensitive way. It
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
statement).

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
synthesizers.
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.

--
Giles Bowkett

Podcast: http://hollywoodgrit.blogspot.com
Blog: http://gilesbowkett.blogspot.com
Portfolio: http://www.gilesgoatboy.org
Tumblelog: http://giles.tumblr.com
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,768
Messages
2,569,574
Members
45,048
Latest member
verona

Latest Threads

Top