opl3
Version:
OPL3 emulator library
48 lines (46 loc) • 1.71 kB
HTML
<html>
<head>
<title>OPL3</title>
<script type="text/javascript" src="../dist/opl3.js"></script>
<script type="text/javascript" src="./pico.min.js"></script>
</head>
<body>
<script type="text/javascript">
fetch('data/D_INTRO.mus').then(function(res){
return res.arrayBuffer();
}).then(function(mus){
fetch('data/GENMIDI.OP2').then(function(res){
return res.arrayBuffer();
}).then(function(genmidi){
var player = new OPL3.Player(OPL3.format.MUS, {
bufferSize: Pico.bufferSize,
sampleRate: Pico.sampleRate,
bitDepth: 32,
instruments: genmidi
});
player.load(mus);
var queue = [];
Pico.play(function(e){
var out = e.buffers;
var tmp = queue.shift();
if (tmp){
var dv = new DataView(tmp);
for (var i = 0, offset = 0; i < e.bufferSize; i++, offset += 8){
out[0][i] = dv.getFloat32(offset, true);
out[1][i] = dv.getFloat32(offset + 4, true);
}
}else{
var silence = new Float32Array(e.bufferSize);
out[0].set(silence);
out[1].set(silence);
}
});
player.on('data', function(buffer){
queue.push(buffer);
});
});
});
</script>
</body>
</html>