UnityでMIDIデータを受信できるパッケージを作ってくれた方がいます。そのパッケージの利用方法を簡単に説明したものです。完全にオレオレ備忘録です😁
参考にさせていただいたのは以下の記事です。ほとんどこの記事のままなのですが、記事中でアプリを作られているため、MidiJack以外の話が含まれているようでしたので整理させていただいた感じです。
とにかくシンプルに導入手順を書いておきます。
Unity5以上に対応しているようですので、最近のUnityだと問題ないでしょうね。Unityですので、MIDIデバイスさえ認識できればWindowsでもMacでも問題なく動作すると思います。
さて、手順。
Unityを起動して、例えば、2Dのプロジェクトを作ります。
MidiJackのGitHubのページからUnityパッケージをダウンロードします。以下をクリックすると、MidiJack.unitypackage というファイルがダウンロードされると思います。
で、Unityのメニューから、Assets - Import Package - Custom Package と選択して、ダウンロードしたMidiJack.unitypackage を選択して、Importボタンを押します。これで準備は完了です。
ProjectペインのAssetsにMidiJackというフォルダができているとインポート成功です。
で、ちょっとしたサンプルプログラムを書いていきますね。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を使った経験がないと、色々と迷うところもあると思いますので、ちょっとした操作動画を作りました。もしよろしければ参考にしてください。