Files
zhila/reference/demo
..

ZHILA

DAW, в котором звук лежит рельефом. Две комнаты: nave — собор, где камни укладываются и играются, и quarry — карьер под ним, где материал берут и режут. Сэмплирование здесь не «библиотека сэмплов», а карьер и кладка: у каждой вещи есть место, шрам, погода и клеймо.

Демка играет и слушается агентом: 32-тактовый луп из настоящих срезов, живой транспорт на аудиочасах, правка камней, undo, сохранение, импорт/запись, рендер в WAV.

Запуск

./start.sh

Открыть http://127.0.0.1:4173. Скрипт берёт ключ из DEEPSEEK_API_KEY или из уже сохранённого ключа harness (~/.dsh/.credentials.yaml); ключ остаётся на сервере и в браузер не попадает. Порт можно поменять: PORT=5000 ./start.sh.

Без сервера index.html тоже открывается, но хор работает в локальном режиме (по правилам), без модели.

Агент

Встроенный агент — это не чат сбоку, а тот же набор команд, что у руки. Модель (deepseek-chat) получает 14 инструментов и действует ими в живом проекте:

get_state, list_cores, extract_core, fracture_core, strike_face, place_stone, move_stone, delete_stone, set_weather, set_rings, set_tempo, transport, open_core, set_macros.

  • Консоль choir показывает настоящий трейс: инструмент, аргументы, результат, время. Ответ — одна короткая реплика на языке пользователя.
  • Агент видит состояние (камни, керны, погоду, позицию), проверяет, где уже занято, и не кладёт камень поверх того же диапазона без просьбы.
  • api live в шапке — модель на связи; api local — сервера нет, работает локальный дирижёр по правилам (тоже через инструменты).
  • Ключ и модель живут только на сервере; сервер слушает 127.0.0.1 и принимает CORS только с localhost.

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

MCP для внешних агентов ещё не поднят: те же 14 команд — это и есть будущая поверхность. Локальный API уже отделён от UI, поэтому сервер MCP — следующий шаг.

nave

  • space — пуск/пауза.
  • Камни: тащи вверх-вниз — время с привязкой к четверти такта; клик — выбрать; Backspace — закопать; ⌘/Ctrl+D — дублировать; ⌘/Ctrl+Z / ⇧⌘Z — undo/redo.
  • crystal — живая партитура событий вокруг playhead (только просмотр).
  • cilia — уровни жил; красные точки — живой сигнал. warmth / dust / threshold правят мастер.
  • render — офлайн-рендер 32 тактов в zhila-descent-04.wav (~62 c, 48 кГц, стерео).
  • Поле «say what you want to hear» зовёт агента. Ползунки shape — предпочтения для следующего слоя; агент видит их в состоянии.

quarry

  • core tray — выбранный керн: настоящая волна, слои, шов, трещины. Линза читает глубину.
  • fracture реально перерезает керн: 16 граней получают новые границы, и камни из этого керна начинают звучать иначе.
  • the face — 16 граней. Удар звучит; place кладёт одиночный камень, loop — повторяющийся каждые 2 такта.
  • weather — age / pressure / air меняют климат всего микса, heat расстраивает голоса, ghost добавляет хвост источника. grow ring усиливает эрозию петель.
  • extract: core — новый процедурный керн, file — импорт, room — запись комнаты (rec тоже).
  • ledger — кто, откуда и с каким клеймом взял.

Что работает по-настоящему

  • Звук. Web Audio: срезы кернов как сэмплы, 16 граней, кольца с эрозией, климат, лимитер, панорама, анализ мастера.
  • Транспорт. Аудиочасы — мастер, lookahead-планировщик, луп, play/pause/stop/seek, темп на лету.
  • Правка. Выбор, перенос, удаление, дублирование, undo/redo, автосейв.
  • Материал. Процедурные керны, импорт, запись; поиск швов по огибающей; повторный fracture.
  • Агент. Реальная модель, 14 инструментов, трейс, проверка состояния, локальный фолбэк.
  • Экспорт. Офлайн-рендер в WAV с погодой, макросами и мастером.

Что всё ещё макет

  • Внешний MCP-сервер не поднят; mcp-чип — заявка на следующий шаг.
  • Клеймо и опись — журнал, не права и не согласие. Модель draft → seal описана, не реализована.
  • crystal не редактирует ноты; нет MIDI, редактора маппинга граней, trim/loop-точек, сендов/групп, дублей записи.
  • Импортированные и записанные керны живут только в памяти; после перезагрузки их камни молчат. Пять жил и панорама фиксированы.

Файлы

  • index.html, style.css — разметка и стиль
  • engine.js — аудиоядро: керны, срезы, голоса, климат, транспорт, рендер
  • app.js — nave: партитура, правка, история, анализ, кристалл, командный слой
  • quarry.js — карьер: лоток, грани, погода, кольца, опись
  • agent.js — хор в браузере: трейс, инструменты, локальный дирижёр
  • server.js, agent-tools.js, start.sh — локальный сервер и модель
  • terrain.js — рельеф и город
  • preview.png, preview-playing.png, preview-agent.png, preview-quarry.png, preview-mobile.png, preview-quarry-mobile.png — скриншоты
  • preview.mp3 — 62 секунды базового рендера

Сброс проекта: очистить site data (localStorage zhila.project.v3).