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

▍ Демонстрация и возможности


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

Возможности устройства:

  • Файлы хранятся на SD-карте, файловая система FAT32 с поддержкой длинных имён.
  • Поддерживаются форматы STC, STP, PT1, PT2, PT3, ASC, PSC, SQT (через libayfly).
  • Ограниченная поддержка формата AY с биперной и AY музыкой (через эмуляцию на z80emu).
  • Поддержка плейлистов формата AYL от Ay_Emul.
  • Настраиваемая раскладка каналов ABC, тактовая частота, частота кадров.
  • Быстрая перемотка вперёд, замедление (кроме формата AY).
  • Программная блокировка управления для исключения случайных нажатий.
  • Настройки хранятся во флеш-памяти контроллера.

▍ Историческая перспектива


Для лучшего понимания вопроса вернёмся к самым истокам компьютерного звука.

Первые годы своего существования компьютеры не умели издавать звуки вовсе, если не считать стрекотания реле. Потом кто-то поймал радиопомехи, возникающие при работе пожирающего киловатты энергии компьютера UNIVAC I, за счёт специальной организации выполняемого кода получил более осознанные звуки, типа пищания нужной высоты, и задумался о возможности применения компьютеров в музыкальных целях.

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

Со временем процессоры больших компьютеров стали помощнее, но появились микропроцессоры, на старте также обладавшие скромными вычислительными возможностями. Чтобы освободить микропроцессор для более полезных дел, в конце 1970-х были придуманы специализированные микросхемы программно-управляемого синтеза звука, так называемые звуковые чипы. Технически они представляют из себя простой конечный автомат, состоящий из набора программируемых счётчиков-делителей, таблиц выборки и ЦАП. Процессор изредка задаёт нужную высоту тона и громкость, далее чип генерирует звук сам. Чипы этой эпохи содержат несколько однотипных каналов, обеспечивающих полифонию, и могут воспроизводить простые тембры — квадратный или прямоугольный сигнал, пилообразную или треугольную волну. Набор возможностей отличается между разными чипами, и определяет характер звучания воспроизводимой музыки, свойственный конкретному типу чипа.

Некоторые звуковые чипы, легендарные и не очень

Подобные чипы были востребованы зарождающейся в тот же исторический период индустрией видеоигр, для озвучивания игр в составе игровых автоматов, домашних компьютеров и игровых консолей. Их использование определило звучание видеоигровой музыки на долгие годы — от конца 1970-х и до середины 90-х, когда возможности звукового синтеза достигли почти уровня качества CD-диска, а после и процессоры стали достаточно мощными, чтобы полностью программный синтез звука на них не требовал существенных вычислительных ресурсов.

В 1980-х укрепление позиции видеоигр как нового культурного явления породило интерес и признание игроками видеоигровой музыки, появились её ценители, а годы спустя — и люди, ностальгирующие по тому самому исконному звучанию. Некоторые звуковые чипы стали легендарными, их названия остаются на слуху до сих пор. Это, прежде всего, всемогущий SID, и с десяток менее именитых, среди которых есть и наш пациент — AY-3-8910, также известный как просто AY. Музыку, воспроизводимую подобными чипами, сейчас называют «чиптюном», но этот термин за десятилетия существования также включил в себя множество других смежных и схожих явлений.

▍ Странные дни


В 1990-х на базе вычислительно окрепших домашних персоналок и волне уже зарождающейся ностальгии по уходящей 8-битной эпохе начали появляться первые программные эмуляторы разнообразных компьютеров и игровых консолей прошлых лет. В том числе они эмулировали и звук, но качество этой эмуляции оставляло желать сильно лучшего — поначалу это была примитивная ретрансляция звуковых данных на имеющиеся на борту PC тех лет FM-чипов. Во второй половине 1990-х появилась и привычная в наши дни честная низкоуровневая эмуляция, генерирующая на выходе поток семплов, но на тот момент с низкой частотой дискретизации и некачественным ресемплингом, так как эта задача оставалась вычислительно тяжёлой для компьютеров тех лет.

Такой же непростой задачей для компьютеров тех лет было хранение и воспроизведение оцифрованной живой музыки. Она требовала либо накопителя большого объёма — хотя эти объёмы и росли с невероятной скоростью, к концу 1990-х это всё ещё были единицы гигабайт — либо вычислительно тяжёлых форматов хранения звука с потерями, типа MP3. Оцифрованная музыка хорошего качества стала нормой ближе к 2000-м.

В то же самое время совершался переворот в области портативного аудио. Кассеты и даже CD-диски уходили в прошлое, им на смену пришли портативные MP3-плееры. Первые модели обладали смешными 32 и 64 мегабайтами флеш-памяти, вмещающей единицы альбомов в так-себе-качестве, и чем больше было памяти — тем дороже устройство.

Где-то на стыке этих идей и зародилась концепция класса устройств, об одном из которых пойдёт речь далее.

▍ Портативный чиптюн


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

Как же обеспечить хорошее качество, если даже мощные настольные компьютеры тех лет справлялись с условно-похожей эмуляцией звука с трудом? Конечно же поставить в устройство тот самый оригинальный звуковой чип!

