AUSampler:引用外部(下载的)音频文件
AUSampler: referencing external (downloaded) audio files
我有一个应用程序使用 .aupreset
文件和 .wav
样本来定义加载到 AUSampler 音频单元中的乐器。
.aupreset
文件引用具有绝对路径的 .wav
文件。如Technical Note 2283所述,如果在原路径找不到音频文件,则系统会在Bundle Directory、NSLibraryDirectory中搜索]、NSDocumentsDirectory 和 NSDownloadsDirectory,按此顺序。
我可以让应用程序包中的乐器正常工作,但现在我正在尝试支持下载的乐器。如果我把内容放在<NSLibraryDirectory>/Sounds/
里,AUSampler找不到.wav
个样本,但是如果我把它放在<NSDocumentsDirectory>/Sounds/
里,它就可以了。不过,我不想将乐器目录弄乱,因为该文件夹显示在 iTunes 中。
这是 AUSampler 打印的错误:
09:27:25.251 ERROR: [0x19989c310] 372: Failed to locate sample 'file:///Sounds/trance/square-lead/Square-12000Hz.wav'
此外,我什至无法在 NSDownloadsDirectory 位置创建目录 - 我只是收到不允许操作的错误。
有没有人以前从库中成功加载过样本?
(这是在 iOS 8.)
是的,您绝对可以从库目录加载样本。
我以为你必须创建库目录,但我错了。就是我想的Application Support目录。
我收到了this explanation from an Apple Engineer:
It turns out the documentation for this is incorrect for iOS: AUSampler will only look in NSDocumentDirectory and the NSDownloadsDirectory in addition to the bundle. These are the recommended locations for storing application-specific data, if you aren't going to store it in the bundle, or you wish to enable users to add additional content to the app.
For OSX, the NSLibraryDirectory is also available.
但是,根据我自己的测试,您也不能使用 NSDownloadsDirectory,因为尝试创建目录 returns 时出错 ("The operation couldn’t be completed. Operation not permitted")。所以看起来 iOS 上的唯一选项是从包或从 Documents 目录加载。
当你还想为其他内容启用 iTunes 文件共享时,这并不理想,所以我想到了另一个解决方法:将内容放在任意位置,并在加载 .aupreset 文件时,重写所有在音频单元上设置之前引用该位置的文件引用。
我有一个应用程序使用 .aupreset
文件和 .wav
样本来定义加载到 AUSampler 音频单元中的乐器。
.aupreset
文件引用具有绝对路径的 .wav
文件。如Technical Note 2283所述,如果在原路径找不到音频文件,则系统会在Bundle Directory、NSLibraryDirectory中搜索]、NSDocumentsDirectory 和 NSDownloadsDirectory,按此顺序。
我可以让应用程序包中的乐器正常工作,但现在我正在尝试支持下载的乐器。如果我把内容放在<NSLibraryDirectory>/Sounds/
里,AUSampler找不到.wav
个样本,但是如果我把它放在<NSDocumentsDirectory>/Sounds/
里,它就可以了。不过,我不想将乐器目录弄乱,因为该文件夹显示在 iTunes 中。
这是 AUSampler 打印的错误:
09:27:25.251 ERROR: [0x19989c310] 372: Failed to locate sample 'file:///Sounds/trance/square-lead/Square-12000Hz.wav'
此外,我什至无法在 NSDownloadsDirectory 位置创建目录 - 我只是收到不允许操作的错误。
有没有人以前从库中成功加载过样本?
(这是在 iOS 8.)
是的,您绝对可以从库目录加载样本。 我以为你必须创建库目录,但我错了。就是我想的Application Support目录。
我收到了this explanation from an Apple Engineer:
It turns out the documentation for this is incorrect for iOS: AUSampler will only look in NSDocumentDirectory and the NSDownloadsDirectory in addition to the bundle. These are the recommended locations for storing application-specific data, if you aren't going to store it in the bundle, or you wish to enable users to add additional content to the app.
For OSX, the NSLibraryDirectory is also available.
但是,根据我自己的测试,您也不能使用 NSDownloadsDirectory,因为尝试创建目录 returns 时出错 ("The operation couldn’t be completed. Operation not permitted")。所以看起来 iOS 上的唯一选项是从包或从 Documents 目录加载。
当你还想为其他内容启用 iTunes 文件共享时,这并不理想,所以我想到了另一个解决方法:将内容放在任意位置,并在加载 .aupreset 文件时,重写所有在音频单元上设置之前引用该位置的文件引用。