2014-01-20 44 views
0

有没有办法分析应用程序记录的音频并将其波形逆转?例如在模拟音频中,声波就像一个0,1,-1的正弦波。我想反过来,以便1将-1和-1是1.如何使用处理软件来做到这一点?如何使用处理反转音频波形

+1

如果您正在尝试寻找一些声学效果,这将不会改变文件的声音 - 反转信号将听起来与人耳完全一样。 – kevinsa5

+0

你所描述的是反转,而不是反转(反转波将意味着反向播放)。大多数软件都具有波反转功能。例如,在Audacity中,您只需在“效果”菜单中选择“反转”即可。有人说,这个问题是关于SO的话题,因为看起来你不是在谈论以编程方式做这件事,而是通过最终用户软件。 –

回答

1

尼科斯是正确的,你正在寻找的操作被称为反转而不是反向。这简单地通过将每个样本乘以-1来实现。

这样做的最好方法是使用Minim处理的音频库。您可以扩展UGen类以创建新的效果处理器,以翻转通过它的每个样本。我在下面的例子中加入了正弦波。你可以改变它来成为其他音频源,然后按你喜欢的方式绘制它。

import ddf.minim.*; 
import ddf.minim.ugens.*; 

Minim minim; 
AudioOutput out; 

void setup() 
{ 
    size(300, 200, P2D); 

    minim = new Minim(this); 
    out = minim.getLineOut(); 

    Oscil osc; 
    Invert inv; 
    Constant cutoff; 

    // initialize the oscillator 
    // (a sawtooth wave has energy across the spectrum) 
    osc = new Oscil(500, 0.2, Waves.SINE); 
    inv = new Invert(); 
    osc.patch(inv).patch(out); 
} 

void draw() 
{ 
    background(0); 

} 

public class Invert extends UGen{ 

    public UGenInput audio; 

    Invert() 
    { 
    audio = new UGenInput(InputType.AUDIO); 
    } 

    @Override 
    protected void uGenerate (float[] channels) 
    { 
    if (audio.isPatched()) 
    { 
     for (int i = 0; i < channels.length; i++){ 
     // this is where we multiple each sample by -1 
     channels[i] = audio.getLastValues()[i] * -1; 
     } 
    } 
    } 
}