Полвека назад аудиокассеты были широко распространены, пока их не заменили более современные накопители. Один инженер решил вспомнить прошлое и собрал интерфейс, позволяющий передавать данные с кассеты на компьютер — правда, на современных компонентах. Рассказываем, каким образом он это сделал.
Суть проекта
Ретроинтерфейс собрал инженер Зак Нельсон, который ведет блог, посвященный электронным DIY-инструментам. В первую очередь ему пришлось решать задачу, связанную с кодированием данных. Дело в том, что аудиосигнал должен оставаться в диапазоне, доступном для воспроизведения на магнитной ленте — не ниже 400 Гц. Однако передача длинной последовательности нулей может привести к тому, что он выйдет за пороговое значение и информация будет потеряна.
Чтобы решить проблему, энтузиаст использовал манчестерское кодирование, где нули и единицы кодируются перепадами напряжения. Для реализации этого алгоритма инженер написал скрипт на Python. Также Зак разработал аппаратный интерфейс для обмена данными между компьютером и кассетным проигрывателем. Кстати, в роли последнего выступил микрокассетный диктофон Olympus Pearlcorder L400. Сам интерфейс построен на базе триггера Шмитта. Он трансформирует аналоговый сигнал в цифровой, сравнивая уровни напряжения — высокий (2,6 В) для единицы и низкий (1,5 В) для нуля. Сигнал, оказавшийся между двумя порогами, не влияет на выходное значение, что защищает систему от случайного шума.
Наконец, для декодирования сигнала (из манчестерской кодировки) инженер использовал Arduino Nano. Устройство считывает поток данных со скоростью 3000 бод [~2400 бит/с]. По словам автора, его система позволяет записать один мегабайт на 60-минутную магнитную ленту. Весь проект энтузиаст передал в open source. В репозитории на GitHub лежит исходный код, файлы системы проектирования Eagle CAD для аппаратного интерфейса, а также изображения схемы и платы.
Волна ностальгии
На ресурсе Hackaday, где изначально появилась информация о проекте, не все оценили попытку энтузиаста вернуть технологию из 80-х, посчитав это тратой времени. Однако большинство посчитало проект очень интересным — как минимум с обучающей точки зрения. В то же время проект привлёк внимание резидентов на Hacker News. Участники тематического треда стали рассказывать о запоминающих устройствах на магнитной ленте, которыми пользовались десятки лет назад.
Один участник дискуссии вспомнил свой кассетный блок для домашнего компьютера Amstrad CPC 464. Он рассказал, что работа с магнитной лентой была связана с определенными сложностями. Например, нельзя было писать программы, которые бы запускали другие программы или работали с базами данных. Поэтому все его проекты были достаточно скромными, в основном простенькие видеоигры.
Другой комментатор вспомнил, что в конце 70-х подключал кассетный накопитель к компьютеру Commodore PET 2001. Ему приходилось мириться с низкой скоростью чтения данных. Хотя в большинстве случаев это не было проблемой, так как инженер писал программы, размер которых редко превышал сотню строк.
Кто еще
Не только Зак Нельсон возвращает технологии к жизни. Несколько лет назад инженер Майкл Кон сделал свой ленточный накопитель. Основу составили магнитофон TRS-80 CCR-81 и плата микроконтроллера W65C265SXB. Она преобразует данные с ПК в аудиосигнал и записывает его на аудиокассету. Сохраненный аудиосигнал можно воспроизвести и тем самым «скопировать» данные обратно на компьютер.
В следующих материалах нашего хабраблога мы продолжим рассказывать об истории аудиотехнологий, новых исследованиях и разработках в этой области.
Рассказываем о других DIY-проектах в нашем «Мире Hi-Fi»:
Больше материалов о магнитных лентах:
Комментарии (22)
saboteur_kiev
21.11.2021 20:49+5Не очень понятно что случилось с уже существующими интерфейсами. Они никуда не пропали. Аудио вход и выход доступны, алгоритмы доступны, виртуалки для ретро-PC существуют. Рабочие магнитофоны еще можно найти в продаже.
Videoman
21.11.2021 22:33Всё верно. Более того, примерно 20 лет назад мне захотелось загрузить свои программы, которые я писал в 13 лет для «Электроники БК 0010-01». Для этого сначала пришлось написать эмулятор. В то время в качестве носителя для хранения во всю использовались кассеты. Файлы без проблем считывались через стандартный Jack-вход звуковой платы.
Сам формат кодирования был простой: бит кодировался импульсом, длина импульса определялась настроечной последовательностью. Ноль кодировался единичным импульсом, а единица импульсом двойной длины. Схема замечательно работала и мне удалось восстановить почти все свои кассеты. Удивительно, но 5" диски, которые появились года на 2 позже кассет, почти все уже не читались.GospodinKolhoznik
21.11.2021 23:40+2Много избыточной информации плюс более надёжный накопитель.
Картонные перфокарты при хранении в защищённом от влаги месте наверняка сотни лет проживут, если повезёт, возможно и тысячи. Сохранились же древние папирусы, написанные ещё до нашей эры.
Videoman
22.11.2021 00:21Это какая-то особенность именно гибких дисков, потому что, еще через примерно три года записанные, CD-R/DVD-R до сих пор живы и читаются шустро и без проблем, хотя им уже почти двадцать лет стукнуло.
mapnik
22.11.2021 05:44Вот с кассетами не очень.
old_gamer
22.11.2021 14:35Да нет проблем с кассетами...
saboteur_kiev
23.11.2021 04:09Магнитный слой на кассетах был далеко не шик, тем более во времена домашней записи бытовыми магнитофонами. Если поискать хранящиеся 20-летгде-то на полке у рядового жителя кассеты и послушать, то в первую очередь низкие частоты будут сильно смазаны, высокие неровы, и зачастую прочитать информацию целиком не выйдет - 64 кбайта это примерно 5-10 минут на аудиокассете в зависимости от алгоритма. Да и без ведущего тона продолжить с оборванного куска обычными методами не выйдет.
Новые же кассеты по ссылке - 2 кассеты за 12$?
Это надо быть прям энтузиастом.old_gamer
23.11.2021 15:50+1Да вообще чтобы возиться ради интереса только с любым старым интерфейсом, это надо быть прям энтузиастом, выхлопа в любом случае нет...
А по поводу долгого хранения, там все вообще очень неровно. Есть кассеты, которые прилично звучат после 30 лет, а есть такие, у которых лента слипается, как повезет...
shiru8bit
21.11.2021 21:03+5Я понимаю, если бы энтузиаст решил изобрести заново свой велосипед, по мотивам действительно забытых технологий прошлого. Но он просто воспользовался типовыми решениями прошлого, которые не были забыты - они реализованы в миллионах сохранившихся старых компьютеров, подробно описаны в сотнях книг, они регулярно пере-реализуются энтузиастами компьютерной истории (часто в виде утилит для оцифровки ПО со старых кассет).
MichaelBorisov
21.11.2021 22:18+1Проблема с кассетами сейчас в том, что их днем с огнем не сыщешь.
Я года 3 назад купил кассету в магазине. Долго искать пришлось — в большинстве магазинов их больше не продают. После однократной записи-воспроизведения с ленты посыпался магнитный слой.
Похоже, с кассетами устроили то же, что когда-то с дискетами. Если во времена расцвета дискет они годами служили, то для купленных в начале 2000х дискет большая удача была, если она не сдохнет после одного-двух вставлений в дисковод.stalinets
22.11.2021 13:59+2Не соглашусь. На интернет-барахолках полно нераспечатанных и б/у кассет любой эпохи: от70х до 2000х, и в основном они хорошо прописываются. Я сам за последнее время купил немало кассет (подбирал специально японские и из 90-х), некоторые записал на деке, всё с ними нормально. Более поздние "пиратские" тоже не сыпятся, но качество записи в плане музыки на них может быть не ахти. Разве что у меня посыпалась парочка старых Basf тип2, но и то я не знаю, в каких условиях их хранили.
Refridgerator
22.11.2021 06:19аудиосигнал должен оставаться в диапазоне, доступном для воспроизведения на магнитной ленте — не ниже 400 Гц
Вот это поворот.INSTE
22.11.2021 08:47+1Ниже у большинства кассетников, особенно ширпотребных, начинается завал АЧХ, потому рекомендация держаться в диапазоне 400 — 4000 Гц для упрощения сигнального процессора выглядит разумно. Если использовать Hi-End аппаратуру, то конечно можно и в более широкий диапазон пойти и даже сделать подобие MIMO используя обе стереоканала.
Refridgerator
22.11.2021 09:28+3Обычно проблемой оказывается ограничение верхней частоты, а не нижней, поскольку именно она ограничивает максимальную скорость передачи данных.
serafims
22.11.2021 11:02Не критика, но как вариант реализации: что мешает использовать кодирование несколькими частотами, как DTMF, сигнал кодирующий 4 бита длиной 70 мс и пауза 30 мс, 200 мс на байт, 204,8 сек на килобайт, 58 минут на мегабайт. Стандартные генераторы и декодеры еще доступны к покупке, помехозащищенность тоже неплоха.
dMac
22.11.2021 16:33200 мс на байт == 5 байт в секунду == 300 байт в минуту == 18000 байт в час.
Так себе скорость - 40 бод вместо 1500 бод стандартного Манчестера на спектрумахmistergrim
22.11.2021 20:41-1На спектрумах Манчестер не используется, там простая FM-модуляция.
shiru8bit
23.11.2021 18:10+1Там не FM, а крайне примитивная форма широтно-импульсной модуляции, т.к. местный кассетный интерфейс представляет собой однобитный АЦП/ЦАП и ничего более, а модуляцией-демодуляцией занимается процессор. Несущей нет, все биты кодируются двумя сменами фронта, длительность задержки между сменами фронта у единицы вдвое дольше, чем у нуля. Таким образом за секунду записыватеся примерно 2048 нулей или 1024 единицы.
Videoman
23.11.2021 22:04Да, во всяком случае на БК и «Спектруме» всё так — широтно-импульсная модуляция, однобитный ЦАП. Сам писал загрузчик и раскраску картинок со «Спектрума». Только длина импульсов и служебные поля записи отличаются по формату.
saboteur_kiev
23.11.2021 04:13Если вы грузили что-нибудь на спектруме, вы просто по памяти можете вспомнить загрузку экранной "заставки", с примерной ее скоростью - около 2 секунд на проход 8 линий (256 байт). На всю заставку уходила примерно минута, это 6912 байт. И это без турбо режима, который почти вдвое быстрее.
iliasam
Из текста толком не понятно, зачем это все было сделано.
Пришлось обратиться к оригинальной статье: zeninstruments.blogspot.com/2021/10/manchester-decoder-and-cassette.html
То есть, судя по всему, все что описано выше — просто исследовательский эксперимент для определения оптимальных параметров электроники и метода кодирования.