Mercurial > hg > dmlib
changeset 313:a89500f26dde
Cleanup the pattern decoder a bit.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Fri, 12 Oct 2012 13:45:33 +0300 |
parents | 99dc5d012081 |
children | e9c6aee5d2f2 |
files | jloadxm.c |
diffstat | 1 files changed, 15 insertions(+), 16 deletions(-) [+] |
line wrap: on
line diff
--- a/jloadxm.c Fri Oct 12 13:15:26 2012 +0300 +++ b/jloadxm.c Fri Oct 12 13:45:33 2012 +0300 @@ -113,6 +113,17 @@ } while (0) +static int jssXMConvertNote(int val) +{ + if (val < 1 || val > 97) + return jsetNotSet; + else if (val == 97) + return jsetNoteOff; + else + return val - 1; +} + + static int jssXMUnpackPattern(DMResource *inFile, int size, JSSPattern *pattern) { int packb, row, channel, tmp; @@ -121,8 +132,8 @@ pnote = pattern->data; - for (row = 0; (row < pattern->nrows) && (size > 0); row++) - for (channel = 0; (channel < pattern->nchannels) && (size > 0); channel++) + for (row = 0; row < pattern->nrows && size > 0; row++) + for (channel = 0; channel < pattern->nchannels && size > 0; channel++) { JSGETBYTE(packb); if (packb & 0x80) @@ -131,12 +142,7 @@ { // PACK 0x01: Read note JSGETBYTE(tmp); - if (tmp < 1 || tmp > 97) - pnote->note = jsetNotSet; - else if (tmp == 97) - pnote->note = jsetNoteOff; - else - pnote->note = tmp - 1; + pnote->note = jssXMConvertNote(tmp); } if (packb & 0x02) @@ -171,14 +177,7 @@ else { // All data available - tmp = (packb & 0x7f); - - if (tmp < 1 || tmp > 97) - pnote->note = jsetNotSet; - else if (tmp == 97) - pnote->note = jsetNoteOff; - else - pnote->note = tmp - 1; + pnote->note = jssXMConvertNote(packb & 0x7f); // Get instrument JSGETBYTE(tmp);