#!/usr/bin/perl # # Programmer: Craig Stuart Sapp # Creation Date: Thu Dec 9 00:48:09 PST 2004 # Last Modified: Thu Dec 9 00:48:09 PST 2004 # Filename: tskey2hum # Syntax: perl 5 # # Description: # ## Example input: ## ## Bb Bb Bb Bb Bb Bb Bb Bb Bb Bb ## Bb Bb Bb ## ## Kostka-Payne Roman Numeral Analysis: ## ## Segment: 15750 17990 ## Segment: 17990 20265 ## Segment: 20265 22505 ## Segment: 22505 24745 ## Segment: 24745 26985 ## Segment: 26985 29260 ## ## |Bb: I . V6 |I . vi |V . V42 |I6 ii I |V V7 I |. V43 I6 |IV . I |. IV6 V42 |I6 . IV |V . . |I6 II6 V7 | ## ## vi V6 I |V V7 I ]| ## ## use strict; my @contents = <>; my $line; my $analysis; my @segments; foreach $line (@contents) { if ($line =~ /\|/) { # print $line; chomp $line; $analysis .= " $line"; } elsif ($line =~ /Segment:\s+(\d+)\s+(\d+)\s*$/) { if (@segments == 0) { $segments[@segments] = $1; $segments[@segments] = $2; } else { $segments[@segments] = $2; } } } $analysis =~ s/\|/ \| /g; my $token; my $count = 0; print "**tsharm\t**time\n"; while ($analysis =~ s/^(\s*)([^ \t\n]+)//) { $token = $2; if ($token =~ /\]/) { next; } elsif ($token =~ /:/) { if ($token =~ /(.)bb:/) { $token =~ s/b:/--:/; } elsif ($token =~ /(.)b:/) { $token =~ s/b:/-:/; } print "*$token\t*\n"; } elsif ($token =~ /\|/) { print "$token\t$segments[$count]\n"; $count++; } else { $token = convertInversions($token); print "$token\t.\n"; } } print "*-\t*-\n"; # Contents of parameter file: # # verbosity=2 # default_profile_value = 1.5 # npc_or_tpc_profile=1 # scoring_mode = 1 # segment_beat_level=3 # beat_printout_level=2 # romnums=1 # romnum_type=0 # running=0 # ############################## ## ## convertInversions -- ## sub convertInversions { my ($token) = @_; my $digits = ""; if ($token =~ /(\d+)/) { $digits = $1; } if ($digits eq "6") { $token =~ s/6/b/; } if ($digits eq "64") { $token =~ s/64/c/; } if ($digits eq "65") { $token =~ s/65/7b/; } if ($digits eq "43") { $token =~ s/43/7c/; } if ($digits eq "42") { $token =~ s/42/7d/; } return $token; }