void mastermidibus::set_ppqn (int ppqn) { #ifdef SEQ64_HAVE_LIBASOUND automutex locker(m_mutex); m_ppqn = ppqn; snd_seq_queue_tempo_t * tempo; snd_seq_queue_tempo_alloca(&tempo); /* allocate tempo struct */ snd_seq_get_queue_tempo(m_alsa_seq, m_queue, tempo); snd_seq_queue_tempo_set_ppq(tempo, m_ppqn); snd_seq_set_queue_tempo(m_alsa_seq, m_queue, tempo); #endif }
void mastermidibus::set_beats_per_minute (int bpm) { #ifdef SEQ64_HAVE_LIBASOUND automutex locker(m_mutex); m_beats_per_minute = bpm; snd_seq_queue_tempo_t *tempo; snd_seq_queue_tempo_alloca(&tempo); /* allocate tempo struct */ snd_seq_get_queue_tempo(m_alsa_seq, m_queue, tempo); snd_seq_queue_tempo_set_tempo ( tempo, int(tempo_us_from_beats_per_minute(bpm)) ); snd_seq_set_queue_tempo(m_alsa_seq, m_queue, tempo); #endif }
void mastermidibus::set_bpm (int a_bpm) { #ifdef HAVE_LIBASOUND automutex locker(m_mutex); snd_seq_queue_tempo_t *tempo; snd_seq_queue_tempo_alloca(&tempo); /* allocate tempo struct */ /* * Fill the tempo structure with the current tempo information, set * the BPM value, put it in the tempo structure, and give the tempo * structure to the ALSA queue. */ snd_seq_get_queue_tempo(m_alsa_seq, m_queue, tempo); m_bpm = a_bpm; snd_seq_queue_tempo_set_tempo(tempo, 60000000 / m_bpm); snd_seq_set_queue_tempo(m_alsa_seq, m_queue, tempo); #endif }
void mastermidibus::set_ppqn (int a_ppqn) { #ifdef HAVE_LIBASOUND automutex locker(m_mutex); snd_seq_queue_tempo_t * tempo; snd_seq_queue_tempo_alloca(&tempo); /* allocate tempo struct */ /* * Fill the tempo structure with the current tempo information. Then * set the ppqn value. Finally, give the tempo structure to the ALSA * queue. */ m_ppqn = a_ppqn; snd_seq_get_queue_tempo(m_alsa_seq, m_queue, tempo); snd_seq_queue_tempo_set_ppq(tempo, m_ppqn); snd_seq_set_queue_tempo(m_alsa_seq, m_queue, tempo); #endif }
void mastermidibus::set_bpm( int a_bpm ) { lock(); m_bpm = a_bpm; /* allocate tempo struct */ snd_seq_queue_tempo_t *tempo; snd_seq_queue_tempo_alloca( &tempo ); /* fill tempo struct with current tempo info */ snd_seq_get_queue_tempo( m_alsa_seq, m_queue, tempo ); snd_seq_queue_tempo_set_tempo( tempo, 60000000 / m_bpm ); /* give tempo struct to the queue */ snd_seq_set_queue_tempo(m_alsa_seq, m_queue, tempo ); unlock(); }
void mastermidibus::set_ppqn( int a_ppqn ) { lock(); m_ppqn = a_ppqn; /* allocate tempo struct */ snd_seq_queue_tempo_t *tempo; snd_seq_queue_tempo_alloca( &tempo ); /* fill tempo struct with current tempo info */ snd_seq_get_queue_tempo( m_alsa_seq, m_queue, tempo ); /* set ppqn */ snd_seq_queue_tempo_set_ppq( tempo, m_ppqn ); /* give tempo struct to the queue */ snd_seq_set_queue_tempo( m_alsa_seq, m_queue, tempo ); unlock(); }