Как я играю тон в Linux с помощью C?

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

6
задан JasonMArcher 23 July 2015 в 17:29
поделиться

3 ответа

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

0
ответ дан 17 December 2019 в 04:46
поделиться

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

0
ответ дан 17 December 2019 в 04:46
поделиться

C++, по двум причинам.

1) много игр запрограммировано на C++. Ни одна игра мейнстрима пока не запрограммирована на управляемом языке.

2) C++ так же трудно, как и получается. Вы должны освоить ручное управление памятью и, как правило, не проверять границы (помимо отличного Valgrind!). Если вы владеете C++, вы найдете его переносимым на управляемые процедурные языки. Меньше, чем остальные пути вокруг.

C++ имеет уровень сложности, близкий к APL ! Ты никогда не поправишься, играя более слабых соперников.

Джоэл очень сильно об этом говорит . Люди, которые понимают, как работает машина, делают лучших программистов , потому что все абстракции протекают .

-121--1287515-

Вероятно, потребуется оператор instanceof .

Это также будет работать для производных классов, в нечетном случае, если вы расширяете или создаете собственные обертки.

-121--1882334-

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

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

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

5
ответ дан 17 December 2019 в 04:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: