読者です 読者をやめる 読者になる 読者になる

UnrealEngine VJ

UnrealEngineでVJするhigechanの忘備録です。

【UE4でVJ】ブループリントでMIDI機器と同期した方法

UnrealEngineをVJで使ってみたシリーズ、前回電力レーベルのイベントでやった"家具爆発"VJの細かい実装について、今回から数回に分けて備忘録をアップしてみようと思います^^

今日のテーマは、MIDI機器と同期した方法についてです。

UE4とMIDI機器をどう繋ごう?

そもそも、UE4をVJで使ってみようと思い立った時、
最初にハマったのがMIDI機器との同期周りの設定でした。

せっかくゲームエンジンでリアルタイム描画できるんだから
MIDI楽器の演奏情報をトリガーにしたいな~と思って
やり方を調べてみたのですが、

UE4でMIDIを直接受けるプラグインがそもそも見つけられず
(知ってる方いらしたら教えてください><)
それっぽいのがあっても使い方が不明ということもあり断念。。


ただ、MIDIがダメでもOSC通信ならUE4のプラグインが出ているということを
ちらほら見かけていたのでこのやり方にシフト。


結局こんな構成で組むことにしました。

 

f:id:Higechan:20150721232609j:plain


実は、このVJの1つ前のイベントで
MOTIFの鍵盤から来るMIDI信号をProce55ingで受けて
UE4で映像演出していたのですが、

それを見ていた電力レーベルatnrさんから

「多分それやるんだったらProce55ingよりPureDataの方が速いよ」

との助言を頂き、やってみたら確かに速かった!


体感でレイテンシー10分の1くらいになって
ありがたやありがたやということで、
今回はPureDataMIDIを受け、OSCをUE4に入れる事に。


PureDataはインストールすら初めてだったので、
こちらのサイトを参考にさせていただきました。


で、MotifでもMaschineでも結構苦戦したのが、
MIDIを受けるときに特定の動作をすると
プラグインがエラー吐いて止まっちゃうこと。

普通に演奏している時に来る
NoteONとかNoteOFF信号、それから
ProgramChangeあたりは問題ないのですが、

ノブやスライダーなどをいじると
途端に落ちる・・・。


Proce55ingでやってたときは
MIDIBusというライブラリと、ProMidiという奴の
2種類を使ってみたのですが、

相性の問題か信号を受けられたりられなかったり。
めっちゃ振り回されました^^;


で、PureDataもハイパー初心者なので
NoteON NoteOFFのピッチとベロシティを取るので精一杯><

Proce55ingで受けてる生データを見る限りでは
Maschineからはそれ以外の「何か」が送られてきてたっぽいんですが、

PureDataでそれを拾うオブジェクトがわからず断念。

このあたりは後ほど再チャレンジしたいと思います。


UE4でOSCPluginを使って
どうやってMIDI演奏との同期を図ったのか、

具体的な実装方法は次回の記事で紹介します^^