ATM — это плеер музыки для Flipper Zero на базе ATM-синтезатора (движок из Arduventure/Arduboy).
Приложение читает текстовые файлы *.atm из assets/, компилирует их во внутренний бинарный ATM-формат и воспроизводит через ATM.play().
ATM (ATMsynth) — трекерный формат с 4 каналами и байт-кодом команд.
В этом проекте используется текстовый DSL, который конвертируется в исходный байт-код при загрузке файла. Это удобнее для ручного редактирования музыки.
Треки лежат в ext/apps_assets/ATM/*.atm.
Минимальная структура:
ATM1
NAME My Song Title
ENTRY 0 1 2 3
TRACK # 0
... команды ...
ENDTRACK
TRACK # 1
... команды ...
ENDTRACK
ENDПравила:
ATM1— сигнатура формата.NAME ...— опциональное имя композиции (строка до конца линии), отображается вверху экрана плеера.ENTRY a b c d— стартовый трек для 4 каналов.- Каждый
TRACK ... ENDTRACK— последовательность команд одного трека. END— конец файла.- Комментарии начинаются с
#. - Разделители аргументов: пробелы, переносы строк,
,.
Номера треков после TRACK сейчас используются как комментарий для человека (парсер строит индекс по порядку блоков).
NOTE n- Включить ноту
0..63.
- Включить ноту
DELAY t- Задержка в тиках (
t >= 1).
- Задержка в тиках (
STOP- Остановить текущий канал.
RETURN- Возврат из трека.
GOTO track- Безусловный переход на трек.
REPEAT count track- Повтор/цикл как в оригинальном ATM.
GOTO_ADVANCED ch0 ch1 ch2 ch3- Расширенный переход (команда
0x9E).
- Расширенный переход (команда
SET_TEMPO vADD_TEMPO dvSET_VOLUME vVOLUME_SLIDE_ON stepVOLUME_SLIDE_OFFSET_NOTE_CUT vNOTE_CUT_OFFSET_TRANSPOSITION vTRANSPOSITION_OFFSET_VIBRATO depth cfg
DB value- Вставить байт напрямую (
valueвdec/hex, например31или0x1F).
- Вставить байт напрямую (
- Также можно писать просто число отдельным токеном — оно будет вставлено как сырой байт.
ATM1
ENTRY 0 1 2 3
TRACK # 0
SET_TEMPO 36
SET_VOLUME 48
VOLUME_SLIDE_ON -2
REPEAT 3 1
STOP
ENDTRACK
TRACK # 1
NOTE 14
DELAY 8
NOTE 17
DELAY 8
RETURN
ENDTRACK
TRACK # 2
SET_VOLUME 0
STOP
ENDTRACK
TRACK # 3
SET_VOLUME 0
STOP
ENDTRACK
END- Поддерживаются только команды из списка выше.
- Если нужен редкий opcode ATM, используйте
DB. - При ошибке парсинга файл не воспроизводится (
Load errorв UI).
- В браузере: выбрать
*.atmфайл. - В плеере:
OK— пауза/продолжитьDown— стопBack— назад к списку файлов
рефакторинг графики исправить кнопки добавить больше аудио исправить gpt readme