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

时间:2015-03-23 04:21:51

标签: macos cocoa audio midi

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

我怀疑我可能需要生成MIDI数据,我可以独立弄清楚,但我一般都是音频编程的新手,我不确定最佳切入点是什么进入系统框架是。 AudioToolbox包含这些MusicSequence个对象。还有Core MIDI和Core Audio。没有一个明显的界面,这里有一堆笔记的数据结构,现在称这种方法来播放它们,所以我大概需要将这些方法的一些组合拼凑起来

我确信OS X支持这一点。如果有人有这种工作的背景,我会理解几个关于文档(或其他资源)开始寻找构建代表音乐数据的结构以及你转向的地方的基本指示。触发播放。

1 个答案:

答案 0 :(得分:3)

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