#!perl6

use v6;

use Audio::Convert::Samplerate;
use Audio::Sndfile;

my $test-file-in = "t/data/1sec-chirp-22050.wav";
my $test-file-out = "test-out.wav";
my $bufsize = 4192;
my $ratio = 2;

my Audio::Sndfile $in-obj = Audio::Sndfile.new(filename => $test-file-in, :r);
my Audio::Convert::Samplerate $conv-obj =  Audio::Convert::Samplerate.new(channels => $in-obj.channels);
my Int $sr = ($in-obj.samplerate * $ratio).Int;

my Audio::Sndfile $out-obj = Audio::Sndfile.new(filename   => $test-file-out, 
                                                channels   => $in-obj.channels, 
                                                format     => $in-obj.format,
                                                samplerate => $sr,  :w);


loop {
    my @data-in = $in-obj.read-int($bufsize);
    my Bool $last = (@data-in.elems != ($bufsize * $in-obj.channels));
    my @data-out = $conv-obj.process-int(@data-in, $ratio, $last);
    $out-obj.write-int(@data-out);
    last if $last;
}

$in-obj.close;
$out-obj.close;

# vim: expandtab shiftwidth=4 ft=perl6
