fix sample issues, part 3
This commit is contained in:
		
							parent
							
								
									5a5d85c4cc
								
							
						
					
					
						commit
						745d1d6c76
					
				|  | @ -281,7 +281,9 @@ int DivPlatformK007232::dispatch(DivCommand c) { | ||||||
|       chan[c.chan].macroVolMul=ins->type==DIV_INS_AMIGA?64:15; |       chan[c.chan].macroVolMul=ins->type==DIV_INS_AMIGA?64:15; | ||||||
|       if (c.value!=DIV_NOTE_NULL) { |       if (c.value!=DIV_NOTE_NULL) { | ||||||
|         chan[c.chan].sample=ins->amiga.getSample(c.value); |         chan[c.chan].sample=ins->amiga.getSample(c.value); | ||||||
|  |         chan[c.chan].sampleNote=c.value; | ||||||
|         c.value=ins->amiga.getFreq(c.value); |         c.value=ins->amiga.getFreq(c.value); | ||||||
|  |         chan[c.chan].sampleNoteDelta=c.value-chan[c.chan].sampleNote; | ||||||
|       } |       } | ||||||
|       if (c.value!=DIV_NOTE_NULL) { |       if (c.value!=DIV_NOTE_NULL) { | ||||||
|         chan[c.chan].baseFreq=NOTE_PERIODIC(c.value); |         chan[c.chan].baseFreq=NOTE_PERIODIC(c.value); | ||||||
|  |  | ||||||
|  | @ -230,7 +230,9 @@ int DivPlatformK053260::dispatch(DivCommand c) { | ||||||
|       chan[c.chan].macroVolMul=ins->type==DIV_INS_AMIGA?64:127; |       chan[c.chan].macroVolMul=ins->type==DIV_INS_AMIGA?64:127; | ||||||
|       if (c.value!=DIV_NOTE_NULL) { |       if (c.value!=DIV_NOTE_NULL) { | ||||||
|         chan[c.chan].sample=ins->amiga.getSample(c.value); |         chan[c.chan].sample=ins->amiga.getSample(c.value); | ||||||
|  |         chan[c.chan].sampleNote=c.value; | ||||||
|         c.value=ins->amiga.getFreq(c.value); |         c.value=ins->amiga.getFreq(c.value); | ||||||
|  |         chan[c.chan].sampleNoteDelta=c.value-chan[c.chan].sampleNote; | ||||||
|       } |       } | ||||||
|       if (c.value!=DIV_NOTE_NULL) { |       if (c.value!=DIV_NOTE_NULL) { | ||||||
|         chan[c.chan].baseFreq=NOTE_PERIODIC(c.value); |         chan[c.chan].baseFreq=NOTE_PERIODIC(c.value); | ||||||
|  |  | ||||||
|  | @ -236,7 +236,9 @@ int DivPlatformLynx::dispatch(DivCommand c) { | ||||||
|       if (c.value!=DIV_NOTE_NULL) { |       if (c.value!=DIV_NOTE_NULL) { | ||||||
|         if (chan[c.chan].pcm) { |         if (chan[c.chan].pcm) { | ||||||
|           chan[c.chan].sample=ins->amiga.getSample(c.value); |           chan[c.chan].sample=ins->amiga.getSample(c.value); | ||||||
|  |           chan[c.chan].sampleNote=c.value; | ||||||
|           c.value=ins->amiga.getFreq(c.value); |           c.value=ins->amiga.getFreq(c.value); | ||||||
|  |           chan[c.chan].sampleNoteDelta=c.value-chan[c.chan].sampleNote; | ||||||
|           chan[c.chan].sampleBaseFreq=NOTE_FREQUENCY(c.value); |           chan[c.chan].sampleBaseFreq=NOTE_FREQUENCY(c.value); | ||||||
|           chan[c.chan].sampleAccum=0; |           chan[c.chan].sampleAccum=0; | ||||||
|           chan[c.chan].samplePos=0; |           chan[c.chan].samplePos=0; | ||||||
|  |  | ||||||
|  | @ -178,7 +178,9 @@ int DivPlatformMMC5::dispatch(DivCommand c) { | ||||||
|         if (ins->type==DIV_INS_AMIGA) { |         if (ins->type==DIV_INS_AMIGA) { | ||||||
|           if (c.value!=DIV_NOTE_NULL) { |           if (c.value!=DIV_NOTE_NULL) { | ||||||
|             dacSample=ins->amiga.getSample(c.value); |             dacSample=ins->amiga.getSample(c.value); | ||||||
|  |             chan[c.chan].sampleNote=c.value; | ||||||
|             c.value=ins->amiga.getFreq(c.value); |             c.value=ins->amiga.getFreq(c.value); | ||||||
|  |             chan[c.chan].sampleNoteDelta=c.value-chan[c.chan].sampleNote; | ||||||
|           } |           } | ||||||
|           if (dacSample<0 || dacSample>=parent->song.sampleLen) { |           if (dacSample<0 || dacSample>=parent->song.sampleLen) { | ||||||
|             dacSample=-1; |             dacSample=-1; | ||||||
|  |  | ||||||
|  | @ -407,7 +407,9 @@ int DivPlatformNES::dispatch(DivCommand c) { | ||||||
|           if (c.value!=DIV_NOTE_NULL) { |           if (c.value!=DIV_NOTE_NULL) { | ||||||
|             dacSample=ins->amiga.getSample(c.value); |             dacSample=ins->amiga.getSample(c.value); | ||||||
|             if (ins->type==DIV_INS_AMIGA) { |             if (ins->type==DIV_INS_AMIGA) { | ||||||
|  |               chan[c.chan].sampleNote=c.value; | ||||||
|               c.value=ins->amiga.getFreq(c.value); |               c.value=ins->amiga.getFreq(c.value); | ||||||
|  |               chan[c.chan].sampleNoteDelta=c.value-chan[c.chan].sampleNote; | ||||||
|             } |             } | ||||||
|           } |           } | ||||||
|           if (dacSample<0 || dacSample>=parent->song.sampleLen) { |           if (dacSample<0 || dacSample>=parent->song.sampleLen) { | ||||||
|  |  | ||||||
|  | @ -285,7 +285,9 @@ int DivPlatformPCE::dispatch(DivCommand c) { | ||||||
|           if (skipRegisterWrites) break; |           if (skipRegisterWrites) break; | ||||||
|           if (c.value!=DIV_NOTE_NULL) { |           if (c.value!=DIV_NOTE_NULL) { | ||||||
|             chan[c.chan].dacSample=ins->amiga.getSample(c.value); |             chan[c.chan].dacSample=ins->amiga.getSample(c.value); | ||||||
|  |             chan[c.chan].sampleNote=c.value; | ||||||
|             c.value=ins->amiga.getFreq(c.value); |             c.value=ins->amiga.getFreq(c.value); | ||||||
|  |             chan[c.chan].sampleNoteDelta=c.value-chan[c.chan].sampleNote; | ||||||
|           } |           } | ||||||
|           if (chan[c.chan].dacSample<0 || chan[c.chan].dacSample>=parent->song.sampleLen) { |           if (chan[c.chan].dacSample<0 || chan[c.chan].dacSample>=parent->song.sampleLen) { | ||||||
|             chan[c.chan].dacSample=-1; |             chan[c.chan].dacSample=-1; | ||||||
|  |  | ||||||
|  | @ -326,7 +326,9 @@ int DivPlatformPCMDAC::dispatch(DivCommand c) { | ||||||
|       } else { |       } else { | ||||||
|         if (c.value!=DIV_NOTE_NULL) { |         if (c.value!=DIV_NOTE_NULL) { | ||||||
|           chan[0].sample=ins->amiga.getSample(c.value); |           chan[0].sample=ins->amiga.getSample(c.value); | ||||||
|  |           chan[c.chan].sampleNote=c.value; | ||||||
|           c.value=ins->amiga.getFreq(c.value); |           c.value=ins->amiga.getFreq(c.value); | ||||||
|  |           chan[c.chan].sampleNoteDelta=c.value-chan[c.chan].sampleNote; | ||||||
|         } |         } | ||||||
|         chan[0].useWave=false; |         chan[0].useWave=false; | ||||||
|       } |       } | ||||||
|  |  | ||||||
|  | @ -451,7 +451,9 @@ int DivPlatformQSound::dispatch(DivCommand c) { | ||||||
|       chan[c.chan].isNewQSound=(ins->type==DIV_INS_QSOUND); |       chan[c.chan].isNewQSound=(ins->type==DIV_INS_QSOUND); | ||||||
|       if (c.value!=DIV_NOTE_NULL) { |       if (c.value!=DIV_NOTE_NULL) { | ||||||
|         chan[c.chan].sample=ins->amiga.getSample(c.value); |         chan[c.chan].sample=ins->amiga.getSample(c.value); | ||||||
|  |         chan[c.chan].sampleNote=c.value; | ||||||
|         c.value=ins->amiga.getFreq(c.value); |         c.value=ins->amiga.getFreq(c.value); | ||||||
|  |         chan[c.chan].sampleNoteDelta=c.value-chan[c.chan].sampleNote; | ||||||
|       } |       } | ||||||
|       if (c.value!=DIV_NOTE_NULL) { |       if (c.value!=DIV_NOTE_NULL) { | ||||||
|         chan[c.chan].baseFreq=QS_NOTE_FREQUENCY(c.value); |         chan[c.chan].baseFreq=QS_NOTE_FREQUENCY(c.value); | ||||||
|  |  | ||||||
|  | @ -184,7 +184,9 @@ int DivPlatformRF5C68::dispatch(DivCommand c) { | ||||||
|       chan[c.chan].macroVolMul=ins->type==DIV_INS_AMIGA?64:255; |       chan[c.chan].macroVolMul=ins->type==DIV_INS_AMIGA?64:255; | ||||||
|       if (c.value!=DIV_NOTE_NULL) { |       if (c.value!=DIV_NOTE_NULL) { | ||||||
|         chan[c.chan].sample=ins->amiga.getSample(c.value); |         chan[c.chan].sample=ins->amiga.getSample(c.value); | ||||||
|  |         chan[c.chan].sampleNote=c.value; | ||||||
|         c.value=ins->amiga.getFreq(c.value); |         c.value=ins->amiga.getFreq(c.value); | ||||||
|  |         chan[c.chan].sampleNoteDelta=c.value-chan[c.chan].sampleNote; | ||||||
|       } |       } | ||||||
|       if (c.value!=DIV_NOTE_NULL) { |       if (c.value!=DIV_NOTE_NULL) { | ||||||
|         chan[c.chan].baseFreq=NOTE_FREQUENCY(c.value); |         chan[c.chan].baseFreq=NOTE_FREQUENCY(c.value); | ||||||
|  |  | ||||||
|  | @ -189,7 +189,9 @@ int DivPlatformSegaPCM::dispatch(DivCommand c) { | ||||||
|         chan[c.chan].isNewSegaPCM=(ins->type==DIV_INS_SEGAPCM); |         chan[c.chan].isNewSegaPCM=(ins->type==DIV_INS_SEGAPCM); | ||||||
|         if (c.value!=DIV_NOTE_NULL) { |         if (c.value!=DIV_NOTE_NULL) { | ||||||
|           chan[c.chan].pcm.sample=ins->amiga.getSample(c.value); |           chan[c.chan].pcm.sample=ins->amiga.getSample(c.value); | ||||||
|  |           chan[c.chan].sampleNote=c.value; | ||||||
|           c.value=ins->amiga.getFreq(c.value); |           c.value=ins->amiga.getFreq(c.value); | ||||||
|  |           chan[c.chan].sampleNoteDelta=c.value-chan[c.chan].sampleNote; | ||||||
|         } |         } | ||||||
|         if (chan[c.chan].pcm.sample<0 || chan[c.chan].pcm.sample>=parent->song.sampleLen) { |         if (chan[c.chan].pcm.sample<0 || chan[c.chan].pcm.sample>=parent->song.sampleLen) { | ||||||
|           chan[c.chan].pcm.sample=-1; |           chan[c.chan].pcm.sample=-1; | ||||||
|  |  | ||||||
|  | @ -345,7 +345,9 @@ int DivPlatformSNES::dispatch(DivCommand c) { | ||||||
|       } else { |       } else { | ||||||
|         if (c.value!=DIV_NOTE_NULL) { |         if (c.value!=DIV_NOTE_NULL) { | ||||||
|           chan[c.chan].sample=ins->amiga.getSample(c.value); |           chan[c.chan].sample=ins->amiga.getSample(c.value); | ||||||
|  |           chan[c.chan].sampleNote=c.value; | ||||||
|           c.value=ins->amiga.getFreq(c.value); |           c.value=ins->amiga.getFreq(c.value); | ||||||
|  |           chan[c.chan].sampleNoteDelta=c.value-chan[c.chan].sampleNote; | ||||||
|         } |         } | ||||||
|         chan[c.chan].useWave=false; |         chan[c.chan].useWave=false; | ||||||
|       } |       } | ||||||
|  |  | ||||||
|  | @ -282,7 +282,9 @@ int DivPlatformSoundUnit::dispatch(DivCommand c) { | ||||||
|       if (chan[c.chan].pcm) { |       if (chan[c.chan].pcm) { | ||||||
|         if (c.value!=DIV_NOTE_NULL) { |         if (c.value!=DIV_NOTE_NULL) { | ||||||
|           chan[c.chan].sample=ins->amiga.getSample(c.value); |           chan[c.chan].sample=ins->amiga.getSample(c.value); | ||||||
|  |           chan[c.chan].sampleNote=c.value; | ||||||
|           c.value=ins->amiga.getFreq(c.value); |           c.value=ins->amiga.getFreq(c.value); | ||||||
|  |           chan[c.chan].sampleNoteDelta=c.value-chan[c.chan].sampleNote; | ||||||
|         } |         } | ||||||
|       } |       } | ||||||
|       if (c.value!=DIV_NOTE_NULL) { |       if (c.value!=DIV_NOTE_NULL) { | ||||||
|  |  | ||||||
|  | @ -265,7 +265,9 @@ int DivPlatformSwan::dispatch(DivCommand c) { | ||||||
|           if (ins->type==DIV_INS_AMIGA || ins->amiga.useSample) { |           if (ins->type==DIV_INS_AMIGA || ins->amiga.useSample) { | ||||||
|             if (c.value!=DIV_NOTE_NULL) { |             if (c.value!=DIV_NOTE_NULL) { | ||||||
|               dacSample=ins->amiga.getSample(c.value); |               dacSample=ins->amiga.getSample(c.value); | ||||||
|  |               chan[c.chan].sampleNote=c.value; | ||||||
|               c.value=ins->amiga.getFreq(c.value); |               c.value=ins->amiga.getFreq(c.value); | ||||||
|  |               chan[c.chan].sampleNoteDelta=c.value-chan[c.chan].sampleNote; | ||||||
|             } |             } | ||||||
|             if (dacSample<0 || dacSample>=parent->song.sampleLen) { |             if (dacSample<0 || dacSample>=parent->song.sampleLen) { | ||||||
|               dacSample=-1; |               dacSample=-1; | ||||||
|  |  | ||||||
|  | @ -302,7 +302,9 @@ int DivPlatformVERA::dispatch(DivCommand c) { | ||||||
|         if (c.value!=DIV_NOTE_NULL) { |         if (c.value!=DIV_NOTE_NULL) { | ||||||
|           DivInstrument* ins=parent->getIns(chan[16].ins,DIV_INS_VERA); |           DivInstrument* ins=parent->getIns(chan[16].ins,DIV_INS_VERA); | ||||||
|           chan[16].pcm.sample=ins->amiga.getSample(c.value); |           chan[16].pcm.sample=ins->amiga.getSample(c.value); | ||||||
|  |           chan[16].sampleNote=c.value; | ||||||
|           c.value=ins->amiga.getFreq(c.value); |           c.value=ins->amiga.getFreq(c.value); | ||||||
|  |           chan[16].sampleNoteDelta=c.value-chan[c.chan].sampleNote; | ||||||
|         } |         } | ||||||
|         if (chan[16].pcm.sample<0 || chan[16].pcm.sample>=parent->song.sampleLen) { |         if (chan[16].pcm.sample<0 || chan[16].pcm.sample>=parent->song.sampleLen) { | ||||||
|           chan[16].pcm.sample=-1; |           chan[16].pcm.sample=-1; | ||||||
|  |  | ||||||
|  | @ -242,7 +242,9 @@ int DivPlatformVRC6::dispatch(DivCommand c) { | ||||||
|           if (ins->type==DIV_INS_AMIGA || ins->amiga.useSample) { |           if (ins->type==DIV_INS_AMIGA || ins->amiga.useSample) { | ||||||
|             if (c.value!=DIV_NOTE_NULL) { |             if (c.value!=DIV_NOTE_NULL) { | ||||||
|               chan[c.chan].dacSample=ins->amiga.getSample(c.value); |               chan[c.chan].dacSample=ins->amiga.getSample(c.value); | ||||||
|  |               chan[c.chan].sampleNote=c.value; | ||||||
|               c.value=ins->amiga.getFreq(c.value); |               c.value=ins->amiga.getFreq(c.value); | ||||||
|  |               chan[c.chan].sampleNoteDelta=c.value-chan[c.chan].sampleNote; | ||||||
|             } |             } | ||||||
|             if (chan[c.chan].dacSample<0 || chan[c.chan].dacSample>=parent->song.sampleLen) { |             if (chan[c.chan].dacSample<0 || chan[c.chan].dacSample>=parent->song.sampleLen) { | ||||||
|               chan[c.chan].dacSample=-1; |               chan[c.chan].dacSample=-1; | ||||||
|  |  | ||||||
|  | @ -543,7 +543,9 @@ int DivPlatformX1_010::dispatch(DivCommand c) { | ||||||
|           chan[c.chan].macroInit(ins); |           chan[c.chan].macroInit(ins); | ||||||
|           if (c.value!=DIV_NOTE_NULL) { |           if (c.value!=DIV_NOTE_NULL) { | ||||||
|             chan[c.chan].sample=ins->amiga.getSample(c.value); |             chan[c.chan].sample=ins->amiga.getSample(c.value); | ||||||
|  |             chan[c.chan].sampleNote=c.value; | ||||||
|             c.value=ins->amiga.getFreq(c.value); |             c.value=ins->amiga.getFreq(c.value); | ||||||
|  |             chan[c.chan].sampleNoteDelta=c.value-chan[c.chan].sampleNote; | ||||||
|           } |           } | ||||||
|           if (chan[c.chan].sample>=0 && chan[c.chan].sample<parent->song.sampleLen) { |           if (chan[c.chan].sample>=0 && chan[c.chan].sample<parent->song.sampleLen) { | ||||||
|             DivSample* s=parent->getSample(chan[c.chan].sample); |             DivSample* s=parent->getSample(chan[c.chan].sample); | ||||||
|  |  | ||||||
|  | @ -919,7 +919,9 @@ int DivPlatformYM2608::dispatch(DivCommand c) { | ||||||
|           } |           } | ||||||
|           if (c.value!=DIV_NOTE_NULL) { |           if (c.value!=DIV_NOTE_NULL) { | ||||||
|             chan[c.chan].sample=ins->amiga.getSample(c.value); |             chan[c.chan].sample=ins->amiga.getSample(c.value); | ||||||
|  |             chan[c.chan].sampleNote=c.value; | ||||||
|             c.value=ins->amiga.getFreq(c.value); |             c.value=ins->amiga.getFreq(c.value); | ||||||
|  |             chan[c.chan].sampleNoteDelta=c.value-chan[c.chan].sampleNote; | ||||||
|           } |           } | ||||||
|           if (chan[c.chan].sample>=0 && chan[c.chan].sample<parent->song.sampleLen) { |           if (chan[c.chan].sample>=0 && chan[c.chan].sample<parent->song.sampleLen) { | ||||||
|             DivSample* s=parent->getSample(chan[c.chan].sample); |             DivSample* s=parent->getSample(chan[c.chan].sample); | ||||||
|  |  | ||||||
|  | @ -850,7 +850,9 @@ int DivPlatformYM2610::dispatch(DivCommand c) { | ||||||
|           } |           } | ||||||
|           if (c.value!=DIV_NOTE_NULL) { |           if (c.value!=DIV_NOTE_NULL) { | ||||||
|             chan[c.chan].sample=ins->amiga.getSample(c.value); |             chan[c.chan].sample=ins->amiga.getSample(c.value); | ||||||
|  |             chan[c.chan].sampleNote=c.value; | ||||||
|             c.value=ins->amiga.getFreq(c.value); |             c.value=ins->amiga.getFreq(c.value); | ||||||
|  |             chan[c.chan].sampleNoteDelta=c.value-chan[c.chan].sampleNote; | ||||||
|           } |           } | ||||||
|           if (chan[c.chan].sample>=0 && chan[c.chan].sample<parent->song.sampleLen) { |           if (chan[c.chan].sample>=0 && chan[c.chan].sample<parent->song.sampleLen) { | ||||||
|             DivSample* s=parent->getSample(chan[c.chan].sample); |             DivSample* s=parent->getSample(chan[c.chan].sample); | ||||||
|  |  | ||||||
|  | @ -917,7 +917,9 @@ int DivPlatformYM2610B::dispatch(DivCommand c) { | ||||||
|           } |           } | ||||||
|           if (c.value!=DIV_NOTE_NULL) { |           if (c.value!=DIV_NOTE_NULL) { | ||||||
|             chan[c.chan].sample=ins->amiga.getSample(c.value); |             chan[c.chan].sample=ins->amiga.getSample(c.value); | ||||||
|  |             chan[c.chan].sampleNote=c.value; | ||||||
|             c.value=ins->amiga.getFreq(c.value); |             c.value=ins->amiga.getFreq(c.value); | ||||||
|  |             chan[c.chan].sampleNoteDelta=c.value-chan[c.chan].sampleNote; | ||||||
|           } |           } | ||||||
|           if (chan[c.chan].sample>=0 && chan[c.chan].sample<parent->song.sampleLen) { |           if (chan[c.chan].sample>=0 && chan[c.chan].sample<parent->song.sampleLen) { | ||||||
|             DivSample* s=parent->getSample(chan[c.chan].sample); |             DivSample* s=parent->getSample(chan[c.chan].sample); | ||||||
|  |  | ||||||
|  | @ -213,7 +213,9 @@ int DivPlatformYMZ280B::dispatch(DivCommand c) { | ||||||
|       chan[c.chan].macroVolMul=ins->type==DIV_INS_AMIGA?64:255; |       chan[c.chan].macroVolMul=ins->type==DIV_INS_AMIGA?64:255; | ||||||
|       if (c.value!=DIV_NOTE_NULL) { |       if (c.value!=DIV_NOTE_NULL) { | ||||||
|         chan[c.chan].sample=ins->amiga.getSample(c.value); |         chan[c.chan].sample=ins->amiga.getSample(c.value); | ||||||
|  |         chan[c.chan].sampleNote=c.value; | ||||||
|         c.value=ins->amiga.getFreq(c.value); |         c.value=ins->amiga.getFreq(c.value); | ||||||
|  |         chan[c.chan].sampleNoteDelta=c.value-chan[c.chan].sampleNote; | ||||||
|       } |       } | ||||||
|       if (c.value!=DIV_NOTE_NULL) { |       if (c.value!=DIV_NOTE_NULL) { | ||||||
|         chan[c.chan].baseFreq=NOTE_FREQUENCY(c.value); |         chan[c.chan].baseFreq=NOTE_FREQUENCY(c.value); | ||||||
|  |  | ||||||
|  | @ -187,7 +187,9 @@ int DivPlatformZXBeeperQuadTone::dispatch(DivCommand c) { | ||||||
|         DivInstrument* ins=parent->getIns(chan[c.chan].ins,DIV_INS_AMIGA); |         DivInstrument* ins=parent->getIns(chan[c.chan].ins,DIV_INS_AMIGA); | ||||||
|         if (c.value!=DIV_NOTE_NULL) { |         if (c.value!=DIV_NOTE_NULL) { | ||||||
|           curSample=ins->amiga.getSample(c.value); |           curSample=ins->amiga.getSample(c.value); | ||||||
|  |           chan[c.chan].sampleNote=c.value; | ||||||
|           c.value=ins->amiga.getFreq(c.value); |           c.value=ins->amiga.getFreq(c.value); | ||||||
|  |           chan[c.chan].sampleNoteDelta=c.value-chan[c.chan].sampleNote; | ||||||
|           chan[c.chan].baseFreq=NOTE_PERIODIC(c.value); |           chan[c.chan].baseFreq=NOTE_PERIODIC(c.value); | ||||||
|           chan[c.chan].freqChanged=true; |           chan[c.chan].freqChanged=true; | ||||||
|           chan[c.chan].note=c.value; |           chan[c.chan].note=c.value; | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue
	
	 tildearrow
						tildearrow