投稿日:2008-11-23 Sun
UTAUとはちょっと遠い話。ふと、MIDI→LAN LAN→MIDI なことが出来たら面白いかも?
と、思い立って検索してみたら、OSXにはもう実装されていたり、
(参考:http://av.watch.impress.co.jp/docs/20050530/dal192.htm)
他にもWINDOWSやLINUXで動くものもいくつかあるようです。
(これはWindows:http://www.dtmm.co.jp/dtmmnews/200209/news200209091.shtml)
でも殆どが有料なんですよね。
そこで考えました。
・アプリケーション層でMIDI入出力なら比較的簡単にプログラミング出来る。
・LAN通信プログラムなら作ったことあるし、UDPにすれば、実装もそんなに面倒じゃない。
・シーケンサ等との接続はMIDI Yokeに任せればデバドラ作らなくてすむ。
ってわけで、
なんだかいけそうだったので、作ってみました。
こんなの。

テストその1
PC1でMIDIを再生して、音はPC2で鳴らす。
[PC1]
Domino
↓out
MIDI Yoke
↓in
LMC(自作アプリ)
↓lan
[PC2]
↓in
LMC(自作アプリ)
↓out
MGCS(XPに付属のMIDIソフトシンセサイザ)
[結果]
結構いい感じ。
Dominoでは結構音数の多いMIDIファイルを再生してみたんですが、
殆どローカルと変わりなく再生できました。
テストその2
DAWを使ってWAVは全部ローカル、MIDIは一部リモートPCで音を出してみた。
[PC1]
Reaper 0.999 (一部を外部MIDI出力)
↓out
MIDI Yoke
↓in
LMC(自作アプリ)
↓lan
[PC2]
↓in
LMC(自作アプリ)
↓out
Reaper 2.53 v2.53Trial
↓
VSTiを色々。
[結果]
反応が遅いみたいでいまいちでした。
確認のため、Reaperでローカルとリモートで同時に同じメロディも
流してみたんですが、聞いて判るくらい遅れてました。
聞いた感じ、30~40msくらいかな?
やっぱアプリケーション層でやるとソフトシンセとCPUリソース取り合っちゃってダメっぽいです。
あとReaper自体も重いみたいだ。
というか、MIDIイベント丸投げする必要はないのか。
(「MIDI同期」というのがあることを知りました)
要は製作中に同期して再生できれば最後にそれぞれのPCでWAV出力後、
MIXすればいい話だし。
使えるかもしれないのでもう少し研究してみます。
今回の実験はこれまで。
VistaだとMIDI Yokeが・・・
蛇足かもしれませんが、検索していたら、こんなのが出てきました。
目で見るMIDI (Part2)
http://homepage2.nifty.com/el_freesoft/Midi2/Midi2.htm
MIDI経由だと、ノートメッセージ1個あたり約1msec かかるんですね・・
蛇足かもしれませんが、検索していたら、こんなのが出てきました。
目で見るMIDI (Part2)
http://homepage2.nifty.com/el_freesoft/Midi2/Midi2.htm
MIDI経由だと、ノートメッセージ1個あたり約1msec かかるんですね・・
2008-11-24 月 08:20:54 |
URL |
つくね
[編集]
コメントありがとうございます。
Vistaでも使えないことはないんですが、色々面倒ですよね。
MidiYokeは管理者権限でインストールしないと使えないし、
(http://www.parof.jp/Misc/MIDI-VST/ ここの8.3参照)
ファイアウォール設定で使用ポートあけないとLAN経由できないし。
>ノートメッセージ1個あたり約1msec
Lanの方が桁違いに速いんですね。
Vistaでも使えないことはないんですが、色々面倒ですよね。
MidiYokeは管理者権限でインストールしないと使えないし、
(http://www.parof.jp/Misc/MIDI-VST/ ここの8.3参照)
ファイアウォール設定で使用ポートあけないとLAN経由できないし。
>ノートメッセージ1個あたり約1msec
Lanの方が桁違いに速いんですね。
2008-11-24 月 21:38:37 |
URL |
あめや
[編集]
参照リンクありがとうございます。
MIDI Yoke行けました。
8.4.1のレジストリ・・のあたりも入れておいた方が便利ですね。
うちの子、64bit版なので、ソフト音源も制約があったりしますが・・・
MIDI Yoke関連で、こんなページもありました。
http://www.pp-express.info/Vista_MIDI/vista_midi.htm
どこのレジストリをいじるのか気になって見に行ったのですが、
CC#64とか色々、Microsoft GS Wavetable Synthのバグの方が
重大な気がして。
>Lanの方が桁違いに速い
MIDIの速度は、USBが登場する前のシリアル通信(昔のピーガラガラのアナログモデムと似たようなもの)を想像すると分かりやすいかもしれません。
MIDI Yoke行けました。
8.4.1のレジストリ・・のあたりも入れておいた方が便利ですね。
うちの子、64bit版なので、ソフト音源も制約があったりしますが・・・
MIDI Yoke関連で、こんなページもありました。
http://www.pp-express.info/Vista_MIDI/vista_midi.htm
どこのレジストリをいじるのか気になって見に行ったのですが、
CC#64とか色々、Microsoft GS Wavetable Synthのバグの方が
重大な気がして。
>Lanの方が桁違いに速い
MIDIの速度は、USBが登場する前のシリアル通信(昔のピーガラガラのアナログモデムと似たようなもの)を想像すると分かりやすいかもしれません。
2008-11-25 火 17:46:21 |
URL |
つくね
[編集]
さらに蛇足ですが、リンク先見ましたが……
MIDI規格の中に「ランニングステータス」という概念がありますが、当該ページでは触れられていない模様。
これは、本来イベントのタイミングに0~127(ステータス)の値がきた場合、直前のイベントのデータとみなす、というものです。
間にノートオンメッセージ以外のものが挟まらない限りはノートオンイベントは省略可能となります。
「3)左手でC ( ソ ド ミ ) を同時に押すと。」で記述されている例だと
実際には 91 37 7F 3C 7F 40 7Fと出力することでデータ量を減らすことが出来るのです。
なので、実際には2バイト削ることが出来て、320x9=2880μ秒ではなく320x7=2240μ秒で伝送完了となります。
ご参考までに。
MIDI規格の中に「ランニングステータス」という概念がありますが、当該ページでは触れられていない模様。
これは、本来イベントのタイミングに0~127(ステータス)の値がきた場合、直前のイベントのデータとみなす、というものです。
間にノートオンメッセージ以外のものが挟まらない限りはノートオンイベントは省略可能となります。
「3)左手でC ( ソ ド ミ ) を同時に押すと。」で記述されている例だと
実際には 91 37 7F 3C 7F 40 7Fと出力することでデータ量を減らすことが出来るのです。
なので、実際には2バイト削ることが出来て、320x9=2880μ秒ではなく320x7=2240μ秒で伝送完了となります。
ご参考までに。
2009-01-14 水 20:49:34 |
URL |
オトッキー
[編集]
△ PAGE UP