Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

InputEventMIDI

Успадковує: InputEvent < Resource < RefCounted < Object

Представляє повідомлення MIDI з пристрою MIDI, такі як музична клавіатура.

Опис

InputEventMIDI зберігає інформацію про повідомлення з пристроїв MIDI (цифровий інтерфейс музичних інструментів). Це можуть бути музичні клавішні, синтезатори та драм-машини.

Повідомлення 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):
    якщо input_event є InputEventMIDI:
        _print_midi_info(input_event)

func _print_midi_info(midi_event):
    print(midi_event)
    print("Канал ", midi_event.channel)
    print("Повідомлення ", midi_event.message)
    print("Pitch ", midi_event.pitch)
    print("Швидкість ", midi_event.velocity)
    print("Інструмент ", midi_event.instrument)
    print("Тиск ", midi_event.pressure)
    print("Номер контролера: ", midi_event.controller_number)
    print("Значення контролера: ", 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. MDI канал 9 Зарезервований для інструментів перкусія.


int controller_number = 0 🔗

  • void set_controller_number(value: int)

  • int get_controller_number()

Унікальна кількість контролера, якщо пам'ятне повідомлення @GlobalScope.MIDI_MESSAGE_CONTROL_CHANGE, інакше це 0. Ця вартість може бути використана для виявлення слайдерів для обсягу, балансу та панування, а також перемикачів та тумб на пристрої MIDI. Переглянути Загальна специфікація MIDI для невеликого списку.


int controller_value = 0 🔗

  • void set_controller_value(value: int)

  • int get_controller_value()

Вартість наноситься на контролер. Якщо пам'ятне повідомлення @GlobalScope.MIDI_MESSAGE_CONTROL_CHANGE, це значення коливається від 0 до 127, інакше це 0. Дивись також пам'яний контролер_значення.


int instrument = 0 🔗

  • void set_instrument(value: int)

  • int get_instrument()

Інструмент (також називається program або preset) використовується на цьому MIDI повідомлення. 0 до 127.

Щоб побачити, що кожне значення означає, зверніться до Загальний Список інструментів MIDI. Враховуйте, що список від 1, тому що він не починає від 0. Вартість 0 відповідає акустичному грандіозному фортепіано.


MIDIMessage message = 0 🔗

Представляємо тип повідомлення MIDI (див. MIDIMessage enum).

Для отримання більш детальної інформації див. ` MIDI статус повідомлень за допомогою діаграми списку <https://www.midi.org/specations-old/item/table-2-expanded-messages-list-status-bytes>`__.


int pitch = 0 🔗

  • void set_pitch(value: int)

  • int get_pitch()

Індекс поля цього повідомлення MIDI. 0 до 127.

На фортепіано middle C 60, далі C-sharp (61), потім D (62 і так далі. Кожен октав розщеплюється в офсетах 12. Дивитися "MIDI номер замітки" стовпчик piano ключовий графік частоти повного списку.


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!")