【问题标题】:How can I play a synth sound in a C++ app on OSX?如何在 OSX 上的 C++ 应用程序中播放合成器声音?
【发布时间】:2013-08-16 22:05:18
【问题描述】:
我想在我的应用中播放器乐声音。声音的持续时间很灵活,因此 MIDI 似乎是最好的解决方案。
我现在正在使用 Open Framework。
使用音频单元,我设法处理输入声音,而不是通过乐器演奏。
我在我的 Mac 上找到了 AUi 工具,但我不知道如何从我的代码中访问它们。
我没有找到任何演奏 General Midi(内置 MIDI 乐器)的方法。没有找到 RTMidi 的输出端口。
有人有解决办法吗?
谢谢!
【问题讨论】:
标签:
c++
macos
midi
audiounit
vst
【解决方案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);