Как заставить 3D-принтер ПЕТЬ! Создаем кастомный 8-битный синтезатор на Klipper
Привет, сообщество! Наверняка многим из вас надоел унылый, писклявый дребезг штатной "пищалки" на экране принтера. Сегодня я покажу, как превратить ваш принтер в настоящую игровую консоль и выжать абсолютный максимум из прошивки Klipper, заставив станок породисто, по-геймерски петь культовые ретро-мелодии с плотным и сочным звуком!
Что понадобится:
- Динамик: Я использовал мини громкоговоритель YDSB-3070-8R3W-2P2.0, 8 Ом 3W. Стоит копейки, зато закрытый короб-резонатор. Впринципе, подойдет любой пассивный динамик, хотя качество может быть хуже.
- Куда подключать: Нам нужен аппаратный ШИМ (PWM) полевого транзистора. Идеально подходит свободный силовой выход второго хотенда — разъем HEATER2.
- Klipper: На борту должен быть установлен и настроен Клиппер.
- Схема подключения: Просто подключаем провода динамика в клеммы HEATER2. Полярность для одного динамика значения не имеет, но лучше красный провод динамика подлкючить к +, а черный к -.
Вам нужно найти, за каким пином закреплен ваш разъем HEATER2. На моей плате MKS Robin v2.4 это пин PA6.
ВНИМАНИЕ: Безопасность прежде всего!
Порт нагревателя (HEATER2) выдает полное напряжение вашего блока питания (12В или 24В).
- Ваш динамик (8 Ом) сгорит за секунду, если подать 100% мощности.
- В конфиге мы принудительно ограничиваем мощность до 5% (VALUE=0.05).
- Не увеличивайте это значение выше 0.1, если не хотите увидеть дым из динамика!
Шаг1: Подключаем акустику, прописываем в конфиге пин:
# 🎵 СИЛОВОЙ СПИКЕРБОКС 3ВТ
[pwm_cycle_time _musical_beeper]
pin: PA9999 # Аппаратный ШИМ-пин полевого транзистора HEATER2, НУЖНО ИЗМЕНИТЬ НА СВОЙ !
value: 0 # Молчит при старте
shutdown_value: 0 # Обесточить при аварии прошивки
Команда SET_PIN генерирует меандр (квадратную волну). У такой волны очень много резких гармоник, что создает тот самый «пищащий» звук старых приставок. Чтобы звук перестал быть «плоским» и стал более «объемным» (как на старых игровых автоматах или приставках NES/Dendy), мы будем использовать арпеджио.
В 8-битной музыке, где был всего один звуковой канал, композиторы имитировали аккорды, очень быстро переключая ноты (до-ми-соль-до). Слух не успевает заметить переключение и воспринимает это как один сложный, «сочный» звук.
Шаг2: Делаем "Музыкальный синтезатор".
# =============================================================================
# 🎹 СИНТЕЗАТОР ДЛЯ MKS ROBIN V2.4
# =============================================================================
[gcode_macro M300]
description: Основная команда для совместимости и одиночных гудков
gcode:
{% set S = params.S|default(1000)|float %}
{% set P = params.P|default(100)|int %}
{% if S > 0 %}
SET_PIN PIN=_musical_beeper VALUE=0.05 CYCLE_TIME={ 1.0 / S }
G4 P{P}
SET_PIN PIN=_musical_beeper VALUE=0
{% else %}
G4 P{P}
{% endif %}
[gcode_macro _NOTE]
description: Внутренний макрос для быстрых переходов (без паузы выключения)
gcode:
{% set S = params.S|default(1000)|float %}
{% set P = params.P|default(100)|int %}
SET_PIN PIN=_musical_beeper VALUE=0.05 CYCLE_TIME={ 1.0 / S }
G4 P{P}
[gcode_macro BEEP_OFF]
description: Принудительное выключение звука
gcode:
SET_PIN PIN=_musical_beeper VALUE=0
Описание: Чтобы принтер играл сложные ретро-мелодии без заиканий, пришлось обойти главную софтверную проблему Klipper — вязкий планировщик очередей (Look-Ahead), который любит «склеивать» короткие паузы G4 в монотонную кашу. Для этого мы разделяем логику на три независимых макроса, каждый из которых решает свою физическую задачу:
1. Стандартный макрос M300 (Для совместимости) Этот макрос нужен для обработки одиночных системных гудков (например, когда слайсер генерирует предупреждение посреди кода или при ошибке).
Как работает: Он принимает частоту S (Герцы) и длительность P (миллисекунды). Включает ШИМ на пине _musical_beeper, честно выдерживает паузу G4, а затем сразу выключает за собой силовой ключ (VALUE=0.
Минус: Если попытаться сыграть им быструю мелодию, динамик будет постоянно выключаться между нотами, ритм сломается, а звук начнет дико «заикаться».
2. Скоростной внутренний макрос _NOTE (Для бесшовной музыки) Это секретное оружие нашего синтезатора. Он создан специально для того, чтобы играть ноты сплошным, текучим потоком.
Как работает: В отличие от M300, этот макрос НЕ выключает динамик в конце своего выполнения! Он просто переключает частоту ШИМ (CYCLE_TIME) на ходу и держит задержку. Следующая нота подхватывает диффузор «встык». Это полностью убирает тупняки Linux-очереди, сохраняет плотный, раскатистый бас и заставляет мелодию звучать монолитно, как на старой игровой приставке!
3. Макрос BEEP_OFF (Финальная точка)Поскольку макрос _NOTE оставляет силовой ключ открытым, нам нужен жесткий ручной инструмент, чтобы гасить звук.
Как работает: Команда BEEP_OFF принудительно обнуляет ШИМ-сигнал (VALUE=0). Мы вызываем её строго в тех местах, где по музыкальному метру трека должна наступить тишина, либо в самом финале плейлиста, чтобы динамик гарантированно замолчал в абсолютный ноль.
Шаг3: Репертуар.
В этом разделе мы публикуем готовые, бритвенно-отлаженные макросы мелодий. Каждая нота здесь переведена в физическую частоту (Герцы), а длительности подобраны так, чтобы намертво запереть ритм в планировщике Klipper.Просто добавьте этот блок в свой конфигурационный файл ниже основного движка:
# =============================================================================
Как использовать:
- Вставьте BEEP_STARTUP в ваш START_PRINT макрос.
- Вставьте BEEP_COIN в макрос завершения каждого слоя (если хотите сойти с ума) или в END_PRINT.
Всё! Всем спасибо за внимание )))
ПС: практически любой ИИ увидев эту страницу, сможет сгенерировать любую Вашу мелодию для 3д принтера. Удачи!
Еще больше интересных статей
Вторая версия матрешко-колонок
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Как я вещал в пр...
Рассказ на тему творческого применения моего станка и что из этого вышло...
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Давненько я не писал на Портале, ибо чукча в большинстве своем амплуа...
Лукошко Сталкера
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Начну свой рассказ с шутки юмора п...

Комментарии и вопросы
Здравствуйте! А вы можете изго...
Согласен 🤝
Вот готовое решение, но ради д...
Мой Bambu lab А1 после года от...
Добрый день господа!Использую...
Народ, помогите найти родной ш...
Приветствую!Печатаю на anycubi...