2013-03-20 4 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

[Waveform Audio Reference] (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

ответ

5

Вам нужен low-pass filter. Вы можете добиться этого, используя научную библиотеку, которая сделает для вас большую часть (например, открытие и сохранение wav-файлов). Но, прежде чем писать код, вы должны понять, какие фильтры есть, и лучший способ сделать это - прочитать некоторые статьи или книги и играть с MATLAB.

Здесь есть list цифровых библиотек, таких как IT++ или GNU Scientific Library. Я думаю, вы также можете использовать R в C++, with some parsers. Наконец, вы также можете использовать функции MATLAB на C или C++.

Если вы хотите исследовать больше: то, что вы хотите, называется обработкой сигналов (на самом деле обработка сигнала шире, чем просто аудио).