将MIDI事件发送到独立采样器/合成器

时间:2010-12-20 13:58:31

标签: c++ audio midi

我想开发一个非常简单的程序来将PC键盘映射到钢琴键盘:每次用户按键时,都会生成一个MIDI事件,并且一个独立的采样器/合成器(例如SFZ +或其他)接收到这些事件发出了声音。

我能够生成MIDI事件(使用midiOutShortMsg),但它们会直接发送到FM合成器(并由它播放),我想将它们发送到外部软件 。代码必须是C / C ++。

你能帮帮我吗?

TNX。

4 个答案:

答案 0 :(得分:3)

您应该查看JACK

  

JACK是实时处理的系统,   低延迟音频(和MIDI)。它运行   在GNU / Linux,Solaris,FreeBSD,OS X上   和Windows(可以移植到   其他符合POSIX标准的平台)。它   可以连接许多不同的   应用程序到音频设备,如   以及允许他们分享音频   他们之间。它的客户可以   在他们自己的过程中运行(即   正常的应用程序),或他们可以   在JACK服务器内运行(即作为   “插入”)。 JACK也有支持   分配音频处理   网络,快速和快速可靠的局域网   以及更慢,更不可靠的WAN。

     

JACK是从头开始设计的   专业音频工作,及其   设计侧重于两个关键领域:   同步执行所有客户端,   和低延迟操作。更多   背景信息可用。

可用作来源或二进制文件here

答案 1 :(得分:0)

您必须使用“midiOutOpen”才能打开设备。 如果您选择其他设备ID怎么办?

答案 2 :(得分:0)

听起来你没有打开正确的设备。 midiOutOpen将设备ID作为第二个参数;你检查了你传递的那个是否正确(使用midiOutGetNumDevs和midiOutGetDevCaps)?

答案 3 :(得分:0)

许多软件合成器都没有将自己设置为Windows MIDI设备。尝试使用免费软件LoopBe1连接MIDI应用程序之间的虚拟电缆。