툴/유니티
keijiro midijack 사용시 컨트롤러 버튼,노브 확인하기
스튜디오 오버그래픽스
2023. 8. 5. 21:08
MidiControllerChecker.cs
0.00MB
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using MidiJack;
public class MidiControllerChecker : MonoBehaviour
{
public bool MidiControllerCheck;
float[] KnobValue = new float[128];
void Update()
{
if (MidiControllerCheck)
{
//미디 버튼 체크 눌러봐서 체크
for (int i = 0; i < 128; i++)
{
if (MidiMaster.GetKeyDown(i))
{
//버튼의 True값이 반환 됐을때 알려줌
Debug.Log("this Button number : " + i.ToString());
}
}
//미디 노브 값이 변하는 것을 체크
for (int i = 0; i < 128; i++)
{
if (KnobValue[i] != MidiMaster.GetKnob(i))
{
Debug.Log("this Knob number : " + i.ToString() + " / Value : " + MidiMaster.GetKnob(i));
}
KnobValue[i] = MidiMaster.GetKnob(i);
}
}
}
}
스크립트 넣고 버튼 확인할 경우에 Inspector에서 Midi Controller Check를 True로 체크해주고
버튼 누르거나 노브 돌려보면 콘솔창에 값 나옴
*확실한건 아닌 내용
GetKnob나 GetKey명령어의 인자에 채널명 안넣으면 MidiChanel.All로 모든 채널에 있는 해당 값을 가져오는 것 같음.
그리고 미디 컨트롤러의 채널 지정은 랜덤한것 같고 경우에 따라 변경되는것 같은데,
미디컨트롤러 종류에 따라 채널이 변경될경우에 버튼,노브를 불러오는 넘버값도 바뀌는 것 같음.
그래서 꼬이지 않게 미디컨트롤러는 1개만 연결하고 같은 포트를 유지하는 것을 권장.