Полвека назад аудиокассеты были широко распространены, пока их не заменили более современные накопители. Один инженер решил вспомнить прошлое и собрал интерфейс, позволяющий передавать данные с кассеты на компьютер — правда, на современных компонентах. Рассказываем, каким образом он это сделал.

Фотография: lilzidesigns. Источник: Unsplash.com
Фотография: lilzidesigns. Источник: Unsplash.com

Суть проекта

Ретроинтерфейс собрал инженер Зак Нельсон, который ведет блог, посвященный электронным 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. Он рассказал, что работа с магнитной лентой была связана с определенными сложностями. Например, нельзя было писать программы, которые бы запускали другие программы или работали с базами данных. Поэтому все его проекты были достаточно скромными, в основном простенькие видеоигры.

Фотография: kirklai. Источник: Unsplash.com
Фотография: kirklai. Источник: Unsplash.com

Другой комментатор вспомнил, что в конце 70-х подключал кассетный накопитель к компьютеру Commodore PET 2001. Ему приходилось мириться с низкой скоростью чтения данных. Хотя в большинстве случаев это не было проблемой, так как инженер писал программы, размер которых редко превышал сотню строк.

Кто еще

Не только Зак Нельсон возвращает технологии к жизни. Несколько лет назад инженер Майкл Кон сделал свой ленточный накопитель. Основу составили магнитофон TRS-80 CCR-81 и плата микроконтроллера W65C265SXB. Она преобразует данные с ПК в аудиосигнал и записывает его на аудиокассету. Сохраненный аудиосигнал можно воспроизвести и тем самым «скопировать» данные обратно на компьютер.

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


Рассказываем о других DIY-проектах в нашем «Мире Hi-Fi»:

Больше материалов о магнитных лентах:


