2013-08-05 6 views
3

Есть ли какие-либо C++ (LGPL или LGPL-подобные) звуковые библиотеки, которые позволяют мне воспроизводить звук, просто определяя такие вещи, как частота и громкость и т. Д.?Библиотеки для воспроизведения аудио? - C++

Моя целевая платформа - Linux/Ubuntu, и мне все равно, что кросс-платформенный.

Было бы неплохо, если бы я мог отправить массив звука, и он мог бы сжать его в обычный звуковой файл, например, mp3.

Я ищу что-то OpenGL-like, где вы можете просто «нарисовать» звук, и он будет воспроизведен. Я слышал об OpenAL, но, похоже, это библиотека для загрузки и воспроизведения звуков.

+2

Простые и низкоуровневые аудио-библиотеки (например, OpenAL, SDL и т. Д.) Могут легко воспроизводить формы * PCM *. Вы заполняете буфер волной, которую хотите играть, и воспроизводите ее. Чтобы сделать форму волны из таких вещей, как частота и громкость и многое другое, вам нужно написать немного кода (возможно, пару строк для простых волн) и знать основную тригонометрию. – yzt

+0

@yzt Знаете ли вы какие-либо ссылки на это для OpenAL? Единственное, что я могу найти, это загрузить файлы wav ... –

+0

Похоже, вы думаете о команде 'PLAY', доступной в некоторых версиях Basic. Посмотрите на http: // stackoverflow.com/q/11355353/103167 –

ответ

6

Большинство простых и низкоуровневых аудио-библиотек (например, OpenAL, SDL и т. Д.) Могут легко воспроизводить сигналы PCM. Вы заполняете буфер волной, которую хотите играть, и воспроизводите ее. Чтобы сделать форму волны из таких вещей, как частота и громкость и многое другое, вам нужно написать немного кода (возможно, пару строк для простых волн) и знать основную тригонометрию.

OpenAL - это кросс-платформенный API, ориентированный на 3D-игры. Его интерфейс философски похож на OpenGL и предоставляет функции для управления аудиоисточниками в виртуальной 3D-среде (положение, скорость и т. Д.) И предоставляет некоторые эффекты звука и среды (реверберация и т. Д.). Я знаю, что он может декодировать некоторые сжатые форматы (MP3, Vorbis, ...) с использованием расширений, но я не уверен, есть ли у него какие-либо функции кодирования.

SDL (или простой слой с прямым медиа) также является кросс-платформенным и ориентированным на игры, но он предлагает гораздо больше, чем аудио. Но любая функциональность, которую он предлагает, является очень простой, и это преднамеренно и по дизайну. SDL - это уровень абстракции платформы. Это звуковые возможности, также очень простые и низкоуровневые; обеспечивая только воспроизведение и запись волн ИКМ. Конечно, есть библиотеки расширений (например, SDL_mixer), которые имеют больше функциональности.

Ссылки:

  1. OpenAL on Wikipedia
  2. OpenAL homepage (кажется вниз, по состоянию на Aug 5, 2013)
  3. OpenAL Soft, вилка библиотеки OpenAL доступны Creative Labs
  4. SDL homepage
  5. SDL_mixer

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

Если я понял, что вы хотите сделать правильно, любая из этих библиотек может делать то, что вы хотите довольно легко, но, по моему личному мнению, SDL проще и проще в использовании (если вы не хотите 3D позиционного звука и эффектов .)

Смежные вопросы