Я работаю над небольшим программным обеспечением в Visual Studio (Windows Form .NET на С#). Я сделал простое пианино, которое меняет цвет клавиш при нажатии некоторых кнопок клавиатуры (QWERTY)
Теперь я хочу использовать свое MIDI-пианино вместо этого, чтобы сделать это событие. В моем фактическом коде я использовал KeyDown (чтобы показать цветное изображение клавиши пианино поверх оригинала) и KeyUp (чтобы скрыть его) для этого события, и я знаю, что сделать это с MIDI-пианино будет сложнее, чем это.
Я нашел DryWetMidi API (от Melanchall) здесь (и Я загрузил его с помощью NuGet и применил в своем проекте), который может делать много огромных вещей с MIDI, но я просто хочу делать эти простые вещи:
Распознавать MIDI-устройства, которые распознает Windows.
Позвольте пользователю выбрать свое MIDI-устройство в «форме настроек» (которая у меня уже есть пустой)
Может играть на пианино MIDI, чтобы активировать «событие изменения цвета».
(не нужно распознавать скорость)
(не нужно воспроизводить файлы MIDI)
(не нужно озвучивать, потому что я планирую использовать его одновременно с программным обеспечением виртуального инструмента)
В документации DryWetMidi говорится, что "довольно легко настроить получение событий", используя это:
using System;
using Melanchall.DryWetMidi.Devices;
using Melanchall.DryWetMidi.Core;
// ...
using (var inputDevice = InputDevice.GetByName("MIDI Device"))
{
inputDevice.EventReceived += OnEventReceived;
inputDevice.StartEventsListening();
}
// ...
private void OnEventReceived(object sender, MidiEventReceivedEventArgs e)
{
MidiDevice midiDevice = (MidiDevice)sender;
MidiEvent midiEvent = e.Event;
Console.WriteLine($"Event received from '{midiDevice.Name}' at {DateTime.Now}: {midiEvent}");
}
... но у меня это не работает (как вы можете видеть здесь) : (да, я уже написал эти 3 строки в начале моего Form1.cs):
using System;
using Melanchall.DryWetMidi.Devices;
using Melanchall.DryWetMidi.Core;
Эти ошибки (подчеркнутые красным) не позволяют мне продолжать кодирование моего проекта, чтобы достичь конечной цели выполнения события изменения цвета ключа.
Я принцип, и я просто пишу простые коды (как вы можете видеть), поэтому, вероятно, я не знаю, нужно ли мне помещать эти коды в новый документ или форму класса, вызывать их или что-то еще, что может быть очевидно для вас.
Хочу уточнить, что я уже прочитал всю документацию библиотеки, которая относится к Device Connectivity, но решения я там не нашел.
Я клянусь вам, что буду очень признателен за любую помощь, которую вы можете мне оказать.