InputEventMIDI

Наследует: InputEvent < Resource < RefCounted < Object

Представляет MIDI-сообщение от MIDI-устройства, например музыкальной клавиатуры.

Описание

InputEventMIDI хранит информацию о сообщениях с MIDI (Musical Instrument Digital Interface) устройств. К ним могут относиться музыкальные клавиатуры, синтезаторы и драм-машины.

MIDI-сообщения могут быть получены через 5-контактный разъем MIDI или через USB. Если ваше устройство поддерживает оба варианта, обязательно проверьте настройки на устройстве, чтобы узнать, какой выход оно использует.

По умолчанию Godot не обнаруживает устройства 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)

Примечание: Godot не поддерживает вывод MIDI, поэтому нет способа отправлять сообщения MIDI из Godot. Поддерживается только ввод MIDI.

Примечание: На веб-платформе использование ввода MIDI требует предварительного предоставления разрешения браузеру. Этот запрос разрешения выполняется при вызове OS.open_midi_inputs(). Ввод MIDI не будет работать, пока пользователь не примет запрос разрешения.

Обучающие материалы

Свойства

int

channel

0

int

controller_number

0

int

controller_value

0

int

instrument

0

MIDIMessage

message

0

int

pitch

0

int

pressure

0

int

velocity

0


Описания свойств

int channel = 0 🔗

  • void set_channel(value: int)

  • int get_channel()

MIDI-канал этого сообщения, диапазон от 0 до 15. MIDI-канал 9 зарезервирован для ударных инструментов.


int controller_number = 0 🔗

  • void set_controller_number(value: int)

  • int get_controller_number()

Уникальный номер контроллера, если message@GlobalScope.MIDI_MESSAGE_CONTROL_CHANGE, в противном случае это 0. Это значение можно использовать для идентификации ползунков громкости, баланса и панорамирования, а также переключателей и педалей на MIDI-устройстве. Небольшой список см. в General MIDI specification.


int controller_value = 0 🔗

  • void set_controller_value(value: int)

  • int get_controller_value()

Значение, применяемое к контроллеру. Если message — это @GlobalScope.MIDI_MESSAGE_CONTROL_CHANGE, это значение варьируется от 0 до 127, в противном случае это 0. См. также controller_value.


int instrument = 0 🔗

  • void set_instrument(value: int)

  • int get_instrument()

Инструмент (также называемый program или preset), используемый в этом MIDI-сообщении. Это значение варьируется от 0 до 127.

Чтобы узнать, что означает каждое значение, обратитесь к списку инструментов General MIDI. Имейте в виду, что список смещен на 1, поскольку он не начинается с 0. Значение 0 соответствует акустическому роялю (grand piano).


MIDIMessage message = 0 🔗

Представляет тип сообщения MIDI (см. перечисление MIDIMessage).

Для получения дополнительной информации см. таблицу байтов состояния сообщения MIDI.


int pitch = 0 🔗

  • void set_pitch(value: int)

  • int get_pitch()

Номер индекса высоты тона этого MIDI-сообщения. Это значение варьируется от 0 до 127.

На фортепиано middle C — это 60, за которым следует C-sharp (61), затем D (62) и т. д. Каждая октава разделена на смещения по 12. См. столбец «MIDI note number» в таблице частот клавиш фортепиано полный список.


int pressure = 0 🔗

  • void set_pressure(value: int)

  • int get_pressure()

Сила нажатия клавиши. Это значение варьируется от 0 до 127.

Примечание: Для многих устройств это значение всегда равно 0. Другие устройства, такие как музыкальные клавиатуры, могут имитировать давление, изменяя velocity вместо этого.


int velocity = 0 🔗

  • void set_velocity(value: int)

  • int get_velocity()

Скорость сообщения MIDI. Это значение находится в диапазоне от 0 до 127. Для музыкальной клавиатуры это соответствует тому, как быстро была нажата клавиша, и на практике редко превышает 110.

Примечание: Некоторые устройства MIDI могут отправлять сообщение @GlobalScope.MIDI_MESSAGE_NOTE_ON со скоростью 0 и ожидать, что оно будет обработано так же, как сообщение @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!")