Я пытаюсь создать звуковой сигнал, который будет воспроизводиться на динамиках корпуса.
Я могу легко сделать это с помощью aplay,но, проходит около секунды, прежде чем он действительно воспроизводится.
Мне нужно, чтобы это было практически мгновенно, так как я использую его в (headless) скрипте оболочки для воспроизведения звука при нажатии клавиши. При использовании aplay сигнал появляется слишком поздно.
Я думаю записать что-нибудь напрямую на звуковое устройство /dev или что-то в этом роде, но пока не добился успеха в этом.
Я использую Odroid-W (клон Raspberry Pi) и слышал, что, по крайней мере на Pi, аудиоразъем на самом деле подключен к двум контактам PWM GPIO (40, 45), однако запись на эти контакты напрямую приводит только к тишине.
Это не обязательно должен быть какой-то необычный звук, подойдет любое жужжание или писк.
(Если ничего не получится, то я, вероятно, подключу контакт GPIO к самодельному микшеру и подключу его к усилителю.)
решение1
Поскольку задержка важна для «ощущения» приложения (звуковая обратная связь с пользователем), я решил создать ее, подключив активный зуммер (активная часть здесь устраняет необходимость в выходе ШИМ) к одному из контактов gpio, это производит звук мгновенно. К контактам GPIO можно получить доступ напрямую с помощью утилиты командной строки WiringPi Drogons. Недостатком является то, что вы не можете контролировать сам звук, но производимый звуковой сигнал пока что вполне хорош.
Для улучшения/контроля звука можно рассмотреть возможность использования программного ШИМ и пассивного зуммера или динамика.
Дополнительная информация о WiringPi: http://wiringpi.com/
Что такое активный зуммер?: https://electronics.stackexchange.com/questions/224374/активный-против-пассивного-зуммера