Изменение громкости SCNAudioPlayer в реальном времени – SwiftIOS

Программируем под IOS
Ответить
Anonymous
 Изменение громкости SCNAudioPlayer в реальном времени – Swift

Сообщение Anonymous »

Я пытаюсь понять, как изменить громкость SCNAudioPlayer в реальном времени.

В настоящее время у меня есть SCNAudioSource, подключенный к SCNAudioPlayer. Этот аудиоплеер затем назначается SCNNode, чтобы мой звук использовал пространственную обработку звука SceneKits.

В нынешнем виде я могу изменить громкость каждого SCNNode с использованием SCNAudioSource.volume, запускаемого логической переменной vol. Ниже приведен фрагмент моего кода:

Код: Выделить всё

(audioSource, audioCount) = soundFileSelect(audioFileIndex: 0)
audioSource?.isPositional = true
if vol {
audioSource?.volume = 1.0
}
else {
audioSource?.volume = 0.0
}
let audioPlayer = SCNAudioPlayer(source: audioSource!)
geometryNode.addAudioPlayer(audioPlayer)
let play = SCNAction.playAudio(audioSource!, waitForCompletion: true)
let loopPlay = SCNAction.repeatForever(play)
geometryNode.runAction(loopPlay)
Однако это изменяет только настройку громкости источника по умолчанию, и это происходит только при создании узла. Я пытаюсь изменить громкость в реальном времени после нажатия кнопки.

Я чувствую, что упускаю что-то простое, и поискал в Интернете документацию и примеры. но я действительно борюсь. Судя по документации API Apple, я вполне уверен, что это возможно. Насколько я могу судить, вам необходимо использовать свойство audioNode, связанное с SCNAudioPlayer, которое является частью протокола AVAudioMixing. Использование этого свойства громкости AVAudioMxing должно быть тем, что мне нужно!

Однако я, хоть убей, не могу понять, как реализовать этот процесс в коде в рамках моей текущей установки. Я могу получить доступ к mainMixer.volume/

Код: Выделить всё

outputvolume
, например:

Код: Выделить всё

audioPlayer.audioNode?.engine?.mainMixerNode.outputVolume=0
но, похоже, это не работает. Как компоненты AV и SCN связаны друг с другом?

Любая помощь или примеры того, как это реализовать, будем очень признательны!

Подробнее здесь: https://stackoverflow.com/questions/439 ... time-swift
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»