md4.pl.txt

require "replace.pl";

#binmode STDIN;

%programs = ( 0,"Standard 1", 1,"Standard 2", 2,"Standard 3",

8,"Room", 9,"Hip-Hop", 10,"Jungle", 11,"Techno",

16,"Power",

24,"Electronic", 25,"TR-808", 26,"Dance",

27,"CR-78", 28,"TR-606", 29,"TR-707",

30,"TR-909",

32,"Jazz",

40,"Brush",

48,"Orchestra", 49,"Ethnic", 50,"Kick &amp\; Snare",

52,"Asia", 53,"Cymbal &amp\; Claps",

56,"Sfx", 57,"Rhythm FX", 58,"Rhythm FX2",

127,"CM64/32L"

);

@module = ("SC-55", "SC-88", "SC-88 Pro");

foreach $infile (<*.bin>) {

$mo = substr($infile,0,1);

$no = substr($infile,1,3);

$no =~ tr/\.MDBI//;

$no =~ s/\.//;

$no =~ s/B//;

$outfile = $infile;

$outfile =~ s/bin/html/i;

# system("perl md3.pl $module[$mo-1]_$programs{$no} <$infile >$outfile");

&makefile($infile, $outfile, $no+1, $module[$mo-1]." ".$programs{$no});

#print "$mo $no $infile $outfile $module[$mo-1].$programs{$no}\n";

}

#############################

sub makefile

{

local ($infile, $outfile, $no, $tonename) = @_;

local ($p, $p2, $pmax, $pmax_);

open INFILE,"<$infile" or die "can't open $infile.\n";

open OUTFILE, ">$outfile" or die "can't open $outfile.\n";

select(OUTFILE);

binmode INFILE;

print STDOUT "$infile $outfile $tonename\n";

print << "HEADER";

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<HTML lang="ja">

<HEAD>

<META HTTP-EQUIV="Content-Type" CONTENT="text/html;CHARSET=Shift_JIS">

<META NAME="keywords" CONTENT="$tonename, rhythm name list">

<META NAME="description" CONTENT="$tonename rhythm name list">

<LINK rel="stylesheet" href="../standard.css" type="text/css">

<TITLE LANG="ja">$tonename set</TITLE>

<STYLE TYPE="text/css">

<!--

.WKEY {

/* border-width:0 1 0 1;

*/ border-style:none;

padding:0 4ex 0 0;

background-color: #FFFFFF;

color: #000000;

}

.BKEY {

border-width:0 1 0 1;

border-style:none;

padding:0 1ex 0 0;

background-color: #000000;

color: #F0F0F0;

}

-->

</STYLE>

</HEAD>

<BODY LANG="ja">

<H3>$tonename set</H3>

Program#: $no

HEADER

undef $/;

$buf = <INFILE>;

$pmax = length($buf);

print "<TABLE BORDER=\"1\">\n";

print "<CAPTION>$tonemane</CAPTION>\n";

$p = 0;

($map,$pc,$key,$name) = unpack("xCCCA12",substr($buf,$p,16));

$p2 = 12 * int($key / 12);

for ($i = 0; $i < 2; $i++) {

print "<TD VALIGN=\"TOP\">\n<TABLE BORDER=\"1\">\n";

if ($pmax < 70 * 16) {

$pmax_ = $pmax;

} elsif ($i == 0) {

$pmax_ = 70 * 16;

} else {

$pmax_ = $pmax;

}

for (; $p < $pmax_; $p += 16) {

($map,$pc,$key,$name) = unpack("xCCCA12",substr($buf,$p,16));

for (; $p2 < $key; $p2++) {

&putkey(-$p2);

print "<TD><BR></TD></TR>\n";

}

&putkey($key);

$name = &replaceRhythmName($name);

print "<TD>$name</TD></TR>\n";

$p2++;

if ($key == 71) {

$p += 16;

last;

}

}

print "</TABLE>\n</TD>";

}

print "</TR>\n</TABLE>\n";

print << "FOOTER";

</BODY>

</HTML>

FOOTER

}

#############################

sub putkey

{

local($key) = @_;

local($f);

local(@tone) = ("c","c#","d","d#","e","f","f#","g","g#","a","a#","b");

if ($key < 0) {

$f = 1;

$key = -$key;

# $key2 = "<BR>";

$k3y2 = "";

} else {

$key2 = $key;

}

$_ = $key;

$_ %= 12;

print "<TR>\n";

if ($_ == 1 || $_ == 3 || $_ == 6 || $_ == 8 || $_ == 10) { # black

print "<TD CLASS=\"WKEY\"></TD>\n";

print "<TD CLASS=\"BKEY\" ALIGN=\"LEFT\"><B>$key2</B> \[$tone[$_]\]</TD>\n";

} else { # white

if ($_ == 0) {

$oct = int ($key / 12) - 1;

print "<TH ROWSPAN=\"12\">C$oct</TH>\n";

}

print "<TD COLSPAN=\"2\" ALIGN=\"LEFT\" CLASS=\"WKEY\"><B>$key2</B> \[$tone[$_]\]</TD>\n";

}

}