如果音量大于 0,Web 音频立体声声像器无法正常工作

Web audio stereo panner not working correctly if the volume is greater than 0

我正在创建 angular 带有自定义网络音频播放器的应用程序。
我创建了 2 个滑块 - 1 个用于控制音量,1 个用于控制 stereoPan(L R 通道)。
问题是,如果音量未设置为 0,则平移不会禁用(当它应该禁用时)频道。
例如,如果 volume = 0.5 和 pan = -1 那么只有左声道应该产生声音但是没有 - 两个声道都在工作(右声道比左声道弱但它仍然发出声音)......当音量 = 0 一切正常...
这就是我创建音量和平移节点的方式

        $scope.AudioBufferSource.buffer = AudioBuffer;

        $scope.AudioStereoPannerNode = $scope.AudioContext.createStereoPanner();
        $scope.AudioGainerNode = $scope.AudioContext.createGain();

        $scope.AudioBufferSource.connect($scope.AudioStereoPannerNode);
        $scope.AudioBufferSource.connect($scope.AudioGainerNode);

        $scope.AudioStereoPannerNode.connect($scope.AudioContext.destination);
        $scope.AudioGainerNode.connect($scope.AudioContext.destination);

您创建的图表不正确。您将增益节点和声像器节点的输出都连接到目标。因此,除非增益为 0 并且来自声像器,否则您总是会从增益节点(在两个通道上)听到一些声音。

您可能想将声像器连接到目的地的增益(反之亦然)。