2013-03-20 39 views
0

我想加载一首歌曲,修改它,然后保存新歌曲。我正在寻找一种在C++中实现这一点的方法。用C++修改波形文件

我的目标是制作一个只能保持低音频率并去除高频的软件。

我不知道是否有一些库,让我做这样的事情

File music = new File("song.wave"); 
int frequence = 500; 

for (int i = 0; music.data.lenght > i; i++) { 
    if (music.data[i] > frequence) { 
     music.data[i] = 0; //Or something like this 
    } 
} 

music.save("newsong.wave"); 

我要找线索,意见或建议。

+2

[波形音频参考](http://msdn.microsoft.com/en-us/library/ms713504%28v=vs.85%29.aspx) – 2013-03-20 14:10:09

+0

您需要一个[低通滤波器](http: //en.wikipedia.org/wiki/Low-pass_filter)。搜索科学图书馆,或者你可以使用Matlab。 – Synxis 2013-03-20 14:30:04

回答

5

您需要一个low-pass filter。你可以通过使用一个科学库来实现这一点,这个库会为你做很大一部分工作(例如打开和保存wav文件)。但是,在编写代码之前,您必须了解过滤器是什么,最好的方法是阅读一些文章或书籍并使用MATLAB进行操作。

这里有一个list数字图书馆,如IT++GNU Scientific Library。我想你也可以在C++中使用Rwith some parsers。最后,您还可以在C或C++中使用MATLAB函数。

如果你想研究更多:你想要什么叫做信号处理(实际上,信号处理比只有音频更广泛)。