Найти и перечислить все подобные конструкции для разных звуковых чипов — задача для компьютерного археолога и тема для отдельной статьи, так как их были десятки. Я же ограничусь именно чипом AY-3-8910. Если на Западе балом правил SID, в нашей стране эта заморская диковина вкупе с родительским компьютером Commodore 64 была практически неизвестна. Собственных специализированных звуковых чипов советская электронная промышленность предложить не смогла — в баллистических ракетах и танках весь этот джаз не особо к месту — поэтому нашим культурным ответом Западу стал западный же AY-3-8910 в составе компьютера ZX Spectrum 128K (можно подключить и к 48K). Правда, чаще это был его японский аналог, Yamaha YM2149F, применявшийся в компьютерах семейства MSX, в конце 1980-х делавших поползновения в классы информатики, и потому их элементная база была чуть более доступной.

Популярность ZX Spectrum в Англии и MSX в мире в 1980-х привела к появлению тысячи классных мелодий в играх для этих платформ, а нишевая популярность ZX Spectrum-совместимых «Синклеров» в России 1990-х дала ещё пару десятков тысяч композиций авторства местных талантов — от кавер-версий популярной отечественной музыки до полностью оригинальных композиций в самых актуальных музыкальных жанрах. В общем, послушать есть что, и всё это богатство занимает около сотни мегабайт.

Первые попытки энтузиастов в создании автономного плеера AY-музыки с реальным чипом на борту относятся к началу 2000-х, а возможно и к концу 1990-х. Далее на протяжении всех 2000-х и 2010-х хоть и изредка, но регулярно появлялись всё новые и новые конструкции, и всего их сейчас около десятка. Первые плееры были построены на самом настоящем Z80, с музыкой, хранимой в прошиваемом внешним программатором ПЗУ, последующие же конструкции актуализировали элементную базу согласно веяниям времени. В ход шли MCS-51, PIC, AVR, STM32 — всё, что было под рукой и знакомо авторам конструкций. Перечислю несколько примеров, которые удалось найти и вспомнить на момент написания статьи:

  • XZ-80 образца 2003 года за авторством Алексея Чернова построен на реальном Z80 и ЖК-экране от электронной игрушки Тамагочи. Музыка загружается в параллельное флэш-ПЗУ 29С020, причём это делается через последовательный интерфейс на реальном ZX Spectrum.
  • hard plAYer 2007 года, созданный Tolaemon, управляется ATMega64, отображает информацию на классическом текстовом LCD 16x2, хранит данные на SD/MMC карте.
  • AVR AY-player от Freddy, 2012-20 годы. ATmega8, LCD 16x2, SD-карта. Умеет играть только один формат, поэтому требует конверсии треков.
  • ChipTune_Player из 2017 года, авторства Вадиматорика. STM32, графический монохромный LCD 128x64, данные на SD карте.

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

Безусловно, некоторую роль в наличии подобного анахронизма играет пресловутая аудиофилия. Некоторым людям кажется, что они способны отличать тончайшие нюансы в звуке, и они крайне требовательны к звучанию и к аппаратуре звуковоспроизведения, даже если инструментально измеримой разницы не наблюдается. В области чиптюна аудиофилия принимает разнообразные формы, от базовой способности различать очень хороший эмулятор и реальный чип (хотя слепые тестирования чаще показывают 50% вероятности) до суперспособности отличить на слух AY-3-8910 и AY-3-8912, хотя это один и тот же кристалл с разной корпусировкой. Конечно, есть и вполне объективные отличия. Так, из-за различий в устройстве аналоговой части AY-3-8910 и его японского клона YM2149F есть реальные отличия в АЧХ при одинаковом включении, а если говорить о других платформах, найти два одинаково звучащих SID-а по причине наличия на борту аналогового фильтра и множества ревизий чипа — задача не из лёгких.

Другой психологический фактор — некий фетиш, пресловутая ламповость, ощущение техномагии происходящего. Приятно осознавать, что этот звук заново рождается прямо здесь и сейчас, в недрах того самого тёплого кремниевого чипа, а не в холодных флоатах программы на каком-нибудь Питоне. Объективно бессмысленно, но вполне понятно мне как музыканту — это сродни реальным аналоговым синтезаторам прошлого, которые звучат не лучше современных VST-плагинов, но взаимодействие с настоящими ручками и переключателями вдохновляет и стимулирует творческий процесс.

▍ Мой ход


И вот мы наконец добрались до главной темы статьи.

Хотя подобных устройств наплодили немало, и на них даже наблюдается небольшой, но стабильный спрос среди сотни энтузиастов, все они обладают общей проблемой некоторой недосказанности. Каждое устройство слегка не доведено до финала, большинство из них существует в лучшем случае в виде платки с мотком МГТФ, а чаще в виде схемы без платы, платы без схемы, всё это без прошивки или с минимально обозначенными функциями. Конструкции конца 2010-х только-только приблизились к решению проблемы повторяемости и были собраны в единицах экземпляров.

