如何在 OSX 上的 C++ 应用程序中播放合成器声音?

Posted

技术标签:

【中文标题】如何在 OSX 上的 C++ 应用程序中播放合成器声音?【英文标题】:How can I play a synth sound in a C++ app on OSX? 【发布时间】:2013-08-16 22:05:18 【问题描述】:

我想在我的应用中播放器乐声音。声音的持续时间很灵活,因此 MIDI 似乎是最好的解决方案。

我现在正在使用 Open Framework。 使用音频单元,我设法处理输入声音,而不是通过乐器演奏。 我在我的 Mac 上找到了 AUi 工具,但我不知道如何从我的代码中访问它们。 我没有找到任何演奏 General Midi(内置 MIDI 乐器)的方法。没有找到 RTMidi 的输出端口。

有人有解决办法吗? 谢谢!

【问题讨论】:

【参考方案1】:

我在this 项目中找到了解决方案。

您需要使用音频单元。 添加具有此组件描述的节点:

description.componentType           = kAudioUnitType_MusicDevice;
description.componentSubType        = kAudioUnitSubType_DLSSynth;
description.componentManufacturer   = kAudioUnitManufacturer_Apple;
description.componentFlags          = 0;
description.componentFlagsMask      = 0;
AUGraphAddNode (graph, &description, &synthNode);

打开并初始化您的音频单元并像这样播放音符:

MusicDeviceMIDIEvent (synthUnit, channel, note, velocity, 0);

【讨论】:

以上是关于如何在 OSX 上的 C++ 应用程序中播放合成器声音?的主要内容,如果未能解决你的问题,请参考以下文章

在 OSX 中播放视频

哪个 API 从 ios 和 osx 中的缓冲区播放音频?

如何从 osx 应用程序播放系统声音?

播放纯声音(一个频率)并识别频率 C++

在 OSX / iOS 上游戏开始前播放视频的最简单方法

如何防止 html5 视频在 OSX 上休眠