added a few simple effects, updated todo

This commit is contained in:
Andy Sloane 2015-10-28 15:56:29 -07:00
commit 0bfc83d48b
2 changed files with 33 additions and 11 deletions

View file

@ -7,9 +7,17 @@
code: <a href="http://github.com/a1k0n/jsxm/">github.com/a1k0n/jsxm</a>
tune: my dirty old kamel - <a href="http://zalza.bandcamp.com">Zalza</a>
todo:
- instrument fadeout
- unroll short sample loops
- unroll mixer code loops
- pingpong loops
- various XM effects are missing
- multi-sample instruments
- instrument fadeout
- missing XM effects (in rough order of priority):
- Rxy - retrigger
- Bxx / Dxx - position / pattern jumps
- 7xy - tremolo
- E3x, E4x, E5x, E6x, E7x, E9x, EDx, EEx
- Gxx, Hxy, Kxx, Lxx, Pxy, Txy
- oscilloscopes
</pre>
<canvas id='vu' width=224 height=64></canvas>

32
xm.js
View file

@ -455,6 +455,14 @@ function eff_t0_4(ch, data) { // vibrato
eff_t1_4(ch, data);
}
function eff_t0_8(ch, data) { // set panning
ch.pan = data;
}
function eff_t0_9(ch, data) { // sample offset
ch.off = data * 256;
}
function eff_t0_a(ch, data) { // volume slide
if (data) {
if (data & 0x0f) {
@ -523,12 +531,12 @@ var effects_t0 = [ // effect functions on tick 0
eff_t0_2,
eff_t0_3,
eff_t0_4, // 4
eff_unimplemented_t0, // 5
eff_t0_a, // 5, same as A on first tick
eff_t0_a, // 6, same as A on first tick
eff_unimplemented_t0, // 7
eff_unimplemented_t0, // 8
eff_unimplemented_t0, // 9
eff_t0_a,
eff_t0_8, // 8
eff_t0_9, // 9
eff_t0_a, // a
eff_unimplemented_t0, // b
eff_t0_c, // c
eff_unimplemented_t0, // d
@ -574,6 +582,11 @@ function eff_t1_4(ch) { // vibrato
ch.vibratopos &= 63;
}
function eff_t1_5(ch) { // portamento + volume slide
eff_t1_a(ch);
eff_t1_3(ch);
}
function eff_t1_6(ch) { // vibrato + volume slide
eff_t1_a(ch);
eff_t1_4(ch);
@ -595,6 +608,7 @@ function eff_t1_e(ch) { // note cut
}
}
function eff_nop() {}
function eff_unimplemented() {}
var effects_t1 = [ // effect functions on tick 1+
eff_t1_0,
@ -602,14 +616,14 @@ var effects_t1 = [ // effect functions on tick 1+
eff_t1_2,
eff_t1_3,
eff_t1_4,
eff_unimplemented, // 5
eff_t1_6,
eff_t1_5, // 5
eff_t1_6, // 6
eff_unimplemented, // 7
eff_unimplemented, // 8
eff_unimplemented, // 9
eff_nop, // 8
eff_nop, // 9
eff_t1_a, // a
eff_unimplemented, // b
eff_unimplemented, // c
eff_nop, // c
eff_unimplemented, // d
eff_t1_e, // e
eff_unimplemented, // f