如何将双声道音频转换为具有控制每个声道音量的功能的单声道?

柠檬

我试图在两个耳机中收听2声道音频(左右耳机中的音频相同)。

现在的情况:

Slider居中-效果很好(两个耳机中的两个通道)。

滑块在右侧-效果很好(两个耳机都位于右侧声道)。

滑块在左侧-不起作用(仅左侧耳机中的左声道)。

const splitter = wavesurfer.backend.ac.createChannelSplitter(2);
const merger = wavesurfer.backend.ac.createChannelMerger(2);
const leftGain = wavesurfer.backend.ac.createGain();
const rightGain = wavesurfer.backend.ac.createGain();
const panner = wavesurfer.backend.ac.createPanner();

splitter.connect(leftGain, 0);
splitter.connect(rightGain, 1);

leftGain.connect(merger, 0, 0);
rightGain.connect(merger, 0, 1);

merger.connect(panner);

let slider = document.querySelector('#Slider');
$(slider ).change(function () {
    rightGain.gain.value = Number(slider.value);
    leftGain.gain.value = 1- (Number(slider.value));
})

wavesurfer.backend.setFilters([splitter, leftGain, rightGain, merger]);

当滑杆在左侧时,我只想在两个耳机中听到左声道。有人能帮我吗?

问题

克里斯古坦丁

调用setFilters()时, waversurfer.js将以简单链连接所有提供的节点。在您的情况下,这意味着它将创建其他连接,如下所示:

splitter.connect(leftGain);
leftGain.connect(rightGain);
rightGain.connect(merger);

这可能不是您想要的。但是可以利用这种行为。我修改了您的示例。

const input = wavesurfer.backend.ac.createGain();
const splitter = wavesurfer.backend.ac.createChannelSplitter(2);
const merger = wavesurfer.backend.ac.createChannelMerger(2);
const leftGain = wavesurfer.backend.ac.createGain();
const rightGain = wavesurfer.backend.ac.createGain();

// This will make sure that a mono signal gets upmixed to stereo.
// If you always have stereo sound you can remove it.
input.channelCountMode = 'explicit';

// It is only necessary to connect the right channel
// because this is the one which needs optional parameters.
splitter.connect(rightGain, 1);
rightGain.connect(merger);
rightGain.connect(merger, 0, 1);

// Only the one connection which needs an optional parameter
// needs to be done for the left channel
leftGain.connect(merger, 0, 1);

// wavesufer.js will connect everything else.
wavesurfer.backend.setFilters([ input, splitter, leftGain, merger ]);

我还添加了另一个GainNode作为第一个节点,以确保在单声道的情况下将信号上混为立体声。我删除了PannerNode,因为在您的示例中未使用它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

ffmpeg如何使用音频声像滤镜将立体声转换为单声道

将简单的单声道波形转换为具有位置的3D声音

在一定音量下将音频切换为单声道

UnsupportedAudioFileException 来自立体声但不是双声道音频

将立体声音频转换为AVI文件中的单声道

Python将立体声.flac转换为单声道

从助焊剂转换为单声道

单声道魔术如何?

FFmpeg:如何将多个单声道文件合并为一个多声道文件?

如何使用FFmpeg将立体声转换为单声道?

如何在另一个具有循环依赖性的单声道中使用单声道

将多声道音频.Mov扁平化为单声道音频.Mov的命令行方式?

尝试使用sox或ffmpeg将2声道声音文件转换为单声道时出错

如何安装单声道 5.18.0?

如何从单声道创建通量

将一个流12声道音频拆分为单独的单声道?

具有多声道音频的QEMU(5.1等)

将单声道音频数据传递到AVAudioEnvironmentNode

如何解决单声道音频的无效形状

audioSprite / ffmpeg中的单声道音频具有与立体声相同的比特率

将立体声转换成单声道输出以规范不平衡声道?

蓝牙音频突然单声道

将单声道WAV批量转换为立体声逐字记录

使用Lame将mp3从单声道转换为立体声

不使用block()/ blockFirst()/ blockLast()将单声道转换为对象java

将16位立体声转换为16位单声道声音

将立体声文件转换为单声道但保留峰值和 RMS 响度

如何使用组合功能压缩8个以上的单声道

如何将连续单声道分解为左右伴随?