Index: src/herculeslinux.cpp =================================================================== --- src/herculeslinux.cpp (Revision 1873) +++ src/herculeslinux.cpp (Arbeitskopie) @@ -220,6 +220,86 @@ } void HerculesLinux::consoleEvent(int first, int second) { +/* +* nonbuttons need to send zero and these are +LEFT_BASS, LEFT_MID, LEFT_HIGH, +RIGHT_BASS, RIGHT_MID, RIGHT_HIGH, +LEFT_VOL, RIGHT_VOL, +LEFT_PITCH, RIGHT_PITCH, +LEFT_JOG, RIGHT_JOG, +XFADER +*/ + if (first == 0) return; /* (this really shouldnt happen but keep it for now) */ + + // GED's magic formula -- no longer used. + // double v = ((second+1)/(4.- ((second>((7/8.)*256))*((second-((7/8.)*256))*1/16.)))); + + // Albert's http://zunzun.com/ site saves the day by solving our data points to this new magical formula... + double magic = (0.733835252488 * tan((0.00863901501308 * second) - 4.00513109039)) + 0.887988233294; + + double divisor = 256.; + double d1 = divisor-1; + double d2 = (divisor/2)-1; + + // qDebug() << "second: " << second << "magic: " << magic << " v: " << v << " sd1:" << QString::number(second/d1) << " sd2:" << QString::number(second/d2) <<" sd4:" << QString::number(second/d4); + + // qDebug() << "m_pControlObjectLeftPitch:" << QString::number(m_pControlObjectLeftPitch->get()) << "m_pControlObjectRightPitch:" << QString::number(m_pControlObjectRightPitch->get()); + +#ifdef __THOMAS_HERC__ + int iDiff = 0; +#endif + switch (first) + { + case RIGHT_HIGH: sendEvent(magic, m_pControlObjectRightTreble); break; + case RIGHT_MID: sendEvent(magic, m_pControlObjectRightMiddle); break; + case RIGHT_BASS: sendEvent(magic, m_pControlObjectRightBass); break; + case LEFT_HIGH: sendEvent(magic, m_pControlObjectLeftTreble); break; + case LEFT_MID: sendEvent(magic, m_pControlObjectLeftMiddle); break; + case LEFT_BASS: sendEvent(magic, m_pControlObjectLeftBass); break; + case LEFT_VOL: sendEvent(second/d1, m_pControlObjectLeftVolume); break; + case RIGHT_VOL: sendEvent(second/d1, m_pControlObjectRightVolume); break; + case LEFT_PITCH: sendEvent(PitchChange("Left", second, m_iPitchLeft, m_iPitchOffsetLeft), m_pControlObjectLeftPitch); break; + case RIGHT_PITCH: sendEvent(PitchChange("Right", second, m_iPitchRight, m_iPitchOffsetRight), m_pControlObjectRightPitch); break; +#ifdef __THOMAS_HERC__ + case LEFT_JOG: + iDiff = 0; + if (m_dJogLeftOld>=0) + { + iDiff = second-m_dJogLeftOld; + } + if (iDiff<-200) + { + iDiff += 256; + } + else if (iDiff>200) + { + iDiff -= 256; + } + m_dJogLeftOld = second; + m_iJogLeft += (double)iDiff; /* here goes the magic */ + break; + case RIGHT_JOG: + iDiff = 0; + if (m_dJogRightOld>=0) + { + iDiff = second-m_dJogRightOld; + } + if (iDiff<-200) + { + iDiff += 256; + } + else if (iDiff>200) + { + iDiff -= 256; + } + m_dJogRightOld = second; + m_iJogRight += (double)iDiff; + break; +#endif __THOMAS_HERC__ + case XFADER: sendEvent((second-d2)/d2, m_pControlObjectCrossfade); break; + } + + if (second == 0) { djc->Leds.setBit(first, false); return; @@ -229,9 +309,6 @@ if(first != 0) { bool ledIsOn = (second == 0 ? false : true); int led = 0; -#ifdef __THOMAS_HERC__ - int iDiff = 0; -#endif switch(first) { case LEFT_PLAY: case LEFT_CUE: @@ -293,26 +370,10 @@ default: break; } - // GED's magic formula -- no longer used. - // double v = ((second+1)/(4.- ((second>((7/8.)*256))*((second-((7/8.)*256))*1/16.)))); - // Albert's http://zunzun.com/ site saves the day by solving our data points to this new magical formula... - double magic = (0.733835252488 * tan((0.00863901501308 * second) - 4.00513109039)) + 0.887988233294; - - double divisor = 256.; - double d1 = divisor-1; - double d2 = (divisor/2)-1; - - // qDebug() << "second: " << second << "magic: " << magic << " v: " << v << " sd1:" << QString::number(second/d1) << " sd2:" << QString::number(second/d2) <<" sd4:" << QString::number(second/d4); - - // qDebug() << "m_pControlObjectLeftPitch:" << QString::number(m_pControlObjectLeftPitch->get()) << "m_pControlObjectRightPitch:" << QString::number(m_pControlObjectRightPitch->get()); - switch(first) { - case LEFT_VOL: sendEvent(second/d1, m_pControlObjectLeftVolume); break; - case RIGHT_VOL: sendEvent(second/d1, m_pControlObjectRightVolume); break; case LEFT_PLAY: sendButtonEvent(!m_pControlObjectLeftBtnPlay->get(), m_pControlObjectLeftBtnPlay); break; case RIGHT_PLAY: sendButtonEvent(!m_pControlObjectRightBtnPlay->get(), m_pControlObjectRightBtnPlay); break; - case XFADER: sendEvent((second-d2)/d2, m_pControlObjectCrossfade); break; case LEFT_PITCH_DOWN: sendButtonEvent(true, m_pControlObjectLeftBtnPitchBendMinus); break; case LEFT_PITCH_UP: sendButtonEvent(true, m_pControlObjectLeftBtnPitchBendPlus); break; case RIGHT_PITCH_DOWN: sendButtonEvent(true, m_pControlObjectRightBtnPitchBendMinus); break; @@ -321,12 +382,6 @@ case LEFT_SKIP_FORWARD: sendButtonEvent(true, m_pControlObjectLeftBtnTrackNext); break; case RIGHT_SKIP_BACK: sendButtonEvent(true, m_pControlObjectRightBtnTrackPrev); break; case RIGHT_SKIP_FORWARD: sendButtonEvent(true, m_pControlObjectRightBtnTrackNext); break; - case RIGHT_HIGH: sendEvent(magic, m_pControlObjectRightTreble); break; - case RIGHT_MID: sendEvent(magic, m_pControlObjectRightMiddle); break; - case RIGHT_BASS: sendEvent(magic, m_pControlObjectRightBass); break; - case LEFT_HIGH: sendEvent(magic, m_pControlObjectLeftTreble); break; - case LEFT_MID: sendEvent(magic, m_pControlObjectLeftMiddle); break; - case LEFT_BASS: sendEvent(magic, m_pControlObjectLeftBass); break; #ifndef __THOMAS_HERC__ // Old behaviour + Headphone Deck Pseudocode case LEFT_CUE: sendButtonEvent(true, m_pControlObjectLeftBtnCue); break; @@ -484,45 +539,8 @@ } } break; - case LEFT_JOG: - iDiff = 0; - if (m_dJogLeftOld>=0) - { - iDiff = second-m_dJogLeftOld; - } - if (iDiff<-200) - { - iDiff += 256; - } - else if (iDiff>200) - { - iDiff -= 256; - } - m_dJogLeftOld = second; - m_iJogLeft += (double)iDiff; /* here goes the magic */ - break; - case RIGHT_JOG: - iDiff = 0; - if (m_dJogRightOld>=0) - { - iDiff = second-m_dJogRightOld; - } - if (iDiff<-200) - { - iDiff += 256; - } - else if (iDiff>200) - { - iDiff -= 256; - } - m_dJogRightOld = second; - m_iJogRight += (double)iDiff; - break; #endif // __THOMAS_HERC__ - case LEFT_PITCH: sendEvent(PitchChange("Left", second, m_iPitchLeft, m_iPitchOffsetLeft), m_pControlObjectLeftPitch); break; - case RIGHT_PITCH: sendEvent(PitchChange("Right", second, m_iPitchRight, m_iPitchOffsetRight), m_pControlObjectRightPitch); break; - case LEFT_AUTO_BEAT: sendButtonEvent(false, m_pControlObjectLeftBtnAutobeat); break; case RIGHT_AUTO_BEAT: sendButtonEvent(false, m_pControlObjectRightBtnAutobeat); break;