Таким образом, даже при наличии схем и желающих получить заветное устройство, получить его они не могут — не обладают нужными навыками, чтобы собрать таковое, и никто не предлагает, потому что см. выше. Как-то, обсуждая эту тему с коллегой, который как раз входит в ту самую сотню, и одновременно занимаясь каким-то очередным проектом на ESP8266, я подумал — «да я и сам это могу, делов-то всего ничего» (нужно заметить, что я не электронщик по профилю, у меня уровень давно-начинающего любителя). Ну я и пообещал помочь. Делов-то набралось почти на три года. Разумеется, проект делался набегами с очень долгими паузами, и в чистых рабочих часах занял действительно не так много времени.

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

▍ Железо


Мой выбор элементной базы как и у всех был обусловлен доступностью и моим текущим интересом к ней и наличием таковой под рукой — это МК ESP8266, расширитель портов ввода-вывода MCP23S17, и графический OLED-экранчик 128x64. Экран изначально был с интерфейсом i2c, позже я перешёл на SPI-версию, чтобы повысить скорость обновления изображения, но поддержка i2c в драйвере экрана сохранилась.

Схема в версии от 2021 года, по которой собирались прототипы

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

Первая изюминка — способ генерации тактовой частоты для AY-3-8910. Этот чип для работы требует меандра с частотой порядка 1.5-2 МГц на тактовом входе, и от этой частоты зависит высота звука. Практически во всех конструкциях плееров для тактирования AY используется классическая схемка с генератором на кварцевом резонаторе и счётчике-делителе, или современный готовый тактовый модуль, но такой вариант даёт одну фиксированную тактовую частоту и несколько деталей для генератора.

У разных платформ, на которых использовался этот чип, разная тактовая частота, и даже у разных вариантов ZX Spectrum есть минимум три часто используемых значения, из-за которых немного меняется высота музыки. Конечно, можно на лету пересчитывать делители, но тогда потеряются тонкие особенности неравномерности строя (12-битный делитель даёт 4096 дискретных питчей, которые попадают в реальные ноты с заметными отклонениями). Поэтому возможность изменения тактовой частоты была бы очень кстати, но программно управляемый генератор такой высокой частоты потребовал бы неплохой кучки дополнительных деталек. И внезапно, наличие именного такого генератора является недокументированной особенностью МК семейства ESP — чем и был обусловлен выбор именно этого МК, а не AVR или STM32.

Дело в том, что микроконтроллеры ESP имеют на борту интерфейс i2s для управления последовательными ЦАП. В этом интерфейсе есть сигнальная и тактовая линии, по которым передаются простые битовые пакеты. Особенность ESP в том, что он позволяет задавать тактовую частоту для i2s в очень широких пределах, гораздо шире, чем это нужно для звуковых применений — вплоть до 80 МГц (тактовая частота периферии для ESP). При этом шаг регулировки довольно плавный. Обычно эту особенность задействуют для программной генерации цветного композитного видеосигнала на борту, что является ну очень крутой недокументированной возможностью столь недорогого контроллера. Я же применил её для тактирования AY. Таким образом, отпадает необходимость в отдельном тактовом генераторе и появляется возможность выбирать любую тактовую частоту.

Вторая изюминка — скорее попытка борьбы с последствиями выбора ESP8266. Дело в том, что AY — чип из пятивольтовой эпохи, тогда как ESP — представитель трёхвольтовой эры. Дело явно пахнет преобразователем логических уровней. Но у ESP8266 всё равно недостаточно выводов для прямого подключения AY, обладающего традиционным параллельным интерфейсом для 8-битной ШД. Проблему нехватки пинов я решил решить использованием расширителя портов MCP23S17, а он обладает приятной особенностью — 5v tolerant входами, с 3.3 вольтовыми выходными уровнями. Таким образом, подключение AY производится вообще без преобразования уровней. Впрочем, входы в данной конструкции не пригодились, т. к. данные всегда идут от МК к чипу, не наоборот.

Далее, как выяснилось при сборке прототипов, преобразование уровней для этой конструкции вообще не очень актуально, так как все чипы, которые сейчас можно достать (и AY-3-89xx, и YM2149F) выполнены по технологии CMOS, и им даже не требуется паспортных 4.5-5 вольт питающего напряжения, они нормально работают и от трёх вольт. Только самые ранние выпуски AY-3-8910, ныне коллекционная редкость, были выполнены по старой технологии и не дружат со столь сильным понижением питающего напряжения.

По оригинальной задумке конструкция питается от одного аккумулятора формата 18650, с повышающим преобразователем, как в современных пауэрбанках, и далее преобразователь питает ESP, MCP и AY 5 вольтами, модуль ESP у себя на борту понижает напряжение до нужных ему, SD-карте и OLED-экрану 3.3 вольт. На практике же оказалось, что повышающий преобразователь не обязателен, и можно питать ESP, MCP и AY напрямую от 18650.

