Воспроизведение заметок сольфеджа с помощью ALSA API? - PullRequest
0 голосов
/ 01 сентября 2011

Я играю с Alsa API, и мне интересно, какие параметры я должен передать функции snd_pcm_writei , чтобы просто воспроизвести слоги / ноты solfège (AG / do re mi fa Sol La Si Do).

Спасибо

Ответы [ 2 ]

1 голос
/ 01 сентября 2011

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

Базовое значение «la» (A) составляет 440 Гц, то есть 440 циклов формы волны по вашему выбору в секунду.Другие ноты можно получить умножением / делением на 2 ^ (1/12) (1.05946309) для каждого полутона выше / ниже этой базовой частоты.Вам нужно будет знать, на какой частоте настроено устройство вывода (это, вероятно, аргумент другой функции ALSA).Если частота устройства составляет, скажем, 44100 Гц, и вы хотите воспроизвести базовое значение «la», каждый период вашего сигнала должен занимать 44100/440 или около 100 выборок.Обратите внимание на ширину выборки и количество каналов, для которых настроено устройство.

Пояснение: в октаве 12 полутонов, а октава ровно наполовину (нижняя высота звука) или двойная (выше)разбил) частота.После того, как вы умножили 12 раз на 2 ^ (1/12), вы умножили на 2, так что каждый полутон имеет коэффициент в 2 ^ (1/12) выше предыдущего.

0 голосов
/ 01 сентября 2011

Звучит так, как будто вы хотите миди, а не ALSA.ALSA имеет дело с дискретизированным звуком (например, цифровыми сигналами, полученными с CD, wav, mp3 и т. Д.).Это не программа синтеза звука.

...