【问题标题】:How to record the output of DLS synthesizer (kAudioUnitSubType_DLSSynth)?如何记录 DLS 合成器的输出(kAudioUnitSubType_DLSSynth)?
【发布时间】:2016-05-26 22:57:33
【问题描述】:

我正在开发一个 OSX 应用程序,在该应用程序中,我使用 Core Audio 通过内置的 DLS 合成器 (kAudioUnitSubType_DLSSynth) 播放声音。我想捕获合成器输出并将其导出到文件(.aif、.mp3、.caf 等)。这似乎是一件直截了当的事情,但我在任何地方都找不到一个例子。从内置麦克风录音很容易。这很难。

谁能给我举个例子或给我一些提示?

【问题讨论】:

  • 您能否发布一些代码以显示您的个人研究进展如何?你的回调函数特别?这也将帮助其他人帮助你。谢谢。

标签: xcode macos core-audio


【解决方案1】:

我假设您正在设置一个由两个组件组成的 AUGraph:一个代替 输出节点的输出音频单元:

AudioComponentDescription outputdesc = {0};
outputdesc.componentType = kAudioUnitType_Output;
outputdesc.componentSubType = kAudioUnitSubType_DefaultOutput;
outputdesc.componentManufacturer = kAudioUnitManufacturer_Apple;
AUNode outputNode;
AUGraphAddNode(player->graph, &outputcd, &outputNode);

还有一个.componentSubType = kAudioUnitSubType_DLSSynth“上游”的音频单元,代替乐器节点

您可以编写和注册输出单元而不是仪器单元的输入回调,从而允许从“上游”捕获任何coem。这是最简单的答案。 “操作方法”在许多教科书和代码示例中得到了相当不错的介绍,但也需要进行一些个人研究。处理录制格式和格式转换已经是一个单独的问题,IMO。

【讨论】:

  • 是的,这正是我正在做的。我是否使用 AUGraphSetNodeInputCallback 来注册输入回调?
  • 好的,这帮助我开始做更多的研究(渲染)。感谢您指出正确的方向。非常感谢。
猜你喜欢
  • 2021-11-05
  • 1970-01-01
  • 1970-01-01
  • 2021-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-02
相关资源
最近更新 更多