Привет, клубнички и клубни!
В очередной раз я готов с гордостью отстаивать звание почётного кибердеда, на этот раз с очень интересной поделкой, которой я пользуюсь с величайшим удовольствием каждый день. Но сначала будет разогрев.
Предыстория
В 1999 году мы только-только переехали в новый дом, который при помощи всей семьи построил отец. Такова была реальность жизни в сельской местности: чтобы угнездиться, нужна своя хата, которую тебе никто готовенькую и с ключами не принесёт, надо всё самому делать от фундамента и до конька на крыше. Это был невыносимо долгий проект, который не завершился и по сей день, но я опущу все мельчайшие подробности. Важно было другое: папа всегда умел работать руками и собирать из запчастей и подручных материалов что угодно работающее, будь то телевизор или магнитофон.
Кстати, вот ещё момент: поскольку папа работал в электродепо, недостатка в разнообразных запчастях у него вовсе не было. В пристройке и на чердаке нового дома чего только не найти. В том числе автомагнитолу, колонки и блок питания на 12 вольт. Из всего этого отец собрал дома нехитрый музыкальный центр, который выглядел абсолютно непрезентабельно, как и голые стены с ещё слегка сырой штукатуркой, но тем не менее создавал ощущение уюта. Как-никак обжитое пространство! Можно музыку послушать и чаю попить.
Новая игрушка сразу же вызвала во мне огромный интерес. В моём нехитром запасе были транспортированные ещё со старого дома кассеты с песнями Леонида Агутина, какие-то сказки и может быть уроки английского (возможно, привезли из столицы). Папа сразу всё понял и через неделю подкинул мне кассету с инструментальными и оркестровыми каверами.
Кассета моментально стала моей любимой. Подборка очень красивой музыки, которая нравилась всем, в особенности мне. По правде говоря, я до сих пор под особым впечатлением: до подросткового возраста я искренне считал, что "Yesterday" группы "The Beatles" является изначально инструментальной композицией на флейте! Она и поныне так звучит в моей голове. Но я немного отвлёкся. Кассет становилось всё больше и больше. Я понятия не имел откуда папа их доставал, покупал специально, наверное, поскольку обложки у всех были новенькие, разве что в целлофан они не были запакованы. Вскоре для коллекции потребовалось отдельное место хранения и она была помещена в обувную коробку.
По сей день я благодарен отцу за то, что привил мне с самого детства хороший музыкальный вкус. Традиционную азербайджанскую музыку, которую батя любит, я не понимаю совсем, а вот инструментальное мы послушать всегда рады.
Здесь заканчивается история и начинается рассказ про мой трибьют той самой обувной коробке с кассетами, с которой всё и началось.
Зарождение идеи
Честно говоря, я не являюсь оригинальным автором идеи использовать флопповод как основу для домашнего музыкального центра. То ли на реддите, то ли на хакерньюс я увидел ссылку на статью одного гика, Дино Фиццотти, об использовании дискет в качестве токенов для запуска музыки на Spotify. И сразу же загорелся этой идеей.
"Но в чем прикол идеи?", вполне резонно спросите вы. Видите ли, в цифровую эпоху мы утеряли многие аспекты потребления аудиоматериала, в том числе и тактильный. Физические магнитные носители помогают всё это вернуть. Они добавляют осознанный подход к прослушиванию музыки. Почти так же, как винил сейчас и как кассеты когда-то. Перебирать пальцами дискетки в коробочке, найти что-то по настроению, вставить в дисковод и прослушать альбом от начала и до самого конца. В век синглов, постоянно включённого shuffle mode и автоматических подборок это особенно ценно, помогает заново переоткрыть и переосмыслить треки в альбомах, воспринимая их как частицу целой, завершённой работы.
Вдобавок ко всему, коллекции физических носителей, будь то книг или кассет, добавляет другой интересный аспект: они создают впечатление о собеседнике, рассказывают историю, подталкивают к беседе. Я много раз за собой замечал, что с обладателями домашних библиотек мне всегда интересно. Бросил взгляд на книжную полку, прочитал наименования на корешках и можно завязать интересный разговор! То же самое работает и с музыкой. Гости в моём доме всегда интересуются коллекцией дискеток, перебирают их, задают вопросы и восторгаются, если находят что-то знакомое. С киндлами и айподами это так не работает, про Spotify я и вовсе молчу.
Наконец, тот самый запах пластика, сопротивление пружинки флоппи-драйва при вставлении носителя, восхитительный щелчок, являющийся вершиной тактильного кайфа, и характерное жужжание, которое моментально уносит на 20 а то и 30 лет в прошлое, когда всё было проще и понятнее.
"Но на дискету же помещается всего полтора мегабайта информации, как их использовать для прослушивания музыки?", опять спросите вы. А дело в том, что сама музыка на них не хранится. В реализации Дино на дискетах хранится ссылка на альбом в Spotify. А про свою реализацию я расскажу сейчас.
Я тоже такое хочу! Что мне для этого нужно?
В первую очередь вам нужен компьютер с дистрибутивом Linux, лучше всего подойдёт Raspberry Pi, поскольку потребляет мало электроэнергии и занимает мало места. Раньше у меня на музыкальном столе жила крохотная Pi Zero W с USB-шляпой, но с нового года теперь там Pi 4, которую мне подарила @Kirsche 💜
Раз мы строим музыкальный центр на базе флоппи-дисковода, то он нам и потребуется следующим. Рекомендую приобрести Sony 2X, как на картинке ниже, они просто сумасшедше надёжные. Те, что сейчас продаются на Amazon, иногда выходят из строя и начинают плеваться ошибками монтирования в dmesg
.
IDE-флоппи с USB-адаптерами не рекомендую, если только вы не хотите совсем угореть по классике.
Само собой нам нужны дискеты. Рекомендую прошерстить онлайн-барахолки и купить сразу целую пачку, а лучше сразу со специальным кейсом, как у меня и у Дино, чтобы было где их хранить.
И, наконец, нужно что-то, что будет проигрывать музыку. В моём случае это надёжные колонки Microlab c усилителем, которые со мной аж со студенческих времён и которые до сих пор звучат отлично.
Теперь остаётся главный вопрос: как заставить это всё работать?
Софт
В версии Дино используется проигрыватель Spotify. Я, как стопроцентный дед, стриминговым сервисам не доверяю, поскольку оттуда часто пропадают альбомы, а некоторой музыки и вовсе нет до сих пор, поэтому в моей версии вся музыка хранится локально и проигрывается с помощью сервера MPD — Music Player Daemon.
Вообще основной точкой входа является триггер вставления носителя, правило udev
, менеджера динамической конфигурации оборудования GNU/Linux. Оно абсолютно простое и его единственная задача — задетектить смену статуса устройства и запустить по такому поводу скрипт:
ACTION=="change", ATTRS{idVendor}=="054c", ATTRS{idProduct}=="002c", ENV{DISK_MEDIA_CHANGE}=="1", RUN+="/usr/local/bin/media_mount $env{DEVNAME}"
Выглядит страшно, но на самом деле всё совсем несложно: определяем действие, то есть смену статуса устройства, фильтруем девайс по атрибутам (производитель, изделие), задаём переменные окружения и запускаем скрипт. И вот там уже происходит вся магия.
Скрипт автоматически монтирует дискетку в указанный путь по имени устройства, ищет там файл плейлиста, скармливает содержимое через пайп в клиент MPD и запускает музыку. При извлечении дискеты воспроизведение останавливается. Всё! Больше никаких способов контролировать воспроизведение физическими триггерами нет! Слушайте от начала и до конца.
Специально для этого поста я сделал отдельный репозиторий в GitHub, который за вас установит на RaspiOS всё необходимое, вам лишь нужно будет указать атрибуты устройства.
А теперь немного про приятную сопутствующую возню.
Подготовка дискет
Как вы уже заметили, на мои дискеты, также как и на дискеты Дино, наклеены обложки альбомов. В этом, можно сказать, вся суть этого поста и этой поделки: каждый флоппи-диск представляет собой токен для запуска в плейбэк того, что на нём нарисовано. Как всё это происходит?
Для начала я беру четыре обложки альбомов, которые хочу подготовить. Именно столько влезет на фотокарточку формата 10х15. Далее я размещаю их в SVG-трафарете с помощью Inkscape, экспортирую в PNG и сохраняю себе на телефон.
Фотопечать в Германии очень распространена. Практически любой магазин бытовой химии и средств гигиены содержит в себе киоски фотопечати, представляющие собой компьютеры с сенсорными дисплеями и специальными принтерами. Передавать на них фотографии можно через кабель, а также по Email и Bluetooth. Я обычно выбираю последнее, благо у меня Android.
Стоит одна фотокарточка 27 евроцентов, почти ничего, а печатается очень быстро. Киоск затем выдаёт чек, который можно отоварить на кассе.
Пришло время выбрать субстрат. Обычно я предпочитаю новенькие дискеты, но найти такие не всегда возможно и стоят они не то что бы совсем дёшево. Однако, некоторый запас их у меня есть.
Если брать старые дискеты, то, возможно, потребуется дополнительная подготовка, как то отодрать старый стикер, опционально сохранить файлы и отформатировать. Для форматирования через USB-привод используется команда ufiformat.
После всех подготовительных мер можно наклеить новый стикер и перейти к записи на носитель. Не забудьте закрыть сдвижное окошечко в углу! Открытое окошечко запрещает запись!
Дискета вставлена, можно монтировать и записывать плейлист. MPD нативно поддерживает формат M3U, поэтому его и будем использовать. Мой скрипт после автоматического монтирования ищет файл /mnt/floppy/media.m3u
, туда мы и сохраним результат. Рекомендую записывать путь к файлам относительно директории, в которой определена библиотека MPD, так они будут портативными. Ровно те же файлы плейлистов у меня используются в проигрывателе Vanilla Music на телефоне. Весь процесс записи плейлиста есть на скриншоте.
Подготовка закончена. Извлекаем дискету, открываем окошечко для защиты носителя от записи, а затем вставляем заново.
Приятного прослушивания!
Бонус 1
Помню времена, когда люди не могли посрать сходить без того, чтобы зачекиниться в Foursquare. Я же не могу слушать музыку без того, чтобы заскробблить её в Last.FM. Да, ластик до сих пор жив и рекомендации в нём, как по мне, куда интереснее, чем в Spotify. Персонализированная информация на главной там очень разнообразная и очень полезная с точки зрения меломана. Также мне нравится возможность посмотреть срезы данных за любой промежуток времени. Приятно узнать, каким говноедом я был 10 лет назад!
Но у обычных скробблеров есть один фатальный недостаток™: они не распознают ICY-теги из интернет-радио. Точнее говоря, плееры их не распознают, поэтому тег Artist всегда пустой, а тег Title содержит все метаданные одной строкой. Пришлось написать собственный скробблер, который умеет это парсить.
Если интересно — можно попробовать
Бонус 2
Если вы такой же кибердед как и я, то есть собираете музыку файликами на диск, очень рекомендую воспользоваться MusicBrainz Picard. Программа очень помогает исправлять теги и автоматически переименовывать файлы для правильной каталогизации.
Ожидал увидеть магию по записи аналоговой информации на магнитный диск дискеты, типа такого, эх
Офигенно! Очень!
ps. И совершенно неясно, как поставить два плюса.
Вот это ты упоролся...
Респект)
А ваще этот проект вызывает очень необычное чувство уважения - как к плетению бисера наверное)
Очень вдохновляющая штука.
Периодически вспоминаю про этот проект (видел его упоминание в чате Музыки и в твоём блоге.
Разве что думал немного о более современном подходе, вместо дискет (хоть они и добавляют кайфу к процессу, но их доставать становится всё сложнее) SD карты или что-то аналогичное, но тоже, альбом физически на карточку, наклейку с обложкой, и тем же подходом к управлению, воткнул карту, заиграло, кнопку нажал, стопнулось и отмонтировало карту. Может быть таки соберусь с силами и сделаю уже)
Это офигенно! Спасибо!
Это очень круто! Пересекается с моими думами о том, чтобы распечатать все свои всратые фоточки из ВК в физический альбом.
Музыку для осознанного прослушивания я хотел перенести на винил, но это совсем другой уровень дерьма, а вот такое решение мне ужасно нравится. Спасибо большое за пост, мой список покупок пополнился.
Нужно делать вот такой дисковод
Классная статья! Но не хватает ссылки на твой ласт.фм :)
Всегда нравились дискеты, прикольные они какие-то, эта шторка, кнопка eject на приводе. Только места маловато. Пошел гуглить похожие форматы и наткнулся на minidisk: 160 мегабайт, с использованием родного сжатия, получается 60-80 минут звука. Кажется, ощущения от использования будут очень похожие, но при этом музыка будет на самом носителе. Теперь хочу себе такое найти. И диски даже до сих пор производят (а вот железо, уже нет).
P.S. Оказалось, что Нео в Матрице продавал именно минидски
Я, получается, аналоговый дед. Решил без компромиссов - нашел по объявлению бесплатную деку, смазал и привел в порядок, нашел к ней кассет. Вуаля!
Очень круто! Я думал о чем-то похожем, предлагаю вам альтернативную реализацию:
Карточки-открытки, у которых с одной стороны обложка, а с другой - QR код, содержащий IPFS ссылку.
Уважение за кибердедство! Я ж правильно понял, при втыкании дискеты альбом начинает проигрываться с начала, а других способов остановить воспроизведение, кроме извлечения дискеты, нет?