<!DOCTYPE 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>