🛠 Nostalgia trip pt. 2: Diskplayer

Миллениум уже был позади, никаких особых знамений человечеству не предстало(кроме полного затмения 99-го), люди на Марсе не поселились, а лидирующим носителем звуковой информации по-прежнему оставались компакт-кассеты.

До появления в доме первого настоящего домашнего компьютера главным способом коротать долгие зимние вечера после школьных занятий и растопки печи было чтение книг и всевозможных периодических изданий. Родители дарили мне многотомники из серии "Я познаю мир", дядя с тётей привозили из Москвы огромные стопки журналов "За Рулём" и "НЛО", очень редко в руки попадали номера "Хакер", читая которые я мечтал когда-нибудь применить полученные знания. Однако, этот рассказ вовсе не имел бы смысла, если бы я не приплюсовал сюда заметку о старой автомагнитоле над дряхлым пружинным диваном.

Эту магнитолу притащил домой откуда-то мой отец, затем собрал для неё блок питания из подручных средств, подключил пару колонок и водрузил на лакированную полку на кухне. Тёмно-янтарне дисплей и подсветка кнопочек притягивали к себе взгляд, мне сперва очень хотелось понажимать на всё, что можно было нажать. Ну и конечно же магнитола была бы абсолютно бесполезной, если бы не рядом стоявшая обувная коробка с набором кассет внутри. Записи представляли собой в основном сборники классической и популярной музыки в инструментальном исполнении, которые приносил с работы тоже отец. Так я познакомился с "Лунной сонатой", темами из кинофильмов "Профессионал" и "Однажды в Америке", кавером на песню "Yesterday" группы The Beatles, многочисленными каверами на популярные треки Джорджа Майкла, и многое другое. Каждая из кассет представляла собой портал в чудесный мир, в котором существуют только горячий чай, ароматное домашнее печенье, скрипящий, но тем не менее уютный диван и огромная стопка книг, которые я перечитывал от корки до корки. Шелест перебираемых обложек, тугой щелчок отскакивающей кнопки Eject, глухое гудение моторчика, и мы отправляемся вдаль.


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

Вот тут один умелец собрал проигрыватель альбомов на Spotify, использующий дискеты и флоповод в качестве токенов. Я даже не успел подумать о реализации, как тут же мои руки набрали в омнибоксе браузера адрес локальной барахолки, заказали USB-дисковод, а также коробку с дискетами вдобавок. Неделя ожидания, и всё необходимое уже было на моём столе.

Основу проекта составляет микрокомпьютер Raspberry Pi Zero W с USB-хабом в виде надстройки. К хабу подключены аудиоинтерфейс с домашними колонками и, собственно, дисковод. С софтом тоже ничего сложного: mpd, udev и немного клея на Bash чтобы всё вместе работало.

Для определения наличия дискеты в дисководе используется следующий конфиг, расположенный в файле /etc/udev/rules.d/100-floppy-change.rules:

ACTION=="change", ATTRS{idVendor}=="054c", ATTRS{idProduct}=="002c", ENV{DISK_MEDIA_CHANGE}=="1", RUN+="/home/user/media_mount.sh $env{DEVNAME}"

Значения idVendor и idProduct можно найти в выхлопе lsusb -v

Сам скрипт /home/user/media_mount.sh не делает ничего сложного; всего лишь скармливает mpd записанный плейлист через пайп:

#!/usr/bin/env bash

echo "$(date) Start."
echo "$(date) Media change detected on device $1"

lsblk | grep $(echo ${1} | cut -f 3 -d '/')

if [ $? -eq 0 ]; then
    echo "$(date) Device exists on machine."
    echo "$(date) Mounting device $1 to /mnt/floppy."
    /usr/bin/systemd-mount $1 /mnt/floppy
    mpc stop
    mpc clear
    if [[ -f /mnt/floppy/media.m3u ]]; then
        cat /mnt/floppy/media.m3u | mpc add
        mpc play 1
        /usr/bin/systemd-mount --umount /mnt/floppy
    fi
else
    echo "$(date) Device does not exist on machine."
    mpc pause
fi
echo "$(date) End."

После этого на каждую дискету записывается файл media.m3u, содержащий треки из альбома в нужном порядке. Остаётся только извлечь носитель и вставить его снова чтобы музыка заиграла.


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

Tue, 13 Apr 2021 11:47:47 +0200


Подписаться: RSS // Telegram