PDA

Просмотр полной версии : ESP32 AY Turbo Sound Multiformat Player



djspawn
26.06.2024, 19:57
Вот вам новая железка с пылу с жару)

Мультиформартный плеер на двух AY/YM чипах, построенный на микроконтроллере ESP32

Что умеет:

Поддерживаемые форматы:

.ayl - Ay_Emul by Sergey Bulba собственный формат плейлиста


.pt1 - Pro Tracker v1


.pt2 - Pro Tracker v2


.pt3 - Pro Tracker v3 (включая Turbo Sound на двух AY чипах)


.stc - Sound Tracker


.stp - Sound Tracker Pro


.asc - Sound Master


.psc - Pro Sound Creator


.sqt - SQ Tracker


.ay - AY (эмуляция z80 в ESP32 DAC)


.psg - Programmable Sound Generator


.rsf - Registers Stream Flow


.yrg - формат от AVR-AY


UART режим (доступно в меню настроек плеера как Player Source)


Режимы проигрывания:

Проигрывание всех треков (в папке/плейлисте)


Проигрывание случайного трека (в папке/плейлисте)


Проигрывание одного трека по кругу (loop)


Поддержка реалтайм файл браузера

Преключение слоев AY в реалтайм:

ABC


ACB


BAC


BCA


CAB


CBA


Смена тактирования AY в реалтайм:

ZX SPECTRUM - 1773400 Hz


PENTAGON - 1750000 Hz


MSX - 1789772 Hz


CPC - 1000000 Hz


ATARI ST - 2000000 Hz


Встроенный аккумулятор

Встроенная зарядка и индикация светодиодами и на TFT

Встроенный усилитель для наушников управляемый по шине I2C

Управление:

Удержание кнопки энкодера - смена режимов: плеер/файл браузер


Клик по кнопке энкодера - в режиме плеера: play/pause; в режиме браузера: выбор трека/плейлиста/директории; в режиме настроек: выбор.


Двойной клик по кнопке энкодера - в режиме плеера: вход в меню настроек.


Нажатие и поворот вправо энкодером - перемотка вперед (ускорение) (для формата .ay - переключение следующего subsong).


Нажатие и поворот влево энкодером - замедление (для формата .ay - переключение предыдущего subsong).


Клик/удержание левой кнопки - громкость "-" (в режиме плеера); отмена - в меню настроек.


Клик/удержание правой кнопки - громкость "+" (в режиме плеера)


Двойной клик левой кнопки (в режиме плеера) - смена частоты тактирования AY


Двойной клик правой кнопки (в режиме плеера) - смена режима проигрывания: все/случайный/один трек(и)


Демонстрация работы плеера с записью и синхронной оцифровкой звука:


https://youtu.be/-dr-m1xszBs

Все детали проекта в репозитории GitHub (https://github.com/djspawnbrest/ESP32AY)

В репозитории есть все для самостоятельного повторения:

схема


герберы


прошивка (platformio)


stl файлы для печати корпуса


Добавлена функция быстрой прошивки без установки среды разработки прямо с браузера!!!
https://ota.alexspawn.ru

UPD 22.10.2024
Добавлена ​​новая функция: «Режим UART» с плеером AVR-AY через UART.

UPD 09.02.2025
При первом использовании карты или любом первоначальном запуске "неизвестной" SD - теперь плеер ищет любой поддерживаемый файл на всей карте памяти, включая подпапки. Теперь нет необходимости помещать хотя бы один поддерживаемый файл в корень SD карты.

svofski
27.06.2024, 15:28
Мне очень нравится, красивое. А планируется коммодоровщина в будущем?

goodboy
27.06.2024, 18:29
.ay - AY (эмуляция z80 в ESP32 DAC)
ещё-бы бипер добавить

djspawn
28.06.2024, 11:02
Мне очень нравится, красивое. А планируется коммодоровщина в будущем?

Честно, пока не думал, но ресурсы в мк еще есть)