Комментарии (22)


  1. iliasam
    21.11.2021 20:07
    +2

    Из текста толком не понятно, зачем это все было сделано.
    Пришлось обратиться к оригинальной статье: zeninstruments.blogspot.com/2021/10/manchester-decoder-and-cassette.html

    I've been building a retro computer, and it's gotten me interested in using cassettes as data storage. This poses an interesting challenge where binary information has to be converted into something that can be written to, and reliably read from, a cassette. We have to worry about immunity to noise (tape hiss), speed fluctuations (wow/flutter), and amplitude fluctuations (dropout).

    То есть, судя по всему, все что описано выше — просто исследовательский эксперимент для определения оптимальных параметров электроники и метода кодирования.


  1. saboteur_kiev
    21.11.2021 20:49
    +5

    Не очень понятно что случилось с уже существующими интерфейсами. Они никуда не пропали. Аудио вход и выход доступны, алгоритмы доступны, виртуалки для ретро-PC существуют. Рабочие магнитофоны еще можно найти в продаже.


    1. Videoman
      21.11.2021 22:33

      Всё верно. Более того, примерно 20 лет назад мне захотелось загрузить свои программы, которые я писал в 13 лет для «Электроники БК 0010-01». Для этого сначала пришлось написать эмулятор. В то время в качестве носителя для хранения во всю использовались кассеты. Файлы без проблем считывались через стандартный Jack-вход звуковой платы.
      Сам формат кодирования был простой: бит кодировался импульсом, длина импульса определялась настроечной последовательностью. Ноль кодировался единичным импульсом, а единица импульсом двойной длины. Схема замечательно работала и мне удалось восстановить почти все свои кассеты. Удивительно, но 5" диски, которые появились года на 2 позже кассет, почти все уже не читались.


      1. GospodinKolhoznik
        21.11.2021 23:40
        +2

        Много избыточной информации плюс более надёжный накопитель.

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


        1. Videoman
          22.11.2021 00:21

          Это какая-то особенность именно гибких дисков, потому что, еще через примерно три года записанные, CD-R/DVD-R до сих пор живы и читаются шустро и без проблем, хотя им уже почти двадцать лет стукнуло.


    1. mapnik
      22.11.2021 05:44

      Вот с кассетами не очень.


      1. old_gamer
        22.11.2021 14:35

        1. saboteur_kiev
          23.11.2021 04:09

          Магнитный слой на кассетах был далеко не шик, тем более во времена домашней записи бытовыми магнитофонами. Если поискать хранящиеся 20-летгде-то на полке у рядового жителя кассеты и послушать, то в первую очередь низкие частоты будут сильно смазаны, высокие неровы, и зачастую прочитать информацию целиком не выйдет - 64 кбайта это примерно 5-10 минут на аудиокассете в зависимости от алгоритма. Да и без ведущего тона продолжить с оборванного куска обычными методами не выйдет.

          Новые же кассеты по ссылке - 2 кассеты за 12$?
          Это надо быть прям энтузиастом.


          1. old_gamer
            23.11.2021 15:50
            +1

            Да вообще чтобы возиться ради интереса только с любым старым интерфейсом, это надо быть прям энтузиастом, выхлопа в любом случае нет...

            А по поводу долгого хранения, там все вообще очень неровно. Есть кассеты, которые прилично звучат после 30 лет, а есть такие, у которых лента слипается, как повезет...


  1. shiru8bit
    21.11.2021 21:03
    +5

    Я понимаю, если бы энтузиаст решил изобрести заново свой велосипед, по мотивам действительно забытых технологий прошлого. Но он просто воспользовался типовыми решениями прошлого, которые не были забыты - они реализованы в миллионах сохранившихся старых компьютеров, подробно описаны в сотнях книг, они регулярно пере-реализуются энтузиастами компьютерной истории (часто в виде утилит для оцифровки ПО со старых кассет).


  1. MichaelBorisov
    21.11.2021 22:18
    +1

    Проблема с кассетами сейчас в том, что их днем с огнем не сыщешь.

    Я года 3 назад купил кассету в магазине. Долго искать пришлось — в большинстве магазинов их больше не продают. После однократной записи-воспроизведения с ленты посыпался магнитный слой.

    Похоже, с кассетами устроили то же, что когда-то с дискетами. Если во времена расцвета дискет они годами служили, то для купленных в начале 2000х дискет большая удача была, если она не сдохнет после одного-двух вставлений в дисковод.


    1. stalinets
      22.11.2021 13:59
      +2

      Не соглашусь. На интернет-барахолках полно нераспечатанных и б/у кассет любой эпохи: от70х до 2000х, и в основном они хорошо прописываются. Я сам за последнее время купил немало кассет (подбирал специально японские и из 90-х), некоторые записал на деке, всё с ними нормально. Более поздние "пиратские" тоже не сыпятся, но качество записи в плане музыки на них может быть не ахти. Разве что у меня посыпалась парочка старых Basf тип2, но и то я не знаю, в каких условиях их хранили.


  1. habrabkin
    22.11.2021 02:48
    +4

    Ждал этот волшебный чарующий ностальгический звук на видео в статье…


  1. Refridgerator
    22.11.2021 06:19

    аудиосигнал должен оставаться в диапазоне, доступном для воспроизведения на магнитной ленте — не ниже 400 Гц
    Вот это поворот.


    1. INSTE
      22.11.2021 08:47
      +1

      Ниже у большинства кассетников, особенно ширпотребных, начинается завал АЧХ, потому рекомендация держаться в диапазоне 400 — 4000 Гц для упрощения сигнального процессора выглядит разумно. Если использовать Hi-End аппаратуру, то конечно можно и в более широкий диапазон пойти и даже сделать подобие MIMO используя обе стереоканала.


      1. Refridgerator
        22.11.2021 09:28
        +3

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


  1. serafims
    22.11.2021 11:02

    Не критика, но как вариант реализации: что мешает использовать кодирование несколькими частотами, как DTMF, сигнал кодирующий 4 бита длиной 70 мс и пауза 30 мс, 200 мс на байт, 204,8 сек на килобайт, 58 минут на мегабайт. Стандартные генераторы и декодеры еще доступны к покупке, помехозащищенность тоже неплоха.


    1. dMac
      22.11.2021 16:33

      200 мс на байт == 5 байт в секунду == 300 байт в минуту == 18000 байт в час.
      Так себе скорость - 40 бод вместо 1500 бод стандартного Манчестера на спектрумах


      1. mistergrim
        22.11.2021 20:41
        -1

        На спектрумах Манчестер не используется, там простая FM-модуляция.


        1. shiru8bit
          23.11.2021 18:10
          +1

          Там не FM, а крайне примитивная форма широтно-импульсной модуляции, т.к. местный кассетный интерфейс представляет собой однобитный АЦП/ЦАП и ничего более, а модуляцией-демодуляцией занимается процессор. Несущей нет, все биты кодируются двумя сменами фронта, длительность задержки между сменами фронта у единицы вдвое дольше, чем у нуля. Таким образом за секунду записыватеся примерно 2048 нулей или 1024 единицы.


          1. Videoman
            23.11.2021 22:04

            Да, во всяком случае на БК и «Спектруме» всё так — широтно-импульсная модуляция, однобитный ЦАП. Сам писал загрузчик и раскраску картинок со «Спектрума». Только длина импульсов и служебные поля записи отличаются по формату.


      1. saboteur_kiev
        23.11.2021 04:13

        Если вы грузили что-нибудь на спектруме, вы просто по памяти можете вспомнить загрузку экранной "заставки", с примерной ее скоростью - около 2 секунд на проход 8 линий (256 байт). На всю заставку уходила примерно минута, это 6912 байт. И это без турбо режима, который почти вдвое быстрее.