Skip to main content
Glama

Synthesizer V Studio 2 MCP Server (mcp-svstudio)

Промышленный сервер Model Context Protocol (MCP) для Dreamtonics Synthesizer V Studio 2 Pro, позволяющий агентам генеративного ИИ и LLM безопасно, структурно и эффективно управлять нотами, текстами, фонемами, вокальными атрибутами, параметрами и транспортом воспроизведения через официальный Dreamtonics Scripting API.


Обзор архитектуры

Synthesizer V Studio 2 Pro выполняет скрипты во встроенной среде Lua 5.4 / Duktape JS без внешних сетевых сокетов. Для достижения высокой производительности, низкой задержки и нулевых зависимостей от C-библиотек этот MCP-сервер использует протокол атомарной файловой почтовой ячейки (Atomic File-Mailbox IPC):

+--------------------------------------+
|       LLM / MCP Client               |
|   (Antigravity / Claude / Cursor)    |
+------------------+-------------------+
                   | JSON-RPC over Stdio
                   v
+--------------------------------------+
|       Node.js MCP Server             |
|  - Tool Schema & Validation (Zod)    |
|  - Stable Note Locator Resolver      |
|  - Safe Diff & Dry Run Engine        |
|  - Mailbox IPC Client                |
+------------------+-------------------+
                   | Atomic Mailbox IPC (.req / .res)
                   | Live Heartbeat Monitor (heartbeat.json)
                   v
+--------------------------------------+
|  Synthesizer V Studio 2 Pro (Lua 5.4)|
|  `StartMCPServerRequestHandler.lua`  |
|  - Non-blocking SV:setTimeout loop   |
|  - Dreamtonics Official Scripting API|
|  - Automatic Snapshot Rollback & Undo|
+--------------------------------------+

Ключевые особенности IPC-протокола

  • Атомарные переименования файлов: запись в <id>.tmp и атомарное переименование в <id>.req / <id>.res для предотвращения гонок и частичного чтения файлов.

  • Уникальные идентификаторы запросов: гарантируют сопоставление запрос-ответ даже при быстрых последовательных командах.

  • Мгновенная проверка активности (heartbeat): Lua-скрипт обновляет heartbeat.json каждые 500 мс. MCP-сервер проверяет свежесть heartbeat и мгновенно сообщает о состоянии офлайн (<50 мс) вместо зависания по таймауту.

  • Автоматическая сборка мусора: автоматически очищает устаревшие временные файлы старше 60 секунд при запуске и во время опроса.


Related MCP server: aviutl2-mcp

Установка и настройка

Предварительные требования

  • Node.js (v18 или выше; протестировано на v22 и v26)

  • Synthesizer V Studio Pro (версия 2.0 или 2.1+)

1. Сборка MCP-сервера

git clone https://github.com/shotarokawade/SV-MCP.git
cd SV-MCP
npm install
npm run build

2. Установка Lua-скриптов в Synthesizer V Studio

Запустите автоматический установщик:

npm run install-scripts

Или вручную скопируйте файлы из sv-scripts/ в папку скриптов Synthesizer V Studio:

  • macOS: ~/Library/Application Support/Dreamtonics/Synthesizer V Studio 2/scripts/MCP/

  • Windows: %APPDATA%\Dreamtonics\Synthesizer V Studio 2\scripts\MCP\

  • Linux: ~/.local/share/Dreamtonics/Synthesizer V Studio 2/scripts/MCP/

3. Запуск обработчика сервера в Synthesizer V Studio

  1. Запустите Synthesizer V Studio 2 Pro.

  2. Откройте или создайте проект с вокальными дорожками.

  3. В верхней строке меню выберите: Scripts > MCP > Start MCP Server Request Handler

  4. Фоновый обработчик теперь запущен и отвечает. (Чтобы остановить его, выберите Scripts > MCP > Stop MCP Server Request Handler).


Конфигурация MCP-клиента

Antigravity (~/.gemini/config/mcp_config.json или конфигурация проекта)

