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

时间:2013-08-16 22:05:18

标签: c++ macos midi audiounit vst

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

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

有没有人有解决方案? 谢谢!

1 个答案:

答案 0 :(得分:0)

我在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);