Представляю вашему вниманию мою конструкцию такого экстремально нишевого, убер-гиковского гаджета, как портативный аппаратный проигрыватель чиптюновой музыки для звукового чипа 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 здесь.