#!/usr/bin/perl -w -s use Data::Dumper; our ($R); my %files = ( qw'Flauta/JPres-1504.ly.data' => 'A', qw'Flauta/Minkus1-1826.ly.data' => 'C', qw'Flauta/Minkus2-1826.ly.data' => 'C', qw'Flauta/Minkus3-1826.ly.data' => 'C', qw'Flauta/saltarello-13xx.ly.data' => 'A', qw'Flauta/Bach2-1714-flute.ly.data' => 'B', qw'Flauta/Bach3-1714-flute.ly.data' => 'B', qw'Flauta/Giuliani1-1781-flute.ly.data' => 'C', qw'Violino/Baltzar-1650.ly.data' => 'B', qw'Violino/Banister-1624.ly.data' => 'A', qw'Flauta/Brown1-2006.ly.abs.data' => 'D', qw'Flauta/troto1.ly.abs.data' => 'A', qw'Flauta/TarantellaNapolitana_Am.ly.abs.data' => 'A', qw'Violino/Bach-Partita1-1720-1.ly.abs.data' => 'B', qw'Violino/Bach-Partita1-1720-2.ly.abs.data' => 'B', qw'Violino/Bach-Partita1-1720-3.ly.abs.data' => 'B', qw'Violino/Bach-Partita1-1720-4.ly.abs.data' => 'B', qw'Violino/Bach-Partita1-1720-5.ly.abs.data' => 'B', qw'Violino/Bach-Partita1-1720-6.ly.abs.data' => 'B', qw'Violino/Bach-Partita1-1720-7.ly.abs.data' => 'B', qw'Trompete/BistDuBeiMir.ly.data' => 'B', qw'Voice/swallows.ly.data' => 'C', qw'Voice/alice.ly.data' => 'C', qw'Flauta/LullabyBrahms-C.ly.data' => 'C', qw'Violino/Bach-Partita1-1720-8.ly.abs.data' => 'B', qw'Clarinete/Sardain-1999.ly.data' => 'D', qw'Cello/cadenza.ly.abs.data' => 'D', qw'Cello/grieg1.ly.data' => 'D', ); my $x; for my $file (keys %files) { print STDERR ">>> $file <<<\n"; my $f = $file; $f =~ s/data$/simp/; if ($file =~ m!\.abs!) { print `./jjinter -abs $f > $file`; } else { print `./jjinter $f > $file`; } my $xx = $file; $xx =~ s/\.data$//; print `./extractMeta $xx > ${file}_`; my $d = do $file; my $dd = do "${file}_"; $d->{$_} = $dd->{$_} for keys %$dd; $d->{epoch} = $files{$file}; push @$x, $d; } my %keys; for my $f (@$x) { for (keys %$f) { $keys {$_}++; } } unless ($R) { print "\@relation 'foo'\n\n"; } for (keys %keys) { next if $_ eq "epoch"; if (m!^meta!) { my %vals; for my $f (@$x) { $vals{$f->{$_}}++ } unless ($R) { print "\@attribute $_ {",join(",",map {"'$_'"} keys %vals),"}\n"; } } else { s/,/_/g; s/-/m/g; s/\./_dot_/g; if ($R) { print "a$_\t"; } else { print "\@attribute a$_ real\n"; } } } if ($R) { print "epoch\n" } else { print "\@attribute epoch {'A','B','C','D'}\n\n"; print "\@data\n"; } for my $f (@$x) { for (keys %keys) { next if $_ eq "epoch"; my $v = $f->{$_} || 0; if (m!^meta!) { print "'$v'\t" if (!$R) } else { printf "%f\t", $v; } } print "$f->{epoch}\n"; } #print Dumper(\%keys);