void process_thunderFuzz( Distortion *t, fixedp *x ) { Uint32 n; // remember to keep sample from previous cycle. :) keep in structure. disttruc if(t->fdb) { for(n=0; n < PROCESS_SIZE; n++) { t->prev = qadd(qmul(x[n],t->gain), qmul(t->prev, t->fdb)); if (t->prev > t->lvl1) t->prev = t->lvl1; else if (t->prev < -t->lvl2) t->prev = -t->lvl2; x[n] = qabs(t->prev); } } else { for(n=0; n < PROCESS_SIZE; n++) { t->prev = qmul(x[n],t->gain); if (t->prev > t->lvl1) t->prev = t->lvl1; else if (t->prev < -t->lvl2) t->prev = -t->lvl2; x[n] = qabs(t->prev); } } }
void MainWindow::slotAccelBoxChanged(int x) { if(m_accelBoxLock) return; m_accelBoxLock = true; double p = (double)x / 100.0; int sign = p < 0 ? -1:1; p = qabs(p); m_inc = m_incOrig * (1+p * 50); //2.5); if(sign < 0) m_inc = qabs(m_inc)*-1; else m_inc = qabs(m_inc); if(p>1) p=1; int ms = ANIMATE_BASE_MS * (1-p) + 2; qDebug() << "slotAccelBoxChanged(): p:"<<p<<", ms:"<<ms<<", m_inc:"<<m_inc; m_animTimer.setInterval(ms); m_accelBoxLock = false; }
fixedp getExp(fixedp base) { Int32 pos; if (base > EXP_POS_MAX) return posExp[EXP_TABLE_SIZE-1]; else if (base < EXP_NEG_MAX) return negExp[EXP_TABLE_SIZE-1]; else if (base > 0) { // måste anpassas till fixt tal så rätt element i tabellen anropas pos = q2int(qmul(base, EXP_POS_POS_MUL)); if (pos < 0) { return posExp[0]; } return posExp[pos]; } else if (base < 0) { // samma här, VIKTIGT: LÄGG TILL AVRUNDNING, DERO HERO pos = q2int(qmul(qabs(base), EXP_NEG_POS_MUL)); if(pos < 0) { return negExp[0]; } return negExp[pos]; } return 1; }