Главная » Хабрахабр » [Из песочницы] Эффект теплого лампового радио

[Из песочницы] Эффект теплого лампового радио

image

Мне хотелось найти или восстановить какой-нибудь старый деревянный приемник, или, хотя бы, корпус, поставить туда Raspberry, аккумулятор, блэкджек, и чтобы он раздавал вайфай. В начале целью этого домашнего проекта было создание интернет-радиоприемника из Raspberry Pi. Зато сделал программную часть проекта, о которой и хочу рассказать. Из-за нехватки времени все это было благополучно отложено в долгий ящик, но, может быть, со временем реализую.

То есть, пусть они тоже звучат, но для меня было бы вдвойне приятно из старого радио слышать аутентичный звук тех времен, когда ещё не было импульсных преобразователей, а по улицам беспечно разгуливали единороги. Делать старое радио, чтобы из него звучали кристально чистые современные битрейты – не комильфо, на мой взгляд. Рецепт, как состарить звук я представляю себе так:

  • 1...10 мкВ полезного сигнала,
  • 0.3 мкВ эха, той же передачи на той же частоте, но из другого места,
  • 0.2 мкВ сигнала другой станции, вещающей на той же частоте,
  • капля интерференционного свиста, больше не надо, ибо напрягает,
  • 0.1 мкВ шума входных цепей,
  • секретный ингредиент – фединги, то есть замирания всех перечисленных сигналов, кроме шума входных цепей, они сделают своё дело вместе с АРУ – автоматической регулировкой услиения, в результате чего один из фоновых сигналов переодически будет выходить на передний план, как это бывает в настоящем радио,
  • ну и по вкусу срезать верхние частоты.

Список можно продолжить до бесконечности, но ресурсы у малинки ограничены, а хочется запустить много потоков и переключаться между ними. Подразумевается, что радио работает на средних волнах, время вечернее, и сигнал проходит далеко. Оформил все это в виде сервера на основе Icecast и ряда других полезных утилит. Поэтому ограничился выше перечисленным. Возможно, пригодится кому-нибудь ещё. Этот сервер помогает мне создать праздничную атмосферу в новогодние праздники.

Принцип работы сервера такой: два входных аудиопотока, взятых из интернета, конвертируются в wav при помощи ffmpeg, здесь же снижается частота оцифровки, для того, чтобы убрать верхние частоты, а также облегчить работу процессору.

Прошу спецов по системному программированию сильно меня не пинать за возможные ошибки, в обычной жизни я веб-разработчик, а си для меня – что-то вроде быстрой версии bash. Далее потоки проходят через импровизированный звуковой процессор, написанный на си. Здесь каждому сигналу присваивается значение уровня с учетом замираний, сигналы суммируются с учетом уровней, затем суммарный сигнал делится на значение суммарного уровня, таким образом имитируется АРУ, и громкость полученного звука будет примерно постоянной.

Выходной поток кодируется oggenc и при помощи ezstream отправляется на Icecast сервер, где становится доступным для прослушивания.

Устанавливать сначала лучше не на Raspberry, а на обычные, настольные линуксы, так как, возможно, на малинке придется повозиться с ручной сборкой некоторых компонентов. Склонировать проект можно можно отсюда, там же инструкция по установке. Поставьте вместо них аудиопотоки на ваш вкус и да пребудет с вами теплый ламповый звук. Вместо скрипта stream-template-1206am, был скрипт с моими любимыми радиостанциями, чтобы уберечь их от возможного хабраэффекта, а совесть от угрызений, заменил заглушками.

Всем добра и с праздниками!

UPDATE: По совету юзера Logonoff добавил в проект образец того, как это звучит.


Оставить комментарий

Ваш email нигде не будет показан
Обязательные для заполнения поля помечены *

*

x

Ещё Hi-Tech Интересное!

Как провалить внедрение CRM-системы?

Одной моей коллеге очень хотелось иметь iPhone 4S. Тогда это был просто верх понта. Получив премию, она отказалась от отпуска и купила его — белый, приятно увесистый, зависть всей коммерческой службы. Через некоторое время она начала жаловаться, что, мол, не ...

Проверка FreeRDP с помощью анализатора PVS-Studio

FreeRDP – свободная реализация клиента Remote Desktop Protocol (RDP), протокола, реализующего удаленное управление компьютером, разработанного компанией Microsoft. Проект поддерживает множество платформ, среди которых Windows, Linux, macOS и даже iOS с Android. Этот проект выбран первым в рамках цикла статей, посвященных ...