Стенд для изучения произведений на фортепиано

Захотел сыграть «On the Nature of Daylight» Макса Рихтера. Ноты я читаю плохо, а в YouTube-туториалах клавиши подсвечиваются по одной: чтобы понять, что нажимать, приходится постоянно ставить на паузу и перематывать. За один день вместе с Claude я собрал себе стенд, который решает эту задачу и заодно понемногу учит читать ноты.

Открыть стенд →

Итоговый MIDI-стенд: нотный стан, клавиатура с подсветкой рук и нижняя панель управления
Итоговый вариант: нотный стан, клавиатура с подсветкой рук и одна панель управления снизу

Задача

  • Видеть сразу, какие клавиши нажимать, а не ловить их в видео.
  • Не садиться учить нотную грамоту отдельно, но начать понимать ноты на живом примере.
  • Чтобы работало с любым произведением, а не только с одним.

Как это работает

  • Загружаешь MIDI-файл, и стенд раскладывает пьесу на шаги: каждый шаг — момент, когда нажимается что-то новое. Файл читается прямо в браузере и никуда не отправляется.
  • Клавиатура подсвечивает, что нажать сейчас, что продолжать держать и что будет дальше. У каждой руки свой цвет.
  • Над клавиатурой нотный стан, синхронный с шагами: те же ноты, тем же цветом, с подписями. Так связь «нота на стане ↔ клавиша» видна сразу.
  • Вид «Ноты» показывает всю пьесу целиком. Кликаешь по такту — переходишь туда.
  • Воспроизведение на семплах настоящего рояля, с замедлением до 50% и режимом «учу одну руку»: вторая рука звучит, но не подсвечивается.
  • Шпаргалка собирается под конкретную пьесу: тональность словами, какие ноты на каких линейках, что значат знаки при ключе.

Как собирал

  1. Начал с простой клавиатуры, где шаги можно отмечать вручную и листать как слайды.
  2. Скачал MIDI этой аранжировки, и Claude разобрал его на 569 шагов. Ручная разметка не понадобилась.
  3. Добавил звук, потом нотный стан — чтобы учить ноты на той же пьесе, которую играю.
  4. Превратил стенд в сервис: открывается любой MIDI, появился экран загрузки, подсказки при первом входе и минималистичный интерфейс.
  5. Дольше всего искали, как показывать следующие ноты. Цифры 1 и 2 начинали путать, когда клавиш много. Нарисовали четыре варианта вайрфреймов, в итоге сделали бледные подсказки, пунктир вместо заливки, постепенное проявление цвета к моменту нажатия и режим одной руки.
  6. Заменил игрушечный синтезатор на настоящий рояль, добавил цветовые пары для рук, адаптив под широкий экран и управление с клавиатуры.

Как менялся интерфейс

Ранняя версия стенда: нотный стан и клавиатура с подсветкой следующих нот цифрами
Ранняя версия: одна пьеса, шаги из MIDI, стан над клавиатурой. Следующие ноты помечены цифрами
Первая версия MIDI-стенда: загрузка любого MIDI, стан и клавиатура, но ещё много элементов управления
Первая версия сервиса: открывает любой MIDI, но на экране слишком много кнопок и настроек
MIDI-стенд: экран загрузки файла
После редизайна: экран загрузки с одной задачей — закинуть файл
Четыре вайрфрейма: падающие полосы, путь со стрелками, очередь карточками, цифры с линейкой времени
Вайрфреймы: четыре способа показать, что нажимать первым, а что вторым

Промпт, чтобы собрать такой же

Скопируйте его в Claude или другой ИИ — по нему можно собрать стенд с нуля. Семплы рояля Salamander Grand Piano лежат в открытом доступе, например в репозитории Tonejs/audio на GitHub.

Сделай одностраничное веб-приложение «MIDI-стенд»: тренажёр для игры на фортепиано по MIDI-файлу. Пользователь загружает .mid, а приложение показывает пьесу по шагам на нотном стане и на клавиатуре, подсвечивая, какие клавиши нажимать. Всё работает в браузере, файл никуда не отправляется. Язык интерфейса — русский.

ВХОД (онбординг)
- Первый экран: заголовок «Открой MIDI и играй по подсветке», большая зона «Перетащи .mid сюда / нажми, чтобы выбрать», список недавних файлов и ссылка «Попробовать на примере» (встроенная «Ода к радости», общественное достояние).
- Файл можно перетащить в любое место окна.
- Недавние файлы (до 6) и последний открытый файл с текущей позицией хранятся в localStorage. При повторном заходе последний файл открывается сразу.
- После первого файла показывается короткий тур из 5 карточек с подсветкой нужной области: цвета клавиш, подсказки «дальше», нотный стан, управление, переключатель видов. Тур можно пропустить и показать заново из справки.

РАЗБОР MIDI (свой парсер, без библиотек)
- Читать формат 0/1: ноты (с учётом running status и note-on с нулевой скоростью), темпы (полная карта темпов), размер, тональность (число знаков, мажор/минор), названия дорожек.
- Дорожки и каналы — это «партии». По умолчанию партия с самым высоким средним звуком — правая рука, с самым низким — левая. Если партия одна, она делится по C4. Канал 10 (ударные) скрыт. В настройках каждой партии можно назначить: правая / левая / делить по C4 / скрыть.
- Ноты, начинающиеся почти одновременно (допуск 1/32 доли), объединяются в «шаг». Для каждого шага хранить: новые клавиши, удерживаемые с прошлых шагов, длительность и силу нажатия каждой ноты.

ЭКРАН «СТЕНД»
- Шапка: «назад к файлам», название пьесы, тональность / размер / темп / длительность, переключатель видов «Стенд | Ноты», кнопки «?» и «Настройки».
- Строка-подсказка: «правая D♭5 · левая A♭2».
- Нотный стан (SVG): скрипичный и басовый ключи, знаки при ключе, размер, 2–4 такта в зависимости от ширины экрана, номера тактов, доли бледными линиями. Ноты окрашены в цвет руки, с правильной высотой (буквенное написание по тональности), добавочными линейками и случайными знаками ♯ ♭ ♮, которые действуют до конца такта, как в настоящих нотах. Головка нот: закрашенная — короткая, пустая — половинная, без штиля — целая. Аккорды на общем штиле. Подписи нот рядом с головками (C D E / до ре ми / без подписей). Текущий шаг: мягкая полупрозрачная капсула с треугольником сверху, ореол вокруг нот. Сыгранные ноты приглушены, будущие — полным цветом. Клик по ноте переходит к её шагу.
- Клавиатура: диапазон подстраивается под пьесу (минимум 3 октавы), ширина клавиш — под ширину экрана, высота — около трети окна. Подписаны все C (C3, C4…), на широких клавишах и остальные белые. Клик по клавише проигрывает её звук.
- Состояния клавиш: «нажать сейчас» — яркий цвет руки со свечением; «держать» — затемнённый цвет руки; «дальше» — следующий шаг (1) и шаг после него (2), считаются отдельно для каждой руки. Они бледные: около 25% и 10% цвета руки, чтобы не путались с «нажать сейчас».
- Настройки подсказок «дальше»: сколько шагов показывать (нет / 1 / 2), для какой руки (левая / правая, независимо), вид (бледная заливка или цветная пунктирная рамка), цифры 1/2 на клавишах (вкл/выкл).
- «Проявление при игре»: во время воспроизведения следующая клавиша каждой руки постепенно окрашивается в полупрозрачный цвет руки и к моменту нажатия доходит до максимума. Анимация непрерывна между шагами: длительность — от прошлого нажатия этой руки до следующего, текущий прогресс задаётся отрицательной задержкой анимации.
- Режим «Учу руку»: обе / правая / левая. Вторая рука при воспроизведении звучит, но не подсвечивается и почти прозрачна на стане. Стрелки пропускают шаги без выбранной руки.
- Небольшая легенда под клавиатурой.

ЭКРАН «НОТЫ» (вся пьеса)
- Вся пьеса строками по 2–6 тактов в зависимости от ширины экрана, в каждой строке ключи и знаки. Текущий шаг подсвечен, сыгранное приглушено. Клик по ноте или по пустому месту такта — переход туда. При воспроизведении лист сам прокручивается за текущим местом.

НИЖНЯЯ ПАНЕЛЬ (закреплена в обоих видах)
- Назад, Играть/Пауза, Вперёд; ползунок по всей пьесе с подписью «такт 5 из 93 · 2/4» и «шаг 31 из 569»; кнопка руки (Обе/Правая/Левая); скорость 1× / 0.75× / 0.5×.

УПРАВЛЕНИЕ С КЛАВИАТУРЫ
- ← → — шаг; Shift + ← → — предыдущий / следующий такт (пустые пропускаются); пробел — играть / пауза; S — прослушать текущий шаг; H — сменить руку; V — переключить вид; Esc — закрыть панели.

ЗВУК
- Web Audio, семплы рояля Salamander Grand Piano (CC-BY 3.0, автор Alexander Holm): ноты через малую терцию от A0 до C8, лежат файлами рядом со страницей, промежуточные получаются сдвигом высоты. Громкость и яркость (фильтр) зависят от силы нажатия, мягкая отпускающая огибающая, лёгкая реверберация (сгенерированный импульс), компрессор. Пока семплы грузятся — запасной синтезатор, статус загрузки показывать в настройках.
- Воспроизведение идёт по карте темпов файла с учётом выбранной скорости.

НАСТРОЙКИ (боковая панель)
- Подсказки «дальше» (см. выше), цвета рук, подписи нот, скорость, «Учу руку», распределение партий по рукам. Всё запоминается в localStorage.
- Цветовые пары рук (правая / левая), отдельные оттенки для светлой и тёмной темы: Янтарь и индиго (по умолчанию), Коралл и бирюза, Золото и сирень, Малина и лёд, Зелёный и синий («как в видео»), пара для дальтоников (оранжевый и голубой).

СПРАВКА «?» (боковая панель)
- Шпаргалка по чтению нот, собранная под конкретную пьесу: какой стан для какой руки, ноты на линейках и между ними, добавочные линейки и C4, тональность словами («ре-бемоль мажор: 5 бемолей — B♭ E♭ A♭ D♭ G♭, эти ноты играются на полтона ниже…»), размер, виды головок нот. Плюс список клавиш управления.

ДИЗАЙН
- Минималистичный, тёмный по умолчанию, с полноценной светлой темой (prefers-color-scheme). Шрифты: Fraunces для заголовков, IBM Plex Sans для текста, IBM Plex Mono для цифр и подписей, Noto Music для нотных символов.
- Адаптивность: на широком экране всё растягивается на всю ширину, на телефоне перестраивается без горизонтальной прокрутки страницы.
- В правом нижнем углу плашка автора: круглая аватарка с переливающейся рамкой в цветах рук, при наведении раскрывается подпись. Ведёт на Instagram автора.

OpenClaw в Telegram: установка и первая задача для бизнеса

OpenClaw — помощник, которого можно запустить на своём компьютере или сервере и подключить к Telegram. Вы пишете задачу в чат, языковая модель разбирается с запросом, а доступные инструменты позволяют агенту выполнять действия. Набор этих действий зависит от подключения и настроек: сам Telegram не выдаёт доступ к файлам, почте или клиентской базе.

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

Тема уже вышла за пределы экспериментов разработчиков: 16 октября 2026 года команда OpenClaw опубликовала историю консультанта PJ, который помогает небольшим компаниям внедрять помощника. Это пример применения, а не обещание такой же экономии в любом бизнесе.

Что OpenClaw даст небольшой команде

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

Сначала опишите результат без названия технологии: «менеджер получает черновик с вопросами и проверяет его». Так легче понять, получился ли полезный инструмент. Формулировка «хочу ИИ-сотрудника, который делает всё» не даёт ни критериев готовности, ни границ доступа.

Telegram здесь служит привычным входом в помощника. Чтобы тот действительно работал с документами или сервисами, потребуется настроить соответствующие инструменты, права и источник данных. Само появление бота в контактах не означает, что он уже знает расписание школы, цены компании и историю её клиентов. Эти сведения нужно подключать осознанно и поддерживать в актуальном состоянии.

Если работа всегда состоит из одинаковых шагов, отдельный агент может быть лишним. Создать счёт в определённый день, проверить статус и отправить заданное уведомление можно обычной программой. В моём кейсе ассистента оплаты описана именно конкретная задача бизнеса. Приписывать этому решению OpenClaw не нужно: выбирают сначала процесс, потом инструмент.

Что нужно для установки

Есть три отдельные составляющие: компьютер с OpenClaw, доступ к языковой модели и Telegram-бот. Компьютер должен оставаться включённым, пока нужен помощник. На спящем ноутбуке не стоит рассчитывать на круглосуточную работу.

В текущем руководстве первого запуска указаны Node. js 24.16+ или 26.1+, рекомендована линейка Node 26. Требования быстро меняются, поэтому перед установкой сверяйте их с документацией, особенно если уже используете Node для других проектов.

Для обращения к модели нужен подходящий способ авторизации. OpenClaw поддерживает API-ключи и некоторые сценарии входа через аккаунт провайдера; доступность зависит от самого провайдера. Для постоянного Gateway документация называет API-ключ предсказуемым вариантом. Условия подписки на чат не следует автоматически считать условиями API — это разные способы подключения.

Установить OpenClaw и проверить Gateway

Ниже путь для терминала macOS или Linux. Для Windows на странице установки есть отдельные варианты; команды из разных инструкций не нужно смешивать.

Официальный установщик:

curl -fsSL https://openclaw.ai/install.sh | bash

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

В нынешнем Quick start Gateway остаётся работать в открытом терминале. Для фоновой службы остановите этот запуск через Ctrl+C и установите службу:

openclaw gateway install

Затем проверьте статус и откройте интерфейс:

openclaw gateway status
openclaw dashboard

Порядок описан в quickstart OpenClaw. Сначала добейтесь обычного ответа модели в веб-интерфейсе. Если он не работает, подключение Telegram только добавит ещё один слой диагностики.

Подключить Telegram-бота

Создать отдельного бота

Откройте в Telegram официальный аккаунт @BotFather, отправьте /newbot и пройдите создание бота. Сохраните полученный токен локально: он нужен OpenClaw для подключения. Для эксперимента удобнее отдельный бот, который не обслуживает клиентов в другой системе.

По инструкции Telegram setup токен можно добавить в конфигурацию ~/.openclaw/openclaw.json. В существующем файле объедините настройки, сохранив параметры модели и остальные разделы. Пример фрагмента, а не замена всего файла:

{
  "channels": {
    "telegram": {
      "enabled": true,
      "botToken": "PASTE_YOUR_BOT_TOKEN_LOCALLY",
      "dmPolicy": "pairing"
    }
  }
}

Вместо заполнителя вставьте свой токен только на компьютере, где работает Gateway. Команда openclaw channels login telegram для этого сценария не используется.

Подтвердить личный чат

Проверьте, что канал настроен:

openclaw channels status --probe

Напишите сообщение своему боту. При политике pairing появится запрос на сопряжение. На компьютере с OpenClaw выполните:

openclaw pairing list telegram
openclaw pairing approve telegram YOUR_PAIRING_CODE

Замените YOUR_PAIRING_CODE кодом собственного запроса. Подтверждение относится к доступу этого пользователя в личном чате. Оно не означает автоматическое разрешение команд из всех групп.

Для постоянного бота одного владельца документация рекомендует allowlist с числовым Telegram ID. Получить свой ID можно из ответа на запрос сопряжения. Не путайте его с ID группы и не заменяйте именем @username.

Первая задача с ограниченными инструментами

Для проверки транспорта не нужны shell, рабочие файлы и отправка сообщений другим людям. Если используете обычное подключение API-модели, начните с ограниченного профиля инструментов OpenClaw. В существующую конфигурацию можно добавить:

{
  "tools": {
    "profile": "minimal",
    "deny": ["gateway"]
  }
}

