WebMIDI 入力の monophonic シンセサイザ向け制御 class

WebMIDI 入力の monophonic シンセサイザ向け制御 class

2017.07.13

シンセサイザには、複数の音符を同時に鳴らせる polyphonic と、単音しか鳴らせない monophonic がある。

入力された MIDI データを制御し、monophonic シンセサイザでも取り扱いがしやすいようにする class を作った。

下記デモで、例えばゆっくりと Z => X => C の順にキーボードを押していく。

最初に入力された Z を押している限り、 X と C を離しても出力は変わらないが、Z を離した瞬間に、2番目に入力した X が出力される。

monophonic 向け MIDI データ制御 class

実行

使用例

polyphonic 音源 outputs[0]、 monophonic 音源 outputs[1-3] という環境で、和音が入力された場合、monophonic 音源にそれぞれ1音ずつ渡す状況を想定

// monophonic コントローラに3音を管理させる。 const mono = new MonoControl(3); const wm = new WebMIDI_IO_Control({sysex: false}, [wm_input], []); wm.listen("on_input", (_event) => { const polys = _event.data; // // polyphonic 音源に和音全てを送る。 _event.outputs[0].send(polys); // polyphonic な入力を monophonic * [0-3] に分割 mono.input(polys); // 3台の monophonic MIDI 機器 (outputs[1-3]) に最新の MIDI データを送る。 for(let i = 0; i < 3; i ++){ if(!mono.output(i)){ continue; } _event.outputs[i + 1].send(mono.output(i)); } });

デモ・入力

鍵盤ボタンを押すか、PCのキーボードのキーを押してください

C#5
(S)
D#5
(D)
C 5
(Z)
D 5
(X)
E 5
(C)

「ユーザ入力 => 仮想 MIDI 入力デバイス」の最新メッセージ

「仮想 MIDI 入力デバイス => WebMIDI コントローラ」の最新メッセージ

「WebMIDI コントローラ => MONOPHONIC」の最新メッセージ