InputEventMidi
Представляет MIDI-сообщение от MIDI-устройства, например музыкальной клавиатуры.
Представляет MIDI-сообщение от MIDI-устройства, например музыкальной клавиатуры.
InputEventMIDI хранит информацию о сообщениях с MIDI(https://en.wikipedia.org/wiki/MIDI) (Цифровой интерфейс музыкального инструмента) устройств. К ним могут относиться музыкальные клавиатуры, синтезаторы и драм-машины.
MIDI-сообщения могут быть получены через 5-контактный разъем MIDI или через USB. Если ваше устройство поддерживает оба варианта, обязательно проверьте настройки на устройстве, чтобы узнать, какой выход оно использует.
По умолчанию Reckfell не обнаруживает устройства MIDI. Сначала вам нужно вызвать OS.OpenMidiInputs. Вы можете проверить, какие устройства обнаружены, с помощью OS.GetConnectedMidiInputs и закрыть соединение с помощью OS.CloseMidiInputs.
public override void _Ready()
{
OS.OpenMidiInputs();
ReckfellApi.Print(OS.GetConnectedMidiInputs());
}
public override void _Input(InputEvent inputEvent)
{
if (inputEvent is InputEventMidi midiEvent)
{
PrintMIDIInfo(midiEvent);
}
}
private void PrintMIDIInfo(InputEventMidi midiEvent)
{
ReckfellApi.Print(midiEvent);
ReckfellApi.Print($"Channel {midiEvent.Channel}");
ReckfellApi.Print($"Message {midiEvent.Message}");
ReckfellApi.Print($"Pitch {midiEvent.Pitch}");
ReckfellApi.Print($"Velocity {midiEvent.Velocity}");
ReckfellApi.Print($"Instrument {midiEvent.Instrument}");
ReckfellApi.Print($"Pressure {midiEvent.Pressure}");
ReckfellApi.Print($"Controller number: {midiEvent.ControllerNumber}");
ReckfellApi.Print($"Controller value: {midiEvent.ControllerValue}");
}Примечание: Reckfell не поддерживает вывод MIDI, поэтому нет способа отправлять сообщения MIDI из Reckfell. Поддерживается только ввод MIDI.
Примечание: На веб-платформе использование ввода MIDI требует предварительного предоставления разрешения браузеру. Этот запрос разрешения выполняется при вызове OS.OpenMidiInputs. Ввод MIDI не будет работать, пока пользователь не примет запрос разрешения.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
InputEventMidiКонструктор
public InputEventMidi();Свойства8
ChannelСвойство
public int Channel { get; set; }MIDI-канал этого сообщения, диапазон от 0 до 15. MIDI-канал 9 зарезервирован для ударных инструментов.
ControllerNumberСвойство
public int ControllerNumber { get; set; }Уникальный номер контроллера, если InputEventMidi.Message — MIDI_MESSAGE_CONTROL_CHANGE, в противном случае это 0. Это значение можно использовать для идентификации ползунков громкости, баланса и панорамирования, а также переключателей и педалей на MIDI-устройстве. Небольшой список см. в Общая спецификация МИДИ.
ControllerValueСвойство
public int ControllerValue { get; set; }Значение, применяемое к контроллеру. Если InputEventMidi.Message — это MIDI_MESSAGE_CONTROL_CHANGE, это значение варьируется от 0 до 127, в противном случае это 0. См. также InputEventMidi.ControllerValue.
InstrumentСвойство
public int Instrument { get; set; }Инструмент (также называемый program или preset), используемый в этом MIDI-сообщении. Это значение варьируется от 0 до 127.
Чтобы узнать, что означает каждое значение, обратитесь к списку инструментов Общий МИДИ. Имейте в виду, что список смещен на 1, поскольку он не начинается с 0. Значение 0 соответствует акустическому роялю (Большой фортепиано).
MessageСвойство
public MidiMessage Message { get; set; }Представляет тип сообщения MIDI (см. перечисление MIDIMessage).
Для получения дополнительной информации см. таблицу байтов состояния сообщения MIDI.
PitchСвойство
public int Pitch { get; set; }Номер индекса высоты тона этого MIDI-сообщения. Это значение варьируется от 0 до 127.
На фортепиано Средний C — это 60, за которым следует C-sharp (61), затем D (62) и т. д. Каждая октава разделена на смещения по 12. См. столбец «Номер примечания MIDI» в таблице частот клавиш фортепиано полный список.
PressureСвойство
public int Pressure { get; set; }Сила нажатия клавиши. Это значение варьируется от 0 до 127.
Примечание: Для многих устройств это значение всегда равно 0. Другие устройства, такие как музыкальные клавиатуры, могут имитировать давление, изменяя InputEventMidi.Velocity вместо этого.
VelocityСвойство
public int Velocity { get; set; }Скорость сообщения MIDI. Это значение находится в диапазоне от 0 до 127. Для музыкальной клавиатуры это соответствует тому, как быстро была нажата клавиша, и на практике редко превышает 110.
Примечание: Некоторые устройства MIDI могут отправлять сообщение MIDI_MESSAGE_NOTE_ON со скоростью 0 и ожидать, что оно будет обработано так же, как сообщение MIDI_MESSAGE_NOTE_OFF. При необходимости это можно обработать несколькими строками кода:
Методы16
GetChannelint
public int GetChannel();intGetControllerNumberint
public int GetControllerNumber();intGetControllerValueint
public int GetControllerValue();intGetInstrumentint
public int GetInstrument();intGetMessageMidiMessage
public MidiMessage GetMessage();MidiMessageGetPitchint
public int GetPitch();intGetPressureint
public int GetPressure();intGetVelocityint
public int GetVelocity();intSetChannelvoid
public void SetChannel(int channel);| Имя | Тип | По умолчанию |
|---|---|---|
channel | int | — |
SetControllerNumbervoid
public void SetControllerNumber(int controllerNumber);| Имя | Тип | По умолчанию |
|---|---|---|
controllerNumber | int | — |
SetControllerValuevoid
public void SetControllerValue(int controllerValue);| Имя | Тип | По умолчанию |
|---|---|---|
controllerValue | int | — |
SetInstrumentvoid
public void SetInstrument(int instrument);| Имя | Тип | По умолчанию |
|---|---|---|
instrument | int | — |
SetMessagevoid
public void SetMessage(MidiMessage message);| Имя | Тип | По умолчанию |
|---|---|---|
message | MidiMessage | — |
SetPitchvoid
public void SetPitch(int pitch);| Имя | Тип | По умолчанию |
|---|---|---|
pitch | int | — |
SetPressurevoid
public void SetPressure(int pressure);| Имя | Тип | По умолчанию |
|---|---|---|
pressure | int | — |
SetVelocityvoid
public void SetVelocity(int velocity);| Имя | Тип | По умолчанию |
|---|---|---|
velocity | int | — |