ibe*_*sic 4 c# midi winforms coremidi
我正在 Visual Studio 中开发一个小软件(C# 中的 Windows Form . NET)。我制作了一个简单的钢琴,当我按下一些键盘按钮(QWERTY)时,它会改变琴键的颜色

现在我想用我的 MIDI 钢琴来完成这个活动。在我的实际代码中,我使用了 KeyDown(在原始钢琴键上显示钢琴键的彩色图像)和 KeyUp(隐藏它)来执行此事件,并且我知道使用 MIDI 钢琴执行此操作会比这。
我在这里找到了DryWetMidi API(由 Melanchall 提供)(我使用 NuGet 下载了它,并将其应用到我的项目中),它可以使用 MIDI 完成很多重要的事情,但我只想做这些简单的事情:
识别 Windows 识别的 MIDI 设备。
让用户在“设置表单”中选择他的 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}");
}Run Code Online (Sandbox Code Playgroud)
...但它对我不起作用(正如您 在这里看到的那样):(是的,我已经在 Form1.cs 的开头写了这 3 行):
using System;
using Melanchall.DryWetMidi.Devices;
using Melanchall.DryWetMidi.Core;
Run Code Online (Sandbox Code Playgroud)
这些错误(以红色下划线显示)不允许我继续对我的项目进行编码,以达到执行关键颜色更改事件的最终目标。
我是原则性的,我只是编写简单的代码(如您所见),所以我可能不知道是否必须将这些代码放在新的类文档或表单上,以调用它们或其他对您来说可能显而易见的事情。
我想澄清的是,我已经阅读了涉及设备连接的库的所有文档,但我在那里找不到解决方案。
我向你发誓,我将非常感谢你能给我的任何帮助。
我是 DryWetMIDI 的作者。
您会收到这些错误,因为您只是复制/粘贴示例代码。using块只能在方法内使用。
如果您的任务是“在 MIDI 设备上按键时点亮应用程序中的某个键”,您的工作流程应该是:
InputDevice.GetAll_inputDevice)EventReceived为您显示的库文档中的代码片段中的事件设置事件处理程序IInputDevice,并且不要忘记调用StartEventsListening方法NoteOnEvent,请在应用程序中点亮钢琴上的一个琴键NoteOffEvent,请熄灭钥匙_inputDevice使用Dispose方法进行处理;还删除您在步骤 3 中设置的事件处理程序请阅读库文档的输入设备文章。
| 归档时间: |
|
| 查看次数: |
1482 次 |
| 最近记录: |