steep-balloon-41261
04/27/2023, 11:21 AMpolite-kilobyte-67570
04/27/2023, 11:47 AMI think you will want to set the actual panner node here? you should remove • track.pannerNode = pannerNode • sourceNode.connect(pannerNode).connect(audioContext.destination) you need to • supply your own audio context inCopy codetrack.setWebAudioPlugins();
{ expWebAudioMix: {audioContext: this.audioContext}}
• call track.setWebAudioPlugins([pannerNode]);
shy-farmer-35617
04/27/2023, 11:57 AMshy-farmer-35617
04/27/2023, 12:25 PMshy-farmer-35617
04/27/2023, 12:40 PMvar AC = new AudioContext();
const room = new LivekitClient.Room({options : {expWebAudioMix: AC}});
function handleTrackSubscribed(track, publication, participant) {
if (track.kind === LivekitClient.Track.Kind.Audio) {
var audioContext = this.audioContext;
const sourceNode = audioContext.createMediaStreamSource(track.mediaStream)
// Create and set PannerNode
var pannerNode = new PannerNode(audioContext, {
distanceModel: "exponential",
coneInnerAngle: 360,
coneOuterAngle: 360,
refDistance:12,
maxDistance: 15,
rolloffFactor:2,
coneOuterGain: 0,
});
//Define Start Position
pannerNode.positionX.setValueAtTime(10000, 0);
pannerNode.positionY.setValueAtTime(10000, 0);
pannerNode.positionZ.setValueAtTime(0, 0);
//Connect to destination
track.setWebAudioPlugins([pannerNode]);
track.attach();
}
polite-kilobyte-67570
04/27/2023, 3:12 PMlinear
distance model anyways… but if panning is working already the attenuation should work too as long as your rollof and refdistance settings make sense.shy-farmer-35617
04/27/2023, 4:03 PMshy-farmer-35617
04/27/2023, 4:05 PMshy-farmer-35617
04/27/2023, 4:06 PMpolite-kilobyte-67570
04/27/2023, 4:10 PMdistanceModel: "linear",
refDistance: 1,
maxDistance: 10000,
rolloffFactor: 10,
shy-farmer-35617
04/27/2023, 4:22 PMshy-farmer-35617
04/27/2023, 4:27 PMvar AC = new AudioContext();
const room = new LivekitClient.Room({options : {expWebAudioMix: AC}});
function handleTrackSubscribed(track, publication, participant) {
if (track.kind === LivekitClient.Track.Kind.Audio) {
var audioContext = this.audioContext;
// Create and set PannerNode
var pannerNode = new PannerNode(audioContext, {
distanceModel: "linear",
refDistance:1,
maxDistance: 1000,
rolloffFactor:10,
});
track.setWebAudioPlugins([pannerNode]);
track.attach();
// Create and set Listener
SpeakerPositions.set(participant.identity, new Map());
SpeakerPositions.get(participant.identity).set("panner", pannerNode);
SpeakerPositions.get(participant.identity).set("position", {x:0, y: 0, z:0});
}
}
shy-farmer-35617
04/27/2023, 4:50 PMpolite-kilobyte-67570
04/27/2023, 5:21 PMexpWebAudioMix: AC
.
it should say expWebAudioMix: {audioContext: AC}
shy-farmer-35617
04/27/2023, 5:23 PMshy-farmer-35617
04/27/2023, 5:23 PMshy-farmer-35617
04/27/2023, 5:44 PMshy-farmer-35617
04/27/2023, 5:44 PM