Большой проблемой этой и других аналогичных конструкций является цифровой шум, в данном случае возникающий при работе OLED-экрана (который также имеет повышающий преобразователь) и SD-карты. Он практически неизбежно проникает на вход усилителя звука, и полностью устранить его, по всей видимости, принципиально невозможно, так как в чипе AY-3-8910 земля не разделяется на традиционные цифровую и аналоговую земли — у него всего один общий вывод для цифровой и аналоговой земли. Поэтому с цифровым шумом можно только с ограниченным успехом бороться LC-фильтрами на питании. В прототипах мне удалось подавить шум до приемлемых уровней, но он всё равно прослушивается на максимальной громкости. Благо, обращаться к SD карте во время воспроизведения музыки не требуется, а экран обычно гаснет по таймауту.

Аналоговая часть устроена максимально просто. Это простейший микшер на резисторах с фиксированным соотношением лево-право-центр (раскладка каналов изменяется программно) плюс усилитель для наушников на MAX4410 и банальный классический сдвоенный потенциометр для регулировки громкости. Более продвинутые конструкции используют цифровые потенциометры, что позволяет менять панорамирование и громкость каждого канала в отдельности, но это сильно увеличивает количество деталей, и на данном этапе развития проекта я решил не идти этим путём.

▍ Софт


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

Я изначально выбрал окружение Arduino для удобства поддержки проекта и простоты пользовательских модификаций. Для работы с SD-картой, FAT32, i2c и расширителем портов были выбраны стандартные готовые библиотеки. Драйвер OLED экрана я написал свой, потому что изначально не предполагал возможность замены экрана, но хотел добиться максимальной скорости обновления с интерфейсом i2c (50+ FPS).

Скриншот проекта из Arduino IDE. Код не самый сложный, но его довольно много

Главной задачей софта являлась поддержка всех популярных форматов музыки — Sound Tracker, Pro Tracker разных версий, ASC Sound Master, и так далее. Это довольно сложно поднять с нуля, потому что документация форматов весьма бедная и неполная, а существующие треки могут звучать неправильно, если не повторить все мельчайшие особенности и предельные случаи в логике плееров. Наиболее реалистичным вариантом была бы эмуляция Z80 и запуск кода оригинальных плееров. Однако, уже давно существуют несколько проектов программных плееров-эмуляторов для PC и других платформ с открытым исходным кодом, в частности, Ay_Emul и ZXTune, и этот путь был попроще.

Я взял за основу библиотеку ayfly Андрея Дерябина, которая в своё время сделала возможным воспроизведение музыки для AY-3-8910 на Nokia S60 — ещё один исторический эпизод из жизни диких чиптюнов. Библиотека содержит плееры всех популярных форматов, адаптированные из исходников AY Emulator, написанного на Delphi, на нормальный человеческий C++. Таким образом, основной функционал устройства был получен с минимумом усилий.

Приятной побочной особенностью использования ESP8266 является его производительность — порядка 160 MIPS в режиме 160 МГц. Имея в распоряжении такую мощь, было бы глупо не попытаться поддержать и формат AY (*.ay). От всех прочих он отличается содержанием оригинального кода для Z80, извлечённого из игр, а значит, для его воспроизведения требуется эмуляция Z80. В файлах этого формата также традиционно хранят биперную музыку.

Я решил попытаться сделать хотя бы ограниченную поддержку. Эта задача оказалась не самой простой. Дело в том, что один AY-файл может требовать для проигрывания до 64 килобайт ОЗУ (48К стандартного ОЗУ ZX Spectrum 48K, и дополнительная часть кода может располагаться в области ПЗУ). ESP8266 же является младшим в линейке, и не может похвастаться умопомрачительным количеством ОЗУ, хотя его по меркам МК и довольно много, и часть этой памяти требуется для стабильной работы встроенной ОС.

За основу я взял готовое ядро эмуляции Z80, z80emu от Lin-Ke Fong. Проблему нехватки ОЗУ я решил с помощью динамического проецирования адресного пространства эмулируемого Спектрума на доступное ОЗУ. Если происходит запись в какой-то байт виртуального адресного пространства (при загрузке файла либо выполняемым кодом Z80), под него и близлежащие байты выделяется 256-байтная страничка в реальной памяти ESP8266. Таким образом удаётся разместить в памяти большую часть AY-файлов, которые обычно используют не всё ОЗУ целиком. Разумеется, некоторые файлы в память всё же не помещаются.

Эмуляция бипера использует довольно грубую схему интерполяции ради экономии вычислительных ресурсов, чтобы оставалось время на обновление экрана с приличной плавностью, и воспроизводится через встроенный сигма-дельта модуль (у ESP8266 нет встроенного ЦАП). Поэтому качество звука далеко от уровня современных эмуляторов, но большую часть треков это решение воспроизводит вполне достойно. В конце концов, это hway, а не hwbeeper, и данная возможность бонусная, а не основная.

Другая приятная особенность контроллеров ESP, являющаяся их ключевым преимуществом — набортный Wi-Fi модуль — пока не была задействована в софте, но она открывает потенциальную возможность загрузки файлов в устройство даже без использования SD-карты.

▍ Корпус


