#!/usr/bin/perl # # Programmer: Craig Stuart Sapp # Creation Date: Wed Nov 24 23:42:34 PST 2004 # Last Modified: Wed Nov 24 23:42:34 PST 2004 # Filename: /disk/admin/share/melisma/melisma2003/beethoven/harmony2humdrum # Syntax: perl 5 # # Description: # use strict; my $filename = $ARGV[0]; my @contents; if ($filename =~ /^\s*$/) { @contents = <>; } else { open (FILE, $filename) || die; @contents = ; close FILE; } convertDataToHumdrum(@contents); exit(0); ########################################################################### ############################## ## ## convertDataToHumdrum -- ## sub convertDataToHumdrum { my @contents = @_; my $analysisline = -1; my $i; for ($i=0; $i<@contents; $i++) { if ($contents[$i] =~ /Analysis:\s*Harmonic Rep\s*TPC Rep/) { $analysisline = $i; last; } } if ($analysisline < 0) { print "Error: data does not contain an analysis segment\n"; exit(1); } else { # print "Analysis line = $analysisline\n"; } # data format : # 0 x x x x x F < F F > # 105 x F < > # 210 x x F < C C > # 315 x F < > # 420 x x x F < F Ab > my $startime; my $rest; my $exes; my $root; print "**time\t**tsroot\n"; for ($i=$analysisline; $i<@contents; $i++) { if ($contents[$i] =~ /^\s*(\d+)/) { $startime = $1; $rest = $'; $rest =~ s/\s*$//; $rest =~ /^([ \tx]*)/; $exes = $1; $rest = $'; $rest =~ s/^\s*//; $rest =~ /^([^ \t]+)/; $root = $1; $rest = $'; $root =~ s/b/-/g; print "$startime\t$root\n"; } } print "*-\t*-\n"; }