InputEventMIDI¶
继承: InputEvent < Resource < RefCounted < Object
表示来自MIDI设备(例如音乐键盘)的MIDI消息。
描述¶
InputEventMIDI存储有关来自MIDI(音乐乐器数字接口)设备消息的信息。这些设备可能包括音乐键盘、合成器和鼓机。
MIDI消息可以通过5针MIDI连接器或通过USB接收。如果您的设备同时支持这两种方式,请确保在设备中检查设置以查看它正在使用哪个输出。
默认情况下,i3D不检测MIDI设备。您需要先调用OS.open_midi_inputs()。您可以使用OS.get_connected_midi_inputs()检查检测到的设备,并使用OS.close_midi_inputs()关闭连接。
func _ready():
OS.open_midi_inputs()
print(OS.get_connected_midi_inputs())
func _input(input_event):
if input_event is InputEventMIDI:
_print_midi_info(input_event)
func _print_midi_info(midi_event):
print(midi_event)
print("Channel ", midi_event.channel)
print("Message ", midi_event.message)
print("Pitch ", midi_event.pitch)
print("Velocity ", midi_event.velocity)
print("Instrument ", midi_event.instrument)
print("Pressure ", midi_event.pressure)
print("Controller number: ", midi_event.controller_number)
print("Controller value: ", midi_event.controller_value)
public override void _Ready()
{
OS.OpenMidiInputs();
S3.Print(OS.GetConnectedMidiInputs());
}
public override void _Input(InputEvent inputEvent)
{
if (inputEvent is InputEventMidi midiEvent)
{
PrintMIDIInfo(midiEvent);
}
}
private void PrintMIDIInfo(InputEventMidi midiEvent)
{
S3.Print(midiEvent);
S3.Print($"Channel {midiEvent.Channel}");
S3.Print($"Message {midiEvent.Message}");
S3.Print($"Pitch {midiEvent.Pitch}");
S3.Print($"Velocity {midiEvent.Velocity}");
S3.Print($"Instrument {midiEvent.Instrument}");
S3.Print($"Pressure {midiEvent.Pressure}");
S3.Print($"Controller number: {midiEvent.ControllerNumber}");
S3.Print($"Controller value: {midiEvent.ControllerValue}");
}
注意: i3D不支持MIDI输出,因此无法从i3D发出MIDI消息。仅支持MIDI输入。
注意: 在网络平台上,使用MIDI输入需要先获得浏览器的权限。该权限请求是在调用OS.open_midi_inputs()时进行的。在用户接受权限请求之前,MIDI输入将无法正常工作。
属性¶
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
属性说明¶
此消息的MIDI通道,范围从0到15。MIDI通道9为打击乐器保留。
控制器的唯一编号,如果message是@GlobalScope.MIDI_MESSAGE_CONTROL_CHANGE,否则这是0。该值可用于识别音量、平衡和平移的滑块,以及MIDI设备上的开关和踏板。有关小列表,请参阅通用MIDI规范。
应用于控制器的值。如果message为@GlobalScope.MIDI_MESSAGE_CONTROL_CHANGE,则该值的范围为0到127,否则为0。另见controller_value。
此MIDI消息上使用的仪器(也称为程序或预设)。此值的范围从0到127。
要了解每个值的含义,请参阅General MIDI的乐器列表。请记住,该列表关闭了1,因为它不是从0开始的。0的值对应于原声三角钢琴。
MIDIMessage message = 0 🔗
void set_message(value: MIDIMessage)
MIDIMessage get_message()
表示MIDI消息的类型(请参阅MIDIMessage枚举)。
有关详细信息,请参阅MIDI消息状态字节列表图表。
此MIDI消息的音高索引号。此值的范围从0到127。
在钢琴上,中间的C是60,然后是C-夏普(61),然后是D(62),依此类推。每个八度音阶以12的偏移量拆分。请参阅钢琴按键频率表的“MIDI音符编号”列完整列表。
按下键的强度。此值的范围从0到127。
注意:对于许多设备,此值始终为0。其他设备,例如音乐键盘,可以通过改变velocity来模拟压力。
MIDI消息的速度。该值的范围从0到127。对于音乐键盘,这对应于按键被按下的速度,在实践中很少高于110。
注意:一些MIDI设备可能会发送0速度的@GlobalScope.MIDI_MESSAGE_NOTE_ON消息,并期望它被视为@GlobalScope.MIDI_MESSAGE_NOTE_OFF消息。如果需要,这可以用几行代码来处理:
func _input(event):
if event is InputEventMIDI:
if event.message == MIDI_MESSAGE_NOTE_ON and event.velocity > 0:
print("Note pressed!")