最近我一直在玩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 }
当我将事件放入队列时,时间总是以滴答声指定,对吗?所以唯一要回答的时间问题是“一个滴答声有多长?”。
指定两个值(即 tempo 和 PPQ)有什么意义?
改变节奏,但保持 PPQ 不变会有什么影响?
如果我根本不设置PPQ,而只设置节奏,结果会是什么?