Руководство для начинающих по работе со звуком в C / C ++? - PullRequest
12 голосов
/ 29 ноября 2009

Мне всегда было любопытно узнать о программном обеспечении для преобразования звука, но я никогда не видел должного объяснения с точки зрения начинающих, как написать простую программу, которая конвертирует, например, mp3-файл в wav-файл. Я не спрашиваю ни о каком сложном алгоритме, просто о небольшом примере с использованием простой библиотеки. В поисках SO я нашел несколько имен, в том числе:

  • Lame
  • Набор инструментов для синтеза
  • OpenAL
  • DirectSound

Но я не могу найти простой пример любой из этих библиотек. Обычно я не возражаю пробираться сквозь тонны кода, но здесь у меня нет абсолютно никаких знаний об этом предмете, и я всегда чувствую, что стреляю в темноте.

У кого-нибудь здесь есть простой пример / учебник по конвертации звукового файла с использованием любой из этих библиотек? Мой вопрос специально направлен на C / C ++, потому что это два языка, которые я изучаю в настоящее время, и поэтому я хотел бы продолжить уделять им внимание.

Редактировать : Я забыл упомянуть одну вещь: я в * NIX системе.

Ответы [ 4 ]

3 голосов
/ 30 ноября 2009

Спасибо всем за ответы! Я как бы собрал их вместе, чтобы успешно создать небольшую утилиту, которая преобразует файл AIFF / WAV / etc в файл mp3. Кажется, есть некоторый интерес к этому вопросу, так что вот что я сделал, шаг за шагом:

Шаг 1: Загрузите и установите библиотеку libsndfile в соответствии с предложением Джеймса Морриса. Эта библиотека очень проста в использовании - ее единственный недостаток - она ​​не будет работать с mp3-файлами.

Шаг 2: Загляните в папку examples, которая поставляется вместе с libsndfile, и найдите generate.c. Это дает хороший рабочий пример преобразования любого не-mp3 файла в различные форматы файлов. Это также дает представление о силе, лежащей в основе libsndfile.

Шаг 3: Заимствуя код из generate.c, я создал файл c, который просто конвертирует аудиофайл в файл .wav. Вот мой код: http://pastie.org/719546

Шаг 4: Загрузите и установите кодировщик LAME . Это установит библиотеку libmp3lame и утилиту командной строки lame.

Шаг 5: Теперь вы можете просмотреть API-интерфейс LAME или просто разорвать и запустить процесс, чтобы прекратить конвертировать ваш wav-файл в mp3-файл.

Шаг 6: Выведи шампанское и икру!

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

2 голосов
/ 29 ноября 2009

Для преобразования между различными форматами (кроме MP3) проверьте libsndfile http://mega -nerd.com / libsndfile /

Libsndfile - это библиотека, предназначенная для разрешить чтение и запись многих различные сэмплированные форматы звуковых файлов (например, MS Windows WAV и Формат Apple / SGI AIFF) через один стандартный интерфейс библиотеки.

Во время операций чтения и записи, форматы легко конвертируются между форматом приложения Программа запросила или предоставила и формат данных файла. программист приложения может остаться блаженно не знают о таких вопросах, как Порядок следования файлов и формат данных

Он также прост в использовании, поскольку API соответствует стилю имен функций библиотеки Standard C:

http://mega -nerd.com / libsndfile / api.html

И примеры включены в исходный дистрибутив.

Для реального вывода звука понадобится другая библиотека, SDL, как уже упоминалось, может быть хорошим местом для начала. Хотя SDL также может читать / записывать аудиофайлы, libsndfile намного лучше.

1 голос
/ 29 ноября 2009

Если вам интересно узнать о DSP и компьютерах, взгляните на Synthesis Toolkit. Это мило. Он предназначен для обучения. Примеры и учебные пособия, которые они имеют на своем сайте, просты и основательны. Имейте в виду, ребята, которые написали это, написали это, чтобы они могли создавать акустические модели реальных инструментов. В результате они включили некоторые инструменты, которые просто дурацкие, но забавные. Это даст вам базовое понимание обработки звука PCM. И вы, вероятно, сможете собрать вместе забавных маленьких шумоглушителей, пока вы в этом.

https://ccrma.stanford.edu/software/stk/

0 голосов
/ 29 ноября 2009

Проверьте libmad http://mad.sourceforge.net "" M "peg" A "udio" D "ecoder library", должен служить хорошим примером. Также для простой кроссплатформенной обработки звука, проверьте SDL http://www.libsdl.org/. Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...