На мой взгляд, огромная проблема всех отечественных ретрокомпьютерных устройств — их внешняя непрезентабельность. Достаточно сравнить недавний ZX Next (классный дизайн, оригинальный корпус) и любые наши современные клоны ZX Spectrum (корпуса нет вообще или сделан владельцем из того, что было). Поэтому я изначально задумывал сделать конструкцию плеера по принципам индустрии 4.0 — в виде полностью законченного устройства, целиком с корпусом, которое можно было бы изготовить на месте при наличии производства печатных плат и 3D-печати.

Корпус и плата под него были спроектированы на раннем этапе. Однако, в итоге я остался крайне не удовлетворён качеством доступных решений для производства корпусов. 3D печать или слишком грубая (FDM), или хрупкая (SLA). Фрезеровка из алюминия стоит очень дорого. Наборный корпус из слоёв фанеры или оргстекла с лазерной резкой более-менее доступен, но в силу технологии имеет очень специфический дизайн и конструктив. В любом случае эстетика устройства получается близка к традиционному DIY из подручных средств и сантеха, и таковая наружность устройства не видится мне достаточно привлекательной. Такой sex не sells.

Предварительное проектирование одного из вариантов корпуса в FreeCAD

В результате я решил отложить работы по качественному кастомному корпусу, имеющие неопределённый срок завершения, и собрать прототип в заводском project box-е, а позже (также пока не реализовано) подготовить печатную плату и 3D-печатные элементы для максимально простой сборки в одном из подобных готовых корпусов, только размером поменьше.

▍ Прототипы


В процессе работы над проектом я собрал два рабочих прототипа.

Первый прототип выполнен на традиционной односторонней макетке с вязанкой разноцветных проводов с обратной стороны. До сих пор работает и хранится у меня. Увидеть его работу можно на этом видео:

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

Измеренный потребляемый ток прототипов при включённом экране, максимальной яркости и максимальной громкости — около 85-100 mA, что в перспективе даёт до пары десятков часов автономной работы на одном заряде аккумулятора средней ёмкости (~2500 mAh). Долгосрочное тестирование второго прототипа показало, что эти приблизительные расчёты близки к реальности, заряда действительно хватает очень надолго.

На данный момент проект встал на паузу на стадии проектирования третьего прототипа, который должен размещаться в аналогичном, но значительно меньшем готовом корпусе (58 на 118 на 30). Учитывая размеры компонентов и внутреннюю геометрию корпуса, это оказалось крайне непростой задачей даже при использовании объёмного монтажа в бутерброде из нескольких плат, и вероятно вынужденным решением станет отказ от аккумулятора 18650.

▍ Экономика


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

Предварительная визуализация дизайна плеера и внутренней компоновки.

Это острая тема, которую редко поднимают самоделкины — экономика их проектов. Мне самому не очень приятно писать этот раздел — чувствую себя пенсионером, бухтящим про дороговизну гречи и низкую пенсию. И тем не менее, думаю, стоит раскрыть тему. Всё-таки эта проблематика всегда всплывает, когда на личный хоббийный проект вдруг возникает спрос.

В силу исторических причин у целевой аудитории сформировалось восприятие Спектрума и сопутствующих вещей как недорогих и доступных. Всё-таки он очень долгое время играл роль максимально бюджетной альтернативы современным (тем временам) IBM PC. Это восприятие подкрепляется низкой ценой нынешней массовой электроники. В результате в глазах многих потенциальных покупателей стоимость современных клонов Спектрума выглядит не вполне адекватной. Для примера, собранная плата (только плата) ZX Evolution сейчас стоит примерно 12 тысяч рублей, а звуковая карта Neo GS для него — 10 тысяч. Эти ценники вполне объективны, учитывая себестоимость и тиражи устройств. Но они не разлетаются как горячие пирожки.

Плата ZX Evolution, стоящая 12 с небольшим тысяч рублей. Картинка от группы NedoPC (мои коллеги и единомышленники)

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

Реальность такова, что детали для второго прототипа на момент его сборки в 2021 году стоили примерно 3.4 тысячи. Сейчас это уже около 5. Значит, итоговая стоимость никак не ниже 5, и для производства десятка устройств нужно для начала вложить минимум 50 тысяч из собственного кармана. Также нужно вложить огромное количество времени — это не очень технологичное устройство, требуется ручная пайка, ручная доработка корпусов, долгая 3D-печать монтажных элементов, логистика (детали не приносят домой, надо поездить по городу). Я бы оценил возможные темпы сборки будущего доработанного дизайна в один экземпляр за вечер. Это определённо уже не проект выходного дня.

Как вы понимаете, нынешние энтузиасты ретрокомпьютеров — довольно взрослые люди, и чтобы хоть как-то оправдать значительные затраты времени, нужно выразить их в адекватном денежном эквиваленте. Также в этом выражении неплохо бы учесть уже существующие затраты: всего на разработку проекта была потрачена ~21 тысяча (затраты при начальной разработке всегда не оптимальны, многие детали берутся на пробу или с излишками), не считая инструменты, приобретённые под проект, не считая поддержку от заинтересованных лиц в виде деталей и материалов.

