View on GitHub

clap-mml-render-tui

clap-mml-render-tui

clap-mml-render-tui

概要

MML TUI DAW(のようなもの)。Surge XTのリッチな音をMMLで手軽に楽しめます。Rustで書かれています。

用途

技術スタック

準備

Surge XTをinstallしてください

winget install "Surge XT"

install

cargo install --force --git https://github.com/cat2151/clap-mml-render-tui

実行

cmrt

TUI画面でMML入力して遊べます

keyboard画面

vキーで、keyboard画面へ移動します。

設定

初回起動時に config.toml が自動作成されます。場所はOS標準の設定ディレクトリ配下です。

TUI / DAW の NORMAL モードで e を押すと config.toml を editor で開きます。editor を閉じた後はアプリを再起動します。

現在の設定例です。

# 【必須】使用する CLAP プラグイン
plugin_path = 'C:\Program Files\Common Files\CLAP\Surge Synth Team\Surge XT.clap'

# config.toml を開く editor 候補(左から順に試す)
editors = ["fresh", "zed", "code", "edit", "nano", "vim"]

input_midi  = "input.mid"

# output_midi, output_wav は自動的に設定ディレクトリ配下の
# clap-mml-render-tui/phrase/ または clap-mml-render-tui/daw/ に保存されます。
# 以下の値は内部的に使用されます。
output_midi = "output.mid"
output_wav  = "output.wav"

sample_rate = 48000
buffer_size = 512

# DAW のオフラインレンダリング同時実行数(1〜16)
offline_render_workers = 2

# オフラインレンダリング backend
# in_process: cmrt 本体プロセス内でレンダリングします。
# render_server: render-server 子プロセスへ POST /render してレンダリングします。
offline_render_backend = "in_process"
offline_render_server_workers = 4
offline_render_server_port = 62153
offline_render_server_command = ""

# リアルタイム再生 backend
realtime_audio_backend = "in_process"
realtime_play_server_port = 62154
realtime_play_server_command = ""

# 起動時に自動再生するかどうか
# notepad モード: 現在行を即座に再生します。DAW モード: 曲先頭(measure 0)から演奏開始します。
autoplay_on_startup = true

# Surge XT パッチの検索対象ディレクトリ一覧
patches_dirs = [
  'C:\ProgramData\Surge XT\patches_factory',
  'C:\ProgramData\Surge XT\patches_3rdparty',
]

# WAV ループブラウザーの検索対象ディレクトリ一覧
loop_dirs = []

# WAV ループディレクトリへ付与できるカテゴリ一覧
loop_categories = ["guitar", "drum", "bass", "spoken", "sequence"]

設定項目は次のとおりです。

項目 既定値 説明
plugin_path OSごとの Surge XT CLAP 標準パス 使用する CLAP プラグインのパスです。
editors ["fresh", "zed", "code", "edit", "nano", "vim"] 左から順に試す editor 候補です。
input_midi input.mid 内部処理用の入力MIDIファイル名です。
output_midi output.mid 内部処理用の出力MIDIファイル名です。
output_wav output.wav 内部処理用の出力WAVファイル名です。
sample_rate 48000 レンダリング時のサンプルレートです。
buffer_size 512 レンダリング時のバッファサイズです。
offline_render_workers 2 in_process のレンダリング同時実行数です。
offline_render_backend in_process オフラインレンダリングの実行先です。
offline_render_server_workers 4 render_server の同時実行数です。
offline_render_server_port 62153 render_server の localhost port です。
offline_render_server_command 空文字 render_server の起動コマンドです。
realtime_audio_backend in_process リアルタイム再生の実行先です。
realtime_play_server_port 62154 play_server の localhost port です。
realtime_play_server_command 空文字 play_server の起動コマンドです。
autoplay_on_startup true 起動直後に自動再生するかどうかです。
patches_dirs OSごとの Surge XT patches 標準ディレクトリ 音色選択で検索するディレクトリ一覧です。
loop_dirs [] WAV ループブラウザーで検索するディレクトリ一覧です。変更後は cmrt scan-loops を実行します。
loop_categories ["guitar", "drum", "bass", "spoken", "sequence"] loop dirへ割り当てるカテゴリ一覧です。カテゴリoverlayのキーはカテゴリ名中の未使用英字から決まります。

OS別の plugin_path 既定値は次のとおりです。

OS別の patches_dirs 既定値は次のとおりです。

offline_render_backend = "render_server" にすると、TUI側はCLAPプラグインを直接ロードせず、127.0.0.1:<offline_render_server_port>/render にMMLを送ってWAVを受け取ります。render-serverへの接続に失敗した場合、cmrtは子プロセスを起動し、通信エラー時は一度だけ再起動して再試行します。

updateコマンド

cmrt update

serverモード

cmrt --server

CLIモード

cmrt cde
cmrt CM7

破壊的変更

今後

コンセプトのメモ

スコープ外