Как воспроизвести звук в Linux с помощью C? - PullRequest
6 голосов
/ 04 февраля 2010

Я пытаюсь написать программу для случайной генерации музыки на основе простого набора правил. Мне бы хотелось, чтобы программа могла генерировать свои собственные звуки, а не иметь файл со звуком для каждой ноты. Кто-нибудь знает простой способ сделать это? Было бы неплохо (но не обязательно), чтобы звук был политональным, и я хотел бы найти решение для Linux с использованием C.

Ответы [ 3 ]

5 голосов
/ 05 февраля 2010

Я предлагаю вам попробовать библиотеку PortAudio. Это компактная кроссплатформенная библиотека, которая абстрагирует функциональность вывода звука.

Он содержит несколько небольших примеров. Один из них играет одну синусоидальную волну, а другой - одновременно синусоидальную. Так как примеры уже делают 90% того, что вам нужно, ваш звук должен быть запущен менее чем за полчаса.

Подсказка: лучшая документация по PortAudio находится в заголовочном файле!

0 голосов
/ 05 февраля 2010

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

0 голосов
/ 05 февраля 2010

Вы можете попытаться найти миди-секвенсор C (например, MIDI Sequencer ).Также обратите внимание на создание аудио-файлов в формате .au (т. Е. Посмотрите спецификации для заголовков .au и формата звуковых данных).Вы не сможете использовать формат .wav, потому что он требует, чтобы длина в заголовке была заполнена перед воспроизведением.

...