Hey everyone, I'm looking for a simple way to generate a tone in ruby . . . any suggestions?
on 27.07.2006 00:05
on 27.07.2006 00:35
Jeremiah Dodds wrote: > Hey everyone, I'm looking for a simple way to generate a tone in ruby . > . any suggestions? > > -- > Posted via http://www.ruby-forum.com/. print "\a"
on 27.07.2006 01:19
William James wrote: > Jeremiah Dodds wrote: >> Hey everyone, I'm looking for a simple way to generate a tone in ruby . >> . any suggestions? >> >> -- >> Posted via http://www.ruby-forum.com/. > > print "\a" Well, yeah sure. What I'd like to be able to do is generate a tone of a specific frequency. Like an A note, or a D sharp.
on 27.07.2006 02:43
Jeremiah Dodds wrote: > Well, yeah sure. What I'd like to be able to do is generate a tone of a > specific frequency. Like an A note, or a D sharp. > > > -- > Posted via http://www.ruby-forum.com/. require "Win32API" Beep = Win32API.new("kernel32", "Beep", ["I", "I"], 'v') def beep freq, duration Beep.call(freq, duration) end beep 600, 400
on 27.07.2006 02:47
Jeremiah Dodds wrote: > specific frequency. Like an A note, or a D sharp. > > I presume you want to play it out the speaker? I'm not sure if there's a portable way to do that, but in most unices it would be a matter of sending the audio data for that frequency to a special file, e.g. /dev/dsp. Or perhaps you want to save to a file. In either case, esp. the latter, ruby/audio would be worth a look. http://hans.fugal.net/src/ruby-audio/
on 27.07.2006 03:04
Thanks William and Hans. William, if I was on windows that probably would've helped. Hans, I don't necessarily need to save to file - it could be handy though. I'll check out ruby-audio. I really need to learn not to post these help requests when I'm sleep-deprived - I leave out vital information like what exactly I want to do, and what OS I'm running on. I want to generate the sound real-time - so I guess I'll need to figure out how to send it to /dev/dsp or /dev/audio or whatnot.
on 27.07.2006 08:33
Jeremiah Dodds <apatheticagnostic@gmail.com> wrote: > I want to generate the sound real-time - so I guess I'll need to figure > out how to send it to /dev/dsp or /dev/audio or whatnot. Something like this might work on *unix : ------------------------------------------------------------ Samplerate = 8000 def beep(frequency, amplitude, duration) f = File.open("/dev/dsp", "w") wave = "" 0.step(duration, 1.0/Samplerate) do |t| y = Math.sin(t * frequency) * 50 + 127; wave << y.to_i.chr end f.write(wave) end beep(2000, 100, 1) ------------------------------------------------------------ this code assumes the default settings of your soundcard are 8000 hz, 8 bits samples, signed, one channel. If you want more control over these values, you will have to do fiddling with OSS IOCTL's or alsa libraries.