Prior to iOS 17, I used AVAudioFile to open (for reading) the assetURL of MPMediaItem for songs that the user purchased through iTunes Store. With the iOS 17 Beta, this seems no longer possible as AVAudioFile throws this:
ExtAudioFile.cpp:211 about to throw -54: open audio file
AVAEInternal.h:109 [AVAudioFile.mm:135:AVAudioFileImpl: (ExtAudioFileOpenURL((CFURLRef)fileURL, &_extAudioFile)): error -54
Also can't copy the url to Documents directory because I get this:
The file “item.m4a” couldn’t be opened because URL type ipod-library isn’t supported.
This seems to be affecting other apps on the App Store besides mine, and it will reflect very badly on my app if this makes into the final iOS 17 because I have encouraged users to buy songs on iTunes Store to use with my app. Now there seems like there is no way to access them.
Is this a known bug, or is there some type of workaround?
Post
Replies
Boosts
Views
Activity
It seems playbackRate (https://developer.apple.com/documentation/musickitjs/musickit/player/2992760-playbackrate) does not work at anything besides 1.0 on iOS 15.4 (It still works on iPhones with older versions).
I've tried setting it in many different ways including what shown at https://developer.apple.com/forums/thread/687931
This has broken functionality in my app and others on the App Store.
Mostly I would like to bring this to Apple's attention and would like to know if this is intentional or a bug?
Specifically an Audio Unit (AUv3).
Can I prevent users from using the extension outside of my app? Ideally, installing my app would make the Audio Unit only available in my app, unless the user made an IAP to allow other apps to use it. Is this possible? If so, how?
I wrote a time stretch algorithm that sounds much better than AvAudioUnitTimePitch. I was making an iOS app around it using AVAudioEngine, thinking I could insert my algorithm into a AUv3 extension, and simply replace AvAudioUnitTimePitch.
However, reading the documentation it seems like this approach may not be possible as time stretch is not a real time effect, and AVAudioUnitTimePitch is hence of type 'aufc' (kAudioUnitType_FormatConverter). The documentation for creating custom audio extensions only mentions four types, and 'aufc' is not one of them, and the template in Xcode only supports the four types.
The glimmer of hope is that while experimenting with instantiating a blank extension, I can set componentDescription.componentType = kAudioUnitType_FormatConverter and the instantiation is apparently successful, although this may prove to be a dead end.
Has anyone successfully made a v3 extension of 'aufc'? Given that I have wrote substantial code around AVAudioEngine, are there any other recommended approaches to do what I am wanting to do if AUv3 extension is not the way to go?