如何使用 C++ 在 Ubuntu 中连接到 ALSA 服务器(在本例中为 Timidity)?
Posted
技术标签:
【中文标题】如何使用 C++ 在 Ubuntu 中连接到 ALSA 服务器(在本例中为 Timidity)?【英文标题】:How to connect to ALSA server (in this case, Timidity) in Ubuntu using C++? 【发布时间】:2012-01-09 23:28:42 【问题描述】:我正在尝试在带有 C++ 的 Linux Ubuntu 下使用 MIDI。经过一天使用几种工具(例如,JACK)都没有成功(JACK 在我的机器上像疯了一样滞后),我现在尝试使用 Timidity 作为 MIDI 服务器。但是,我无法在网上找到任何关于如何使用 C++ 以编程方式连接到 Timidity 的参考资料。有没有办法做到这一点?
感谢您的任何建议!
注意事项:
我已尝试使用以下内容搜索 google:
alsa 服务器连接
胆小连接程序
但没有答案。
【问题讨论】:
【参考方案1】:看看RtMidi library。它是跨平台的(Win、OS X、Linux、SGI),用 C++ 编写,易于编译并包含在您的项目中。
然后启动 Timidity 作为服务器(Ubuntu 包含一个用于此的初始化脚本),它将为 Timidity 创建几个 ALSA 序列器客户端端口。在 RtMidi 中打开这些端口之一作为输出并开始发送 midi 消息。
【讨论】:
嘿,克里斯,我完全按照你说的做了,但我的扬声器没有任何输出(midi 消息),你知道吗? 没有更多信息,没有。胆小的 ALSA 端口是否显示为“aplaymidi -l”?你能用 aplaymidi 通过它们播放 MIDI 文件并获得声音吗?你能用 RtMidi 枚举端口吗(参见 RtMidi 网站上的“探测端口”)? 感谢您的回复,只是网站上的 RTexample 与文档中的示例相比无法正常工作,但感谢您的回复!【参考方案2】:使用 ALSA 音序器方法来创建 MIDI 消息。
C 库的文档在这里:http://www.alsa-project.org/alsa-doc/alsa-lib/group___sequencer.html
【讨论】:
以上是关于如何使用 C++ 在 Ubuntu 中连接到 ALSA 服务器(在本例中为 Timidity)?的主要内容,如果未能解决你的问题,请参考以下文章
在 C# 中连接到 Websphere MQ 有效,但在 C++ 中失败,代码为 2058 (MQRC_Q_MGR_NAME_ERROR)