- - - Добавлено - - -


ещё-бы бипер добавить

Вообще это и есть бипер, формат ау включает в себя биперное звучание, отсюда и эмуляция для этого

goodboy
28.06.2024, 11:48
Двойной клик левой кнопки (в режиме плеера) - смена частоты тактирования AY
по-уму (для формата AY) плейер должен сам выставлять частоту AY zx/msx/cpc ориентируясь на адрес порта.
ручной выбор тогда будет актуальным только для firm/pentagon

djspawn
28.06.2024, 12:32
по-уму (для формата AY) плейер должен сам выставлять частоту AY zx/msx/cpc ориентируясь на адрес порта.
ручной выбор тогда будет актуальным только для firm/pentagon

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

vyachik
29.06.2024, 20:20
Вау! Плеер моей мечты!;)

andykarpov
25.10.2024, 18:41
а можно полное имя модуля ESP32, плз ? а то их разных много этих WROOM'ов :)
и еще вопросик - а какой аккум предполагалось использовать и сколько он держит времени в активном режиме проигрывания?
и еще - на какой высоте от платы и как крепится дисплей?
и еще - энкодеров не бывает таких же, с выгнутыми наизнанку выводами? это просто гнуть, получается? оно выдерживает такие манипуляции?
и еще - какая высота крутилки у энкодера и высота кнопок?
и еще - как зовут ползунковый переключатель? и длина его торчка :)

- - - Добавлено - - -

я форкнул репу и чуток под себя платку переделал: https://github.com/andykarpov/ESP32AY/
изменения минимальные:
- заменен разъем usb на usb-C
- заменены футпринты деталей на 0805
- заменен футпринт TRRS-разъема
- немного подвинуты детальки под дип-микрухами, чтоб панельки не вырезать
- заменены и переставлены кнопочки esp32 (boot, en)

djspawn
28.10.2024, 03:14
а можно полное имя модуля ESP32, плз ? а то их разных много этих WROOM'ов :)
ESP-WROOM-32 - я брал этот: https://aliexpress.ru/item/33000837172.html?spm=a2g2w.orderdetail.0.0.291d4aa 6ViWThx&sku_id=12000037070185530

и еще вопросик - а какой аккум предполагалось использовать и сколько он держит времени в активном режиме проигрывания?
тонкие мелкие li-po 3,7В, толщиной 5мм, можно два в параллель, есть место снизу платы и ложить можно один на энкодер, второй на esp. У меня стоит 450мА размерами 40х25х5мм - часа 2-3 жжужжит)

и еще - на какой высоте от платы и как крепится дисплей?
дисплей лежит по периметру на двухстороннем пупырчатом скотче в два слоя, каждый слой толщиной примерно в 1мм, а дальше его корпус сверху мягко прижмет чутка. не забываем отрезать торчащие выводы панелек АУ под корень.

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

и еще - какая высота крутилки у энкодера и высота кнопок?
высота энкодера ~12мм от верхней части основания самого энеодера. Что-то типа этого: https://aliexpress.ru/item/1005003752895006.html?sku_id=12000027044724296. Высота кнопок - 3мм от верхней пластины корпуса кнопки (т.е. высота самого пенька)

и еще - как зовут ползунковый переключатель? и длина его торчка :)
Как зовут - я точно не помню, можно вытянуть step из проекта KiCad или в самом KiCad посмотреть. Но я подбирал что были в магазине - у меня он размерами 4x4x9мм корпус и ползунок вылазит на 2мм, боковой.

- - - Добавлено - - -
я форкнул репу и чуток под себя платку переделал: https://github.com/andykarpov/ESP32AY/
изменения минимальные:
- заменен разъем usb на usb-C
- заменены футпринты деталей на 0805
- заменен футпринт TRRS-разъема
- немного подвинуты детальки под дип-микрухами, чтоб панельки не вырезать
- заменены и переставлены кнопочки esp32 (boot, en)
Видел!) Круто!) Еще у самого не дошли руки переделать на Type-C, но может и у тебя заберу) Пока еще код допиливаю) есть еще много идей)
Если что ТГ: AlexSpawn

Kalantaj
28.10.2024, 11:13
Последнее сообщение в теме было в июне. Тока я встретил этот плеер (к своему стыду - прошел мимо не заметив темы), заказал платы и рассказал на канале что буду паять мегаплеер. Пришли платки, детали не пришли ещё, а тут уже и Дед подсуетился - смотрю уже паяет (подслушал не иначе ). Так что ты не останавливайся - реализуй идеи софта. А мы его в массы будем продвигать - плеер то отличный, но вот 2-3 часа это несерьёзно. Часов 7-8 бы...

djspawn
28.10.2024, 11:26
Последнее сообщение в теме было в июне. Тока я встретил этот плеер (к своему стыду - прошел мимо не заметив темы), заказал платы и рассказал на канале что буду паять мегаплеер. Пришли платки, детали не пришли ещё, а тут уже и Дед подсуетился - смотрю уже паяет (подслушал не иначе ). Так что ты не останавливайся - реализуй идеи софта. А мы его в массы будем продвигать - плеер то отличный, но вот 2-3 часа это несерьёзно. Часов 7-8 бы...

Спасибо!) Видел, слежу, в том числе и на твоем канале - приятно) По поводу времени игры, я думаю если туда положить емкость так в 1000мА - там и будет такое время)

zx-alex
11.08.2025, 16:37
Всем привет.
Решил поделиться опытом сборки сего девайса и немного оживить тему.
Столкнулся с тем, что у автора нигде не указано, а какой все же дисплей надо ставить. По схеме еще можно понять, что он должен быть на базе контроллера ST7789, но ни размеров, ни разрешения нигде прямо не указано.
Покопавшись в исходниках и посмотрев герберы, прикинул что это дисплей 2.4" с разрешением 320x240. Начал иcкать такой на алике (с 18 пиновым шлейфом) и к моему удивлению, дисплей на базе ST7789 я не нашел по адекватной цене. Почему-то на них задран ценник за доставку, и если заказывать один дисплей, то выходит больше 10$. Решил на свой страх и риск заказать на другом контроллере, а именно на ILI9341, так как нашел по хорошей цене <3$ (ссылка на продовца https://aliexpress.ru/item/1005007911475769.html)
Так вот, в итоге дисплей заработал, но пришлось совсем чуть-чуть поменять исходники.
82636
Если кто захочет повторить, нужно в файле lib/TFT_eSPI/User_Setups/Setup42_ILI9341_ESP32.h поменять в "#define ST7789_DRIVER" на ILI9341_DRIVER:
--- a/lib/TFT_eSPI/User_Setups/Setup42_ILI9341_ESP32.h
+++ b/lib/TFT_eSPI/User_Setups/Setup42_ILI9341_ESP32.h
@@ -7,7 +7,7 @@
//#define ST7735_DRIVER
//#define ST7735_GREENTAB2

-#define ST7789_DRIVER
+#define ILI9341_DRIVER
//#define ST7789_2_DRIVER

//#define CGRAM_OFFSET // Library will add offsets required
Вот небольшенькая дока на этот дисплей:
82637

Вот бинарник для прошивки с драйвером ILI9341 для ревизии C: 82638

Предложение автору - может стоить добавить поддержку нескольких контроллеров дисплеев?

