開発入門 > Unity > MIDIコントローラーNanoKONTROL2をUnityアナログ入力デバイスとして利用する

MIDIコントローラーNanoKONTROL2をUnityアナログ入力デバイスとして利用する

@from2001vrです。@GoddoSukoupionがKORG社のMIDIコントローラーNanoKONTROL2を使ってDJで利用するのがカッコ良かったので、私もさわってみることにしました。

nanoKONTROL2はスライダー及びノブが8個ずつ、ボタンが35個付いているMIDIコントローラーです。DJするときやDTMなどでソフトウェアシンセサイザーとともに利用するものですが、ボタンやアナログ入力が多数付いているので、音楽での利用以外にも何かと便利なコントローラーかもしれません。

このnanoKONTROL2をUnityから簡単に利用するためのスクリプトを作成しましたので、使い方の備忘録として公開しておきます。

nano_kon2_group

ちなみにnanoKONTROL2の通信に利用されるMIDIとは

MIDI(ミディ、Musical Instrument Digital Interface)は、日本のMIDI規格協議会(JMSC、現在の社団法人音楽電子事業協会)と国際団体のMIDI Manufacturers Association (MMA) により策定された、電子楽器の演奏データを機器間でデジタル転送するための世界共通規格。物理的な送受信回路・インタフェース、通信プロトコル、ファイルフォーマットなど複数の規定からなる。(Wikipediaより)

にある通り、音楽関連機器と通信するために定められた国際規格です。

UnityからMIDIを制御するためのプラグインはいくつかあるようですが、今回は@_kzr氏のunity-midi-receiver-testをベースに一部改変するとともにnanoKONTROL2専用のスクリプト等を作成しました。

なお、本記事で紹介するスクリプト及びプロジェクトは下記のライセンスに準じて配布しています。

License
Copyright (c) 2013 Keijiro Takahashi

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

まずは下準備

KORG社のサイトよりUSB-MIDIドライバをダウンロードしインストールします。

続いて下記からnanoKONTROL2用プロジェクト及びパッケージファイルをダウンロードします。(unity-midi-receiveを含みます)

ダウンロードZIPを解凍し、NanoKontrol2_projectを開くかNanoKontrol2.unitypackageをダブルクリックし既存のプロジェクトに追加してください。

 

使い方は非常に簡単です。
/Assets/NanoKontrol2/NanoKontrol2プレハブをヒエラルキービューに追加します。

nanoKONTROL1

実行するとnanoKONTROL2の操作に合わせてインスペクタービューの値が変化するのが確認できると思います。

では次にスクリプトから値を取得するサンプルを示します。

値の取得の方法は大きく2つあります。

  • 値が変更された場合やボタンが押された場合に呼び出されるコールバック関数の引数として値を取得する
  • 任意のタイミングでnanoKontrol2インスタンスの変数を取得する

用途やプログラミングスタイルに合わせてどちらかを利用してください。

using UnityEngine;
using System.Collections;

public class SampleScript_for_NanoKontrol2 : MonoBehaviour {
	
	//nanoKontrol2を宣言
	private NanoKontrol2 nanoKontrol2;
	
	void Start () {
		//Start()の中でコールバック関数の設定を行う
		nanoKontrol2 = GameObject.Find("NanoKontrol2").GetComponent<NanoKontrol2>();
		nanoKontrol2.valueChangedFunctions.Add (nanoKontrol2_valueChanged);
		nanoKontrol2.keyPushedFunctions.Add (nanoKontrol2_keyPushed);
	}
	
	
	//キー(スライダー・ノブ)の値が変更された場合に呼び出される関数
	public void nanoKontrol2_valueChanged(string keyName, int keyValue)
	{
		Debug.Log(keyName);
		Debug.Log(keyValue);
	}
	
	//キーが押された場合に呼び出される関数
	public void nanoKontrol2_keyPushed(string keyName)
	{
		Debug.Log(keyName);
	}
	
	
	//任意のタイミングでスライダーやノブの値の取得
	void Update () {
		//Debug.Log (nanoKontrol2.Slider1);
		//Debug.Log (nanoKontrol2.Slider2);
		//Debug.Log (nanoKontrol2.knob1);
		//Debug.Log (nanoKontrol2.knob2);
	}

}

上記スクリプトは
\Assets\NanoKontrol2\Scripts\SampleScript_for_NanoKontrol2.cs
にありますので、このスクリプトを任意のオブジェクトにアタッチします。

nanoKONTROL2

実行するとnanoKONTROL2の操作に合わせてConsoleビューにログが表示されるのを確認できます。

デモシーンも2つ用意していますので参考にしてください

  • /NanoKontrol2/Demo/Demo1シーン
    スライダー1の値に合わせてオブジェクトのサイズが変わるシンプルなデモ
  • /NanoKontrol2/Demo/Demo2シーン
    各スライダー・ノブに合わせてオブジェクトのサイズ・角度が変わるサンプル
    SMRボタンをおすことによりオブジェクトの色が変化します

nanoKONTROL3

nanoKONTROL2はボタンの数も多く、スライダー・ノブでアナログ情報の入力も行えるため、イベント等でUnityを利用したインタラクティブコンテンツを利用する際には非常に便利なコントローラーのように思います。

一つ難点としてはMIDIの仕様上、値に変化があった場合にのみMIDI信号が送信される仕組みになっているため(たぶん)、各スライダー・ノブの初期値を取得することができません。その点留意して利用してください。

今回MIDIの制御に利用させていただいた非常に有用なプラグインを公開されている@_kzr氏にあらためて感謝です。私の書いたnanoKONTROL2用スクリプトは自由に改変・利用・配布していただいて構いません。ソースコード汚すぎて恥ずかしいですが。。

 

 

 

 

 

カテゴリー: Unity

HOME / Coporate Site/ Careers

© Copyright 2018 STYLY..