IT import: implement default pan
This commit is contained in:
parent
871c260bc1
commit
71e052d740
|
@ -181,6 +181,8 @@ bool DivEngine::loadIT(unsigned char* file, size_t len) {
|
||||||
unsigned short patLen[256];
|
unsigned short patLen[256];
|
||||||
|
|
||||||
unsigned char defVol[256];
|
unsigned char defVol[256];
|
||||||
|
unsigned char defPan[256];
|
||||||
|
unsigned char defPanIns[256];
|
||||||
unsigned char noteMap[256][128];
|
unsigned char noteMap[256][128];
|
||||||
|
|
||||||
bool doesPitchSlide[64];
|
bool doesPitchSlide[64];
|
||||||
|
@ -210,6 +212,8 @@ bool DivEngine::loadIT(unsigned char* file, size_t len) {
|
||||||
memset(patLen,0,256*sizeof(unsigned short));
|
memset(patLen,0,256*sizeof(unsigned short));
|
||||||
|
|
||||||
memset(defVol,0,256);
|
memset(defVol,0,256);
|
||||||
|
memset(defPan,0,256);
|
||||||
|
memset(defPanIns,128,256);
|
||||||
memset(noteMap,0,256*128);
|
memset(noteMap,0,256*128);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
@ -436,9 +440,7 @@ bool DivEngine::loadIT(unsigned char* file, size_t len) {
|
||||||
reader.readC();
|
reader.readC();
|
||||||
|
|
||||||
insVol=reader.readC();
|
insVol=reader.readC();
|
||||||
unsigned char defPan=reader.readC();
|
defPanIns[i]=reader.readC();
|
||||||
|
|
||||||
logV("defPan: %d",defPan);
|
|
||||||
|
|
||||||
// vol/pan randomization
|
// vol/pan randomization
|
||||||
reader.readC();
|
reader.readC();
|
||||||
|
@ -572,9 +574,7 @@ bool DivEngine::loadIT(unsigned char* file, size_t len) {
|
||||||
s->name=reader.readStringLatin1(26);
|
s->name=reader.readStringLatin1(26);
|
||||||
|
|
||||||
unsigned char convert=reader.readC();
|
unsigned char convert=reader.readC();
|
||||||
unsigned char defPan=reader.readC();
|
defPan[i]=reader.readC();
|
||||||
|
|
||||||
logV("defPan: %d",defPan);
|
|
||||||
|
|
||||||
if (flags&2) {
|
if (flags&2) {
|
||||||
s->depth=DIV_SAMPLE_DEPTH_16BIT;
|
s->depth=DIV_SAMPLE_DEPTH_16BIT;
|
||||||
|
@ -1216,6 +1216,21 @@ bool DivEngine::loadIT(unsigned char* file, size_t len) {
|
||||||
}
|
}
|
||||||
if (hasIns) {
|
if (hasIns) {
|
||||||
p->data[readRow][2]=ins[chan]-1;
|
p->data[readRow][2]=ins[chan]-1;
|
||||||
|
if ((note[chan]<120 || ds.insLen==0) && ins[chan]>0) {
|
||||||
|
unsigned char targetPan=0;
|
||||||
|
if (ds.insLen==0) {
|
||||||
|
targetPan=defPan[(ins[chan]-1)&255];
|
||||||
|
} else {
|
||||||
|
targetPan=defPan[noteMap[(ins[chan]-1)&255][note[chan]]];
|
||||||
|
if (!(targetPan&128)) {
|
||||||
|
targetPan=defPanIns[(ins[chan]-1)&255]^0x80;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (targetPan&128) {
|
||||||
|
p->data[readRow][effectCol[chan]++]=0x80;
|
||||||
|
p->data[readRow][effectCol[chan]++]=CLAMP((targetPan&127)<<2,0,255);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (hasVol) {
|
if (hasVol) {
|
||||||
if (vol[chan]<=64) {
|
if (vol[chan]<=64) {
|
||||||
|
|
Loading…
Reference in a new issue