#!/usr/bin/perl use Audio::Mad qw(:all); use Audio::Ao qw(:all); my $stream = new Audio::Mad::Stream(); my $frame = new Audio::Mad::Frame(); my $synth = new Audio::Mad::Synth(); my $timer = new Audio::Mad::Timer(); my $resample = new Audio::Mad::Resample(44100, 22050); my $dither = new Audio::Mad::Dither(); my $buffer = join('', ); $stream->buffer($buffer); initialize_ao; my $device = open_live(default_driver_id(), 16, 22050, 2, is_big_endian(), {}); while (1) { print "."; if ($frame->decode($stream) == -1) { print "Done\n"; last unless ($stream->err_ok()); warn "decoding error: " . $stream->error(); next; } $synth->synth($frame); my $pcm = $dither->dither($resample->resample($synth->samples())); play($device, $pcm, length($pcm)); #print $pcm; } close_ao($device); shutdown_ao;