在Android Studio中使用AudioTrack播放之前反转音频样本极性

问题描述 投票:1回答:1

我正在尝试创建卡拉OK应用。从我的研究中,当您将声道从立体声拆分为单声道,然后反转其中一个单声道时,您可以获得mp3的乐器(来源:https://manual.audacityteam.org/man/tutorial_vocal_removal_and_isolation.html->案例1)。

使用Jlayer库,我已经能够将mp3转换为我正在写入音轨的音频样本。

我的挑战是,我需要将样本分为左单声道和右单声道,然后反转左单声道。我尝试了以下代码,但没有任何变化,对音频没有影响。

  byte[] bytes = outStream.toByteArray(); //ALL AUDIO SAMPLES ARE HERE

for(int i = 0, index = 0; index < bytes.length -4; i += 4){
                samples[index + 0] = (byte) (bytes[i]);  //LEFT CHANNEL
                samples[index + 1] = (byte) (bytes[i +1]);


                samples[index + 2] = (byte) (bytes[i +2]  * -1); // RIGHT CHANNEL (Inverting Polarity)
                samples[index + 3] = (byte) (bytes[i+3]  * -1);

                index = index + 4;

 }
android android-studio audio audiotrack
1个回答
0
投票

是的,我设法解决了自己的问题。我翻转了第一个和最后一个样本,然后我工作了。这是编辑后的代码

 byte[] bytes = outStream.toByteArray(); //ALL AUDIO SAMPLES ARE HERE

for(int i = 0, index = 0; index < bytes.length -4; i += 4){
            samples[index + 0] = (byte) (bytes[i] * -1);  //LEFT CHANNEL
            samples[index + 1] = (byte) (bytes[i +1]);


            samples[index + 2] = (byte) (bytes[i +2]  ); // RIGHT CHANNEL (Inverting Polarity)
            samples[index + 3] = (byte) (bytes[i+3]  * -1);

            index = index + 4;

 }
© www.soinside.com 2019 - 2024. All rights reserved.