-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathprep.pl
executable file
·55 lines (46 loc) · 1 KB
/
prep.pl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#!/usr/bin/perl
use strict; use warnings;
use Path::Class;
use autodie; # die if problem reading or writing a file
my $infile = file($ARGV[0])->openr();
my $outfile = file("$ARGV[0].prep")->openw();
while (my $line = <>)
{
$line = remove_metas($line);
$line = remove_track_markers($line);
$line = remove_irrelevant($line);
$line = remove_empty_lines($line);
$line = fix_mfile($line);
$outfile->print($line);
}
$outfile->print("TrkEnd\n");
sub fix_mfile
{
my($string) = @_;
$string =~ s/MFile (\d+) \d+ (\d+)/MFile $1 1 $2\nMTrk/g;
return $string;
}
sub remove_metas
{
my($string) = @_;
$string =~ s/\d+ Meta.*//g;
return $string;
}
sub remove_empty_lines
{
my($string) = @_;
$string =~ s/^\n//g;
return $string;
}
sub remove_track_markers
{
my($string) = @_;
$string =~ s/MTrk|TrkEnd//g;
return $string;
}
sub remove_irrelevant
{
my($string) = @_;
$string =~ s/^.*(TimeSig|KeySig|Tempo|SeqSpec|SMPTE|Pb|PrCh).*$//g;
return $string;
}