{
  "mcpServers": {
    "synthv": {
      "command": "node",
      "args": ["/absolute/path/to/SV-MCP/build/index.js"],
      "env": {
        "MCP_SVSTUDIO_IPC_DIR": "/absolute/path/to/.mcp-svstudio/ipc"
      }
    }
  }
}

Claude Desktop (claude_desktop_config.json)

{
  "mcpServers": {
    "synthv": {
      "command": "node",
      "args": ["/path/to/SV-MCP/build/index.js"]
    }
  }
}

Справочник MCP-инструментов

Имя инструмента

Описание

get_server_status

Возвращает статус подключения, временную метку heartbeat скрипта и информацию о текущем проекте.

get_project_info

Получает имя файла проекта, длительность (в бликах), количество дорожек, групп, метки темпа и тактов.

list_tracks

Перечисляет дорожки с именами, количеством ссылок на группы, цветами отображения и настройками микшера (усиление, панорама, мьют, соло).

list_groups

Перечисляет все группы нот в библиотеке проекта с UUID и количеством нот.

get_notes

Получает ноты для дорожки и группы (индексы с нуля), включая высоту, начало, длительность, текст, фонемы и атрибуты нот.

find_notes

Ищет ноты по диапазону начала, диапазону высоты, подстроке/регулярному выражению текста или фонемам.

add_notes

Добавляет одну или несколько нот в группу. Поддерживает dry_run: true.

update_notes

Обновляет существующие ноты по индексу или локатору ({ onset, pitch }). Поддерживает dry_run: true.

delete_notes

Удаляет ноты по индексам или локатору. Поддерживает dry_run: true.

get_phonemes

Получает заданные пользователем фонемы для ноты(т).

set_phonemes

Напрямую задаёт формальные строки фонем, разделённые пробелами (Note.setPhonemes()).

get_computed_phonemes

Запрашивает результаты внутреннего движка текст-в-фонемы и вычисленные атрибуты (SV.getComputedAttributesForGroup).

get_note_attributes

Получает атрибуты нот (detune, languageOverride, phonesetOverride, musicalType, rapAccent, тайминг/сила по фонемам).

set_note_attributes

Изменяет атрибуты нот и пофонемные атрибуты (phonemes: [{ leftOffset, position, activity, strength }]).

get_voice

Получает параметры голоса на NoteGroupReference (loudness, tension, breathiness, gender, toneShift, vocalModeParams).

set_voice

Изменяет параметры голоса дорожки/группы и вокальные режимы.

get_parameters

Читает точки кривых автоматизации для параметров (pitchDelta, loudness, tension, breathiness, voicing, gender, vocalMode_*).

set_parameters

Добавляет, заменяет или удаляет точки автоматизации с проверкой диапазонов.

play

Запускает воспроизведение.

pause

Приостанавливает воспроизведение без сброса позиции.

stop

Останавливает воспроизведение и сбрасывает позицию на начало.

seek

Перемещает позицию воспроизведения в указанное количество секунд.

get_playhead

Читает позицию и статус ("playing", "looping", "stopped").

loop

Устанавливает область циклического воспроизведения между tBegin и tEnd в секундах.

batch_edit

Выполняет несколько операций атомарно в одной транзакции отмены с предварительной проверкой и предпросмотром изменений.


Манипуляция фонемами и исправление немецких многосложных текстов

Проблема

При импорте MusicXML из MuseScore в Synthesizer V Studio немецкие многосложные слова, разделённые между нотами (например, schö- и -ne) с syllabic=begin/end, часто объединяются с сырым текстом фонем в тексте песни:

  • Предполагаемая нота 1: .sh er

  • Предполагаемая нота 2: .n ax

  • Результат в SynthV, если поместить в текст: .sh er.n ax (вызывает предупреждения о произношении и фонетические ошибки).

Решение: прямое внедрение фонем через MCP

С помощью этого MCP-сервера LLM задаёт текст и фонемы напрямую через официальные API:

{
  "trackIndex": 0,
  "groupIndex": 0,
  "assignments": [
    { "noteIndex": 0, "phonemes": ".sh er" },
    { "noteIndex": 1, "phonemes": ".n ax" }
  ]
}

Проверка произношения в обе стороны

  1. Вызовите set_phonemes, чтобы применить целевые фонемы.

  2. Вызовите get_computed_phonemes, чтобы повторно запросить внутренний синтезирующий движок Synthesizer V.

  3. Сравните вычисленные фонемы с ожидаемым произношением для проверки точного совпадения.


Конвейер интеграции MuseScore MCP

[ MuseScore MCP ]
       │ 1. Extract note pitches, onset blicks, measure positions, and lyric syllables
       ▼
[ LLM Agent ]
       │ 2. Perform German grapheme-to-phoneme (G2P) conversion to Synthesizer V phonemes
       │    (e.g., "Freude" -> [".f r oy", "d ax"])
       ▼
[ Synthesizer V MCP ]
       │ 3. `find_notes` or `get_notes` matching onset and measure range
       │ 4. `batch_edit` with `dry_run: true` to inspect diff
       │ 5. `batch_edit` with `dry_run: false` to apply notes and `set_phonemes`
       │ 6. `get_computed_phonemes` to verify synthesis pronunciation

Гарантии безопасности, пробного запуска и отката

  1. dry_run: true: Все инструменты изменения поддерживают dry_run: true. Сервер возвращает прогнозируемые изменения и diff без изменения состояния проекта.

  2. Одношаговая отмена в приложении (project.newUndoRecord()): Каждая изменяющая операция MCP регистрирует запись отмены проекта. Пользователь может нажать Cmd+Z / Ctrl+Z внутри Synthesizer V Studio, чтобы мгновенно отменить всю операцию.

  3. Откат транзакции в пакетном режиме: Если во время batch_edit возникает ошибка, скрипт сохраняет состояние до изменения и автоматически откатывает изменённые элементы перед возвратом ошибки.

  4. Проверка границ и диапазонов:

    • MIDI-высота: 0 - 127

    • Громкость: от -48 дБ до +12 дБ

    • Напряжение / Дыхание / Гендер: от -1.0 до +1.0

    • Озвучка: от 0.0 до +1.0

    • Отклонение высоты: от -1200 до +1200 центов

    • Вокальный режим: от 0 до 150


Ссылки и соответствие официальным API

  • Официальное руководство по скриптингу: https://resource.dreamtonics.com/scripting/index.html

  • Ключевые используемые официальные API:

    • Note.getPhonemes() / Note.setPhonemes(phonemes)

    • SV.getPhonemesForGroup(groupRef)

    • SV.getComputedAttributesForGroup(groupRef) (SynthV 2.1.1+)

    • Note.getAttributes() / Note.setAttributes(attributes)

    • NoteGroupReference.getVoice() / NoteGroupReference.setVoice(voice)

    • NoteGroup.getParameter(name) / Automation

    • PlaybackControl (play, pause, stop, seek, loop, getPlayhead)

    • Project.newUndoRecord()


Лицензия

Лицензия MIT.

Install Server
F
license - not found
A
quality
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • F
    license
    Not graded
    quality
    C
    maintenance
    Controls OpenUtau (vocal synthesis software) from Claude Desktop, enabling project creation, editing, and live note manipulation via a bridge plugin.
  • A
    license
    B
    quality
    B
    maintenance
    Enables coding agents to compose, tune, render, mix, and audit native VOCALOID3/4 projects from scratch, acting as a production bridge between intent and finished song.
    22
    1
    MIT

View all related MCP servers

Related MCP Connectors

  • Create and manage cinematic AI video renders through the Future Video Studio Agent API.

  • Build and run visual creative-production workflows from your AI agent.

  • Operate your Sapiens Sintéticos AI studio: generate image, article, voice, music and video.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/shotarokawade/SV-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server