MIDI 1.0のピッチベンドは14bit、それに対してMIDI 2.0のピッチベンドは32ビットです。
別ページの実験と同様、Raspberry Pi Zero 2WをMIDI 2.0デバイスに設定し、 Cubase 14 Pro(体験版)で録音します。 さらに、Cubase 14再生しZero 2Wで受信します。 これにより、MIDI 2.0ピッチベンドがどのように Cubase 14とやりとりできるのか?を確認します。
送信プログラムの詳細はこちらの記事を参照してください。 次のピッチベンドは0x80000000がセンターで、ベンドのかかっていない状態 を意味しています。下のプログラムでは、このセンター0x80000000の前後の値を 送信するように作っています。
m->hdr.type=SND_UMP_MSG_TYPE_MIDI2_CHANNEL_VOICE; m->hdr.group=0; m->hdr.channel=0; m->hdr.status=SND_UMP_MSG_PITCHBEND; m->channel_pressure.data = 0x80000000-5000000; for(int j=0; j<100; j++){ m->channel_pressure.data += 100000; snd_seq_ump_event_output(seq_handle,&event); snd_seq_drain_output(seq_handle); usleep(250000); }
送信する値を抜粋して記載しておきます。
7ff6d840 7ff85ee0 7ff9e580 7ffb6c20 7ffcf2c0 7ffe7960 80000000 800186a0 80030d40 800493e0 80061a80 8007a120 800927c0
十進数で100,000づつ加算して受け取っているピッチベンドは、 小数点以下3桁で表示すると約0.005変化していることがわかります。 MIDI 2.0では精度高くピッチベンドを送ることができます。
上で録音した3つのデータを再生し、Zero2Wで受信、aseqdumpで表示しています。
> aseqdump -p 20:0 -u 2 20:1 Group 0, Pitch Bend value 0x7ff6d840 20:1 Group 0, Pitch Bend value 0x7ff85ee0 20:1 Group 0, Pitch Bend value 0x7ff9e580 20:1 Group 0, Pitch Bend value 0x7ffb6c20 20:1 Group 0, Pitch Bend value 0x7ffcf2c0 20:1 Group 0, Pitch Bend value 0x7ffe7960 20:1 Group 0, Pitch Bend value 0x80000000 20:1 Group 0, Pitch Bend value 0x800186a0 20:1 Group 0, Pitch Bend value 0x80030d40 20:1 Group 0, Pitch Bend value 0x800493e0 20:1 Group 0, Pitch Bend value 0x80061a80 20:1 Group 0, Pitch Bend value 0x8007a120 20:1 Group 0, Pitch Bend value 0x800927c0
valueの項が送信したピッチベンド値と一致しています。Cubase 14はMIDI 2.0 のピッチベンド値を 32ビットで録音・再生してくれていることがわかります。