#!/usr/bin/perl
#
# Programmer:    Craig Stuart Sapp <craig@ccrma.stanford.edu>
# 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 = <FILE>;
   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";

}


