Esempio n. 1
0
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
}
Esempio n. 2
0
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
}
Esempio n. 3
0
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
}
Esempio n. 4
0
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
}
Esempio n. 5
0
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();
}
Esempio n. 6
0
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();
}