Alsa节奏与PPQ

时间:2013-10-31 07:58:20

标签: midi alsa

最近我一直在使用haskell ALSA界面,我不得不注意到,我并不真正理解速度和PPQ的概念。

之前我已经为ALSA编写了一个Swig-Python接口,在那里我发现了以下代码(可能是从其他地方复制过来的):

1    void  AlsaMidiIfc::setTempo (int bpm) {
2       int queue = this->getOutQueue();
3       snd_seq_queue_tempo_t *tempo;
4       snd_seq_queue_tempo_alloca (&tempo);
5       snd_seq_queue_tempo_set_tempo(tempo, 60 * 1000000 / bpm);
6       snd_seq_queue_tempo_set_ppq(tempo, PPQ);
7       snd_seq_set_queue_tempo (mySeq, queue, tempo);
8    }

当我将一个事件放入队列时,时间始终以刻度表示,对吧?所以唯一要回答的时间问题是“嘀嗒多久?”。

  • 指定两个值,即速度和PPQ有什么意义?

  • 改变速度会有什么影响,但保留PPQ 是什么?

  • 如果我根本没有设置PPQ,只有节奏,那会是什么 导致

1 个答案:

答案 0 :(得分:2)

  • 标准MIDI文件使用这两个值(tempo和PPQ)来指定速度。 ALSA测序仪使用相同的机制。

  • 速度值是每季度音符的微秒数。 增加它会增加刻度的长度,即使播放速度变慢。

  • PPQ值为零无效。

相关问题