setOrientation() - орієнтація слухача в просторі.
AudioListener.setOrientation(x, y, z, xUp, yUp, zUp);
AudioListener - об'єкт AudioListener.
x - позиція носу слухача по осі X в 3D просторі. Значення по замовчуванню 0.
y - позиція носу слухача по осі Y в 3D просторі. Значення по замовчуванню 0.
z - позиція носу слухача по осі Z в 3D просторі. Значення по замовчуванню -1.
xUp - позиція верхньої частини голови слухача по осі X в 3D просторі. Значення по замовчуванню 0.
yUp - позиція верхньої частини голови слухача по осі Y в 3D просторі. Значення по замовчуванню 1.
zUp - позиція верхньої частини голови слухача по осі Z в 3D просторі. Значення по замовчуванню 0.
setOrientation() метод об'єкту AudioListener для зміни орієнтації людини яка слухає звук в 3D просторі.
Об'єкт PannerNode використовує ці орієнтації по відношенню до окремих джерел звуку.
Деякі браузери не підтримують метод setOrientation(), а підтримують властивості: forwardX, forwardY, forwardZ, upX, upY, upZ.
<audio id="player" src="/dani/test.ogg"></audio>
if(window.AudioContext){
var player = document.getElementById('player');
var audio = new AudioContext();
var source = audio.createMediaElementSource(player);
source.connect(audio.destination);
audio.listener.setOrientation(1,0,2,2,0,2);
player.play(); //починаємо відтворення
}else alert('Ваш браузер не підтримує Web Audio');
Приклад зміни значень параметрів:
function resizePos(){
var x=document.getElementById('posx'), y=document.getElementById('posy'), z=document.getElementById('posz'), xUp=document.getElementById('posxup'), yUp=document.getElementById('posyup'), zUp=document.getElementById('poszup');
document.getElementById('lab_posx').innerText=x.value;
document.getElementById('lab_posy').innerText=y.value;
document.getElementById('lab_posz').innerText=z.value;
document.getElementById('lab_posxup').innerText=xUp.value;
document.getElementById('lab_posyup').innerText=yUp.value;
document.getElementById('lab_poszup').innerText=zUp.value;
audio.listener.setOrientation(x.value, y.value, z.value, xUp.value, yUp.value, zUp.value);
}
document.getElementById('posx').onchange=document.getElementById('posy').onchange=document.getElementById('posz').onchange=document.getElementById('posxup').onchange=document.getElementById('posyup').onchange=document.getElementById('poszup').onchange=resizePos;
if(window.AudioContext){
var player = document.getElementById('player2');
var audio = new AudioContext();
var source = audio.createMediaElementSource(player);
var paner=audio.createPanner();
source.connect(paner);
paner.connect(audio.destination);
audio.listener.setOrientation(2,1,5,2,3,2);
paner.positionX.value=2;
paner.positionY.value=3;
paner.orientationX.value=15;
paner.orientationY.value=5;
paner.orientationZ.value=-15;
player.play(); //починаємо відтворення
}else alert('Ваш браузер не підтримує Web Audio');