int speed_to_mm_fine_tune(u32 speed, int sample) { unsigned int ctmp = 0; unsigned int tmp; int note = 1; int mm_fine_tune = 0; // speed >>= 1; while ((tmp=getfrequency(mmoo.flags,getlinearperiod(note<<1,0))) < speed) { ctmp = tmp; note++; } if (tmp != /*(int)*/speed) { if ( ((signed)tmp - (signed)speed) < ((signed)speed - (signed)ctmp))/* ...うーん */ { while (tmp > speed) { tmp=getfrequency(mmoo.flags,getlinearperiod(note<<1,--mm_fine_tune));} } else { note--; while (ctmp < speed) { ctmp=getfrequency(mmoo.flags,getlinearperiod(note<<1,++mm_fine_tune));} } } noteindex[sample] = note - (4*OCTAVE); return (mm_fine_tune); }
UWORD GetPeriod(UBYTE note,UWORD c2spd) { if(pf->flags&UF_XMPERIODS){ return (pf->flags&UF_LINEAR) ? getlinearperiod(note,c2spd) : getlogperiod(note,c2spd); } return(getoldperiod(note,c2spd)); }
int speed_to_finetune(ULONG speed,int sample) { int ctmp=0,tmp,note=1,finetune=0; speed>>=1; while((tmp=getfrequency(of.flags,getlinearperiod(note<<1,0)))<speed) { ctmp=tmp; note++; } if(tmp!=(int)speed) { if((tmp-speed)<(speed-ctmp)) while(tmp>speed) tmp=getfrequency(of.flags,getlinearperiod(note<<1,--finetune)); else { note--; while(ctmp<speed) ctmp=getfrequency(of.flags,getlinearperiod(note<<1,++finetune)); } } noteindex[sample]=note-4*OCTAVE; return finetune; }