@newgameplusinc/odyssey-audio-video-sdk-dev 1.0.8 → 1.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -65,6 +65,16 @@ class SpatialAudioManager extends EventManager_1.EventManager {
65
65
  const panner = this.audioContext.createPanner();
66
66
  const analyser = this.audioContext.createAnalyser();
67
67
  const gain = this.audioContext.createGain();
68
+ // Create BiquadFilter nodes for static/noise reduction
69
+ // Based on: https://tagdiwalaviral.medium.com/struggles-of-noise-reduction-in-rtc-part-2-2526f8179442
70
+ const highpassFilter = this.audioContext.createBiquadFilter();
71
+ highpassFilter.type = "highpass";
72
+ highpassFilter.frequency.value = 85; // Conservative value to preserve male voice depth
73
+ highpassFilter.Q.value = 1.0; // Quality factor
74
+ const lowpassFilter = this.audioContext.createBiquadFilter();
75
+ lowpassFilter.type = "lowpass";
76
+ lowpassFilter.frequency.value = 7500; // Below 8kHz to avoid flat/muffled sound
77
+ lowpassFilter.Q.value = 1.0; // Quality factor
68
78
  // Configure Panner for realistic 3D spatial audio
69
79
  panner.panningModel = "HRTF"; // Head-Related Transfer Function for realistic 3D
70
80
  panner.distanceModel = "inverse"; // Natural distance falloff
@@ -78,12 +88,17 @@ class SpatialAudioManager extends EventManager_1.EventManager {
78
88
  gain.gain.value = 1.0;
79
89
  if (bypassSpatialization) {
80
90
  console.log(`🔊 TESTING: Connecting audio directly to destination (bypassing spatial audio) for ${participantId}`);
81
- source.connect(analyser);
91
+ source.connect(highpassFilter);
92
+ highpassFilter.connect(lowpassFilter);
93
+ lowpassFilter.connect(analyser);
82
94
  analyser.connect(this.masterGainNode);
83
95
  }
84
96
  else {
85
97
  // Standard spatialized path with full audio chain
86
- source.connect(panner);
98
+ // Audio Chain: source -> filters -> panner -> analyser -> gain -> masterGain -> compressor -> destination
99
+ source.connect(highpassFilter);
100
+ highpassFilter.connect(lowpassFilter);
101
+ lowpassFilter.connect(panner);
87
102
  panner.connect(analyser);
88
103
  analyser.connect(gain);
89
104
  gain.connect(this.masterGainNode);
@@ -93,6 +108,8 @@ class SpatialAudioManager extends EventManager_1.EventManager {
93
108
  panner,
94
109
  analyser,
95
110
  gain,
111
+ highpassFilter,
112
+ lowpassFilter,
96
113
  stream,
97
114
  });
98
115
  console.log(`🎧 Spatial audio setup complete for ${participantId}:`, {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@newgameplusinc/odyssey-audio-video-sdk-dev",
3
- "version": "1.0.8",
3
+ "version": "1.0.9",
4
4
  "description": "Odyssey Spatial Audio & Video SDK using MediaSoup for real-time communication",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",