| [reply] |
You can send audio direct to the /dev/dsp, but it can get tricky depending on your soundcard and sounddrivers. You need to make sure the wav is in the default input format for your sound system, or else you will hear static. Usually, you need to "set" the soundcard parameters before playing anything.
Here is a way to generate your wav directly.
#!/usr/bin/perl
use warnings;
use strict;
use Audio::DSP;
$| = 1;
my $sample_rate = 22050; #44100 gives best sound, but highest cpu
#8000 works
my $channels = 1;
my $format = AFMT_S16_LE; #8 bit won't work on SBLive
my $buffer = 4096;
my $dsp = new Audio::DSP(buffer => $buffer,
channels => $channels,
format => $format,
rate => $sample_rate);
$dsp->init() || die $dsp->errstr();
############################################################
my $freq_adj = .1;
my $vol = .5;
my $toggle = 1;
while(1){
make_tone($freq_adj, $vol);
if(($freq_adj > 4) or ($freq_adj < .1)){ $toggle *= -1;}
$freq_adj += ($toggle * .001); #higher increment numbers are slower
#0 is pure tone
}
sub make_tone {
my $rad = 0;
my ($freq_adj, $vol) = @_;
while ( $rad < 6.283 ){
$rad += $freq_adj;
my $raw = ($vol*32768) * sin($rad); #max times
my $num = pack( 'V', $raw );
$dsp->dwrite($num);
}
}
I'm not really a human, but I play one on earth.
flash japh
| [reply] [d/l] |
Update: Totally misread the node, sorry.
For a beep, see Escape Sequences
A \a will do it.
HTH.
Walking the road to enlightenment... I found a penguin and a camel on the way.....
Fancy a yourname@perl.me.uk? Just ask!!!
| [reply] [d/l] |