Skip to content

Commit da4ff29

Browse files
committed
Add Stereo Input toggle in my avatar's context menu
1 parent 85961d5 commit da4ff29

File tree

9 files changed

+1820
-3
lines changed

9 files changed

+1820
-3
lines changed

examples/nodejs/djBot/package-lock.json

+1,762
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

experiments/nodejs/Spatial-Audio-Rooms/src/client/css/controls.scss

+2-1
Original file line numberDiff line numberDiff line change
@@ -892,7 +892,8 @@ $bottom-controls-container-height: 72px;
892892

893893
.echoCancellation,
894894
.agc,
895-
.noiseSuppression {
895+
.noiseSuppression,
896+
.stereoInput {
896897
&Container {
897898
display: flex;
898899
width: 100%;

experiments/nodejs/Spatial-Audio-Rooms/src/client/ts/connection/ConnectionController.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ export class ConnectionController {
6767
// Set up our `HiFiCommunicator` object and supply our input media stream.
6868
console.log("Setting input audio stream on `this.hifiCommunicator`...");
6969
try {
70-
await this.hifiCommunicator.setInputAudioMediaStream(avDevicesController.inputAudioMediaStream);
70+
await this.hifiCommunicator.setInputAudioMediaStream(avDevicesController.inputAudioMediaStream, userDataController.myAvatar.myUserData.stereoInput);
7171
await this.hifiCommunicator.setInputAudioMuted(userDataController.myAvatar.myUserData.isMuted);
7272
resolve(avDevicesController.inputAudioMediaStream);
7373
} catch (e) {

experiments/nodejs/Spatial-Audio-Rooms/src/client/ts/ui/UIController.ts

+28
Original file line numberDiff line numberDiff line change
@@ -405,6 +405,33 @@ export class UIController {
405405
noiseSuppressionContainer.appendChild(noiseSuppressionCheckboxLabel);
406406
}
407407

408+
generateStereoInputUI(userData: UserData) {
409+
if (userData.visitIDHash !== userDataController.myAvatar.myUserData.visitIDHash || typeof (userData.stereoInput) !== "boolean") {
410+
return;
411+
}
412+
413+
let stereoInputContainer = document.createElement("div");
414+
stereoInputContainer.classList.add("stereoInputContainer");
415+
this.avatarContextMenu.appendChild(stereoInputContainer);
416+
417+
let stereoInputCheckbox = document.createElement("input");
418+
stereoInputCheckbox.id = "stereoInputCheckbox";
419+
stereoInputCheckbox.classList.add("stereoInputCheckbox");
420+
stereoInputCheckbox.type = "checkbox";
421+
stereoInputCheckbox.checked = userData.stereoInput;
422+
stereoInputCheckbox.addEventListener("click", (e) => {
423+
let newStereoInputStatus = (<HTMLInputElement>e.target).checked;
424+
userInputController.setStereoInputStatus(newStereoInputStatus)
425+
});
426+
stereoInputContainer.appendChild(stereoInputCheckbox);
427+
428+
let stereoInputCheckboxLabel = document.createElement("label");
429+
stereoInputCheckboxLabel.setAttribute("for", "stereoInputCheckbox");
430+
stereoInputCheckboxLabel.classList.add("stereoInputCheckboxLabel");
431+
stereoInputCheckboxLabel.innerHTML = "Stereo Input";
432+
stereoInputContainer.appendChild(stereoInputCheckboxLabel);
433+
}
434+
408435
generateUserGainForThisConnectionUI(userData: UserData) {
409436
let hifiCommunicator = connectionController.hifiCommunicator;
410437

@@ -546,6 +573,7 @@ export class UIController {
546573
this.generateEchoCancellationUI(userData);
547574
this.generateAGCUI(userData);
548575
this.generateNoiseSuppressionUI(userData);
576+
this.generateStereoInputUI(userData);
549577
this.generateUserGainForThisConnectionUI(userData);
550578
this.generateHiFiGainUI(userData);
551579
this.generateVolumeThresholdUI(userData);

experiments/nodejs/Spatial-Audio-Rooms/src/client/ts/ui/UserInputController.ts

+5
Original file line numberDiff line numberDiff line change
@@ -449,6 +449,11 @@ export class UserInputController {
449449
connectionController.setNewInputAudioMediaStream();
450450
}
451451

452+
setStereoInputStatus(newStereoInputStatus: boolean) {
453+
userDataController.myAvatar.myUserData.stereoInput = newStereoInputStatus;
454+
connectionController.setNewInputAudioMediaStream();
455+
}
456+
452457
setHiFiGainFromSliderValue(newHiFiGainSliderValue: string) {
453458
let newHiFiGain = uiController.hiFiGainFromSliderValue(newHiFiGainSliderValue);
454459

experiments/nodejs/Spatial-Audio-Rooms/src/client/ts/userData/UserDataController.ts

+2
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ export interface UserData {
4141
echoCancellationEnabled?: boolean;
4242
agcEnabled?: boolean;
4343
noiseSuppressionEnabled?: boolean;
44+
stereoInput?: boolean;
4445
currentWatchPartyRoomName?: string;
4546
tempData?: TempUserData;
4647
}
@@ -90,6 +91,7 @@ class MyAvatar {
9091
echoCancellationEnabled: false,
9192
agcEnabled: false,
9293
noiseSuppressionEnabled: false,
94+
stereoInput: false,
9395
currentWatchPartyRoomName: undefined,
9496
tempData: {},
9597
};

experiments/nodejs/Spatial-Audio-Rooms/src/client/ts/utilities/Utilities.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ export class Utilities {
7676

7777
static hexColorFromString(string: string) {
7878
if (!string) {
79-
return;
79+
return "#FFFFFF";
8080
}
8181

8282
let hash = 0;
Loading
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{
2+
"name": "Website Demo Config",
3+
"comments": "A config JSON. Yay",
4+
"configJSONVersion": "v1.0.0",
5+
"theme": "light",
6+
"backgroundColorHex": "#FFFFFF",
7+
"rooms": [
8+
{
9+
"name": " ",
10+
"roomCenter": { "x": 0, "z": 0 },
11+
"seatingCenter": { "x": 0, "z": 0 },
12+
"dimensions": { "x": 13, "z": 7.3125 },
13+
"seatingRadiusM": 0.00001,
14+
"roomImageSRC": "/spatial-audio-rooms/rooms/website-demo.png",
15+
"numSeatsInRoom": 1
16+
}
17+
],
18+
"landmarks": []
19+
}

0 commit comments

Comments
 (0)