AVAudioEngine
と を使用して、Swift iOS アプリで位置オーディオを再生しようとしていAVAudioEnvironmentNode
ます。オーディオを正常に再生し、ステレオで両方の出力間をシフトして空間化して聞くことができますが、シミュレーターでのみです。iPhone で同じアプリを実行すると、オーディオは再生されますが、ソースが移動されたときにパンするのではなく、両方の耳で再生されます。デバイスのオーディオ出力を手動で処理するなど、特別な設定が必要ですか?
オーディオ エンジンとプレーヤーを次のように初期化します。
let audioEngine = AVAudioEngine()
let audioEnv = AVAudioEnvironmentNode()
audioEngine.attach(audioEnv)
audioEngine.connect(
audioEnv,
to: audioEngine.mainMixerNode,
format: audioEnv.outputFormat(forBus: 0)
)
try audioEngine.start()
let player = AVAudioPlayerNode()
audioEngine.attach(player)
audioEngine.connect(
player,
to: audioEnv,
format: AVAudioFormat(standardFormatWithSampleRate: 44100, channels: 1)
)
player.scheduleFile(...)
player.play()
ソース ファイルはモノラル チャンネル.wav
です。
将来のある時点で、プレーヤーの位置を変更します。
player.position = AVAudio3DPoint(x: 5, y: 0, z: 0)
これは、片耳でのみ (またはほとんど) 再生する必要があります。iOS シミュレーターで実行すると、期待どおりの動作をします。ただし、実際のデバイスでplayer.position
は、設定に関係なく、両方の耳で均等に再生されます。の設定が関係していると思われますaudioEngine
。
考え?