Pull to refresh

Comments 44

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

В своё время занимался DIY, делал, например, 3д принтеры дешевле (иногда в несколько раз) чем в продаже, умные устройства и т.д.

Можно многое сделать дешевле, не согласен

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Спасибо за статью, интересно. Вариант для капиталистов поленивее: продавать не готовое устройство, а наборы для самостоятельной сборки.

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

Вопрос: эта библиотека заточена именно под воспроизведение файлов? Из нее легко вычленить часть, собственно эмулирующая только синтезатор, т.е. сам чип AY? Грубо говоря, легко ли на ней сделать плеер PSG-файлов /дампов регистров, без парсинга навороченных форматов вроде PT3?

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

Простой эмулятор AY по сложности чуть меньше 300 строк кода на C (сама логика чипа, без ресемплера). Плеер PSG-дампов ещё строк 100-200.

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

Можно посмотреть на https://github.com/mamedev/mame/blob/master/src/devices/sound/ay8910.cpp, но для целей просто проиграть PSG это очень избыточная сложность.

Моя доисторическая реализация используется в этом проекте: https://github.com/ESPboy-edu/ESPboy_PT3Play (файл ay_emu.h), но вероятно она далеко не такая точная, как в MAME.

Огромное спасибо! Мне хватит и не очень точной реализации. Ресэмплер я сам прикрутить смогу, если понадобится.

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

Какую часть экрана удаётся обновлять с частотой 50+ fps?

Прямо весь экран? Переход с i2c на SPI существенно повышает скорость перерисовки?

Я сейчас делаю вторую версию MIDI-синтезатора, приделал к нему SSD1306 по i2c. Сам пока библиотек для экрана не пробовал делать, с чужой библиотекой ssd1306ascii, которая позволяет выводить на экран только текст (для экономии памяти) обнаружил, что даже если обновлять на экране всего одну строку текста, это уже довольно медленно работает.

Например, затереть строку пробелами, а потом нарисовать буквально 3-4 символа в этой строке - уже занимает 13-14 мс. Приходится извращаться, чтобы не затирать всю строку, но всё равно, удалось сократить время отрисовки нужных мне символов до 6-7 мс. Хотелось бы ещё быстрее, вот думаю, возможно ли, если написать свою библиотеку и/или перейти на SPI?

Мне бы хотелось на таком экране нарисовать что-то вроде пианинной клавиатуры на пару октав и выделять (например, инвертировать) на ней клавиши, в которых сейчас играется нота, пришедшая по MIDI. Если не 50, тот хотя бы 20 раз в секунду. Как думаете - реально, или нещадно тормозить будет?

Во время проигрывания музыки перерисовывается примерно две трети экрана с частотой 50 FPS. Структура памяти у экрана - байт на вертикальную полоску из 8 точек, следующий байт полоска правее, и так далее, 128 байт на кусок 128x8 пикселей. В процедурах отрисовки я помечаю, какие из полосок изменились и их надо переслать в память экрана, получается грубая оптимизация. Скорости i2c экрана (с библиотекой программного i2c brzo) для этой ситуации более-менее хватало, но не в режиме эмуляции Z80 для файлов формата *.AY, т.к. эмуляция сильно нагружает процессор. Переход на экран с SPI интерфейсом эту проблему решил.

Специальных тестов скорости отрисовки я не делал, но думаю, для SPI она выше в несколько раз, т.к. brzo_i2c в лучшем случае даёт скорость 1 МГц (в режиме тактовой частоты ядра 160 МГц), а у SPI это как минимум единицы мегагерц.

Готовые библиотеки помимо неоптимальной скорости обмена с экраном могут и собственно отрисовку делать крайне неоптимально. Например, очень популярная библиотека Adafruit GFX рисует абсолютно всё, включая символы текста, через вызов writePixel для каждой точки (а writePixel ещё и перевызывает drawPixel).

Пианино на таком экране нарисовать и быстро обновлять можно, тормозить не должно. Даже i2c вполне должно хватить.

Отлично, спасибо, буду пробовать экран с SPI.

Посмотрел видео еще раз (начиная с 0:35 и дальше). Если не секрет, как реализован показ анализатора спектра? Там реально делается FFT синтезированного звука? Или просто по значениям делителей частоты тона каналов синтеза A/B/C определяется, какая у играемых нот частота?

И как делается плавный сброс пиков на графике? В памяти хранится массив пар значений для каждой частотной полосы, в котором запоминается время и величина каждого пика, а при пропадании звука в частотной полосе пик сбрасывается не мгновенно, а с постепенным затуханием?

Звук из AY не заходит обратно в контроллер, так что, конечно, FFT там нет. Да. именно так и работает, просто по делителям частоты тона. Все полосы постоянно декрементируются, а в полосы активных в данный момент частот постоянно перезаписывается пиковое значение.

Sign up to leave a comment.