STAB
20.11.2025, 09:25
Всем привет!
Спаял на плате ревизии В, ESP32 компом увиделась - прошил ZxPod Player Release 3.6 ota.alexspawn.ru (https://ota.alexspawn.ru/) - но девайс пока не заработал, стартует просто с белым экраном. AY в панельки пока не вставлял, но думаю это не критично. Посоветуйте пожалуйста, что проверить в первую очередь. Из приборов только мультиметр.)
Еще в логе прошивальщика ota.alexspawn.ru есть сообщение типа этого - No I2C amplifier detected , как будто не находит микруху усилителя TPA6130A2RTJTG4

STAB
21.11.2025, 09:23
Итак, рассказываю:
Дисплей стал показывать после модификации платы ревизии В до ревизии С (пару дорожек перерезать и перепаять их на другие ноги STM32. Потом оказалось что нет звука (No I2C amplifier detected), перепаял усилок - звук пошел. Но пошел только с DAC самой STM-ки, с AY звука пока так и нет.
Сейчас в логе вот так:
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd _drv:0x00,wp_drv:0x00
mode: DIO, clock div:1
load:0x3fff0030,len:1344
load:0x40078000,len:13964
load:0x40080400,len:3600
entry 0x400805f0
Amp found on address: [99(0x63)]
EEPROM not found on I2C
RTC not found on I2C

STAB
22.11.2025, 19:26
Запустил плеер!
Не надо было запаивать С29 и С30.
Необходимо было сделать модификацию rev A and B to C https://github.com/djspawnbrest/ESP32AY/blob/main/PCB/UpgradeToRevC/fromAandBtoC.JPG?raw=true
Пару раз пришлось перепаять усилитель, в итоге он сел на плату корректно и заработал.

Из странного:
Некоторые MOD звучат с артефактами. Некоторые MOD ресетят плеер.

djspawn
24.11.2025, 10:50
Запустил плеер!
Не надо было запаивать С29 и С30.
Необходимо было сделать модификацию rev A and B to C https://github.com/djspawnbrest/ESP32AY/blob/main/PCB/UpgradeToRevC/fromAandBtoC.JPG?raw=true
Пару раз пришлось перепаять усилитель, в итоге он сел на плату корректно и заработал.

Из странного:
Некоторые MOD звучат с артефактами. Некоторые MOD ресетят плеер.



Забросьте ваши моды которые сбрасывают плеер сюда: https://t.me/AlexSpawn я проверю что с ними не так

STAB
25.11.2025, 12:12
Выловлю, сообщу. На слух названия не знаю, просто играло, а потом затыкается и черный экран. Не ребут скорее, а зависание получается. Переслушаю папку с музякой - постараюсь названия выловить.

STAB
26.11.2025, 09:20
Почему DIN DAC на фото подключен к R33, хотя в описании он должен быть подпаян только к GPIO26?
https://github.com/djspawnbrest/ESP32AY/raw/main/PCB/ExternalDAC/img1.jpg

STAB
18.12.2025, 18:53
Впаял внешний DAC, работает зараза! Поет). Спасибо djspawn, подсказал что да как

- - - Добавлено - - -

Если кто делал плейлист .ayl , то скиньте плиз пример содержания его. Я пока не понял, как отредактировать его. Убирал буквы диска, убирал-оставлял слеши, убирал остальную инфу - нифига.

STAB
19.12.2025, 07:49
Отвечу сам себе. Генерим плейлист, открываем его в Notepad++, запускаем автозамену.
Сначала удаляем имя диска, те например, делаем автозамену C: на пустое значение.
Далее, удаляем метаданные, опять автозамена, в качестве шаблона используем такую конструкцию - ^(?!\\MOD2\\).*$\R? где \MOD2\ это имя папки с файлами.
Возвращаем в самое начала файла строку - ZX Spectrum Sound Chip Emulator Play List File v1.6
В итоге, содержимое будет выглядеть так:
ZX Spectrum Sound Chip Emulator Play List File v1.6
\MOD1\- (2).mod
\MOD1\- unknown -6.mod
\MOD1\- unknown -7.mod
\MOD1\! (2).mod
\MOD1\!!!!!!dealwithdope.mod
\MOD1\!!!!parametric.mod
\MOD1\!!!alchemist2.mod
\MOD1\!!!badboys remix.mod
\MOD1\!.czas.to.pieniadz.mod