1

I started a new iOS application, where I am hosting a AUv3 Plugin, which I created via an AudioUnit Extension. I am basically using the template, which Apple has provided me with. My main application is hosting the AUv3. The following code works on my device ( iPad Pro 11 - iOS 14 ) but in the simulator ( iPhone 11 - iOS 14 ) I get the following error message:

2020-10-15 21:07:36.786306+0200 MyApp[2132:84039] [plugin] AddInstanceForFactory: No factory registered for id <CFUUID 0x600001d074c0> F8BB1C28-BAE8-11D6-9C31-00039315CD46

2020-10-15 21:07:37.124600+0200 MyApp[2132:83972] EXCEPTION: os_eventlink_activate failed (45)

2020-10-15 21:07:37.125009+0200 MyApp[2132:83972] [i-aa] AUAudioUnit_XPC.mm:665:-[AUAudioUnit_XPC allocateRenderResourcesAndReturnError:]: render pipe user creation failure (Error Domain=NSOSStatusErrorDomain Code=-1 "(null)")

2020-10-15 21:07:37.125389+0200 MyApp[2132:83972] [avae]
AVAEInternal.h:109 [AVAudioEngineGraph.mm:1389:Initialize: (err = AUGraphParser::InitializeActiveNodesInOutputChain(ThisGraph, kOutputChainOptimizedTraversal, *GetOutputNode(), isOutputChainActive)): error -1 ERROR: The operation couldn’t be completed. (com.apple.coreaudio.avfaudio error -1.)

ViewController.swift

import UIKit
import AVFoundation
import CoreAudioKit


class ViewController: UIViewController {

    @IBOutlet weak var auView: UIView!
    
    var avUnit:AVAudioUnit?
    var engine:AVAudioEngine!
        
    override func viewDidLoad() {
        super.viewDidLoad()
        
        self.engine = AVAudioEngine()
        
        do {
            try AVAudioSession.sharedInstance().setMode(.default)
            try AVAudioSession.sharedInstance().setPreferredSampleRate(44100)
            try AVAudioSession.sharedInstance().setCategory(.playback, options: [.allowBluetooth, .allowBluetoothA2DP, .mixWithOthers])
            try AVAudioSession.sharedInstance().setActive(true)
            
        }catch let error{
            print("error \(error.localizedDescription)")
        }
        
        // Retrieve audio unit components by description.
        let description = AudioComponentDescription(componentType: kAudioUnitType_MusicDevice,
                                                    componentSubType: 0x6775616e,
                                                    componentManufacturer: 0x5775616e,
                                                    componentFlags: 0,
                                                    componentFlagsMask: 0)
        
        
        AVAudioUnit.instantiate(with: description, options: []) { avAudioUnit, error in
            
            guard error == nil else {
                DispatchQueue.main.async { /* Show error message to user. */ }
                return
            }
            
            guard let aUnit = avAudioUnit else { return }
            self.avUnit = aUnit
            
            //let format = AVAudioFormat(commonFormat: .pcmFormatFloat32, sampleRate: 44100, channels: 2, interleaved: false)!
            let formatOutput = self.engine.mainMixerNode.outputFormat(forBus: 0)
            let formatAU = aUnit.outputFormat(forBus: 0)

            self.engine.attach(aUnit)
            self.engine.connect(aUnit, to: self.engine.mainMixerNode, format: formatAU)
            self.engine.connect(self.engine.mainMixerNode, to: self.engine.outputNode, format: formatOutput)
            
            
            do {
                
                try self.engine.start()
                
            } catch let error {
                print(error.localizedDescription)
            }
            
            self.addPluginView()

        }
        
    }
    
    
    private func addPluginView() {

        self.avUnit?.auAudioUnit.requestViewController(completionHandler: { plugInViewController in
            
            if plugInViewController != nil{
                
                if let pluginView = plugInViewController!.view{
                    
                    pluginView.frame = self.auView.bounds
                    self.auView.addSubview(pluginView)
                    
                }
                
            }
            
        })
        
    }
    
}

Is it a problem inside the AVAudioEngine..? Any help highly appreciated.

HTron
  • 337
  • 3
  • 14

0 Answers0