diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2007-01-17 13:13:58 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2007-01-17 13:13:58 +0000 |
commit | 76c25a4a4459b8e550c3c687458d04db0beaee77 (patch) | |
tree | 5a3da92468a71945b5acd373dae08e216a8e2828 /tools/synthesize_sources.pl | |
parent | 9fc6895565fc81ec6061088fe7f4fc4e8318c800 (diff) |
add sampo's synthesize_sources perl script to tools; add scroll-playhead-{forward,backward} with ctrl-<arrow> default bindings (for mr beasley)
git-svn-id: svn://localhost/ardour2/trunk@1336 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'tools/synthesize_sources.pl')
-rwxr-xr-x | tools/synthesize_sources.pl | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/tools/synthesize_sources.pl b/tools/synthesize_sources.pl new file mode 100755 index 0000000000..ebb903cf37 --- /dev/null +++ b/tools/synthesize_sources.pl @@ -0,0 +1,75 @@ +#!/usr/bin/env perl +# Ardour session synthesizer +# (c)Sampo Savolainen 2007 +# +# GPL +# This reads an Ardour session file and creates zero-signal source files +# for each missing source file. The length of each file is determined +# by how far regions using that source file go into the sample data. + +use XML::Parser::PerlSAX; +use XML::Handler::XMLWriter; +use IO::Handle; + +use ARDOUR::SourceInfoLoader; + + +my ($samplerate, $sessionName) = @ARGV; + +if ( ! -d $sessionName || ! -f $sessionName."/".$sessionName.".ardour" ) { + print "usage: synthesize_sources.pl samplerate [session name, the name must match the directory and the .ardour file in it]\n"; + exit; +} + +my $sessionFile = $sessionName."/".$sessionName.".ardour"; + + +my $handler = new ARDOUR::SourceInfoLoader($sessionName); + +my $parser = XML::Parser::PerlSAX->new( Handler => $handler ); + +$parser->parse(Source => { SystemId => $sessionFile }); + +if ( ! -d $sessionName."/interchange" ) { + mkdir $sessionName."/interchange/" || die "couldn't create ".$sessionName."/interchange"; +} + +if ( ! -d $sessionName."/interchange/".$sessionName ) { + mkdir $sessionName."/interchange/".$sessionName || die "couldn't create ".$sessionName."/interchange/".$sessionName; +} + +if ( ! -d $sessionName."/interchange/".$sessionName."/audiofiles" ) { + mkdir $sessionName."/interchange/".$sessionName."/audiofiles" || die "couldn't create ".$sessionName."/interchange/".$sessionName."/audiofiles"; +} + +if ( ! -d $sessionName."/peaks") { + mkdir $sessionName."/peaks/" || die "couldn't create ".$sessionName."/peaks"; +} + +my $audioFileDirectory = $sessionName."/interchange/".$sessionName."/audiofiles"; + +my %sources = %{$handler->{Sources}}; + +foreach my $tmp (keys %sources) { + + print "Generating ".$audioFileDirectory."/".$sources{$tmp}->{name}.".wav\n"; + + system("sox", + "-t", "raw", # /dev/zero is raw :) + "-r", $samplerate, # set sample rate + "-c", "1", # 1 channel + "-b", # input in bytes + "-s", # signed + "/dev/zero", # input signal + + "-w", # output 16 bit + "-t", "wav", # format wav + $audioFileDirectory."/".$sources{$tmp}->{name}, # filename + "trim", "0", $sources{$tmp}->{calculated_length}."s" # trim silence to wanted sample amount + ); + + +} + + + |