- PVSM.RU - https://www.pvsm.ru -
В начале целью этого домашнего проекта было создание интернет-радиоприемника из Raspberry Pi. Мне хотелось найти или восстановить какой-нибудь старый деревянный приемник, или, хотя бы, корпус, поставить туда Raspberry, аккумулятор, блэкджек, и чтобы он раздавал вайфай. Из-за нехватки времени все это было благополучно отложено в долгий ящик, но, может быть, со временем реализую. Зато сделал программную часть проекта, о которой и хочу рассказать.
Делать старое радио, чтобы из него звучали кристально чистые современные битрейты – не комильфо, на мой взгляд. То есть, пусть они тоже звучат, но для меня было бы вдвойне приятно из старого радио слышать аутентичный звук тех времен, когда ещё не было импульсных преобразователей, а по улицам беспечно разгуливали единороги. Рецепт, как состарить звук я представляю себе так:
Подразумевается, что радио работает на средних волнах, время вечернее, и сигнал проходит далеко. Список можно продолжить до бесконечности, но ресурсы у малинки ограничены, а хочется запустить много потоков и переключаться между ними. Поэтому ограничился выше перечисленным. Оформил все это в виде сервера на основе Icecast и ряда других полезных утилит. Этот сервер помогает мне создать праздничную атмосферу в новогодние праздники. Возможно, пригодится кому-нибудь ещё.
Принцип работы сервера такой: два входных аудиопотока, взятых из интернета, конвертируются в wav при помощи ffmpeg, здесь же снижается частота оцифровки, для того, чтобы убрать верхние частоты, а также облегчить работу процессору.
Далее потоки проходят через импровизированный звуковой процессор, написанный на си. Прошу спецов по системному программированию сильно меня не пинать за возможные ошибки, в обычной жизни я веб-разработчик, а си для меня – что-то вроде быстрой версии bash. Здесь каждому сигналу присваивается значение уровня с учетом замираний, сигналы суммируются с учетом уровней, затем суммарный сигнал делится на значение суммарного уровня, таким образом имитируется АРУ, и громкость полученного звука будет примерно постоянной.
Выходной поток кодируется oggenc и при помощи ezstream отправляется на Icecast сервер, где становится доступным для прослушивания.
Склонировать проект можно можно отсюда [1], там же инструкция по установке. Устанавливать сначала лучше не на Raspberry, а на обычные, настольные линуксы, так как, возможно, на малинке придется повозиться с ручной сборкой некоторых компонентов. Вместо скрипта stream-template-1206am, был скрипт с моими любимыми радиостанциями, чтобы уберечь их от возможного хабраэффекта, а совесть от угрызений, заменил заглушками. Поставьте вместо них аудиопотоки на ваш вкус и да пребудет с вами теплый ламповый звук.
Всем добра и с праздниками!
Автор: PereNoel
Источник [2]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/linux/304159
Ссылки в тексте:
[1] отсюда: https://github.com/hirve/old-radio-sound/
[2] Источник: https://habr.com/post/435096/?utm_campaign=435096
Нажмите здесь для печати.