memorandums

日々の生活で問題解決したこと、知ってよかったことなどを自分が思い出すために記録しています。

MidiJackの使い方(初歩)

UnityでMIDIデータを受信できるパッケージを作ってくれた方がいます。そのパッケージの利用方法を簡単に説明したものです。完全にオレオレ備忘録です😁

参考にさせていただいたのは以下の記事です。ほとんどこの記事のままなのですが、記事中でアプリを作られているため、MidiJack以外の話が含まれているようでしたので整理させていただいた感じです。

UnityでMIDI機器を使ってオブジェクトと照明の色をコントロールする - まゆたまガジェット開発逆引き辞典 VR上でのライブ演出の作業が必要となり、PCキーボードやマウス制御では事故ると思ってMIDI機器を引っぱり出しました。 い prince9.hatenablog.com  

とにかくシンプルに導入手順を書いておきます。

Unity5以上に対応しているようですので、最近のUnityだと問題ないでしょうね。Unityですので、MIDIバイスさえ認識できればWindowsでもMacでも問題なく動作すると思います。

さて、手順。

Unityを起動して、例えば、2Dのプロジェクトを作ります。

MidiJackのGitHubのページからUnityパッケージをダウンロードします。以下をクリックすると、MidiJack.unitypackage というファイルがダウンロードされると思います。

タイトル未設定 github.com  

で、Unityのメニューから、Assets - Import Package - Custom Package と選択して、ダウンロードしたMidiJack.unitypackage を選択して、Importボタンを押します。これで準備は完了です。

ProjectペインのAssetsにMidiJackというフォルダができているとインポート成功です。

スクリーンショット 2020-12-01 16.31.53

で、ちょっとしたサンプルプログラムを書いていきますね。test.csというスクリプトを作成して、その中に以下のコードを上書きします。そして、Main Cameraにアタッチして実行し、MIDIキーボードなどを押すとログが表示されるはずです。

ここまでくれば、あとは色々と応用ができると思います。便利ですね〜。素晴らしいパッケージ、ありがとうございます。

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

using MidiJack;



public class test : MonoBehaviour

{

   // Start is called before the first frame update

   void Start()

   {



   }



   // Update is called once per frame

   void Update()

   {



   }



   void OnEnable()

   {

       MidiMaster.noteOnDelegate += NoteOn;

       MidiMaster.noteOffDelegate += NoteOff;

   }



   void OnDisable()

   {

       MidiMaster.noteOnDelegate -= NoteOn;

       MidiMaster.noteOffDelegate -= NoteOff;

   }



   void NoteOn(MidiChannel channel, int note, float velocity)

   {

       Debug.Log("NoteOn: " + channel + "," + note + "," + velocity);

   }



   void NoteOff(MidiChannel channel, int note)

   {

       Debug.Log("NoteOff: " + note);

   }

}

Unityを使った経験がないと、色々と迷うところもあると思いますので、ちょっとした操作動画を作りました。もしよろしければ参考にしてください。