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 &\; Snare",
52,"Asia", 53,"Cymbal &\; 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";
}
}