2013-10-31 60 views
2

最近我一直在玩haskell ALSA接口,我不得不注意,我並不真正理解節奏和PPQ的概念。Alsa節奏與PPQ

早些時候,我已經寫了一大口,Python接口ALSA,並在那裏我找到了下面這段代碼(可能是從別的地方複製):

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,但只有速度, 的結果是什麼?

回答

2
  • 標準MIDI文件使用這兩個值(節奏和PPQ)到指定的速度。 ALSA音序器只使用相同的機制。

  • 速度值是每四分音符的微秒數。 增加它會增加刻度的長度,即使播放速度變慢。

  • 零PPQ值將無效。

+1

這是否意味着一個tick是節奏/ ppq useconds long? –

+1

是的。 ♩♬♬♩♪♫♪♩♩♫ –