#!/usr/bin/env perl use SDL; die "Could not initialize SDL: ", SDL::GetError() if ( 0 > SDL::Init(SDL_INIT_AUDIO())); $ARGV[0] ||= 'data/sample.wav'; die "usage: $0 [wavefile]\n" if ( in $ARGV[0], qw/ -h --help -? /); my ($wav_spec,$wav_buffer,$wav_len,$wav_pos) = (0,0,0,0); my $done = 0; $fillerup = sub { my ($data,$len) = @_; $wav_ptr = $wav_buffer + $wav_pos; $wav_remainder = $wav_len - $wav_pos; while ( $wav_remainder <= $len ) { SDL::MixAudio($data,$wav_ptr,$wav_remainder,SDL_MIX_MA +XVOLUME); $data += $wav_remainder; $len -= $wav_remainder; $wav_ptr = $wav_buffer; $wav_remainder = $wav_len; $wav_pos = 0; } SDL::MixAudio($data,$wav_ptr,$len,SDL_MIX_MAXVOLUME); $wav_pos += $len; }; $poked = sub { $done = 1; }; $SIG{HUP} = $poked; $SIG{INT} = $poked; $SIG{QUIT} = $poked; $SIG{TERM} = $poked; $spec = SDL::NewAudioSpec(44100,AUDIO_S16,2,4096); $wave = SDL::LoadWAV($ARGV[0],$spec); ($wav_spec,$wav_buffer,$wav_len) = @$wave; die "Could not load wav file $ARGV[0], ", SDL::GetError(), "\n" unless + ( $wav_len ); die "Could not open audio ", SDL::GetError() if (0 > SDL::OpenAudio($wav_spec,$fillerup)); SDL::PauseAudio(0); print "Using audio driver: ", SDL::AudioDriverName(), "\n"; while (! $done && ( SDL::GetAudioStatus() == SDL_AUDIO_PLAYING())) { SDL::Delay(1000); }
In reply to Re: Need advice on Sound-Modules
by zentara
in thread Need advice on Sound-Modules
by joe.fool
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |