macos - 用于合成音乐数据的 OS X 框架是什么?

标签 macos cocoa audio midi

我想编写一些代码来生成一些非常简单的音乐音调(音符)并通过扬声器(无论什么声音设备)输出它们。

我怀疑我可能需要生成 MIDI 数据,我可以独立地弄清楚这些数据,但我对音频编程总体来说是新手,我不确定进入系统框架的最佳入口点是什么。 AudioToolbox 具有这些 MusicSequence 对象。还有核心 MIDI 和核心音频。没有一个有一个明显的接口(interface)“这是一堆音符的数据结构,现在调用这个方法来播放它们”,所以我可能需要这些的一些组合来将它拼凑在一起。

我相信 OS X 支持这一点。如果有人对此类工作有背景,我会很感激一些基本的指导,说明在文档(或其他资源)中的何处开始寻找构建代表音乐数据的任何结构以及在何处转身并触发播放。

最佳答案

OS X 确实支持这一点,但它本质上比乍看起来要复杂得多。基本上分为三部分:

  • MusicSequence 是“一堆音符的数据结构”(以及速度/节奏图形式的计时信息。
  • MusicPlayer 是控制 MusicSequence 播放的对象。
  • AUGraph 可用于创建乐器对象并将其连接到物理输出,以将音符数据转换为声音。

设置 AUGraph 的方式有很多潜在的变化。例如,默认的通用 MIDI 合成器是内置的 DLSMusicDevice,但您也可以加载 FM 合成器、采样器或任意数量的其他乐器单元。从那里,您可以以各种方式处理音频并将其路由到各种设备。所有属于“音频处理”一般类别的内容都发生在 AUGraph 内。

Apple 的 PlaySequence 示例代码可以满足您的大部分需求。这是一个 C++ 项目,但 MusicSequence、MusicPlayer 和 AUGraph 是纯 C API,因此它应该是一个不错的起点。 https://developer.apple.com/library/mac/samplecode/PlaySequence/Introduction/Intro.html

关于macos - 用于合成音乐数据的 OS X 框架是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29203228/

相关文章:

Xcode:如何使用具有跨项目引用的单独项目在您的应用程序中嵌入框架?

sql-server - 使用 ActualTech odbc 驱动程序连接到 sql server - Mac 上的 VBA Office 2011

ios - Swift 日期选择器日期

objective-c - 阻止应用程序显示在 cmd 选项卡中(应用程序周期)

wordpress - Wordpress中没有适用于Gutenberg音频 block 的CSS?

android - 如何在 Android 中将音频原始格式转换为 flac

iphone - 需要iPhone人机界面教程!

cocoa - 从 CGImageRef 获取分辨率

cocoa - 构建和分析工具 Cocoa Xcode

c++ - 用于实时应用程序的音频/MIDI C++ 库