Hey everyone, I'm looking for a simple way to generate a tone in ruby . . . any suggestions?
on 2006-07-27 00:05
on 2006-07-27 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 2006-07-27 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 2006-07-27 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 2006-07-27 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 2006-07-27 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 2006-07-27 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.
Please log in before posting. Registration is free and takes only a minute.
Existing account
(Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
Log in with Google account | Log in with Yahoo account
No account? Register here.