Аудиоустройства - Как правильно сохранить и восстановить предварительные установки Аудиоустройства.
Приложения, размещающие Аудиоустройства, могут использовать в своих интересах предварительно установленный механизм Аудиоустройства. Предварительные установки дают пользователям быстрый метод выбора комбинации настроек для аудиоустройства, не проходя через трудность внесения изменений каждый раз, Аудиоустройство загружается.
Аудиоустройство может иметь определенное состояние в любой момент времени. Состояние аудиоустройства относится к внутренним значениям, которые могут влиять на его поведение; в большинстве случаев это параметры. Аудиоустройства имеют тенденцию иметь большие суммы этих внутренних значений, делание его полезно позволить этим значениям быть сохраненными и восстановленными как предварительные установки для более позднего использования.
Эти состояния могут быть или поставлены с Аудиоустройством или сохранены в формате файла, который может быть загружен хост-приложением.
Предварительные установки фабрики являются рядом предопределенных настроек аудиоустройства, поставляющихся с Аудиоустройством. Они обычно определяют распространенные настройки, которые будет обычно использовать Аудиоустройство. Например, Аудиоустройство реверберации могло бы хотеть включать несколько предварительных установок фабрики, таких как небольшая комната или крупный Холл.
Пользовательские состояния являются пользовательскими настройками, которые могут быть созданы пользователем. По существу пользовательское состояние является снимком текущих настроек на аудиоустройстве в любой момент времени, которое могло быть сохранено в формате файла.
Нахождение предварительных установок
Фабрика
Предварительные установки фабрики могут быть получены от аудиоустройства при помощи метода AudioUnitGetProperty с kAudioUnitProperty_FactoryPresets свойство.
Предварительные установки фабрики перечисления 1
CFArrayRef presets = NULL; |
propertySize = sizeof(presets); |
err = AudioUnitGetProperty(SomeAudioUnit, |
kAudioUnitProperty_FactoryPresets, |
kAudioUnitScope_Global, |
0, |
&presets, |
&propertySize); |
Пользовательский
Предварительные установки могут также читаться от диска и использоваться для установки состояния аудиоустройства. Эти предварительные установки сохранены на диске в одном из этих трех расположений с расширением .aupreset:
Пользовательский Домен - ~/Library/Audio/Presets/
Локальный Домен-/Library/Audio/Presets/
Сетевой домен-/Network/Library/Audio/Presets/
Предварительные установки, сохраненные в этих каталогах, должны быть организованы в более глубоких каталогах именем производителя и именем Аудиоустройства. Это - единственный способ связать предварительную установку с, он сопровождает Аудиоустройство. Например, предварительные установки Аудиоустройства SampleEffect включали Core Audio, в котором сохранен SDK:
~/Library/Audio/Presets/Acme Inc/SampleEffectUnit/MyPreset.aupreset
Восстановление предварительной установки от файла
Информационное свойство класса представляет текущее состояние аудиоустройства. Это свойство сохранено в a CFPropertyListRef, который является форматом XML, который может быть брошен к a CFDictionaryRef или NSDictionary. После определения местоположения и получения аудиоустройства утверждают информацию от .aupreset файла, можно восстановить аудиоустройство с информацией состояния при помощи метода AudioUnitSetProperty с kAudioUnitProperty_ClassInfo.
Перечисление 2 , восстанавливающее предварительные установки
AudioUnitSetProperty(theAudioUnit, |
kAudioUnitProperty_ClassInfo, |
kAudioUnitScope_Global, |
0, |
&inClassInfo, |
sizeof(inClassInfo))); |
// now that we've potentially changed the values of the parameter we |
// should notify any listeners of this change: |
AudioUnitParameter changedUnit; |
changedUnit.mAudioUnit = theAudioUnit; |
changedUnit.mParameterID = kAUParameterListener_AnyParameter; |
RequireNoErr (AUParameterListenerNotify (NULL, NULL, &changedUnit)); |
Сохранение пользовательских пользовательских предварительных установок
Для сохранения аудиоустройства утверждают к .aupreset файлу, необходимо установить аудиоустройство, чтобы отразить новую предварительную установку и получить информацию класса, которая будет сохранена на диск.
Прежде, чем получить текущее состояние, необходимо создать новый AUPreset и установить его как существующую предварительную установку с помощью свойства ID kAudioUnitProperty_PresentPreset. AUPreset должны иметь имя и иметь предварительно установленное число меньше, чем нуль. Установка этого свойства назовет новую предварительную установку, которую Вы создаете и будете включены при выборке информации о состоянии аудиоустройства позже для сохранения как файл.
Перечисление 3 , сохраняющее предварительные установки
AUPreset myPreset; |
myPreset.presetNumber = -1; //should be less than zero ,(user preset) |
myPreset.presetName = CFSTR("Name of New Preset"); |
AudioUnitSetProperty(SomeAudioUnit, |
kAudioUnitProperty_PresentPreset, |
kAudioUnitScope_Global, |
0, |
&myPreset, |
sizeof(AUPreset)); |
Для получения текущего состояния из аудиоустройства использовать AudioUnitGetProperty с kAudioUnitProperty_ClassInfo свойство. Пример ниже:
Перечисление 4 , Получающее информацию класса (текущие настройки)
CFPropertyListRef myClassData; |
UInt32 size = sizeof(CFPropertyListRef); |
AudioUnitGetProperty(SomeAudioUnit, |
kAudioUnitProperty_ClassInfo, |
kAudioUnitScope_Global, |
0, |
&myClassData, |
&size); |
После получения информации о текущем состоянии сохраните эти данные как .aupreset файл в локальной переменной, пользователе или сетевом домене, как описано выше.
Заключение
Предварительные установки Аудиоустройства упрощают нагрузку, ставит пользователей для ручного сброса состояния аудиоустройства каждый раз, когда это загружается. Предварительные установки делают аудиоустройства использования и их хост-приложение намного проще для пользователей.
История версии документа
| Дата | Примечания |
|---|---|
| 09.08.2013 | Исправленная незначительная ошибка в Перечислении 3, которое заставило бы его возвращать kAudioUnitErr_InvalidPropertyValue. |
| 06.03.2012 | Новый документ, иллюстрирующий, как приложения, размещающие Аудиоустройства правильно, сохраняют и восстанавливают предварительные установки аудиоустройства. |