ardour/tools/ARDOUR/AutomationSRConverter.pm
Paul Davis 87726495c3 Merged changes from trunk 1699:1751 into 2.1-staging
git-svn-id: svn://localhost/ardour2/branches/2.1-staging@1752 d708f5d6-7413-0410-9779-e7cbd77b26cf
2007-04-26 20:54:31 +00:00

62 lines
999 B
Perl

package ARDOUR::AutomationSRConverter;
sub new {
my ($type, $input, $output, $inputSR, $outputSR) = @_;
my $self = bless {}, $type;
$self->{Input} = $input;
$self->{Output} = $output;
$self->{Ratio} = ($outputSR+0) / ($inputSR+0);
return $self;
}
sub readline {
my ($self) = @_;
my $buf;
my $c='';
do {
$buf.=$c;
$c=$self->{Input}->getc;
} while ($c ne '' && $c ne "\n");
return $buf;
}
sub writeline {
my ($self, $line) = @_;
$self->{Output}->print($line."\n");
}
sub convert {
my ($self) = @_;
my $version=$self->readline;
if ($version ne "version 1") {
die ("Unsupported automation version $version");
}
$self->writeline($version);
my $buf = $self->readline;
while ( $buf ne "" ) {
if ( $buf eq "begin" ||
$buf eq "end") {
$self->writeline($buf);
} else {
my ($type, $position, $value) = split(' ', $buf);
$self->writeline($type." ".sprintf("%.0f",$position*$self->{Ratio})." ".$value);
}
$buf = $self->readline;
}
}
1;