И через выведение этого выражения у каждого возникает свой ответ на вопрос, стоит ли вообще в это ввязываться. Грубо говоря, сделав десять экземпляров, затратив 71 тысячу и недели личного времени, и запросив максимальные 10 тысяч за экземпляр, можно (когда-нибудь) вернуть 100, и получить 29 до вычета налогов. С одной стороны, в процентах маржа неплохая, с другой — в абсолютных значениях цена рабочего часа хуже, чем в Мак-точке.

Возможно, масштабирование до сотни экземпляров (вложить 521, получить 1000) может добавить затее привлекательности. Но нужно помнить, что эти сто экземпляров сначала нужно собрать, успевая ходить на работу, и потом суметь распродать за обозримое время — причём аудитории, для которой даже чистая себестоимость уже выглядит завышенной. Как нужно и помнить, что это не масштабируемый долгосрочный бизнес (в силу экстремальной нишевости продукта), а разовое хоббийное мероприятие.

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

▍ Итого


Увы, идеальный аппаратный плеер музыки для AY–3-8910 всё ещё не создан, и его всё ещё нельзя просто взять и купить, даже если очень захотелось. Есть куда работать и по совместимости, и по качеству звука, и по удобству использования. Но человечество стало на один маленький шаг ближе к этому свершению.

