[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Generate a tone using ruby?

apatheticagnostic

7/26/2006 10:05:00 PM

Hey everyone, I'm looking for a simple way to generate a tone in ruby .
. any suggestions?

--
Posted via http://www.ruby-....

6 Answers

William James

7/26/2006 10:35:00 PM

0


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

print "\a"

apatheticagnostic

7/26/2006 11:20:00 PM

0

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


--
Posted via http://www.ruby-....

William James

7/27/2006 12:37:00 AM

0


Jeremiah Dodds wrote:
> 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-....
> >
> > 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.
>
>
> --
> Posted via http://www.ruby-....

require "Win32API"
Beep = Win32API.new("kernel32", "Beep", ["I", "I"], 'v')
def beep freq, duration
Beep.call(freq, duration)
end

beep 600, 400

Hans Fugal

7/27/2006 12:44:00 AM

0

Jeremiah Dodds wrote:
> 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-....
>> 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.
>
>

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/r...

apatheticagnostic

7/27/2006 1:04:00 AM

0

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.

--
Posted via http://www.ruby-....

usenet

7/27/2006 6:28:00 AM

0

Jeremiah Dodds <apatheticagnostic@gmail.com> wrote:
> 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.

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.

--
:wq
^X^Cy^K^X^C^C^C^C