From 8f065c198af9e81f5e6e3828604e6f26812195d7 Mon Sep 17 00:00:00 2001 From: Vesa Date: Mon, 31 Mar 2014 01:37:38 +0300 Subject: [PATCH] Monstro: add sync mechanism, make LFOs running, fix remaining small bugs --- plugins/monstro/Monstro.cpp | 413 ++++++++++++++++++++------------ plugins/monstro/Monstro.h | 47 +++- plugins/monstro/artwork_op.png | Bin 58075 -> 59412 bytes plugins/monstro/tinyled_off.png | Bin 0 -> 397 bytes plugins/monstro/tinyled_on.png | Bin 0 -> 594 bytes 5 files changed, 297 insertions(+), 163 deletions(-) create mode 100644 plugins/monstro/tinyled_off.png create mode 100644 plugins/monstro/tinyled_on.png diff --git a/plugins/monstro/Monstro.cpp b/plugins/monstro/Monstro.cpp index 8cd069f90..900fb4b5d 100644 --- a/plugins/monstro/Monstro.cpp +++ b/plugins/monstro/Monstro.cpp @@ -80,6 +80,12 @@ MonstroSynth::MonstroSynth( MonstroInstrument * _i, NotePlayHandle * _nph, m_env1_phase = 0.0; m_env2_phase = 0.0; + + m_lfo1_phase = 0.0; + m_lfo2_phase = 0.0; + + m_osc1l_last = 0.0; + m_osc1r_last = 0.0; } @@ -100,20 +106,20 @@ void MonstroSynth::renderOutput( fpp_t _frames, sampleFrame * _buf ) if( mod##_e1 != 0.0 ) car = qBound( MIN_FREQ, car * static_cast( fastPow( 2.0, m_env1_buf[f] * mod##_e1 * 2 ) ), MAX_FREQ ); \ if( mod##_e2 != 0.0 ) car = qBound( MIN_FREQ, car * static_cast( fastPow( 2.0, m_env2_buf[f] * mod##_e2 * 2 ) ), MAX_FREQ ); \ if( mod##_l1 != 0.0 ) car = qBound( MIN_FREQ, car * static_cast( fastPow( 2.0, m_lfo1_buf[f] * mod##_l1 ) ), MAX_FREQ ); \ - if( mod##_l2 != 0.0 ) car = qBound( MIN_FREQ, car * static_cast( fastPow( 2.0, m_lfo2_buf[f] * mod##_l2 ) ), MAX_FREQ ); + if( mod##_l2 != 0.0 ) car = qBound( MIN_FREQ, car * static_cast( fastPow( 2.0, m_lfo2_buf[f] * mod##_l2 ) ), MAX_FREQ ); #define modulateabs( car, mod ) \ if( mod##_e1 != 0.0 ) car = qBound( 0.0f, car + mod##_e1 * m_env1_buf[f], 1.0f ); \ if( mod##_e2 != 0.0 ) car = qBound( 0.0f, car + mod##_e2 * m_env2_buf[f], 1.0f ); \ if( mod##_l1 != 0.0 ) car = qBound( 0.0f, car + mod##_l1 / 2 * m_lfo1_buf[f], 1.0f ); \ if( mod##_l2 != 0.0 ) car = qBound( 0.0f, car + mod##_l2 / 2 * m_lfo2_buf[f], 1.0f ); - + #define modulatephs( car, mod ) \ if( mod##_e1 != 0.0 ) car = fraction( car + mod##_e1 * m_env1_buf[f] ); \ if( mod##_e2 != 0.0 ) car = fraction( car + mod##_e2 * m_env2_buf[f] ); \ if( mod##_l1 != 0.0 ) car = fraction( car + mod##_l1 / 2 * m_lfo1_buf[f] ); \ if( mod##_l2 != 0.0 ) car = fraction( car + mod##_l2 / 2 * m_lfo2_buf[f] ); - + #define modulatevol( car, mod ) \ if( mod##_e1 > 0.0 ) car = qBound( 0.0f, car * ( 1.0f - mod##_e1 + mod##_e1 * m_env1_buf[f] ), MODCLIP ); \ if( mod##_e1 < 0.0 ) car = qBound( 0.0f, car * ( 1.0f + mod##_e1 * m_env1_buf[f] ), MODCLIP ); \ @@ -121,7 +127,7 @@ void MonstroSynth::renderOutput( fpp_t _frames, sampleFrame * _buf ) if( mod##_e2 < 0.0 ) car = qBound( 0.0f, car * ( 1.0f + mod##_e2 * m_env2_buf[f] ), MODCLIP ); \ if( mod##_l1 != 0.0 ) car = qBound( 0.0f, car * ( 1.0f + mod##_l1 * m_lfo1_buf[f] ), MODCLIP ); \ if( mod##_l2 != 0.0 ) car = qBound( 0.0f, car * ( 1.0f + mod##_l2 * m_lfo2_buf[f] ), MODCLIP ); - + // pre-render env's and lfo's renderModulators( _frames ); @@ -132,7 +138,7 @@ void MonstroSynth::renderOutput( fpp_t _frames, sampleFrame * _buf ) const float o1pw_e2 = ( m_parent->m_pw1env2.value() ); const float o1pw_l1 = ( m_parent->m_pw1lfo1.value() ); const float o1pw_l2 = ( m_parent->m_pw1lfo2.value() ); - + // get phases const float o1lpo = m_parent->m_osc1l_po; const float o1rpo = m_parent->m_osc1r_po; @@ -140,8 +146,8 @@ void MonstroSynth::renderOutput( fpp_t _frames, sampleFrame * _buf ) const float o1p_e2 = ( m_parent->m_phs1env2.value() ); const float o1p_l1 = ( m_parent->m_phs1lfo1.value() ); const float o1p_l2 = ( m_parent->m_phs1lfo2.value() ); - - // get pitch + + // get pitch const float o1lfb = ( m_parent->m_osc1l_freq * m_nph->frequency() ); const float o1rfb = ( m_parent->m_osc1r_freq * m_nph->frequency() ); const float o1f_e1 = ( m_parent->m_pit1env1.value() ); @@ -157,11 +163,10 @@ void MonstroSynth::renderOutput( fpp_t _frames, sampleFrame * _buf ) const float o1v_l1 = ( m_parent->m_vol1lfo1.value() ); const float o1v_l2 = ( m_parent->m_vol1lfo2.value() ); - // update osc2 // get waveform const int o2w = m_parent->m_osc2Wave.value(); - + // get phases const float o2lpo = m_parent->m_osc2l_po; const float o2rpo = m_parent->m_osc2r_po; @@ -170,9 +175,9 @@ void MonstroSynth::renderOutput( fpp_t _frames, sampleFrame * _buf ) const float o2p_l1 = ( m_parent->m_phs2lfo1.value() ); const float o2p_l2 = ( m_parent->m_phs2lfo2.value() ); - // get pitch + // get pitch const float o2lfb = ( m_parent->m_osc2l_freq * m_nph->frequency() ); - const float o2rfb = ( m_parent->m_osc2r_freq * m_nph->frequency() ); + const float o2rfb = ( m_parent->m_osc2r_freq * m_nph->frequency() ); const float o2f_e1 = ( m_parent->m_pit2env1.value() ); const float o2f_e2 = ( m_parent->m_pit2env2.value() ); const float o2f_l1 = ( m_parent->m_pit2lfo1.value() ); @@ -185,8 +190,8 @@ void MonstroSynth::renderOutput( fpp_t _frames, sampleFrame * _buf ) const float o2v_e2 = ( m_parent->m_vol2env2.value() ); const float o2v_l1 = ( m_parent->m_vol2lfo2.value() ); const float o2v_l2 = ( m_parent->m_vol2lfo2.value() ); - - + + // update osc3 // get waveforms @@ -222,27 +227,33 @@ void MonstroSynth::renderOutput( fpp_t _frames, sampleFrame * _buf ) const float o3s_e2 = ( m_parent->m_sub3env2.value() ); const float o3s_l1 = ( m_parent->m_sub3lfo1.value() ); const float o3s_l2 = ( m_parent->m_sub3lfo2.value() ); - - + + //o2-o3 modulation - + const int omod = m_parent->m_o23Mod.value(); - - + + // sync information + + const bool o1ssr = m_parent->m_osc1SSR.value(); + const bool o1ssf = m_parent->m_osc1SSF.value(); + const bool o2sync = m_parent->m_osc2Sync.value(); + const bool o3sync = m_parent->m_osc3Sync.value(); + /////////////////////////// // // // start buffer loop // // // /////////////////////////// - - - + + + for( f_cnt_t f = 0; f < _frames; f++ ) - { + { /* // debug code - if( f % 10 == 0 ) { + if( f % 10 == 0 ) { qDebug( "env1 %f -- env1 phase %f", m_env1_buf[f], m_env1_phase ); qDebug( "env1 pre %f att %f dec %f rel %f ", m_parent->m_env1_pre, m_parent->m_env1_att, m_parent->m_env1_dec, m_parent->m_env1_rel ); @@ -255,52 +266,80 @@ void MonstroSynth::renderOutput( fpp_t _frames, sampleFrame * _buf ) // // ///////////////////////////// + // sync send "signals" + bool syncl = false; + bool syncr = false; + // calc and mod frequencies float o1l_f = o1lfb; float o1r_f = o1rfb; modulatefreq( o1l_f, o1f ) modulatefreq( o1r_f, o1f ) - + // calc and modulate phase float o1l_p = m_osc1l_phase + o1lpo; float o1r_p = m_osc1r_phase + o1rpo; modulatephs( o1l_p, o1p ) modulatephs( o1r_p, o1p ) - + // calc and modulate pulse float o1_pw = pw; modulateabs( o1_pw, o1pw ) - + // bounds check for phase if( o1l_p < 0 ) o1l_p += 1.0f; if( o1r_p < 0 ) o1r_p += 1.0f; - + // pulse wave osc sample_t O1L = ( o1l_p < o1_pw ) ? 1.0f : -1.0f; sample_t O1R = ( o1r_p < o1_pw ) ? 1.0f : -1.0f; - + + // check for rise/fall, and "send" sync if appropriate + // sync on rise + if( o1ssr ) + { + if( O1L > m_osc1l_last ) syncl = true; + if( O1R > m_osc1r_last ) syncr = true; + } + if( o1ssf ) + { + if( O1L < m_osc1l_last ) syncl = true; + if( O1R < m_osc1r_last ) syncr = true; + } + + // update last before signal is touched + m_osc1l_last = O1L; + m_osc1r_last = O1R; + // modulate volume O1L *= o1lv; O1R *= o1rv; modulatevol( O1L, o1v ) modulatevol( O1R, o1v ) - - // update osc1 phases + + // update osc1 phases m_osc1l_phase = fraction( m_osc1l_phase + 1.0f / ( static_cast( m_samplerate ) / o1l_f ) ); m_osc1r_phase = fraction( m_osc1r_phase + 1.0f / ( static_cast( m_samplerate ) / o1r_f ) ); - + ///////////////////////////// // // // OSC 2 // // // ///////////////////////////// - + // calc and mod frequencies float o2l_f = o2lfb; float o2r_f = o2rfb; modulatefreq( o2l_f, o2f ) modulatefreq( o2r_f, o2f ) - + + // check for sync + if( o2sync ) + { + if( syncl ) m_osc2l_phase = 0.0f; + if( syncr ) m_osc2r_phase = 0.0f; + } + // calc and modulate phase float o2l_p = m_osc2l_phase + o2lpo; float o2r_p = m_osc2r_phase + o2rpo; @@ -310,21 +349,21 @@ void MonstroSynth::renderOutput( fpp_t _frames, sampleFrame * _buf ) // bounds check for phase if( o2l_p < 0 ) o2l_p += 1.0f; if( o2r_p < 0 ) o2r_p += 1.0f; - + // multi-wave DC Oscillator sample_t O2L = oscillate( o2w, o2l_p ); sample_t O2R = oscillate( o2w, o2r_p ); - + // modulate volume O2L *= o2lv; O2R *= o2rv; modulatevol( O2L, o2v ) modulatevol( O2R, o2v ) - - // update osc2 phases + + // update osc2 phases m_osc2l_phase = fraction( m_osc2l_phase + 1.0f / ( static_cast( m_samplerate ) / o2l_f ) ); m_osc2r_phase = fraction( m_osc2r_phase + 1.0f / ( static_cast( m_samplerate ) / o2r_f ) ); - + ///////////////////////////// // // // OSC 3 // @@ -342,7 +381,14 @@ void MonstroSynth::renderOutput( fpp_t _frames, sampleFrame * _buf ) o3l_f = qBound( MIN_FREQ, o3l_f * powf( 4.0f, O2L ), MAX_FREQ ); o3r_f = qBound( MIN_FREQ, o3r_f * powf( 4.0f, O2R ), MAX_FREQ ); } - + + // check for sync + if( o3sync ) + { + if( syncl ) m_osc3l_phase = 0.0f; + if( syncr ) m_osc3r_phase = 0.0f; + } + // calc and modulate phase float o3l_p = m_osc3l_phase + o3lpo; float o3r_p = m_osc3r_phase + o3rpo; @@ -354,7 +400,7 @@ void MonstroSynth::renderOutput( fpp_t _frames, sampleFrame * _buf ) o3l_p = fraction( o3l_p + O2L/2 ); o3r_p = fraction( o3r_p + O2R/2 ); } - + // bounds check for phase if( o3l_p < 0 ) o3l_p += 1.0f; if( o3r_p < 0 ) o3r_p += 1.0f; @@ -366,14 +412,14 @@ void MonstroSynth::renderOutput( fpp_t _frames, sampleFrame * _buf ) // multi-wave DC Oscillator, sub-osc 2 sample_t O3BL = oscillate( o3w2, o3l_p ); sample_t O3BR = oscillate( o3w2, o3r_p ); - + // calc and modulate sub float sub = o3sub; modulateabs( sub, o3s ) - + sample_t O3L = interpolate( O3AL, O3BL, sub ); sample_t O3R = interpolate( O3AR, O3BR, sub ); - + // modulate volume O3L *= o3lv; O3R *= o3rv; @@ -386,10 +432,10 @@ void MonstroSynth::renderOutput( fpp_t _frames, sampleFrame * _buf ) O3R = qBound( -MODCLIP, O3R * qMax( 0.0f, 1.0f + O2R ), MODCLIP ); } - // update osc3 phases + // update osc3 phases m_osc3l_phase = fraction( m_osc3l_phase + 1.0f / ( static_cast( m_samplerate ) / o3l_f ) ); m_osc3r_phase = fraction( m_osc3r_phase + 1.0f / ( static_cast( m_samplerate ) / o3r_f ) ); - + _buf[f][0] = O1L + O3L + ( omod == MOD_MIX ? O2L : 0.0f ); _buf[f][1] = O1R + O3R + ( omod == MOD_MIX ? O2R : 0.0f ); } @@ -399,15 +445,21 @@ void MonstroSynth::renderOutput( fpp_t _frames, sampleFrame * _buf ) void MonstroSynth::renderModulators( fpp_t _frames ) { // LFO phase offsets - const float lfo1_p = m_parent->m_lfo1Phs.value() / 360.0f; - const float lfo2_p = m_parent->m_lfo2Phs.value() / 360.0f; + const float lfo1_po = m_parent->m_lfo1Phs.value() / 360.0f; + const float lfo2_po = m_parent->m_lfo2Phs.value() / 360.0f; + + // remove cruft from phase counters to prevent overflow + m_lfo1_phase = fraction( m_lfo1_phase ); + m_lfo2_phase = fraction( m_lfo2_phase ); // LFO rates const float lfo1_r = m_parent->m_lfo1Rate.value() / 1000.0f * m_samplerate; const float lfo2_r = m_parent->m_lfo2Rate.value() / 1000.0f * m_samplerate; - // LFOs + // frames played before + const f_cnt_t tfp = m_nph->totalFramesPlayed(); + // LFOs sample_t lfo1_s; sample_t lfo2_s; @@ -418,93 +470,112 @@ void MonstroSynth::renderModulators( fpp_t _frames ) case WAVE_SINE: for( f_cnt_t f = 0; f < _frames; f++ ) { - const f_cnt_t t = f + m_nph->totalFramesPlayed(); - lfo1_s = Oscillator::sinSample( lfo1_p + static_cast( t ) / lfo1_r ); + const f_cnt_t t = f + tfp; + const float ph = m_lfo1_phase + lfo1_po; + lfo1_s = Oscillator::sinSample( ph ); if( t < m_parent->m_lfo1_att ) lfo1_s *= ( static_cast( t ) / m_parent-> m_lfo1_att ); m_lfo1_buf[f] = lfo1_s; + m_lfo1_phase += 1.0 / lfo1_r; } break; case WAVE_TRI: for( f_cnt_t f = 0; f < _frames; f++ ) { - const f_cnt_t t = f + m_nph->totalFramesPlayed(); - lfo1_s = Oscillator::triangleSample( lfo1_p + static_cast( t ) / lfo1_r ); + const f_cnt_t t = f + tfp; + const float ph = m_lfo1_phase + lfo1_po; + lfo1_s = Oscillator::triangleSample( ph ); if( t < m_parent->m_lfo1_att ) lfo1_s *= ( static_cast( t ) / m_parent->m_lfo1_att ); m_lfo1_buf[f] = lfo1_s; + m_lfo1_phase += 1.0 / lfo1_r; } break; case WAVE_SAW: for( f_cnt_t f = 0; f < _frames; f++ ) { - const f_cnt_t t = f + m_nph->totalFramesPlayed(); - lfo1_s = Oscillator::sawSample( lfo1_p + static_cast( t ) / lfo1_r ); + const f_cnt_t t = f + tfp; + const float ph = m_lfo1_phase + lfo1_po; + lfo1_s = Oscillator::sawSample( ph ); if( t < m_parent->m_lfo1_att ) lfo1_s *= ( static_cast( t ) / m_parent->m_lfo1_att ); m_lfo1_buf[f] = lfo1_s; + m_lfo1_phase += 1.0 / lfo1_r; } break; case WAVE_RAMP: for( f_cnt_t f = 0; f < _frames; f++ ) { - const f_cnt_t t = f + m_nph->totalFramesPlayed(); - lfo1_s = Oscillator::sawSample( lfo1_p + static_cast( t ) / lfo1_r ) * -1.0f; + const f_cnt_t t = f + tfp; + const float ph = m_lfo1_phase + lfo1_po; + lfo1_s = Oscillator::sawSample( ph ) * -1.0f; if( t < m_parent->m_lfo1_att ) lfo1_s *= ( static_cast( t ) / m_parent->m_lfo1_att ); m_lfo1_buf[f] = lfo1_s; + m_lfo1_phase += 1.0 / lfo1_r; } break; case WAVE_SQR: for( f_cnt_t f = 0; f < _frames; f++ ) { - const f_cnt_t t = f + m_nph->totalFramesPlayed(); - lfo1_s = Oscillator::squareSample( lfo1_p + static_cast( t ) / lfo1_r ); + const f_cnt_t t = f + tfp; + const float ph = m_lfo1_phase + lfo1_po; + lfo1_s = Oscillator::squareSample( ph ); if( t < m_parent->m_lfo1_att ) lfo1_s *= ( static_cast( t ) / m_parent->m_lfo1_att ); m_lfo1_buf[f] = lfo1_s; + m_lfo1_phase += 1.0 / lfo1_r; } break; case WAVE_SQRSOFT: for( f_cnt_t f = 0; f < _frames; f++ ) { - const f_cnt_t t = f + m_nph->totalFramesPlayed(); - lfo1_s = oscillate( WAVE_SQRSOFT, lfo1_p + static_cast( t ) / lfo1_r ); + const f_cnt_t t = f + tfp; + const float ph = m_lfo1_phase + lfo1_po; + lfo1_s = oscillate( WAVE_SQRSOFT, ph ); if( t < m_parent->m_lfo1_att ) lfo1_s *= ( static_cast( t ) / m_parent->m_lfo1_att ); m_lfo1_buf[f] = lfo1_s; + m_lfo1_phase += 1.0 / lfo1_r; } break; case WAVE_MOOG: for( f_cnt_t f = 0; f < _frames; f++ ) { - const f_cnt_t t = f + m_nph->totalFramesPlayed(); - lfo1_s = Oscillator::moogSawSample( lfo1_p + static_cast( t ) / lfo1_r ); + const f_cnt_t t = f + tfp; + const float ph = m_lfo1_phase + lfo1_po; + lfo1_s = Oscillator::moogSawSample( ph ); if( t < m_parent->m_lfo1_att ) lfo1_s *= ( static_cast( t ) / m_parent->m_lfo1_att ); m_lfo1_buf[f] = lfo1_s; + m_lfo1_phase += 1.0 / lfo1_r; } break; case WAVE_SINABS: for( f_cnt_t f = 0; f < _frames; f++ ) { - const f_cnt_t t = f + m_nph->totalFramesPlayed(); - lfo1_s = oscillate( WAVE_SINABS, lfo1_p + static_cast( t ) / lfo1_r ); + const f_cnt_t t = f + tfp; + const float ph = m_lfo1_phase + lfo1_po; + lfo1_s = oscillate( WAVE_SINABS, ph ); if( t < m_parent->m_lfo1_att ) lfo1_s *= ( static_cast( t ) / m_parent->m_lfo1_att ); m_lfo1_buf[f] = lfo1_s; + m_lfo1_phase += 1.0 / lfo1_r; } break; case WAVE_EXP: for( f_cnt_t f = 0; f < _frames; f++ ) { - const f_cnt_t t = f + m_nph->totalFramesPlayed(); - lfo1_s = Oscillator::expSample( lfo1_p + static_cast( t ) / lfo1_r ); + const f_cnt_t t = f + tfp; + const float ph = m_lfo1_phase + lfo1_po; + lfo1_s = Oscillator::expSample( ph ); if( t < m_parent->m_lfo1_att ) lfo1_s *= ( static_cast( t ) / m_parent-> m_lfo1_att ); m_lfo1_buf[f] = lfo1_s; + m_lfo1_phase += 1.0 / lfo1_r; } break; case WAVE_NOISE: default: for( f_cnt_t f = 0; f < _frames; f++ ) { - const f_cnt_t t = f + m_nph->totalFramesPlayed(); + const f_cnt_t t = f + tfp; if( t % static_cast( lfo1_r ) == 0 ) m_lfo1_last = Oscillator::noiseSample( 0.0f ); lfo1_s = m_lfo1_last; if( t < m_parent->m_lfo1_att ) lfo1_s *= ( static_cast( t ) / m_parent->m_lfo1_att ); m_lfo1_buf[f] = lfo1_s; + m_lfo1_phase += 1.0 / lfo1_r; } break; } @@ -516,93 +587,112 @@ void MonstroSynth::renderModulators( fpp_t _frames ) case WAVE_SINE: for( f_cnt_t f = 0; f < _frames; f++ ) { - const f_cnt_t t = f + m_nph->totalFramesPlayed(); - lfo2_s = Oscillator::sinSample( lfo2_p + static_cast( t ) / lfo2_r ); - if( t < m_parent->m_lfo2_att ) lfo2_s *= ( static_cast( t ) / m_parent->m_lfo2_att ); + const f_cnt_t t = f + tfp; + const float ph = m_lfo2_phase + lfo2_po; + lfo2_s = Oscillator::sinSample( ph ); + if( t < m_parent->m_lfo2_att ) lfo2_s *= ( static_cast( t ) / m_parent-> m_lfo2_att ); m_lfo2_buf[f] = lfo2_s; + m_lfo2_phase += 1.0 / lfo2_r; } break; case WAVE_TRI: for( f_cnt_t f = 0; f < _frames; f++ ) { - const f_cnt_t t = f + m_nph->totalFramesPlayed(); - lfo2_s = Oscillator::triangleSample( lfo2_p + static_cast( t ) / lfo2_r ); + const f_cnt_t t = f + tfp; + const float ph = m_lfo2_phase + lfo2_po; + lfo2_s = Oscillator::triangleSample( ph ); if( t < m_parent->m_lfo2_att ) lfo2_s *= ( static_cast( t ) / m_parent->m_lfo2_att ); m_lfo2_buf[f] = lfo2_s; + m_lfo2_phase += 1.0 / lfo2_r; } break; case WAVE_SAW: for( f_cnt_t f = 0; f < _frames; f++ ) { - const f_cnt_t t = f + m_nph->totalFramesPlayed(); - lfo2_s = Oscillator::sawSample( lfo2_p + static_cast( t ) / lfo2_r ); + const f_cnt_t t = f + tfp; + const float ph = m_lfo2_phase + lfo2_po; + lfo2_s = Oscillator::sawSample( ph ); if( t < m_parent->m_lfo2_att ) lfo2_s *= ( static_cast( t ) / m_parent->m_lfo2_att ); m_lfo2_buf[f] = lfo2_s; + m_lfo2_phase += 1.0 / lfo2_r; } break; case WAVE_RAMP: for( f_cnt_t f = 0; f < _frames; f++ ) { - const f_cnt_t t = f + m_nph->totalFramesPlayed(); - lfo2_s = Oscillator::sawSample( lfo2_p + static_cast( t ) / lfo2_r ) * -1.0f; + const f_cnt_t t = f + tfp; + const float ph = m_lfo2_phase + lfo2_po; + lfo2_s = Oscillator::sawSample( ph ) * -1.0f; if( t < m_parent->m_lfo2_att ) lfo2_s *= ( static_cast( t ) / m_parent->m_lfo2_att ); m_lfo2_buf[f] = lfo2_s; + m_lfo2_phase += 1.0 / lfo2_r; } break; case WAVE_SQR: for( f_cnt_t f = 0; f < _frames; f++ ) { - const f_cnt_t t = f + m_nph->totalFramesPlayed(); - lfo2_s = Oscillator::squareSample( lfo2_p + static_cast( t ) / lfo2_r ); + const f_cnt_t t = f + tfp; + const float ph = m_lfo2_phase + lfo2_po; + lfo2_s = Oscillator::squareSample( ph ); if( t < m_parent->m_lfo2_att ) lfo2_s *= ( static_cast( t ) / m_parent->m_lfo2_att ); m_lfo2_buf[f] = lfo2_s; + m_lfo2_phase += 1.0 / lfo2_r; } break; case WAVE_SQRSOFT: for( f_cnt_t f = 0; f < _frames; f++ ) { - const f_cnt_t t = f + m_nph->totalFramesPlayed(); - lfo2_s = oscillate( WAVE_SQRSOFT, lfo2_p + static_cast( t ) / lfo2_r ); + const f_cnt_t t = f + tfp; + const float ph = m_lfo2_phase + lfo2_po; + lfo2_s = oscillate( WAVE_SQRSOFT, ph ); if( t < m_parent->m_lfo2_att ) lfo2_s *= ( static_cast( t ) / m_parent->m_lfo2_att ); m_lfo2_buf[f] = lfo2_s; + m_lfo2_phase += 1.0 / lfo2_r; } break; case WAVE_MOOG: for( f_cnt_t f = 0; f < _frames; f++ ) { - const f_cnt_t t = f + m_nph->totalFramesPlayed(); - lfo2_s = Oscillator::moogSawSample( lfo2_p + static_cast( t ) / lfo2_r ); + const f_cnt_t t = f + tfp; + const float ph = m_lfo2_phase + lfo2_po; + lfo2_s = Oscillator::moogSawSample( ph ); if( t < m_parent->m_lfo2_att ) lfo2_s *= ( static_cast( t ) / m_parent->m_lfo2_att ); m_lfo2_buf[f] = lfo2_s; + m_lfo2_phase += 1.0 / lfo2_r; } break; case WAVE_SINABS: for( f_cnt_t f = 0; f < _frames; f++ ) { - const f_cnt_t t = f + m_nph->totalFramesPlayed(); - lfo2_s = oscillate( WAVE_SINABS, lfo2_p + static_cast( t ) / lfo2_r ); + const f_cnt_t t = f + tfp; + const float ph = m_lfo2_phase + lfo2_po; + lfo2_s = oscillate( WAVE_SINABS, ph ); if( t < m_parent->m_lfo2_att ) lfo2_s *= ( static_cast( t ) / m_parent->m_lfo2_att ); m_lfo2_buf[f] = lfo2_s; + m_lfo2_phase += 1.0 / lfo2_r; } break; case WAVE_EXP: for( f_cnt_t f = 0; f < _frames; f++ ) { - const f_cnt_t t = f + m_nph->totalFramesPlayed(); - lfo2_s = Oscillator::expSample( lfo2_p + static_cast( t ) / lfo2_r ); - if( t < m_parent->m_lfo2_att ) lfo2_s *= ( static_cast( t ) / m_parent->m_lfo2_att ); + const f_cnt_t t = f + tfp; + const float ph = m_lfo2_phase + lfo2_po; + lfo2_s = Oscillator::expSample( ph ); + if( t < m_parent->m_lfo2_att ) lfo2_s *= ( static_cast( t ) / m_parent-> m_lfo2_att ); m_lfo2_buf[f] = lfo2_s; + m_lfo2_phase += 1.0 / lfo2_r; } break; case WAVE_NOISE: default: for( f_cnt_t f = 0; f < _frames; f++ ) { - const f_cnt_t t = f + m_nph->totalFramesPlayed(); + const f_cnt_t t = f + tfp; if( t % static_cast( lfo2_r ) == 0 ) m_lfo2_last = Oscillator::noiseSample( 0.0f ); lfo2_s = m_lfo2_last; if( t < m_parent->m_lfo2_att ) lfo2_s *= ( static_cast( t ) / m_parent->m_lfo2_att ); m_lfo2_buf[f] = lfo2_s; + m_lfo2_phase += 1.0 / lfo2_r; } break; } @@ -617,10 +707,10 @@ void MonstroSynth::renderModulators( fpp_t _frames ) const float env1_s = m_parent-> m_env1Slope.value(); const float env2_s = m_parent-> m_env2Slope.value(); - + const float env1_sus = m_parent-> m_env1Sus.value(); const float env2_sus = m_parent-> m_env2Sus.value(); - + for( f_cnt_t f = 0; f < _frames; f++ ) { // envelope 1 @@ -633,7 +723,7 @@ void MonstroSynth::renderModulators( fpp_t _frames ) else if( m_env1_phase < 3.0f ) m_env1_phase = 4.0f; else m_env1_phase = 4.0f + fraction( m_env1_phase ); } - + // process envelope if( m_env1_phase < 1.0f ) // pre-delay phase { @@ -653,7 +743,7 @@ void MonstroSynth::renderModulators( fpp_t _frames ) else if( m_env1_phase < 4.0f ) // decay phase { const sample_t s = 1.0f - fraction( m_env1_phase ); - if( s <= env1_sus ) + if( s <= env1_sus ) { m_env1_buf[f] = env1_sus; } @@ -685,7 +775,7 @@ void MonstroSynth::renderModulators( fpp_t _frames ) else if( m_env2_phase < 3.0f ) m_env2_phase = 4.0f; else m_env2_phase = 4.0f + fraction( m_env2_phase ); } - + // process envelope if( m_env2_phase < 1.0f ) // pre-delay phase { @@ -705,7 +795,7 @@ void MonstroSynth::renderModulators( fpp_t _frames ) else if( m_env2_phase < 4.0f ) // decay phase { const sample_t s = 1.0f - fraction( m_env2_phase ); - if( s <= env2_sus ) + if( s <= env2_sus ) { m_env2_buf[f] = env2_sus; } @@ -739,6 +829,8 @@ MonstroInstrument::MonstroInstrument( InstrumentTrack * _instrument_track ) : m_osc1Ftr( 0.0, -100.0, 100.0, 1.0, this, tr( "Osc 1 Fine detune right" ) ), m_osc1Spo( 0.0, -180.0, 180.0, 0.1, this, tr( "Osc 1 Stereo phase offset" ) ), m_osc1Pw( 50.0, 0.0, 100.0, 0.01, this, tr( "Osc 1 Pulse width" ) ), + m_osc1SSR( false, this, tr( "Osc 1 Sync send on rise" ) ), + m_osc1SSF( false, this, tr( "Osc 1 Sync send on fall" ) ), m_osc2Vol( 33.0, 0.0, 200.0, 0.1, this, tr( "Osc 2 Volume" ) ), m_osc2Pan( 0.0, -100.0, 100.0, 0.1, this, tr( "Osc 2 Panning" ) ), @@ -747,6 +839,7 @@ MonstroInstrument::MonstroInstrument( InstrumentTrack * _instrument_track ) : m_osc2Ftr( 0.0, -100.0, 100.0, 1.0, this, tr( "Osc 2 Fine detune right" ) ), m_osc2Spo( 0.0, -180.0, 180.0, 0.1, this, tr( "Osc 2 Stereo phase offset" ) ), m_osc2Wave( this, tr( "Osc 2 Waveform" ) ), + m_osc2Sync( false, this, tr( "Osc 2 Sync" ) ), m_osc3Vol( 33.0, 0.0, 200.0, 0.1, this, tr( "Osc 3 Volume" ) ), m_osc3Pan( 0.0, -100.0, 100.0, 0.1, this, tr( "Osc 3 Panning" ) ), @@ -755,15 +848,16 @@ MonstroInstrument::MonstroInstrument( InstrumentTrack * _instrument_track ) : m_osc3Sub( 0.0, -100.0, 100.0, 0.1, this, tr( "Osc 3 Sub-oscillator mix" ) ), m_osc3Wave1( this, tr( "Osc 3 Waveform 1" ) ), m_osc3Wave2( this, tr( "Osc 3 Waveform 2" ) ), + m_osc3Sync( false, this, tr( "Osc 3 Sync" ) ), m_lfo1Wave( this, tr( "LFO 1 Waveform" ) ), m_lfo1Att( 0.0f, 0.0f, 2000.0f, 1.0f, 2000.0f, this, tr( "LFO 1 Attack" ) ), - m_lfo1Rate( 1.0f, 0.1, 20000.0, 0.1, 20000.0f, this, tr( "LFO 1 Rate" ) ), + m_lfo1Rate( 1.0f, 0.1, 10000.0, 0.1, 10000.0f, this, tr( "LFO 1 Rate" ) ), m_lfo1Phs( 0.0, -180.0, 180.0, 0.1, this, tr( "LFO 1 Phase" ) ), m_lfo2Wave( this, tr( "LFO 2 Waveform" ) ), m_lfo2Att( 0.0f, 0.0f, 2000.0f, 1.0f, 2000.0f, this, tr( "LFO 2 Attack" ) ), - m_lfo2Rate( 1.0f, 0.1, 20000.0, 0.1, 20000.0f, this, tr( "LFO 2 Rate" ) ), + m_lfo2Rate( 1.0f, 0.1, 10000.0, 0.1, 10000.0f, this, tr( "LFO 2 Rate" ) ), m_lfo2Phs( 0.0, -180.0, 180.0, 0.1, this, tr( "LFO 2 Phase" ) ), m_env1Pre( 0.0f, 0.0f, 2000.0f, 1.0f, 2000.0f, this, tr( "Env 1 Pre-delay" ) ), @@ -876,7 +970,7 @@ MonstroInstrument::MonstroInstrument( InstrumentTrack * _instrument_track ) : connect( &m_osc1Spo, SIGNAL( dataChanged() ), this, SLOT( updatePO() ) ); connect( &m_osc2Spo, SIGNAL( dataChanged() ), this, SLOT( updatePO() ) ); connect( &m_osc3Spo, SIGNAL( dataChanged() ), this, SLOT( updatePO() ) ); - + // updateEnvelope1 connect( &m_env1Pre, SIGNAL( dataChanged() ), this, SLOT( updateEnvelope1() ) ); @@ -952,6 +1046,8 @@ void MonstroInstrument::saveSettings( QDomDocument & _doc, m_osc1Ftr.saveSettings( _doc, _this, "o1ftr" ); m_osc1Spo.saveSettings( _doc, _this, "o1spo" ); m_osc1Pw.saveSettings( _doc, _this, "o1pw" ); + m_osc1SSR.saveSettings( _doc, _this, "o1ssr" ); + m_osc1SSF.saveSettings( _doc, _this, "o1ssf" ); m_osc2Vol.saveSettings( _doc, _this, "o2vol" ); m_osc2Pan.saveSettings( _doc, _this, "o2pan" ); @@ -960,6 +1056,7 @@ void MonstroInstrument::saveSettings( QDomDocument & _doc, m_osc2Ftr.saveSettings( _doc, _this, "o2ftr" ); m_osc2Spo.saveSettings( _doc, _this, "o2spo" ); m_osc2Wave.saveSettings( _doc, _this, "o2wav" ); + m_osc2Sync.saveSettings( _doc, _this, "o2syn" ); m_osc3Vol.saveSettings( _doc, _this, "o3vol" ); m_osc3Pan.saveSettings( _doc, _this, "o3pan" ); @@ -968,6 +1065,7 @@ void MonstroInstrument::saveSettings( QDomDocument & _doc, m_osc3Sub.saveSettings( _doc, _this, "o3sub" ); m_osc3Wave1.saveSettings( _doc, _this, "o3wav1" ); m_osc3Wave2.saveSettings( _doc, _this, "o3wav2" ); + m_osc3Sync.saveSettings( _doc, _this, "o3syn" ); m_lfo1Wave.saveSettings( _doc, _this, "l1wav" ); m_lfo1Att.saveSettings( _doc, _this, "l1att" ); @@ -995,7 +1093,7 @@ void MonstroInstrument::saveSettings( QDomDocument & _doc, m_env2Rel.saveSettings( _doc, _this, "e2rel" ); m_env2Slope.saveSettings( _doc, _this, "e2slo" ); - m_o23Mod.saveSettings( _doc, _this, "o23mo" ); + m_o23Mod.saveSettings( _doc, _this, "o23mo" ); m_vol1env1.saveSettings( _doc, _this, "v1e1" ); m_vol1env2.saveSettings( _doc, _this, "v1e2" ); @@ -1051,8 +1149,8 @@ void MonstroInstrument::saveSettings( QDomDocument & _doc, m_sub3env2.saveSettings( _doc, _this, "s3e2" ); m_sub3lfo1.saveSettings( _doc, _this, "s3l1" ); m_sub3lfo2.saveSettings( _doc, _this, "s3l2" ); - -} + +} void MonstroInstrument::loadSettings( const QDomElement & _this ) { @@ -1063,6 +1161,8 @@ void MonstroInstrument::loadSettings( const QDomElement & _this ) m_osc1Ftr.loadSettings( _this, "o1ftr" ); m_osc1Spo.loadSettings( _this, "o1spo" ); m_osc1Pw.loadSettings( _this, "o1pw" ); + m_osc1SSR.loadSettings( _this, "o1ssr" ); + m_osc1SSF.loadSettings( _this, "o1ssf" ); m_osc2Vol.loadSettings( _this, "o2vol" ); m_osc2Pan.loadSettings( _this, "o2pan" ); @@ -1071,6 +1171,7 @@ void MonstroInstrument::loadSettings( const QDomElement & _this ) m_osc2Ftr.loadSettings( _this, "o2ftr" ); m_osc2Spo.loadSettings( _this, "o2spo" ); m_osc2Wave.loadSettings( _this, "o2wav" ); + m_osc2Sync.loadSettings( _this, "o2syn" ); m_osc3Vol.loadSettings( _this, "o3vol" ); m_osc3Pan.loadSettings( _this, "o3pan" ); @@ -1079,6 +1180,7 @@ void MonstroInstrument::loadSettings( const QDomElement & _this ) m_osc3Sub.loadSettings( _this, "o3sub" ); m_osc3Wave1.loadSettings( _this, "o3wav1" ); m_osc3Wave2.loadSettings( _this, "o3wav2" ); + m_osc3Sync.loadSettings( _this, "o3syn" ); m_lfo1Wave.loadSettings( _this, "l1wav" ); m_lfo1Att.loadSettings( _this, "l1att" ); @@ -1106,7 +1208,7 @@ void MonstroInstrument::loadSettings( const QDomElement & _this ) m_env2Rel.loadSettings( _this, "e2rel" ); m_env2Slope.loadSettings( _this, "e2slo" ); - m_o23Mod.loadSettings( _this, "o23mo" ); + m_o23Mod.loadSettings( _this, "o23mo" ); m_vol1env1.loadSettings( _this, "v1e1" ); m_vol1env2.loadSettings( _this, "v1e2" ); @@ -1162,7 +1264,7 @@ void MonstroInstrument::loadSettings( const QDomElement & _this ) m_sub3env2.loadSettings( _this, "s3e2" ); m_sub3lfo1.loadSettings( _this, "s3l1" ); m_sub3lfo2.loadSettings( _this, "s3l2" ); - + } @@ -1174,7 +1276,7 @@ QString MonstroInstrument::nodeName() const f_cnt_t MonstroInstrument::desiredReleaseFrames() const { - return qMax( 64, qMax( m_env1_relF, m_env2_relF ) ); + return 64; } @@ -1188,27 +1290,27 @@ void MonstroInstrument::updateVolumes() { m_osc1l_vol = leftCh( m_osc1Vol.value(), m_osc1Pan.value() ); m_osc1r_vol = rightCh( m_osc1Vol.value(), m_osc1Pan.value() ); - + m_osc2l_vol = leftCh( m_osc2Vol.value(), m_osc2Pan.value() ); m_osc2r_vol = rightCh( m_osc2Vol.value(), m_osc2Pan.value() ); - + m_osc3l_vol = leftCh( m_osc3Vol.value(), m_osc3Pan.value() ); - m_osc3r_vol = rightCh( m_osc3Vol.value(), m_osc3Pan.value() ); + m_osc3r_vol = rightCh( m_osc3Vol.value(), m_osc3Pan.value() ); } void MonstroInstrument::updateFreq() { - m_osc1l_freq = powf( 2.0f, m_osc1Crs.value() / 12.0f ) * + m_osc1l_freq = powf( 2.0f, m_osc1Crs.value() / 12.0f ) * powf( 2.0f, m_osc1Ftl.value() / 1200.0f ); - m_osc1r_freq = powf( 2.0f, m_osc1Crs.value() / 12.0f ) * + m_osc1r_freq = powf( 2.0f, m_osc1Crs.value() / 12.0f ) * powf( 2.0f, m_osc1Ftr.value() / 1200.0f ); - - m_osc2l_freq = powf( 2.0f, m_osc2Crs.value() / 12.0f ) * + + m_osc2l_freq = powf( 2.0f, m_osc2Crs.value() / 12.0f ) * powf( 2.0f, m_osc2Ftl.value() / 1200.0f ); - m_osc2r_freq = powf( 2.0f, m_osc2Crs.value() / 12.0f ) * + m_osc2r_freq = powf( 2.0f, m_osc2Crs.value() / 12.0f ) * powf( 2.0f, m_osc2Ftr.value() / 1200.0f ); - + m_osc3_freq = powf( 2.0f, m_osc3Crs.value() / 12.0f ); } @@ -1217,10 +1319,10 @@ void MonstroInstrument::updatePO() { m_osc1l_po = m_osc1Spo.value() / 360.0; m_osc1r_po = ( m_osc1Spo.value() * -1.0 ) / 360.0; - + m_osc2l_po = m_osc2Spo.value() / 360.0; m_osc2r_po = ( m_osc2Spo.value() * -1.0 ) / 360.0; - + m_osc3l_po = m_osc3Spo.value() / 360.0; m_osc3r_po = ( m_osc3Spo.value() * -1.0 ) / 360.0; } @@ -1237,7 +1339,7 @@ void MonstroInstrument::updateEnvelope1() else m_env1_dec = 1.0 / ( m_env1Dec.value() / 1000.0f ) / m_samplerate; if( m_env1Rel.value() == 0.0f ) m_env1_rel = 1.0; else m_env1_rel = 1.0 / ( m_env1Rel.value() / 1000.0f ) / m_samplerate; - + m_env1_len = ( m_env1Pre.value() + m_env1Att.value() + m_env1Hold.value() + m_env1Dec.value() ) * m_samplerate / 1000.0f; m_env1_relF = m_env1Rel.value() * m_samplerate / 1000.0f; } @@ -1253,7 +1355,7 @@ void MonstroInstrument::updateEnvelope2() else m_env2_dec = 1.0 / ( m_env2Dec.value() / 1000.0f ) / m_samplerate; if( m_env2Rel.value() == 0.0f ) m_env2_rel = 1.0; else m_env2_rel = 1.0 / ( m_env2Rel.value() / 1000.0f ) / m_samplerate; - + m_env2_len = ( m_env2Pre.value() + m_env2Att.value() + m_env2Hold.value() + m_env2Dec.value() ) * m_samplerate / 1000.0f; m_env2_relF = m_env2Rel.value() * m_samplerate / 1000.0f; } @@ -1283,30 +1385,30 @@ MonstroView::MonstroView( Instrument * _instrument, setWidgetBackground( m_operatorsView, "artwork_op" ); m_operatorsView->show(); m_operatorsView->move( 0, 0 ); - + m_matrixView = setupMatrixView( this ); setWidgetBackground( m_matrixView, "artwork_mat" ); m_matrixView->hide(); m_matrixView->move( 0, 0 ); - + // "tab buttons" - + pixmapButton * m_opViewButton = new pixmapButton( this, NULL ); m_opViewButton -> move( 0,0 ); m_opViewButton -> setActiveGraphic( PLUGIN_NAME::getIconPixmap( "opview_active" ) ); m_opViewButton -> setInactiveGraphic( PLUGIN_NAME::getIconPixmap( "opview_inactive" ) ); toolTip::add( m_opViewButton, tr( "Operators view" ) ); - + pixmapButton * m_matViewButton = new pixmapButton( this, NULL ); m_matViewButton -> move( 125,0 ); m_matViewButton -> setActiveGraphic( PLUGIN_NAME::getIconPixmap( "matview_active" ) ); m_matViewButton -> setInactiveGraphic( PLUGIN_NAME::getIconPixmap( "matview_inactive" ) ); toolTip::add( m_matViewButton, tr( "Matrix view" ) ); - + m_selectedViewGroup = new automatableButtonGroup( this ); m_selectedViewGroup -> addButton( m_opViewButton ); m_selectedViewGroup -> addButton( m_matViewButton ); - + connect( m_opViewButton, SIGNAL( clicked() ), this, SLOT( updateLayout() ) ); connect( m_matViewButton, SIGNAL( clicked() ), this, SLOT( updateLayout() ) ); } @@ -1336,7 +1438,7 @@ void MonstroView::updateLayout() void MonstroView::modelChanged() { MonstroInstrument * m = castModel(); - + m_osc1VolKnob-> setModel( &m-> m_osc1Vol ); m_osc1PanKnob-> setModel( &m-> m_osc1Pan ); m_osc1CrsKnob-> setModel( &m-> m_osc1Crs ); @@ -1344,6 +1446,8 @@ void MonstroView::modelChanged() m_osc1FtrKnob-> setModel( &m-> m_osc1Ftr ); m_osc1SpoKnob-> setModel( &m-> m_osc1Spo ); m_osc1PwKnob-> setModel( &m-> m_osc1Pw ); + m_osc1SSRButton-> setModel( &m-> m_osc1SSR ); + m_osc1SSFButton-> setModel( &m-> m_osc1SSF ); m_osc2VolKnob-> setModel( &m-> m_osc2Vol ); m_osc2PanKnob-> setModel( &m-> m_osc2Pan ); @@ -1352,25 +1456,27 @@ void MonstroView::modelChanged() m_osc2FtrKnob-> setModel( &m-> m_osc2Ftr ); m_osc2SpoKnob-> setModel( &m-> m_osc2Spo ); m_osc2WaveBox-> setModel( &m-> m_osc2Wave ); + m_osc2SyncButton-> setModel( &m-> m_osc2Sync ); m_osc3VolKnob-> setModel( &m-> m_osc3Vol ); m_osc3PanKnob-> setModel( &m-> m_osc3Pan ); m_osc3CrsKnob-> setModel( &m-> m_osc3Crs ); m_osc3SpoKnob-> setModel( &m-> m_osc3Spo ); - m_osc3SubKnob-> setModel( &m-> m_osc3Sub ); + m_osc3SubKnob-> setModel( &m-> m_osc3Sub ); m_osc3Wave1Box-> setModel( &m-> m_osc3Wave1 ); m_osc3Wave2Box-> setModel( &m-> m_osc3Wave2 ); - + m_osc3SyncButton-> setModel( &m-> m_osc3Sync ); + m_lfo1WaveBox-> setModel( &m-> m_lfo1Wave ); m_lfo1AttKnob-> setModel( &m-> m_lfo1Att ); m_lfo1RateKnob-> setModel( &m-> m_lfo1Rate ); m_lfo1PhsKnob-> setModel( &m-> m_lfo1Phs ); - + m_lfo2WaveBox-> setModel( &m-> m_lfo2Wave ); m_lfo2AttKnob-> setModel( &m-> m_lfo2Att ); m_lfo2RateKnob-> setModel( &m-> m_lfo2Rate ); m_lfo2PhsKnob-> setModel( &m-> m_lfo2Phs ); - + m_env1PreKnob-> setModel( &m-> m_env1Pre ); m_env1AttKnob-> setModel( &m-> m_env1Att ); m_env1HoldKnob-> setModel( &m-> m_env1Hold ); @@ -1378,7 +1484,7 @@ void MonstroView::modelChanged() m_env1SusKnob-> setModel( &m-> m_env1Sus ); m_env1RelKnob-> setModel( &m-> m_env1Rel ); m_env1SlopeKnob-> setModel( &m-> m_env1Slope ); - + m_env2PreKnob-> setModel( &m-> m_env2Pre ); m_env2AttKnob-> setModel( &m-> m_env2Att ); m_env2HoldKnob-> setModel( &m-> m_env2Hold ); @@ -1386,10 +1492,10 @@ void MonstroView::modelChanged() m_env2SusKnob-> setModel( &m-> m_env2Sus ); m_env2RelKnob-> setModel( &m-> m_env2Rel ); m_env2SlopeKnob-> setModel( &m-> m_env2Slope ); - + m_o23ModGroup-> setModel( &m-> m_o23Mod ); m_selectedViewGroup-> setModel( &m-> m_selectedView ); - + m_vol1env1Knob-> setModel( &m-> m_vol1env1 ); m_vol1env2Knob-> setModel( &m-> m_vol1env2 ); m_vol1lfo1Knob-> setModel( &m-> m_vol1lfo1 ); @@ -1444,7 +1550,7 @@ void MonstroView::modelChanged() m_sub3env2Knob-> setModel( &m-> m_sub3env2 ); m_sub3lfo1Knob-> setModel( &m-> m_sub3lfo1 ); m_sub3lfo2Knob-> setModel( &m-> m_sub3lfo2 ); - + } @@ -1461,10 +1567,10 @@ void MonstroView::setWidgetBackground( QWidget * _widget, const QString & _pic ) QWidget * MonstroView::setupOperatorsView( QWidget * _parent ) { // operators view - + QWidget * view = new QWidget( _parent ); view-> setFixedSize( 250, 250 ); - + makeknob( m_osc1VolKnob, KNOBCOL1, O1ROW, "Volume", "%", "osc1Knob" ) makeknob( m_osc1PanKnob, KNOBCOL2, O1ROW, "Panning", "", "osc1Knob" ) makeknob( m_osc1CrsKnob, KNOBCOL3, O1ROW, "Coarse detune", " seminotes", "osc1Knob" ) @@ -1475,19 +1581,24 @@ QWidget * MonstroView::setupOperatorsView( QWidget * _parent ) m_osc1VolKnob -> setVolumeKnob( true ); + maketinyled( m_osc1SSRButton, 230, 34, "Send sync on pulse rise" ) + maketinyled( m_osc1SSFButton, 230, 44, "Send sync on pulse fall" ) + makeknob( m_osc2VolKnob, KNOBCOL1, O2ROW, "Volume", "%", "osc2Knob" ) makeknob( m_osc2PanKnob, KNOBCOL2, O2ROW, "Panning", "", "osc2Knob" ) makeknob( m_osc2CrsKnob, KNOBCOL3, O2ROW, "Coarse detune", " seminotes", "osc2Knob" ) makeknob( m_osc2FtlKnob, KNOBCOL4, O2ROW, "Finetune left", " cents", "osc2Knob" ) makeknob( m_osc2FtrKnob, KNOBCOL5, O2ROW, "Finetune right", " cents", "osc2Knob" ) makeknob( m_osc2SpoKnob, KNOBCOL6, O2ROW, "Stereo phase offset", " deg", "osc2Knob" ) - + m_osc2VolKnob -> setVolumeKnob( true ); - + m_osc2WaveBox = new comboBox( view ); - m_osc2WaveBox -> setGeometry( KNOBCOL7, O2ROW + 4, 42, 22 ); + m_osc2WaveBox -> setGeometry( 204, O2ROW + 7, 42, 22 ); m_osc2WaveBox->setFont( pointSize<8>( m_osc2WaveBox->font() ) ); - + + maketinyled( m_osc2SyncButton, 204, O2ROW - 3, "Sync oscillator 2" ) + makeknob( m_osc3VolKnob, KNOBCOL1, O3ROW, "Volume", "%", "osc3Knob" ) makeknob( m_osc3PanKnob, KNOBCOL2, O3ROW, "Panning", "", "osc3Knob" ) makeknob( m_osc3CrsKnob, KNOBCOL3, O3ROW, "Coarse detune", " seminotes", "osc3Knob" ) @@ -1495,29 +1606,31 @@ QWidget * MonstroView::setupOperatorsView( QWidget * _parent ) makeknob( m_osc3SubKnob, KNOBCOL5, O3ROW, "Sub-osc mix", "", "osc3Knob" ) m_osc3Wave1Box = new comboBox( view ); - m_osc3Wave1Box -> setGeometry( 160, O3ROW + 4, 42, 22 ); + m_osc3Wave1Box -> setGeometry( 160, O3ROW + 7, 42, 22 ); m_osc3Wave1Box->setFont( pointSize<8>( m_osc3Wave1Box->font() ) ); m_osc3Wave2Box = new comboBox( view ); - m_osc3Wave2Box -> setGeometry( 204, O3ROW + 4, 42, 22 ); + m_osc3Wave2Box -> setGeometry( 204, O3ROW + 7, 42, 22 ); m_osc3Wave2Box->setFont( pointSize<8>( m_osc3Wave2Box->font() ) ); - + + maketinyled( m_osc3SyncButton, 204, O3ROW - 3, "Sync oscillator 3" ) + m_lfo1WaveBox = new comboBox( view ); m_lfo1WaveBox -> setGeometry( 2, LFOROW + 7, 42, 22 ); - m_lfo1WaveBox->setFont( pointSize<8>( m_lfo1WaveBox->font() ) ); + m_lfo1WaveBox->setFont( pointSize<8>( m_lfo1WaveBox->font() ) ); maketsknob( m_lfo1AttKnob, LFOCOL1, LFOROW, "Attack", " ms", "lfoKnob" ) maketsknob( m_lfo1RateKnob, LFOCOL2, LFOROW, "Rate", " ms", "lfoKnob" ) makeknob( m_lfo1PhsKnob, LFOCOL3, LFOROW, "Phase", " deg", "lfoKnob" ) - + m_lfo2WaveBox = new comboBox( view ); m_lfo2WaveBox -> setGeometry( 127, LFOROW + 7, 42, 22 ); - m_lfo2WaveBox->setFont( pointSize<8>( m_lfo2WaveBox->font() ) ); + m_lfo2WaveBox->setFont( pointSize<8>( m_lfo2WaveBox->font() ) ); maketsknob( m_lfo2AttKnob, LFOCOL4, LFOROW, "Attack", " ms", "lfoKnob" ) maketsknob( m_lfo2RateKnob, LFOCOL5, LFOROW, "Rate", " ms", "lfoKnob" ) makeknob( m_lfo2PhsKnob, LFOCOL6, LFOROW, "Phase", " deg", "lfoKnob" ) - + maketsknob( m_env1PreKnob, KNOBCOL1, E1ROW, "Pre-delay", " ms", "envKnob" ) maketsknob( m_env1AttKnob, KNOBCOL2, E1ROW, "Attack", " ms", "envKnob" ) maketsknob( m_env1HoldKnob, KNOBCOL3, E1ROW, "Hold", " ms", "envKnob" ) @@ -1546,7 +1659,7 @@ QWidget * MonstroView::setupOperatorsView( QWidget * _parent ) m_amButton -> setActiveGraphic( PLUGIN_NAME::getIconPixmap( "am_active" ) ); m_amButton -> setInactiveGraphic( PLUGIN_NAME::getIconPixmap( "am_inactive" ) ); toolTip::add( m_amButton, tr( "Modulate amplitude of Osc3 with Osc2" ) ); - + pixmapButton * m_fmButton = new pixmapButton( view, NULL ); m_fmButton -> move( 225, 185 + 15*2 ); m_fmButton -> setActiveGraphic( PLUGIN_NAME::getIconPixmap( "fm_active" ) ); @@ -1558,13 +1671,13 @@ QWidget * MonstroView::setupOperatorsView( QWidget * _parent ) m_pmButton -> setActiveGraphic( PLUGIN_NAME::getIconPixmap( "pm_active" ) ); m_pmButton -> setInactiveGraphic( PLUGIN_NAME::getIconPixmap( "pm_inactive" ) ); toolTip::add( m_pmButton, tr( "Modulate phase of Osc3 with Osc2" ) ); - + m_o23ModGroup = new automatableButtonGroup( view ); m_o23ModGroup-> addButton( m_mixButton ); m_o23ModGroup-> addButton( m_amButton ); m_o23ModGroup-> addButton( m_fmButton ); m_o23ModGroup-> addButton( m_pmButton ); - + return( view ); } @@ -1572,10 +1685,10 @@ QWidget * MonstroView::setupOperatorsView( QWidget * _parent ) QWidget * MonstroView::setupMatrixView( QWidget * _parent ) { // matrix view - + QWidget * view = new QWidget( _parent ); view-> setFixedSize( 250, 250 ); - + makeknob( m_vol1env1Knob, MATCOL1, MATROW1, "Modulation amount", "", "matrixKnob" ) makeknob( m_vol1env2Knob, MATCOL2, MATROW1, "Modulation amount", "", "matrixKnob" ) makeknob( m_vol1lfo1Knob, MATCOL3, MATROW1, "Modulation amount", "", "matrixKnob" ) @@ -1630,7 +1743,7 @@ QWidget * MonstroView::setupMatrixView( QWidget * _parent ) makeknob( m_sub3env2Knob, MATCOL6, MATROW6, "Modulation amount", "", "matrixKnob" ) makeknob( m_sub3lfo1Knob, MATCOL7, MATROW6, "Modulation amount", "", "matrixKnob" ) makeknob( m_sub3lfo2Knob, MATCOL8, MATROW6, "Modulation amount", "", "matrixKnob" ) - + return( view ); } diff --git a/plugins/monstro/Monstro.h b/plugins/monstro/Monstro.h index 43dc40b7c..b86525ad0 100644 --- a/plugins/monstro/Monstro.h +++ b/plugins/monstro/Monstro.h @@ -53,6 +53,14 @@ name ->setObjectName( oname ); \ name ->setFixedSize( 20, 20 ); +#define maketinyled( name, x, y, ttip ) \ + name = new pixmapButton( view, NULL ); \ + name -> setCheckable( true ); \ + name -> move( x, y ); \ + name -> setActiveGraphic( PLUGIN_NAME::getIconPixmap( "tinyled_on" ) ); \ + name -> setInactiveGraphic( PLUGIN_NAME::getIconPixmap( "tinyled_off" ) ); \ + toolTip::add( name, tr( ttip ) ); + #define setwavemodel( name ) \ name .addItem( tr( "Sine wave" ), static_cast( new PluginPixmapLoader( "sin" ) ) ); \ name .addItem( tr( "Triangle wave" ), static_cast( new PluginPixmapLoader( "tri" ) ) ); \ @@ -159,7 +167,7 @@ inline double fastPow( double a, double b ) } -class MonstroSynth +class MonstroSynth { public: MonstroSynth( MonstroInstrument * _i, NotePlayHandle * _nph, @@ -172,7 +180,7 @@ public: { return m_samplerate; } - + private: MonstroInstrument * m_parent; @@ -193,14 +201,14 @@ private: return s1 + ( s2 - s1 ) * x; } - + inline sample_t calcSlope( sample_t _s, float _slope ) { if( _slope == 0.0f ) return _s; const double exp = fastPow( 10.0, static_cast( _slope * -1.0 ) ); return fastPow( _s, exp ); } - + inline sample_t oscillate( int _wave, const float _ph ) { switch( _wave ) @@ -245,7 +253,7 @@ private: } return 0.0; } - + float m_osc1l_phase; float m_osc1r_phase; @@ -256,10 +264,15 @@ private: sample_t m_env1_phase; sample_t m_env2_phase; - + + float m_lfo1_phase; + float m_lfo2_phase; + sample_t m_lfo1_last; sample_t m_lfo2_last; + sample_t m_osc1l_last; + sample_t m_osc1r_last; }; class MonstroInstrument : public Instrument @@ -305,7 +318,7 @@ protected: float m_osc2l_freq; float m_osc2r_freq; float m_osc3_freq; - + float m_osc1l_po; float m_osc1r_po; float m_osc2l_po; @@ -318,7 +331,7 @@ protected: float m_env1_hold; float m_env1_dec; float m_env1_rel; - + float m_env2_pre; float m_env2_att; float m_env2_hold; @@ -327,13 +340,13 @@ protected: f_cnt_t m_env1_len; f_cnt_t m_env2_len; - + f_cnt_t m_env1_relF; f_cnt_t m_env2_relF; - + f_cnt_t m_lfo1_att; f_cnt_t m_lfo2_att; - + sample_rate_t m_samplerate; fpp_t m_fpp; @@ -361,6 +374,8 @@ private: FloatModel m_osc1Ftr; FloatModel m_osc1Spo; FloatModel m_osc1Pw; + BoolModel m_osc1SSR; + BoolModel m_osc1SSF; FloatModel m_osc2Vol; FloatModel m_osc2Pan; @@ -369,6 +384,7 @@ private: FloatModel m_osc2Ftr; FloatModel m_osc2Spo; ComboBoxModel m_osc2Wave; + BoolModel m_osc2Sync; FloatModel m_osc3Vol; FloatModel m_osc3Pan; @@ -377,6 +393,7 @@ private: FloatModel m_osc3Sub; ComboBoxModel m_osc3Wave1; ComboBoxModel m_osc3Wave2; + BoolModel m_osc3Sync; ComboBoxModel m_lfo1Wave; TempoSyncKnobModel m_lfo1Att; @@ -505,6 +522,8 @@ private: knob * m_osc1FtrKnob; knob * m_osc1SpoKnob; knob * m_osc1PwKnob; + pixmapButton * m_osc1SSRButton; + pixmapButton * m_osc1SSFButton; knob * m_osc2VolKnob; knob * m_osc2PanKnob; @@ -513,6 +532,7 @@ private: knob * m_osc2FtrKnob; knob * m_osc2SpoKnob; comboBox * m_osc2WaveBox; + pixmapButton * m_osc2SyncButton; knob * m_osc3VolKnob; knob * m_osc3PanKnob; @@ -521,6 +541,7 @@ private: knob * m_osc3SubKnob; comboBox * m_osc3Wave1Box; comboBox * m_osc3Wave2Box; + pixmapButton * m_osc3SyncButton; comboBox * m_lfo1WaveBox; TempoSyncKnob * m_lfo1AttKnob; @@ -560,7 +581,7 @@ private: // matrix view knobs // // // ///////////////////////////////// - + knob * m_vol1env1Knob; knob * m_vol1env2Knob; knob * m_vol1lfo1Knob; @@ -614,7 +635,7 @@ private: knob * m_sub3env1Knob; knob * m_sub3env2Knob; knob * m_sub3lfo1Knob; - knob * m_sub3lfo2Knob; + knob * m_sub3lfo2Knob; }; diff --git a/plugins/monstro/artwork_op.png b/plugins/monstro/artwork_op.png index d53ffae057069941b0e6abb3acae848c92f67f18..2f7b69ca0fda75a6b5ca0ce897b76daa28f26883 100644 GIT binary patch literal 59412 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 Y*v=b6_KwC@wh-{8EUzwCDr*w-Z`fe(`2YX_ literal 58075 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

KTtJkY7M|93 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 literal 0 HcmV?d00001 diff --git a/plugins/monstro/tinyled_on.png b/plugins/monstro/tinyled_on.png new file mode 100644 index 0000000000000000000000000000000000000000..3b1d97db5cf7d383e91dc1d1190f6b76d5ed8c1f GIT binary patch literal 594 zcmV-Y0e zSad^gZEa<4bO1wgWnpw>WFU8GbZ8()Nlj2!fese{00Fv5L_t&-(*?o3YZO5k2jJg3 zvp2W5dmq_+ku!+Fkf5OCP$ZI4EHr|ke?TCJwY{yjfwbC)y@hCFCti^hsq6&BNG_K< zz1v*&_G@-#XV>SU?U&tZtuBP^h??zIoN7(jqQ*s~YH`jPKrls7Dx-{4(j=KwNtS4p z#yYnuf;rnO!#&rrpAh3S%;Hd5qcng~If5Vn$`U9FpfHe`e)rSedXeWvX+2sU?|(ZQ z?(~v2R<5tXatN2MEP{l=?1G0lioi)=&>O*|1pmj!-PQRo?umDQm$^>u@h^WK8+W$g z2j{rixr!j3;P$2mg&3QiCL$T2b88usV2sedhA5mq{Qlw93IhQpfPViJjb;O9g9%zQ z4GjMg7M2?D3xemhFc?ZSn=SbM7+NW)XfkUB)9_QJ*o4O~PcEM1<%c=8u> zi!G#5B2P;Ud*?_l6qdyqbZ)*Hof&%i`p{d?yKfky2aNMZNd)2yj581sa;>3M22O-5 zO(9eHxqEoDr{eI`GNwrW)bBkzIe5RuEVOOcaqN2CvZ{h}MkoqnbeiO8IL%^zB*XC_ gGfMUEK7V`s9~6Vv&`C*P-T(jq07*qoM6N<$f;k-f%K!iX literal 0 HcmV?d00001