fix loading issues
This commit is contained in:
parent
beeec74fa1
commit
84369dbc2c
1 changed files with 25 additions and 24 deletions
49
xm.js
49
xm.js
|
|
@ -182,15 +182,10 @@ function next_row() {
|
||||||
ch.period = PeriodForNote(ch, note);
|
ch.period = PeriodForNote(ch, note);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var debug = document.getElementById("debug");
|
|
||||||
debug.innerHTML = 'pat ' + cur_pat + ' row ' + (cur_row-1);
|
|
||||||
|
|
||||||
var pat = document.getElementById("pattern");
|
|
||||||
patdisplay.push(pretty_row.join(" "));
|
patdisplay.push(pretty_row.join(" "));
|
||||||
if (patdisplay.length > 16) {
|
if (patdisplay.length > 16) {
|
||||||
patdisplay.shift();
|
patdisplay.shift();
|
||||||
}
|
}
|
||||||
pat.innerHTML = patdisplay.join("\n");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function Envelope(points, type, sustain, loopstart, loopend) {
|
function Envelope(points, type, sustain, loopstart, loopend) {
|
||||||
|
|
@ -421,6 +416,11 @@ function audio_cb(e) {
|
||||||
var y = -Math.log(rms)*10;
|
var y = -Math.log(rms)*10;
|
||||||
ctx.fillRect(j*16, y, 15, 64-y);
|
ctx.fillRect(j*16, y, 15, 64-y);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var debug = document.getElementById("debug");
|
||||||
|
debug.innerHTML = 'pat ' + cur_pat + ' row ' + (cur_row-1);
|
||||||
|
var pat = document.getElementById("pattern");
|
||||||
|
pat.innerHTML = patdisplay.join("\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
function eff_t0_0(ch, data) { // arpeggio
|
function eff_t0_0(ch, data) { // arpeggio
|
||||||
|
|
@ -504,7 +504,7 @@ var effects_t0 = [ // effect functions on tick 0
|
||||||
];
|
];
|
||||||
|
|
||||||
function eff_t1_0(ch) { // arpeggio
|
function eff_t1_0(ch) { // arpeggio
|
||||||
if (ch.effectdata != 0) {
|
if (ch.effectdata != 0 && ch.inst != undefined) {
|
||||||
var arpeggio = [0, ch.effectdata>>4, ch.effectdata&15];
|
var arpeggio = [0, ch.effectdata>>4, ch.effectdata&15];
|
||||||
var note = ch.note + arpeggio[cur_tick % 3];
|
var note = ch.note + arpeggio[cur_tick % 3];
|
||||||
ch.period = PeriodForNote(ch, note);
|
ch.period = PeriodForNote(ch, note);
|
||||||
|
|
@ -691,25 +691,25 @@ function playXM(arrayBuf) {
|
||||||
var hdrsiz = dv.getUint32(idx, true);
|
var hdrsiz = dv.getUint32(idx, true);
|
||||||
var instname = getstring(dv, idx+0x4, 22);
|
var instname = getstring(dv, idx+0x4, 22);
|
||||||
var nsamp = dv.getUint16(idx+0x1b, true);
|
var nsamp = dv.getUint16(idx+0x1b, true);
|
||||||
var env_nvol = dv.getUint8(idx+225);
|
|
||||||
var env_vol_type = dv.getUint8(idx+233);
|
|
||||||
var env_vol_sustain = dv.getUint8(idx+227);
|
|
||||||
var env_vol_loop_start = dv.getUint8(idx+228);
|
|
||||||
var env_vol_loop_end = dv.getUint8(idx+229);
|
|
||||||
var env_npan = dv.getUint8(idx+226);
|
|
||||||
var env_pan_type = dv.getUint8(idx+234);
|
|
||||||
var env_pan_sustain = dv.getUint8(idx+230);
|
|
||||||
var env_pan_loop_start = dv.getUint8(idx+231);
|
|
||||||
var env_pan_loop_end = dv.getUint8(idx+232);
|
|
||||||
env_vol = [];
|
|
||||||
for (var j = 0; j < env_nvol*2; j++) {
|
|
||||||
env_vol.push(dv.getUint16(idx+129+j*2, true));
|
|
||||||
}
|
|
||||||
env_pan = [];
|
|
||||||
for (var j = 0; j < env_npan*2; j++) {
|
|
||||||
env_pan.push(dv.getUint16(idx+177+j*2, true));
|
|
||||||
}
|
|
||||||
if (nsamp > 0) {
|
if (nsamp > 0) {
|
||||||
|
var env_nvol = dv.getUint8(idx+225);
|
||||||
|
var env_vol_type = dv.getUint8(idx+233);
|
||||||
|
var env_vol_sustain = dv.getUint8(idx+227);
|
||||||
|
var env_vol_loop_start = dv.getUint8(idx+228);
|
||||||
|
var env_vol_loop_end = dv.getUint8(idx+229);
|
||||||
|
var env_npan = dv.getUint8(idx+226);
|
||||||
|
var env_pan_type = dv.getUint8(idx+234);
|
||||||
|
var env_pan_sustain = dv.getUint8(idx+230);
|
||||||
|
var env_pan_loop_start = dv.getUint8(idx+231);
|
||||||
|
var env_pan_loop_end = dv.getUint8(idx+232);
|
||||||
|
var env_vol = [];
|
||||||
|
for (var j = 0; j < env_nvol*2; j++) {
|
||||||
|
env_vol.push(dv.getUint16(idx+129+j*2, true));
|
||||||
|
}
|
||||||
|
var env_pan = [];
|
||||||
|
for (var j = 0; j < env_npan*2; j++) {
|
||||||
|
env_pan.push(dv.getUint16(idx+177+j*2, true));
|
||||||
|
}
|
||||||
// FIXME: ignoring keymaps for now and assuming 1 sample / instrument
|
// FIXME: ignoring keymaps for now and assuming 1 sample / instrument
|
||||||
// var keymap = getarray(dv, idx+0x21);
|
// var keymap = getarray(dv, idx+0x21);
|
||||||
var samphdrsiz = dv.getUint32(idx+0x1d, true);
|
var samphdrsiz = dv.getUint32(idx+0x1d, true);
|
||||||
|
|
@ -772,6 +772,7 @@ function playXM(arrayBuf) {
|
||||||
instruments.push(inst);
|
instruments.push(inst);
|
||||||
} else {
|
} else {
|
||||||
idx += hdrsiz;
|
idx += hdrsiz;
|
||||||
|
console.log("empty instrument", i, hdrsiz, idx);
|
||||||
instruments.push(null);
|
instruments.push(null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue