Как сделать временные (исчезающие) сообщения в Max

Иван Корнев·24.03.2026·3 мин

В Max сделать исчезающее сообщение можно просто: показать текст в message/text-объекте, запустить delay на нужное число миллисекунд и послать команду, перезаписывающую содержимое пустой строкой (или вызвать clear). Ниже — рабочие патчи и варианты для быстрого применения.

Простой способ: delay + set у message

  1. Создайте message-объект, укажите в инспекторе varname, например m1.
  2. Чтобы показать текст и не выводить его автоматически, используйте скриптовую команду или объект message:
    • Пример вывода: [message "; m1 set Hello, world!"] -> bang.
  3. Подключите [delay 2000] (2000 ms) к message-объекту, который отправит команду очистки: [message "; m1 set "] -> delay -> send.
  4. Схема в текстовом виде:
    • [bang] -> [message "; m1 set Hello"] -> (выполнится показ)
    • [bang] -> [delay 2000] -> [message "; m1 set "] -> (очистка)

Этот подход прост и работает в большинстве патчей: вы явно перезаписываете содержимое через scripting (символ ';' — командная строка патчера).

Если не хотите давать varname вручную, используйте [thispatcher] с messages типа "script send" для обращения к объекту по id.

Скриптовый метод (без явных промежуточных message)

Можно формировать одну управляющую строку и отправлять её напрямую:

  • [sprintf "; %s set %s" objectName messageText] -> [sel] -> [delay] -> [sprintf "; %s set " objectName] Это удобно при генерации текстов из данных (sprintf, prepend) и позволяет централизованно управлять временем жизни сообщений.

Визуальные варианты: text, comment, live.text

  • Объект [text] принимает сообщения "clear" и более гибок для многострочных выводов: отправьте нужный текст, затем через [delay] посылайте "clear".
  • Для плавного исчезновения (фейда) используйте отдельный графический слой: выводите текст в [lcd] или jit.matrix и меняйте прозрачность через линейный интерполяционный сигнал (line), но это сложнее и требует Jitter/graphics.

Некоторые UI-объекты не реагируют на пустую строку как на «очистку». В таких случаях используйте явные команды "clear" (для [text]) или "set" с пустым аргументом для message-объекта.

Частые ошибки

  • Не задали varname (имя объекта) в инспекторе — скриптовые команды сработают не на тот объект.
  • Отправляете пустую строку без ';' — это не скриптовая команда и не изменит содержимое message.
  • Используете слишком короткий delay — текст не успевает прочитаться.
  • Путаете message-объект (который хранит текст) и comment-объект (который не всегда реагирует на set).

FAQ

  • Как задать имя объекту? — Выделите объект, откройте Inspector (Cmd/Ctrl+I) и в поле "varname" впишите m1.
  • Можно ли показывать несколько сообщений с разным временем жизни? — Да: каждому сообщению можно дать собственный delay или в коде формировать пары "показать — delay — очистить".
  • Работает ли это в Max for Live? — Да, принципы те же; учитывайте особенности UI объектов в Live API.

Если нужно, пришлите ваш патч (.maxpat) — опишу конкретную правку и дам готовый фрагмент кода.