Если вы хотите повторить конструкцию или сделать собственный форк — схема в KiCad и исходники для Arduino IDE здесь.

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


  1. NutsUnderline
    27.06.2023 13:56
    +2

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

    Насчет стоимости. Говорить можно и нужно - это не жалоба. Это четкий посыл тем кто "все сам делает за копейки" и не считают все изначально. Например недавно были большие тексты разработчика лодочного движка, который хотел сделать дешевле, а улетел в крайне некислые суммы.. и сделал для себя выводы...."Зато свое" :) :) :)


    1. dlinyj
      27.06.2023 13:56
      +1

      Я пришёл к выводу, что "дешевле" сделать самостоятельно не получается. Вся это экономия смешна. Например, в спортивном судомоделизме (там где гоняют), реально дешевле купить модель за 150 тысяч, чем сделать самому. Я уж молчу, про модели по 30-40 тысяч, это вообще подарок.


      И моя попытка вкатиться в эту тему показала, что даже по знакомству, имея возможности, сэкономить не выйдет. Но зато будет способ развлечься.


      1. shiru8bit Автор
        27.06.2023 13:56
        +1

        Я периодически делаю всякое другое электронное DIY, и в том числе тоже иногда касаюсь темы моделизма. Да, все мои попытки сделать что-либо подешевле и подоступнее всегда проваливались, и в итоге я пришёл к выводу, что ориентироваться на бюджетный сегмент в принципе не вариант - если уж и вписываться на благо общественности, то делать за нормальный ценник без экономии на спичках, или не делать, открыть исходники, и пусть желающие сами пробуют.


        1. voldemar_d
          27.06.2023 13:56
          +1

          Меня отдельно впечатляют современные звуковые карты для Spectrum, вроде ZX-MultiSound. Подключаешь ее к древнему компьютеру, и она играет и TurboSound, и чиптюны с FM-синтезом, и MOD, и Covox, и даже General MIDI. За такое, ИМХО, 10 тысяч не жалко. Хотя, это почти стоимость железного эмулятора Спектрума вроде Speccy 2010. Но я прекрасно понимаю, что здесь и 10 тысяч - не такая цена, на которой можно заработать.


          1. shiru8bit Автор
            27.06.2023 13:56

            Как раз недавно начали обсуждать идею новой версии NGS на свежей элементной базе (вероятно RISC V с софтовым ядром Z80 и декодером форматов, плюс мелкая ПЛИС для интерфейса), чтобы снизить себестоимость до терпимых пределов, потому что она начинает не укладываться даже в эти рамки.


            1. NutsUnderline
              27.06.2023 13:56

              Чем бы дитя не тешилось... Тогда взять готовую платку с ПЛИС, они гдето от 600-1000 руб. стоили


              1. voldemar_d
                27.06.2023 13:56

                ИМХО, взять что-то готовое - это не совсем "сделать что-то своё".


                1. NutsUnderline
                  27.06.2023 13:56

                  Что и требовалось доказать - "зато свое" :) Ну а софт? А вывод аналога? На ПЛИС в BGA корпусе вообще сложно сделать свое с нуля, и тут посыл такой что штучное стоит дорого. Я предлагаю сократить эту самую себистоимость проекта за счет типовой дешевой электроники, да и среди реальны потребителей наверное немало тех кто не захочет паять BGA а хочет залить в готовое и слушать


                  1. voldemar_d
                    27.06.2023 13:56

                    ИМХО, здесь главная проблема - кто вообще захочет залить в готовое, которое стоит, как смартфон, если можно просто в смартфон залить и получить сразу кучу готовых удобств. При этом, габариты и вес этого готового наверняка будут больше. Вывод аналога - ну как бы да, только это со смартфона можно сделать и напрямую, и через ЦАП (ну да, он тоже денег стоит, но тем не менее), а то и вообще на BT-колонки.

                    Можете привести пример готовой платки с ПЛИС за 600-1000 рублей?


                    1. NutsUnderline
                      27.06.2023 13:56

                      Speed Tang. Двух версий, правда сейчас уже подороже. Дешевая сейчас от 1200. Раньше видел дешевле, навернео скидки.

                      У меня была идея взять такую - демосцены на ней делать: есть HDMI и более менее типовая, не только один человек использовать может.


                      1. voldemar_d
                        27.06.2023 13:56

                        Нашел "Sipeed Tang Nano 9K FPGA макетная плата GOWIN GW1NR-9 HDMI" - это оно? Если да, то интересная штука, куда мощнее Arduino, спасибо за наводку.


                      1. NutsUnderline
                        27.06.2023 13:56

                        Да, и там рядом еще на 20К - т.е. мощнее, 1K и 4R - проще. Собственно я на aliexpress вбил "FPGA board" и там оно в первых рядах


      1. voldemar_d
        27.06.2023 13:56
        +2

        На днях была статься про то, что даже полотенце дешево сделать не выйдет :-)


  1. voldemar_d
    27.06.2023 13:56
    +1

    Было дело, я публиковал :) но моё устройство на Arduino - скорее учебный проект для начинающих и вообще детский лепет по сравнению с тем, что сделано здесь, снимаю шляпу.

    С точки зрения практичности, ИМХО, удобнее поставить программу ZXTune в смартфон, она не просто умеет чиптюн-музыку в куче форматов играть, а прямо с интернета это умеет делать.


    1. shiru8bit Автор
      27.06.2023 13:56

      Этот проект в принципе легко можно доработать до скачивания музыки прямо с интернета (с того же zxart), и до обновления прошивки с карты или тоже с интернета - на борту всё необходимое есть, тоже были бы интересные фишки. Пока не дошли руки.

      Но в целом да, однозначно согласен, ZXTune на телефоне значительно практичнее. Меня как музыканта уже лет 20 полностью устраивает и AY_Emul на PC, у него изначально было очень хорошее качество и аутентичное звучание. Ту же 'тихую' огибающую (модулированную очень высокой частотой) он воспроизводит нормально.


      1. voldemar_d
        27.06.2023 13:56
        +1

        Не было идеи сделать на чипах AY миди-синтезатор, типа такого?

        Я вот в раздумьях, как его развивать дальше. Недавно сделал версию с OLED-дисплеем, причем в чисто текстовом режиме, и на этом память у Arduino напрочь закончилась, хотя я сократил код, как мог. А я хотел в него еще добавить играние нот орнаментами или инструментами, как в трекерах типа Vortex Tracker (можно даже научиться файлы орнаментов/инструментов в его формате с флешки загружать, благо они текстовые), какие-нибудь арпеджиаторы и т.д.

        У меня уже лежит наготове Arduino Mega, у которой памяти побольше, но я в раздумьях, не имеет ли смысла перейти на какой-нибудь STM32 или ESP, как в этом проекте. Как думаете, стоит дальше мучать Arduino, или надо на что-то посерьезнее переходить? Вообще, насколько сложнее ESP программировать? Вижу, что тоже используется Arduino IDE, там тоже всё на C++ пишется?


        1. shiru8bit Автор
          27.06.2023 13:56

          Была идея сделать MIDI синтезатор на паре YM2612, по железу и половине софтовой части разница не очень большая, можно было бы и AY до кучи добавить. Но это была бы очередная опенсорсная самоделка для больших энтузиастов. Я как-то посещал одну контору, делающую современные отечественные синтезаторы (такие есть), обсуждали там с коллективом подобные идеи, и как обычно, пришли к выводу, что 'сделать можно, но очень мало кому всё это надо'.

          В рамках инфраструктуры Arduino работать с ESP очень легко - всё точно то же самое, только ресурсы у МК другие (таймеры, PWM, и т.п), и библиотеки соответствующие. С STM32 тоже примерно так, тоже есть в формате Arduino-совместимых плат, но с ними я в этой роли глубоко не занимался. Если память поджимает, переход на эти МК однозначно этот вопрос решит, но добавит других. Думаю, в рамках управления MIDI-синтезатором никаких сложных проблем не возникнет ни с STM32, ни с ESP.


          1. voldemar_d
            27.06.2023 13:56
            +1

            Я знаю только одну коммерческую поделку на реальных чипах AY. Цена в 250 фунтов кусается. Но даже при этом возможности не сказать, что поражают воображение. Есть режим detune, есть какие-то кислотные звучки с использованием генератора огибающей, даже какой-то арпеджиатор встроен. Все параметры можно в MIDI-сообщениях передавать. Но вот лично мне купить такой не хочется, даже если бы он в 2 раза дешевле стоил.

            В комментариях к моему синтезатору справедливое замечание написали: нет характерных "спектрумовских" звучков, хотя бы орнаментов. Хотя, например, вот в такой штуке они есть. А еще там есть всякие управляемые фильтры, которые можно было бы тоже прицепить и по MIDI управлять. Понятно, что здесь нет никакого AY внутри, но звуки узнаваемые (в паре последних альбомов даже Jean-Michel Jarre его звучки использовал, да их там и вправду услышать можно, причем, именно орнаменты).

            ИМХО, даже если сделать очередной конструктор для энтузиастов, просторы для творчества далеко не исчерпаны. У меня, например, даже такая мысль была: на одном AY играть готовую мелодию из файла с SD-карты, а второй использовать для того, чтобы самому на MIDI-клавиатуре аккомпанировать вживую.


            1. shiru8bit Автор
              27.06.2023 13:56
              +1

              Я делал автоарпеджиатор для получения этих самых узнаваемых звуков (быстрые чиповые арпеджио) при игре аккордами в паре проектов. Делается просто, и сразу становится гораздо интереснее.


              1. voldemar_d
                27.06.2023 13:56
                +1

                Ну вот, я тоже хочу что-то такое сделать. В миди-синтезаторе можно длину арпеджио сделать зависимой от velocity, например. А ещё, как во всяких самоиграйках с автоаккомпанементом, в зависимости от того, какие клавиши одновременно нажаты, играть разные аккорды (мажор, минор, 7, 6 и т.д.).

                А что за проекты, какое-нибудь видео есть?


                1. shiru8bit Автор
                  27.06.2023 13:56
                  +1

                  Изначально я релизовал автоарпеджио в VST плагине ChipArp. Для него требуется, чтобы DAW поддерживала MIDI вход-выход у плагина, и чтобы синтезатор умел делать глубокий питч бенд (хотя бы в октаву) без сглаживания. Все мои самописные синтезаторы это умеют. Сам я видео не делал, нашёл вот такое.

                  Недавний проект - Suboard, видео пока только в глубинах твиттера. Это софт для клавиатурного Денди-клона, позволяющий играть вживую со множеством всяких наворотов, в том числе и с автоарпеджио, одноканальным автоэхо, огибающими и т.д. и т.п. Есть планы на статью и видеодемонстрацию через некоторое время.


          1. voldemar_d
            27.06.2023 13:56

            А какой тип устройства надо выбрать в Arduino IDE, чтобы программировать ESP? Какие-то пакеты/библиотеки надо доустановить?


            1. shiru8bit Автор
              27.06.2023 13:56

              Очень просто: Инструменты, Плата, Менеджер плат - там можно установить SDK для всех плат, поддерживаемых платформой Arduino, в том числе ESP8266 и ESP32. Для STM32 немного похитрее, официально они не поддерживаются, надо устанавливать через настройки, менеджер дополнительных плат.


  1. Refridgerator
    27.06.2023 13:56

    Есть же ещё один вариант — взять готовую устройство с ардуино на борту и перепрошить с доработкой напильником. Понятно, что это не путь самурая-электронщика, но и паять современную электронику это не МП42, как раньше, не каждый школьник сможет.

    типа такого, навскидку
    image


    1. NutsUnderline
      27.06.2023 13:56

      Там ардуино?? Дайте две


      1. voldemar_d
        27.06.2023 13:56

        Если это оно (во всяком случае, по корпусу сильно похоже), то внутри STM32.


        1. NutsUnderline
          27.06.2023 13:56

          с 2018 года многое изменилось. в оригинале классический STM32F103, для которого есть Arduino. но с тех пор прошло много времени, stm32 стал дорогим дефицитом и его заменяли китайскими клонами, а оригинал похоже купить трудненько


          1. voldemar_d
            27.06.2023 13:56

            Нашёл на алиэкспрессе некие Arduino STM32, совсем недорого. Просветите чайника - как в Arduino IDE выбрать тип устройства на основе STM32? Там в меню ничего похожего нет. Надо что-то доустановить?


            1. NutsUnderline
              27.06.2023 13:56
              +1

              Это уже совсем офтоп будет. Да, надо зайти в Менеджер Плат и там доставить нужные платы (а их там мноооооогоооо)


  1. Refridgerator
    27.06.2023 13:56
    +1

    запросив максимальные 10 тысяч за экземпляр
    Мне кажется, маловатая у вас максимальная цена за экземпляр. Это же ручная работа, она не может и не должна конкурировать с серийными промышленными экземплярами. Товарищи из хай-энд акустики уже давно не стесняются в ценах (мне как-то попадался моно-усилитель за 20 миллионов рублей), и всё равно у них находятся свои покупатели. А если не находятся, то создаётся образ эксклюзивного, далеко не каждому доступного производителя техники.


    1. NutsUnderline
      27.06.2023 13:56

      Аудиофилия она везде такая. За готовое то дерут - понятно дело. Но тут еще самодельщики отличаются, когда хотят сделать намного круче и дешевле чем.. при этом иногда не имея нужных знаний и навыков


  1. shuffleshu
    27.06.2023 13:56

    Мне кажется, что было бы разумно выпустить собранную плату и набор для сборки для тех, кто на "вы" с пайкой тонкой электроники, но при этом сможет, например, намоделить хороший (или не очень) корпус для 3d-принтера или фрезера. Это гораздо сильнее продвинуло бы проект, чем просто выложить схему и прошивку. Меня вот, к примеру, бесят вот эти вот алишные блоки с мешаниной проводов.


    1. NutsUnderline
      27.06.2023 13:56

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