Пример #1
0
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);
}
Пример #2
0
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));
}
Пример #3
0
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;
}