void midibus::init_clock (midipulse tick) { #ifdef SEQ64_HAVE_LIBASOUND if (m_clock_type == e_clock_pos && tick != 0) { continue_from(tick); } else if (m_clock_type == e_clock_mod || tick == 0) { start(); /* * The next equation is effectively (m_ppqn / 4) * 16 * 4, * or m_ppqn * 16. Note that later we have pp16th = (m_ppqn / 4). */ midipulse clock_mod_ticks = (m_ppqn / 4) * m_clock_mod; midipulse leftover = (tick % clock_mod_ticks); midipulse starting_tick = tick - leftover; /* * Was there anything left? Then wait for next beat (16th note) * to start clocking. */ if (leftover > 0) starting_tick += clock_mod_ticks; m_lasttick = starting_tick - 1; } #endif // SEQ64_HAVE_LIBASOUND }
void midibus::init_clock( long a_tick ) { if ( m_clock_type == e_clock_pos && a_tick != 0) { continue_from( a_tick ); } else if ( m_clock_type == e_clock_mod || a_tick == 0) { start(); long clock_mod_ticks = (c_ppqn / 4) * m_clock_mod; long leftover = ( a_tick % clock_mod_ticks ); long starting_tick = a_tick - leftover; /* was there anything left?, then wait for next beat (16th note) to start clocking */ if ( leftover > 0) { starting_tick += clock_mod_ticks; } //printf ( "continue_from leftover[%ld] starting_tick[%ld]\n", leftover, starting_tick ); m_lasttick = starting_tick - 1; } }
void midibus::init_clock (long a_tick) { #ifdef HAVE_LIBASOUND if (m_clock_type == e_clock_pos && a_tick != 0) { continue_from(a_tick); } else if (m_clock_type == e_clock_mod || a_tick == 0) { start(); long clock_mod_ticks = (c_ppqn / 4) * m_clock_mod; long leftover = (a_tick % clock_mod_ticks); long starting_tick = a_tick - leftover; /* * Was there anything left? Then wait for next beat (16th note) * to start clocking. */ if (leftover > 0) starting_tick += clock_mod_ticks; m_lasttick = starting_tick - 1; } #endif // HAVE_LIBASOUND }