AudioToolbox音频入门(一)

AudioToolbox, 记录或播放音频,转换格式,解析音频流以及配置音频会话。音频工具箱框架提供了用于记录,回放和流解析的接口。在iOS中,该框架提供了用于管理音频会话的其他接口。

整合音效和乐器(Incorporating Audio Effects and Instruments)

通过托管音频单元(AU)插件,将自定义音频处理和MIDI乐器添加到您的应用程序。注释:AU(Audio Unit) MIDI (Musical Instrument Digital Interface)乐器数字接口

image

HostViewController 及其关联的Storyboard提供了用户界面。

AudioUnitManager 使用效果器和乐器插件管理交互。

SimplePlayEngine 用AVAudioEngine播放音频样本和MIDI数据

一、 查找音频单元(Audio Units)

AudioComponentDescription结构体。音频组建描述,标识音频组件的信息。
例:

  AudioComponentDescription description = {0};
  //用于标识组件的接口。输出播放,乐器等等
  description.componentType = kAudioUnitType_Output;
  //可用于指示组件的用途。例如,您可以使用lpas或lowp作为助记符指示音频单元是低通滤波器。
  description.componentSubType = kAudioUnitSubType_RemoteIO;
   //向Apple注册的音频组件的唯一供应商标识符。
  description.componentManufacturer = kAudioUnitManufacturer_Apple; 

AVAudioUnitComponent类 。提供有关音频单元的详细信息,例如:类型,子类型,制造商和位置。

//该音频单元组分
//获取音频单元组件的音频单元
@property(nonatomic, readonly) AudioComponent audioComponent;

AVAudioUnitComponentManager类 。一个对象,提供一种搜索和查询在系统中注册的音频组件的方法。

  // 存放AVAudioUnitComponent的NSArry
  // - (NSArray *)componentsMatchingDescription:(AudioComponentDescription)desc;
 NSArray*arr = [[AVAudioUnitComponentManager sharedAudioUnitComponentManager]componentsMatchingDescription:description];
//与搜索匹配的音频组件对象数组。
//predicate搜索谓词。音频组件的信息或标签可用于构建搜索条件,例如"typeName CONTAINS 'Effect'" or "tags IN {'Sampler', 'MIDI'}".
- (NSArray *)componentsMatchingPredicate:(NSPredicate *)predicate;

//等等。还有一些别的参数方法获取根据需要去拿。

kAudioUnitType_Effect 全局变量。音频效果

kAudioUnitType_Effect = 'aufx'

kAudioUnitType_MusicDevice 全局变量\枚举。乐器单元可以用作软件乐器,例如采样器或合成器。它响应MIDI(乐器数字接口)控制信号并可以创建音符。

kAudioUnitType_MusicDevice = 'aumu'
二、初始化 AVAudioUnit

AVAudioUnit 类。音频节点类的子类,根据音频单元的类型,可以实时或非实时处理音频。
异步实例化

//异步创建包装在AVAudioUnit中的音频单元组件(audio unit)的实例
[AVAudioUnit instantiateWithComponentDescription:description options:kAudioComponentInstantiation_LoadOutOfProcess completionHandler:^(__kindof AVAudioUnit * _Nullable audioUnit, NSError * _Nullable error) {
    }];

你可能感兴趣的:(AudioToolbox音频入门(一))