Skip to main content
Glama

OpenUtau MCP

日本語版 README はこちら

Lets Claude (Claude Desktop / Claude Code) operate OpenUtau 0.1.576 on Windows: write melodies and lyrics in English and Japanese, pick singers and phonemizers, check pronunciation, play, and export WAV/MIDI.

Two parts:

Part

What it does

src/openutau_mcp (Python, stdio MCP server)

~60 tools. Live tools talk to the plugin; ustx_*, ust_*, voicebank and utility tools work with OpenUtau closed.

plugin/ (C# OpenUtau plugin DLL)

Starts automatically inside OpenUtau and serves a local control API on 127.0.0.1:51128.

Requirements

  • Windows, OpenUtau 0.1.576 (default install: C:\Program Files\OpenUtau)

  • Python 3.11+ and uv (or pip)

  • .NET 10 SDK to build the plugin (only the runtime is needed to run OpenUtau)

Related MCP server: soundgrep

Install

1. Python server

git clone <this repo> openutau-mcp
cd openutau-mcp
uv venv -p 3.11
uv pip install -e ".[kanji]"

The kanji extra installs pykakasi, which turns kanji lyrics into hiragana. Without it kanji are kept and a warning is returned.

2. Build and install the plugin

If you have no .NET 10 SDK, install one into your user folder (no admin, no system changes):

Invoke-WebRequest https://dot.net/v1/dotnet-install.ps1 -OutFile dotnet-install.ps1
.\dotnet-install.ps1 -Channel 10.0 -InstallDir $env:USERPROFILE\.dotnet-sdk10 -NoPath

Build against your installed OpenUtau (so the types match the running app) and copy the DLL:

& $env:USERPROFILE\.dotnet-sdk10\dotnet build plugin -c Release
# OpenUtau somewhere else?  add  -p:OpenUtauDir="D:\Apps\OpenUtau"
New-Item -ItemType Directory -Force "$env:USERPROFILE\Documents\OpenUtau\Plugins\OpenUtauMcp"
Copy-Item plugin\bin\Release\net10.0\OpenUtauMcp.Plugin.dll "$env:USERPROFILE\Documents\OpenUtau\Plugins\OpenUtauMcp\"

Restart OpenUtau (it loads plugins only at startup). The OpenUtau log shows OpenUtau MCP bridge listening on 127.0.0.1:51128. In the piano roll, Batch Edit → OpenUtau MCP: bridge status shows the same as a toast. The plugin adds nothing to the phonemizer list and changes no track.

3. Register with Claude

Claude Code

claude mcp add openutau -- "C:\path\to\openutau-mcp\.venv\Scripts\openutau-mcp.exe"

Claude Desktop — edit %APPDATA%\Claude\claude_desktop_config.json:

{
  "mcpServers": {
    "openutau": {
      "command": "C:\\path\\to\\openutau-mcp\\.venv\\Scripts\\openutau-mcp.exe"
    }
  }
}

Optional environment variables: OPENUTAU_EXE (path to OpenUtau.exe), OPENUTAU_DATA_DIR (default Documents\OpenUtau), OPENUTAU_MCP_PORT (default 51128; set the same variable for OpenUtau to move the plugin).

Optionally copy skill/SKILL.md into your Claude skills folder (e.g. .claude/skills/openutau/SKILL.md) for step-by-step workflows. skill/mix_stems.py (copy it next to SKILL.md) is the helper the skill uses to line up, level, pan and mix exported WAV stems into one stereo file.

Usage

Ask Claude things like:

  • "Is OpenUtau ready?" → openutau_status

  • "Make a new song with my Japanese voicebank at 128 BPM and sing さくら さくら on A4 A4 B4."

  • "Add an English track with my English voicebank and sing 'Hel-lo world' as quarter notes from C4."

  • "Check the pronunciation of part 1." → list_phonemes (has_oto: false = no sample for that phoneme)

  • "Export a WAV to my desktop."

Basics: 480 ticks = one quarter note; pitch C4 = 60; note positions are relative to their part; one tool call = one undo step in OpenUtau.

Lyrics

  • Japanese: one mora per note. きゃりーぱみゅぱみゅ、ちゃっと → きゃ り + ぱ みゅ ぱ みゅ ちゃ っ と (ー holds the previous vowel as a + note); 夜空 → よ ぞ ら.

  • English: one word per note; hyphens mark syllables, extra syllables become + notes. Hel-lo, beau-ti-ful world! → hello + beautiful + + world.

Phonemizers

Voicebank

Phonemizer

Japanese UTAU (CV / VCV / CVVC)

OpenUtau.Plugin.Builtin.JapanesePresampPhonemizer (JA VCV & CVVC)

English ARPAsing

ArpasingPhonemizer (EN ARPA)

English VCCV

EnglishVCCVPhonemizer (EN VCCV)

English X-SAMPA

EnXSampaPhonemizer (EN X-SAMPA)

English lyrics on a Japanese bank

ENtoJAPhonemizer (EN to JA)

Tool groups

  • App: openutau_status, launch_openutau, close_openutau

  • Live (bridge): project (get_project, new_project, open_project, save_project, import_tracks, undo, redo), tempo/time signature/key, catalog (list_singers, list_phonemizers, list_expressions), tracks, parts, notes (list_notes, add_notes, edit_notes, replace_lyrics, delete_notes, set_note_expression), lyrics (assign_lyrics, set_lyrics), melody + lyrics in one call (add_melody, e.g. A4:1 A4:1 B4:2 r:1), fit_part (shrink/grow a part to its notes), rank_phonemizers (best phonemizer for a singer), pitch curves (set_pitch), expression curves (get_curve, set_curve, clear_curve), refresh_singers, list_phonemes, playback (play, pause, stop, seek), export (export_wav, export_midi)

  • Files (OpenUtau may be closed): ustx_create, ustx_summary, ustx_set_tempo, ustx_add_track, ustx_set_track_singer, ustx_add_voice_part, ustx_add_notes, ustx_list_notes, ustx_edit_notes, ustx_delete_notes, ustx_set_vibrato, ustx_assign_lyrics, ustx_add_melody, ustx_fit_part, ust_import, ust_export

  • Voicebanks: list_voicebanks, get_voicebank, search_oto

  • Utilities: note_to_midi, midi_to_note, beats_to_ticks, ticks_to_beats, split_lyrics

Security

The plugin listens on 127.0.0.1 only. Every request must carry X-OpenUtau-MCP: 1 and no Origin header, otherwise it gets 403, so web pages in your browser cannot drive it. open_project / new_project refuse to discard unsaved changes unless force=true.

Tests

.venv\Scripts\python tests\e2e_test.py          # file, voicebank and utility tools over stdio
.venv\Scripts\python tests\e2e_test.py --live   # also drives the running OpenUtau (needs the plugin)

The live test opens its own temporary project; it refuses to run if OpenUtau has unsaved changes. If tools/ustxcheck is built (dotnet build tools/ustxcheck -c Release -o .build/ustxcheck), the file test also checks that OpenUtau's own loader accepts the written .ustx files.

License

MIT — see LICENSE. Not affiliated with the OpenUtau project.

Available Tools

70 tools
add_melodyB

Add a melody with its lyrics in one call. melody: space-separated PITCH:BEATS (r = rest). lyrics are split like set_lyrics and must give one lyric per sounding note (use "+" for held syllables). / メロディと歌詞を一度に追加します。melody は「音名:拍」(r = 休符)。歌詞は set_lyrics と同じ規則で分割され、 音の数と一致する必要があります(伸ばす音節は「+」)。

Inputs: part (required), melody (required), lyrics, language, +1 more.

add_notesC

Add notes to a voice part (positions relative to the part); the part grows if needed. / ボイスパートに音符を追加します(位置はパート相対)。必要ならパートを延長します。

Inputs: part (required), notes (required).

add_partC

Add an empty voice part to a track (position/duration in ticks; 7680 = 4 bars of 4/4). / トラックに空のボイスパートを追加します(位置・長さはティック、7680 = 4/4 で4小節)。

Inputs: track (required), name, duration, position.

add_trackC

Add a track. Setting a singer also applies its default phonemizer and a suitable renderer unless given. Phonemizer may be a full type name, class name or tag ("EN ARPA", "JA VCV & CVVC"). / トラックを追加します。歌手を指定すると既定の音素化器とレンダラーも設定されます。 音素化器は型名・クラス名・タグ("EN ARPA" など)で指定できます。

Inputs: name, singer, renderer, phonemizer.

assign_lyricsB

Split text into lyrics and lay out new consecutive notes from start_tick. durations / tones may be one value or a list (the last value repeats). / テキストを歌詞に分割し、start_tick から連続する新しい音符を作ります。 durations・tones は単一値かリスト(最後の値を繰り返し)。

Inputs: part (required), text (required), tones, language, +2 more.

beats_to_ticksA

Quarter-note beats to ticks (1 beat = 480). / 拍数(四分音符)をティックに変換します(1拍 = 480)。

Inputs: beats (required). Returns: result

clear_curveB

Reset an expression curve of a part to its default. / 表情カーブを既定値に戻します。

Inputs: abbr (required), part (required).

close_openutauA

Close OpenUtau. Refuses if there are unsaved changes unless force=true (force discards them). / OpenUtau を終了します。未保存の変更がある場合は force=true が必要です(変更は破棄されます)。

Inputs: force.

delete_notesB

Delete notes by index; no indices = delete all notes in the part. / 番号で音符を削除します。indices を省略するとパートの全音符を削除します。

Inputs: part (required), indices.

edit_notesC

Edit notes in place by index (position, duration, tone, lyric, tuning, vibrato); pitch curves are kept. / 番号で指定した音符をその場で編集します(位置・長さ・音高・歌詞・微調整・ビブラート)。ピッチ曲線は保持されます。

Inputs: part (required), edits (required).

export_midiC

Export the project as a MIDI file. / プロジェクトを MIDI ファイルに書き出します。

Inputs: path (required).

export_wavA

Render the mixdown to a WAV file, or one WAV per track (per_track=true). Can take minutes. / ミックスダウンを WAV に書き出します。per_track=true でトラックごとに書き出します。数分かかることがあります。

Inputs: path (required), per_track.

fit_partB

Resize a voice part to end on the first bar line after its last note. / ボイスパートの長さを、最後の音符の後の最初の小節線までに合わせます。

Inputs: part (required).

get_curveA

Read an expression curve of a part (e.g. dyn, pitd, tenc, brec, genc, voic): [tick, value] points, min/max/default. / パートの表情カーブを読みます(dyn・tenc・brec など)。

Inputs: abbr (required), part (required).

get_projectB

Summary of the open project: file, saved state, key, tempos, time signatures, tracks, voice parts. / 開いているプロジェクトの概要(ファイル、保存状態、キー、テンポ、拍子、トラック、ボイスパート)。

Inputs: no named parameters.

get_voicebankB

Details of a voicebank: info, oto sets and alias count. / 音源の詳細(情報、oto セット、エイリアス数)。

Inputs: voicebank (required).

import_tracksC

Import the tracks of another project file into the open project. / 別のプロジェクトファイルのトラックを現在のプロジェクトに読み込みます。

Inputs: path (required), import_tempo.

launch_openutauA

Start OpenUtau (optionally with a project). If it is already running with the bridge, opens the project there. / OpenUtau を起動します(プロジェクト指定可)。起動済みならそのプロジェクトを開きます。

Inputs: project_path.

list_expressionsB

Project expressions (abbr, name, type, min, max, default). / プロジェクトの表情パラメータ一覧。

Inputs: no named parameters.

list_notesB

Notes of a voice part: index, position, duration, tone, lyric, tuning, vibrato. / ボイスパートの音符一覧(番号、位置、長さ、音高、歌詞、微調整、ビブラート)。

Inputs: part (required).

list_phonemesB

Phonemes OpenUtau produced for a part (note index, lyric, position, duration, phoneme, has_oto). Use it to check pronunciation. / パートについて OpenUtau が生成した音素一覧。発音の確認に使います。

Inputs: part (required).

list_phonemizersA

Installed phonemizers (type, name, tag, language, author); filter by language such as "EN" or "JA". / インストール済みの音素化器一覧。language("EN"・"JA" など)で絞り込めます。

Inputs: language.

list_singersA

Singers OpenUtau has loaded: id, name, type, location, default phonemizer, supported renderers. Singers without a default phonemizer get a "suggested_phonemizer" (a guess: confirm with rank_phonemizers). / OpenUtau が読み込んだ歌手一覧(ID、名前、種類、場所、既定の音素化器、対応レンダラー)。 既定の音素化器が無い歌手には "suggested_phonemizer" を付けます。

Inputs: no named parameters.

list_voicebanksB

Voicebanks in the Singers folder and AdditionalSingerPath (id as OpenUtau uses it, name, author, default phonemizer). / Singers フォルダーと AdditionalSingerPath の音源一覧(OpenUtau と同じ ID)。

Inputs: no named parameters.

midi_to_noteB

MIDI number to note name (60 = C4). / MIDI 番号を音名に変換します(60 = C4)。

Inputs: midi (required). Returns: result

new_projectA

Start a new empty project. force=true discards unsaved changes. / 新規プロジェクトを作成します。force=true で未保存の変更を破棄します。

Inputs: force.

note_to_midiB

Note name to MIDI number (C4 = 60). / 音名を MIDI 番号に変換します(C4 = 60)。

Inputs: note (required). Returns: result

open_projectA

Open a project file (.ustx, .ust, .vsqx, .mid, .musicxml, .svp, ...). force=true discards unsaved changes. / プロジェクトを開きます(.ustx .ust .vsqx .mid .musicxml .svp など)。force=true で未保存の変更を破棄します。

Inputs: path (required), force.

openutau_statusA

Is OpenUtau running, is the bridge reachable, and how to fix it if not. Call this first. / OpenUtau が起動しているか、ブリッジに接続できるか、できない場合の対処法。最初に呼んでください。

Inputs: no named parameters.

pauseB

Pause playback. / 再生を一時停止します。

Inputs: no named parameters.

playB

Start playback (from tick, optionally until end_tick, optionally one track only). / 再生します(tick から、end_tick まで、track 指定でそのトラックのみ)。

Inputs: tick, track, end_tick.

rank_phonemizersA

Find the best phonemizer for a singer by trying each installed classic phonemizer on sample lyrics and counting how many of the sounds it asks for exist in the voicebank (score 1.0 = every sound has a sample). language: "EN", "JA" or omitted for both; text: your own lyrics instead of the built-in samples. Nothing in the project changes. / 各音素化器でサンプル歌詞を音素化し、音源にサンプルがある音の割合で順位付けします (1.0 = すべての音にサンプルあり)。プロジェクトは変更しません。

Inputs: singer (required), text, language.

redoA

Redo the last undone edit. / 取り消した編集をやり直します。

Inputs: no named parameters.

refresh_singersA

Rescan the Singers folder so newly installed voicebanks appear without restarting OpenUtau. / Singers フォルダを再読み込みし、新しく入れた音源を OpenUtau の再起動なしで使えるようにします。

Inputs: no named parameters.

remove_partC

Remove a voice part. / ボイスパートを削除します。

Inputs: part (required).

remove_tempoB

Remove the tempo change at a tick (not tick 0). / 指定ティックのテンポ変更を削除します(tick 0 は不可)。

Inputs: tick (required).

remove_trackC

Remove a track and its parts. / トラックとそのパートを削除します。

Inputs: track (required).

replace_lyricsB

Write lyrics onto consecutive notes starting at note index start (one item per note, no splitting). / 音符番号 start から順に歌詞を書き込みます(1要素 = 1音符、分割なし)。

Inputs: part (required), lyrics (required), start.

save_projectB

Save as .ustx to path, or to the current file if path is omitted. / .ustx として保存します。path 省略時は現在のファイルに上書き保存します。

Inputs: path.

search_otoB

Search oto.ini aliases of a voicebank (substring match). / 音源の oto.ini エイリアスを検索します(部分一致)。

Inputs: query (required), voicebank (required), limit.

seekC

Move the playback cursor. / 再生位置を移動します。

Inputs: tick (required).

set_curveA

Draw an expression curve through [tick, value] points (part-relative ticks), straight lines between them; values are clamped to the curve's range. Use for dynamics (dyn), DiffSinger tension (tenc), breathiness (brec), gender (genc), voicing (voic), pitch deviation (pitd, cents). / [ティック, 値] の点を直線で結んで表情カーブを描きます。

Inputs: abbr (required), part (required), points (required).

set_keyB

Set the project key: 0 = C ... 11 = B, or a name like "F#" / "Bb". / プロジェクトのキー:0 = C 〜 11 = B、または "F#"・"Bb" などの音名。

Inputs: key (required).

set_lyricsC

Split text into lyrics and write them onto existing notes from start_index. / テキストを歌詞に分割し、start_index 番目からの既存の音符に書き込みます。

Inputs: part (required), text (required), language, start_index.

set_note_expressionB

Set a note expression (e.g. vel, vol, atk, dec, gen, bre, clr) on notes; no indices = all notes; value null = reset to default. / 音符の表情(vel・vol・atk など)を設定します。indices 省略で全音符、value=null で既定値に戻します。

Inputs: abbr (required), part (required), value (required), indices.

set_pitchA

Replace the pitch curve of notes (scoops, falls, drifts, overshoot). At least 2 points. snap_first=true makes the first point start from the previous note's pitch, overriding its y (a normal slide); use false for a scoop or any start you set yourself. Examples: scoop up into a note (snap_first=false): [{x:-40,y:-20},{x:60,y:0}]; fall at a phrase end on a 600 ms note: [{x:-40,y:0},{x:40,y:0},{x:420,y:0},{x:600,y:-30,shape:"i"}]. / 音符のピッチ曲線を置き換えます(しゃくり・フォール・揺れ)。点は2つ以上。

Inputs: part (required), points (required), indices (required), snap_first.

set_tempoB

Set the tempo at tick 0, or add/replace a tempo change at a tick. / テンポを設定します(tick 0)。tick を指定するとその位置にテンポ変更を追加・置換します。

Inputs: bpm (required), tick.

set_time_signatureA

Set the time signature at bar 0, or add a change at a bar (e.g. 3/4 = 3, 4). / 拍子を設定します(bar 0)。bar を指定するとその小節に拍子変更を追加します(例:3/4 は 3, 4)。

Inputs: beat_unit (required), beat_per_bar (required), bar.

split_lyricsB

Preview how text is split into one lyric per note (language auto / ja / en). / テキストが1音符ずつの歌詞にどう分割されるかを確認します(auto / ja / en)。

Inputs: text (required), language.

stopB

Stop playback. / 再生を停止します。

Inputs: no named parameters.

ticks_to_beatsC

Ticks to quarter-note beats. / ティックを拍数に変換します。

Inputs: ticks (required). Returns: result

undoB

Undo the last edit. / 直前の編集を取り消します。

Inputs: no named parameters.

update_partC

Rename, move (position / track) or resize a voice part. / ボイスパートの名前変更・移動(位置・トラック)・長さ変更。

Inputs: part (required), name, track, duration, +1 more.

update_trackB

Change a track: singer, phonemizer, name, renderer, volume (dB, -24..12), pan (-100..100), mute, solo. / トラックを変更します:歌手、音素化器、名前、レンダラー、音量(dB)、パン、ミュート、ソロ。

Inputs: track (required), pan, mute, name, +5 more.

ust_exportB

Export one voice part of a .ustx as a classic .ust (gaps become R rests; Shift_JIS by default). / .ustx のボイスパートを UTAU の .ust に書き出します(隙間は休符 R、既定は Shift_JIS)。

Inputs: ust_path (required), ustx_path (required), part, encoding.

ust_importC

Convert a classic UTAU .ust (Shift_JIS unless Charset= says otherwise) into a new .ustx file. / UTAU の .ust(既定は Shift_JIS、Charset= 行があれば従う)を新しい .ustx に変換します。

Inputs: ust_path (required), ustx_path (required), singer, overwrite, +1 more.

ustx_add_melodyD

add_melody for a .ustx file. / .ustx ファイル版の add_melody。

Inputs: part (required), path (required), melody (required), lyrics, +2 more.

ustx_add_notesB

Add notes to a voice part in a .ustx file (the part grows if needed). / .ustx ファイルのボイスパートに音符を追加します(必要ならパートを延長)。

Inputs: part (required), path (required), notes (required).

ustx_add_trackC

Add a track to a .ustx file. / .ustx ファイルにトラックを追加します。

Inputs: path (required), name, singer, phonemizer.

ustx_add_voice_partC

Add an empty voice part to a .ustx file. / .ustx ファイルに空のボイスパートを追加します。

Inputs: path (required), name, track, duration, +1 more.

ustx_assign_lyricsC

Split text into lyrics and add consecutive notes to a voice part in a .ustx file. / テキストを歌詞に分割し、.ustx ファイルのボイスパートに連続する音符を追加します。

Inputs: part (required), path (required), text (required), tones, +3 more.

ustx_createC

Create a new .ustx file (one track, no parts). singer = voicebank id or name. / 新しい .ustx ファイルを作成します(1トラック、パートなし)。singer は音源 ID か名前。

Inputs: path (required), bpm, name, singer, +2 more.

ustx_delete_notesC

Delete notes by index from a .ustx file (no indices = all). / .ustx ファイルの音符を削除します(省略で全部)。

Inputs: part (required), path (required), indices.

ustx_edit_notesC

Edit notes by index in a .ustx file (position, duration, tone, lyric, tuning, vibrato). / .ustx ファイルの音符を番号で編集します。

Inputs: part (required), path (required), edits (required).

ustx_fit_partD

fit_part for a .ustx file. / .ustx ファイル版の fit_part。

Inputs: part (required), path (required).

ustx_list_notesC

List the notes of a voice part in a .ustx file. / .ustx ファイルのボイスパートの音符一覧。

Inputs: part (required), path (required).

ustx_set_tempoB

Set the tempo at tick 0 or a tempo change at a tick in a .ustx file. / .ustx ファイルのテンポ(tick 0)またはテンポ変更を設定します。

Inputs: bpm (required), path (required), tick.

ustx_set_track_singerB

Set the singer (and phonemizer: given > voicebank default > Japanese presamp) of a track in a .ustx file. / .ustx ファイルのトラックの歌手(と音素化器)を設定します。

Inputs: path (required), track (required), singer (required), phonemizer.

ustx_set_vibratoB

Set vibrato fields on notes in a .ustx file (no indices = all notes). length > 0 turns vibrato on. / .ustx ファイルの音符にビブラートを設定します(省略で全音符)。length > 0 で有効。

Inputs: part (required), path (required), vibrato (required), indices.

ustx_summaryB

Summary of a .ustx file (tempos, tracks, voice parts). / .ustx ファイルの概要。

Inputs: path (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    C2.7/5.0

    Scored across 70 tools

    Disambiguation2/5

    The surface is split into two near-parallel families — live-editor tools (add_notes, edit_notes, set_curve, play) and .ustx file tools (ustx_add_notes, ustx_edit_notes, ustx_assign_lyrics) — with identical purposes distinguished only by whether the project is open in the app. On top of that, lyric entry has five overlapping variants (replace_lyrics, set_lyrics, assign_lyrics, add_melody, split_lyrics), so an agent can easily pick the wrong layer or the wrong lyric tool.

    Naming Consistency4/5

    Almost everything is snake_case verb_noun (add_track, remove_part, set_tempo, get_curve), and the ustx_/ust_ prefixes act as readable namespaces. Minor deviations exist: new_project instead of create_project, noun-only tools like pause/stop/seek/undo, and converter-style names (ticks_to_beats, note_to_midi) that break the verb pattern.

    Tool Count2/5

    70 tools is heavy for a DAW integration and is inflated mainly by duplicating ~15 operations for offline .ustx editing alongside the live-editor equivalents. A single mode-switched or file-path-parameterized surface could halve the count; as listed it is well past the reasonable 3-15 range.

    Completeness4/5

    Coverage is genuinely broad: project lifecycle (new/open/save/launch/close), tracks, parts, notes, expressions and curves, pitch curves, playback, WAV/MIDI export, voicebank and oto inspection, and UST import/export. Gaps are minor — no explicit part-level get beyond list_notes, and no project settings/track-level expression defaults tool — but agents can work around them.

    Maintenance

    ActivityMaintained
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables natural language control over Ableton Live for generating musical patterns, melodies, and full song arrangements. It also provides tools for sample searching and mixing assistance through an OSC-based connection with Claude Desktop.
      1
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables semantic search of local audio samples by describing sounds, MIDI generation, stem separation, and other music production tools from Claude Desktop.
      2
      MIT
    • F
      license
      Not graded
      quality
      D
      maintenance
      Controls OpenUtau (vocal synthesis software) from Claude Desktop, enabling project creation, editing, and live note manipulation via a bridge plugin.
      3
      -
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables AI agents to generate, inspect, and micro-tune OpenUtau .ustx project files and DiffSinger neural expression curves.
      5
      MIT