Привет, клубнички и клубни!
В очередной раз я готов с гордостью отстаивать звание почётного кибердеда, на этот раз с очень интересной поделкой, которой я пользуюсь с величайшим удовольствием каждый день. Но сначала будет разогрев.
Предыстория
В 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. Программа очень помогает исправлять теги и автоматически переименовывать файлы для правильной каталогизации.
Этой статье не хватает коллекционного тега КиберДед!)
Ожидал увидеть магию по записи аналоговой информации на магнитный диск дискеты, типа такого, эх
Всегда нравились дискеты, прикольные они какие-то, эта шторка, кнопка eject на приводе. Только места маловато. Пошел гуглить похожие форматы и наткнулся на minidisk: 160 мегабайт, с использованием родного сжатия, получается 60-80 минут звука. Кажется, ощущения от использования будут очень похожие, но при этом музыка будет на самом носителе. Теперь хочу себе такое найти. И диски даже до сих пор производят (а вот железо, уже нет).
P.S. Оказалось, что Нео в Матрице продавал именно минидски
Очень круто! Я думал о чем-то похожем, предлагаю вам альтернативную реализацию:
Карточки-открытки, у которых с одной стороны обложка, а с другой - QR код, содержащий IPFS ссылку.
Я, получается, аналоговый дед. Решил без компромиссов - нашел по объявлению бесплатную деку, смазал и привел в порядок, нашел к ней кассет. Вуаля!
Офигенно! Очень!
ps. И совершенно неясно, как поставить два плюса.
Вот это ты упоролся...
Респект)
А ваще этот проект вызывает очень необычное чувство уважения - как к плетению бисера наверное)
Нужно делать вот такой дисковод
Очень вдохновляющая штука.
Периодически вспоминаю про этот проект (видел его упоминание в чате Музыки и в твоём блоге.
Разве что думал немного о более современном подходе, вместо дискет (хоть они и добавляют кайфу к процессу, но их доставать становится всё сложнее) SD карты или что-то аналогичное, но тоже, альбом физически на карточку, наклейку с обложкой, и тем же подходом к управлению, воткнул карту, заиграло, кнопку нажал, стопнулось и отмонтировало карту. Может быть таки соберусь с силами и сделаю уже)
Это офигенно! Спасибо!
Это очень круто! Пересекается с моими думами о том, чтобы распечатать все свои всратые фоточки из ВК в физический альбом.
Музыку для осознанного прослушивания я хотел перенести на винил, но это совсем другой уровень дерьма, а вот такое решение мне ужасно нравится. Спасибо большое за пост, мой список покупок пополнился.
Классная статья! Но не хватает ссылки на твой ласт.фм :)
Уважение за кибердедство! Я ж правильно понял, при втыкании дискеты альбом начинает проигрываться с начала, а других способов остановить воспроизведение, кроме извлечения дискеты, нет?