В текущей политике инструментов minimal оставляет небольшой служебный набор; дополнительный запрет gateway убирает и инструмент обновления Gateway. Это настройка инструментов OpenClaw. Если подключаете отдельный coding runtime со своим набором действий, отдельно проверяйте его правила доступа.

Теперь отправьте в Telegram учебный бриф:

Учебная заявка: небольшой онлайн-школе нужен бот,
который отвечает на вопросы о расписании.
Программы занятий и базы учеников у тебя нет.

Подготовь:
1. Краткое описание задачи.
2. Пять вопросов перед оценкой разработки.
3. Черновик ответа клиенту до 800 знаков.

Не придумывай стоимость, сроки и функции.
Ничего не отправляй другим людям и не меняй настройки.

Оцените результат: агент отделил известное от неизвестного, не придумал цену, спросил про источник расписания и предложил текст, который менеджер действительно может проверить? Если нет, до подключения дополнительных сервисов поправьте само задание.

Следующий тест — такой же бриф с неполными или противоречивыми данными. Хороший результат здесь — уточняющий вопрос, а не уверенно выдуманное решение. После нескольких проверок станет понятнее, какую часть работы стоит автоматизировать.

Какие доступы выдавать дальше

Привязка Telegram, разрешения инструментов и доступ к рабочим сервисам — разные настройки. Сначала решите, от чьего имени работает помощник и какой конкретный результат ему разрешено записывать или отправлять.

Для первой рабочей версии полезен простой список:

  • Один владелец или известный список пользователей бота.
  • Отдельная тестовая папка с копиями документов вместо всей домашней директории.
  • Только нужные инструменты: чтение справки не требует удаления файлов или произвольных команд.
  • Отдельный этап проверки перед сообщением клиенту, изменением заказа или другой внешней операцией.

Права задаются конфигурацией. Фраза «ничего не удаляй» в запросе не заменяет ограничение инструмента. В справке по разрешениям отдельно разбираются файловый доступ, выполнение команд и сообщения между чатами.

Песочница тоже не включается от самого факта установки: документация sandboxing описывает её как отдельный механизм, который по умолчанию выключен. Перед расширением доступа нужно настроить именно тот режим, который соответствует выбранному сценарию.

Из чего складываются расходы

Считать нужно весь процесс, а не стоимость одного короткого ответа. На бюджет влияют выбранная модель, объём контекста, число повторных обращений, дополнительные сервисы и размещение Gateway.

Статья расходовЧто проверить
Языковая модельСпособ оплаты, лимиты аккаунта, входные и выходные токены
Поиск и другие инструментыСобственные условия и квоты подключённых сервисов
Компьютер или серверПостоянная работа, хранение данных и резервные копии
ПоддержкаОбновления, разбор ошибок и изменение подключений

В описании токенов и стоимости показано, что контекст состоит не только из последней фразы: в запрос могут входить инструкции, история и результаты инструментов. Поэтому два сообщения одинаковой длины не обязательно стоят одинаково.

Начните с небольшого числа учебных задач и посмотрите реальное потребление. Команда /status показывает состояние сеанса, /usage tokens включает информацию о токенах в ответах. Денежные оценки зависят от способа авторизации; сверяйте их с кабинетом провайдера, как объясняет справка Usage tracking. Фиксированную цену «помощника на месяц» без сценария и измерений назвать нельзя.

Если бот молчит

Проверяйте цепочку по порядку: Gateway запущен, модель отвечает в dashboard, Telegram-канал готов, ваш запрос сопряжения подтверждён. Сообщение в группе добавляет отдельные правила доступа и упоминаний, поэтому первый тест удобнее проводить в личном чате.

Для журнала событий используется:

openclaw logs --follow

В таблице диагностики каналов разобраны ошибки токена, доступа и сетевого соединения. Если Telegram не получает ответ, не надо первым действием переустанавливать OpenClaw: сначала найдите, на каком участке остановилась обработка.

Когда контрольный сценарий работает, можно проектировать следующую версию: откуда брать данные, кто подтверждает действия и где хранится результат. Подобную работу с клиентскими диалогами я описал в кейсе Telegram Agent. Если хотите разобрать свою задачу, напишите мне в Telegram: начнём с процесса и критериев готовности.

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