@newgameplusinc/odyssey-audio-video-sdk-dev 1.0.263 → 1.0.264
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.
|
@@ -38,13 +38,13 @@ class SpatialAudioChannel {
|
|
|
38
38
|
// Master gain
|
|
39
39
|
this.masterGainNode = this.audioContext.createGain();
|
|
40
40
|
this.masterGainNode.gain.value = 1.0;
|
|
41
|
-
// Master compressor
|
|
41
|
+
// Master compressor - gentle settings for voice clarity
|
|
42
42
|
this.compressor = this.audioContext.createDynamicsCompressor();
|
|
43
|
-
this.compressor.threshold.value = -
|
|
44
|
-
this.compressor.knee.value =
|
|
45
|
-
this.compressor.ratio.value =
|
|
46
|
-
this.compressor.attack.value = 0.
|
|
47
|
-
this.compressor.release.value = 0.25;
|
|
43
|
+
this.compressor.threshold.value = -24; // Higher threshold - only compress loud peaks
|
|
44
|
+
this.compressor.knee.value = 30; // Soft knee for natural transition
|
|
45
|
+
this.compressor.ratio.value = 3; // Gentle ratio for voice
|
|
46
|
+
this.compressor.attack.value = 0.003; // 3ms attack - catch transients but not too fast
|
|
47
|
+
this.compressor.release.value = 0.25; // 250ms release - smooth recovery
|
|
48
48
|
// Connect master chain
|
|
49
49
|
this.masterGainNode.connect(this.compressor);
|
|
50
50
|
this.compressor.connect(this.audioContext.destination);
|
|
@@ -399,12 +399,13 @@ class SpatialAudioChannel {
|
|
|
399
399
|
return { monoSplitter, monoGainL, monoGainR, monoMerger, stereoUpmixer };
|
|
400
400
|
}
|
|
401
401
|
createParticipantCompressor() {
|
|
402
|
+
// Per-participant compressor - light touch to preserve voice dynamics
|
|
402
403
|
const compressor = this.audioContext.createDynamicsCompressor();
|
|
403
|
-
compressor.threshold.value = -
|
|
404
|
-
compressor.knee.value =
|
|
405
|
-
compressor.ratio.value = 20
|
|
406
|
-
compressor.attack.value = 0.
|
|
407
|
-
compressor.release.value = 0.
|
|
404
|
+
compressor.threshold.value = -18; // Only compress loud speech
|
|
405
|
+
compressor.knee.value = 12; // Soft knee for natural sound
|
|
406
|
+
compressor.ratio.value = 4; // Moderate ratio (was 20:1 - way too aggressive)
|
|
407
|
+
compressor.attack.value = 0.003; // 3ms attack - catch transients naturally
|
|
408
|
+
compressor.release.value = 0.15; // 150ms release - smooth recovery, no pumping
|
|
408
409
|
return compressor;
|
|
409
410
|
}
|
|
410
411
|
createFilters() {
|
package/package.json
CHANGED