我想在AVAudioEngine图中使用我的kAudioUnitType_MusicEffect AU。所以我试着打电话:
[AVAudioUnitMIDIInstrument instantiateWithComponentDescription:desc options:kAudioComponentInstantiation_LoadInProcess completionHandler:但这只是一个普通的AVAudioUnit,所以midi选择器(如-[AVAudioUnit sendMIDIEvent:data1:data2:]:)是无法识别的。似乎只有kAudioUnitType_MusicDevice才能使用AVAudioUnitMIDIInstrument instantiateWithComponentDescription。
有办法做到这一点吗?(注: OS X 10.11)
发布于 2016-05-16 20:19:09
创建一个子类,并从它的初始化调用instantiateWithComponentDescription。
此blog post中的Gory details和github项目
http://www.rockhoppertech.com/blog/multi-timbral-avaudiounitmidiinstrument/#avfoundation
这使用了Swift和kAudioUnitSubType_MIDISynth,但你可以看看怎么做。
发布于 2016-05-18 03:18:09
这是可行的。它是一个子类。你将它添加到引擎中,然后通过它路由信号。
class MyAVAudioUnitDistortionEffect: AVAudioUnitEffect {
override init() {
var description = AudioComponentDescription()
description.componentType = kAudioUnitType_Effect
description.componentSubType = kAudioUnitSubType_Distortion
description.componentManufacturer = kAudioUnitManufacturer_Apple
description.componentFlags = 0
description.componentFlagsMask = 0
super.init(audioComponentDescription: description)
}
func setFinalMix(finalMix:Float) {
let status = AudioUnitSetParameter(
self.audioUnit,
AudioUnitPropertyID(kDistortionParam_FinalMix),
AudioUnitScope(kAudioUnitScope_Global),
0,
finalMix,
0)
if status != noErr {
print("error \(status)")
}
}https://stackoverflow.com/questions/37220499
复制相似问题