<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja"><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://mewli.st/feed.xml" rel="self" type="application/atom+xml" /><link href="https://mewli.st/" rel="alternate" type="text/html" hreflang="ja" /><updated>2026-06-10T02:09:41+09:00</updated><id>https://mewli.st/feed.xml</id><title type="html">mewli.st</title><subtitle>mewlist の個人サイト。ソフトウェア・音楽制作プロダクト（Doinject、MewMMLPad、MewFM、Mew8Bit）の 開発記録と技術記事を公開しています。</subtitle><entry><title type="html">Windows MIDI Services の内蔵ループバックで内部 MIDI ルーティング — loopMIDI / MIDI Yoke なしで</title><link href="https://mewli.st/development/2026/05/25/windows-midi-services-loopback/" rel="alternate" type="text/html" title="Windows MIDI Services の内蔵ループバックで内部 MIDI ルーティング — loopMIDI / MIDI Yoke なしで" /><published>2026-05-25T20:00:00+09:00</published><updated>2026-05-25T20:00:00+09:00</updated><id>https://mewli.st/development/2026/05/25/windows-midi-services-loopback</id><content type="html" xml:base="https://mewli.st/development/2026/05/25/windows-midi-services-loopback/"><![CDATA[<p>Windows でアプリからアプリへ MIDI を流したいとき、これまでは <a href="http://www.midiox.com/myoke.htm">MIDI Yoke</a> や <a href="https://www.tobias-erichsen.de/software/loopmidi.html">loopMIDI</a>、LoopBe といった、サードパーティ製の「仮想 MIDI ケーブル」ドライバを入れるのが定番でした。OS 自体には、アプリ間を内部で繋ぐ仕組みがなかったためです。</p>

<p>2026 年 2 月、<strong>Windows MIDI Services</strong> が Windows 11 に正式提供され、この内部ルーティング（ループバック）が OS 標準の機能になりました。サードパーティ製ドライバを入れなくても、Windows だけでアプリ間に MIDI を通せます。</p>

<p>この記事では、<code class="language-plaintext highlighter-rouge">winget</code> でのインストールから、MIDI Settings アプリでループバックを作り、自作アプリ同士（MewMMLPad → MewFM）を繋ぐところまでを、実際にやった手順で紹介します。</p>

<h2 id="windows-midi-services-とはざっくり">Windows MIDI Services とは（ざっくり）</h2>

<p><a href="https://microsoft.github.io/MIDI/">Windows MIDI Services</a> は、Microsoft が開発しているオープンソースの次世代 MIDI スタックです。MIDI 1.0 と MIDI 2.0 の両方に対応し、複数アプリからの同時アクセス（マルチクライアント）や、今回扱う<strong>内蔵ループバック</strong>などをサポートします。</p>

<p>2026 年 2 月 17 日に GA（一般提供）となり、サポート対象の製品版 Windows 11 へ段階的に展開されています。コア部分は OS に組み込まれていて、設定用のアプリや SDK は別途インストールするかたちです。</p>

<p>MIDI 2.0 や UMP（Universal MIDI Packet）といった中身には踏み込まず、ここでは<strong>内部ルーティングに絞って</strong>紹介します。</p>

<h2 id="インストール">インストール</h2>

<p>設定アプリと関連ツールは <code class="language-plaintext highlighter-rouge">winget</code> で入ります。</p>

<div class="language-powershell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">winget</span><span class="w"> </span><span class="nx">install</span><span class="w"> </span><span class="nx">Microsoft.WindowsMIDIServicesSDK</span><span class="w">
</span></code></pre></div></div>

<p>これで <strong>MIDI Settings アプリ</strong>（正式名「Windows MIDI and Musician Settings」）が追加されます。スタートメニューで「MIDI Settings」と検索すると見つかります。</p>

<p><img src="/img/midi-services/search-midi-settings.png" alt="スタートメニューの検索結果に出てくる MIDI Settings アプリ" /></p>

<p>手元の環境では、このインストールだけで内部ルーティングまで使えました（別途サービスプラグインを入れたり、再起動したりは不要でした）。</p>

<p>この MIDI Settings アプリを開くと、下のスクリーンショットのように、左側のメニューに <strong>Loopback Endpoints</strong> の項目があります。</p>

<p><img src="/img/midi-services/settings-app-loopback-menu.png" alt="MIDI Settings アプリの画面。左メニューの Loopback Endpoints を選ぶ" /></p>

<p>なお、この記事のスクリーンショットはプレビュー版（Installed MIDI Runtime 1.0.14-rc）のものです。ツールの UI は今後変わる可能性があります。</p>

<h2 id="ループバックを作る">ループバックを作る</h2>

<p>インストール直後から <strong>Default App Loopback (A) / (B)</strong> という既定のペアが用意されているので、すぐに試せます。独自に名前を付けたペアを作りたい場合は、Loopback Endpoints の画面から作成します。</p>

<p><img src="/img/midi-services/create-loopback-dialog.png" alt="Create MIDI Loopback Endpoints ダイアログ。A と B のクロス接続を図解している" /></p>

<p>ここが少しややこしいところです。MIDI 2.0 ではすべてのエンドポイントが双方向です。そのため「ループバック」を成立させるには、<strong>A と B という 2 つのエンドポイントを作り、たすき掛け（クロス）に繋ぎます</strong>。<code class="language-plaintext highlighter-rouge">A</code> から出たものは <code class="language-plaintext highlighter-rouge">B</code> の入力に届き、<code class="language-plaintext highlighter-rouge">B</code> から出たものは <code class="language-plaintext highlighter-rouge">A</code> の入力に届く、という関係です。</p>

<p>作成時のルールも、このダイアログに書かれています。</p>

<ul>
  <li><strong>Loopback Base Name</strong> … MIDI 1.0 の API から使えるよう、名前は 27 文字以内。末尾に <code class="language-plaintext highlighter-rouge">(A)</code> <code class="language-plaintext highlighter-rouge">(B)</code> が自動で付き、2 つのエンドポイントを区別します。</li>
  <li><strong>Unique Identifier</strong> … 英数字のみ・スペースや記号なし・32 文字以内の、トランスポート内で一意な識別子。既定値が入っています。</li>
</ul>

<p>これで <code class="language-plaintext highlighter-rouge">〜 (A)</code> と <code class="language-plaintext highlighter-rouge">〜 (B)</code> のペアができます。</p>

<h2 id="落とし穴送る側と受け取る側で同じ側を選ばない">落とし穴：送る側と受け取る側で「同じ側」を選ばない</h2>

<p><code class="language-plaintext highlighter-rouge">A → B</code> / <code class="language-plaintext highlighter-rouge">B → A</code> というクロス構造のため、ひとつ注意点があります。<strong>送る側と受け取る側で同じエンドポイント（A 同士・B 同士）を指定すると、MIDI は流れません。</strong></p>

<p><code class="language-plaintext highlighter-rouge">A</code> から送ったものが届くのは <code class="language-plaintext highlighter-rouge">B</code> の入力で、<code class="language-plaintext highlighter-rouge">A</code> の入力ではないからです。したがって、</p>

<ul>
  <li>送信アプリの<strong>出力</strong>を <code class="language-plaintext highlighter-rouge">A</code> にしたら、受信アプリの<strong>入力</strong>は <code class="language-plaintext highlighter-rouge">B</code> にする</li>
  <li>（逆に出力を <code class="language-plaintext highlighter-rouge">B</code> にしたら、入力は <code class="language-plaintext highlighter-rouge">A</code>）</li>
</ul>

<p>というように、必ず<strong>反対側</strong>を指定します。冒頭の図の、<code class="language-plaintext highlighter-rouge">A</code> の出力（O）から <code class="language-plaintext highlighter-rouge">B</code> の入力（I）へ向かう矢印が、その流れを表しています。</p>

<h2 id="自作アプリ同士を繋ぐmewmmlpad--mewfm">自作アプリ同士を繋ぐ（MewMMLPad → MewFM）</h2>

<p>実例として、<a href="/mewmmlpad/">MewMMLPad</a>（MML シーケンサー）が生成した MIDI を、<a href="/mewfm/">MewFM</a>（FM 音源）に流してみます。</p>

<p>送信側の MewMMLPad は、MIDI 出力に <strong>Default App Loopback (A)</strong> を指定します。</p>

<p><img src="/img/midi-services/mewmmlpad-output-a.png" alt="MewMMLPad の MIDI 出力に Default App Loopback (A) を選んだ状態" /></p>

<p>受信側の MewFM は、MIDI 入力に <strong>Default App Loopback (B)</strong> を指定します。出力を <code class="language-plaintext highlighter-rouge">A</code> にしたので、入力は反対側の <code class="language-plaintext highlighter-rouge">B</code> です。</p>

<p><img src="/img/midi-services/mewfm-input-b.png" alt="MewFM の MIDI 入力で Default App Loopback (B) にチェックした状態" /></p>

<p>これで、MewMMLPad で打ち込んだ演奏が、ループバックを通って MewFM で鳴ります。あいだにサードパーティ製の仮想 MIDI ケーブルは一切入っていません。</p>

<h2 id="まとめ">まとめ</h2>

<p>Windows でのアプリ間 MIDI ルーティングは、長らくサードパーティ製ドライバ頼みでしたが、Windows MIDI Services によって OS 標準の機能になりました。<code class="language-plaintext highlighter-rouge">winget install Microsoft.WindowsMIDIServicesSDK</code> を実行し、MIDI Settings アプリでループバックを用意するだけです。</p>

<p>実際に使ううえでの勘どころは、A / B のクロス構造です。<strong>送る側と受け取る側で反対の端を選ぶ</strong>、ここだけ押さえておけば迷いません。</p>

<p>内部ルーティングは Windows MIDI Services のごく一部の機能で、その先には MIDI 2.0 / UMP の世界が広がっています。この記事では、そのなかから内部ルーティングだけを取り上げました。</p>]]></content><author><name>mewlist</name></author><category term="development" /><summary type="html"><![CDATA[Windows 11 に正式提供された Windows MIDI Services を使うと、loopMIDI や MIDI Yoke といったサードパーティ製の仮想 MIDI ケーブルなしで、アプリ間の内部 MIDI ルーティングができます。winget でのインストールから、MIDI Settings での A / B ループバック作成、MewMMLPad から MewFM への接続までを実際の手順で。]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://mewli.st/img/hero/midi-services-loopback.png" /><media:content medium="image" url="https://mewli.st/img/hero/midi-services-loopback.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">パン、プログラムチェンジ、DAW へのルーティング — MML 連載 #8</title><link href="https://mewli.st/development/2026/05/25/mml-pan-and-program-change/" rel="alternate" type="text/html" title="パン、プログラムチェンジ、DAW へのルーティング — MML 連載 #8" /><published>2026-05-25T00:00:00+09:00</published><updated>2026-05-25T00:00:00+09:00</updated><id>https://mewli.st/development/2026/05/25/mml-pan-and-program-change</id><content type="html" xml:base="https://mewli.st/development/2026/05/25/mml-pan-and-program-change/"><![CDATA[<p><a href="/mewmmlpad/series/">MML 連載シリーズ</a> の 8 回目です。本シリーズで扱う MML 記法は <strong><a href="/mewmmlpad/">MewMMLPad</a>（VST3 / スタンドアローン / ブラウザ版）</strong> のものです（PMD / FMP など他環境の MML とは方言が異なる箇所があります）。</p>

<p>今回は連載の締めくくりとして、<strong>音を左右のどこに置くか</strong>（パン）、<strong>音源の音色を切り替える</strong>（プログラムチェンジ）、そして打ち込んだ MML を <strong>DAW や外部音源へ送り出す</strong>ところまでを扱います。<a href="/development/2026/05/24/mml-macros-and-variables/">前回</a> のマクロと変数までは「どんな音をどう並べるか」の話でしたが、ここからは音の定位・音色と、その送り先という、一段外側の話に入っていきます。</p>

<p>前半のパンは Web プレイヤーでそのまま鳴らせます。後半のプログラムチェンジと DAW ルーティングは、MewMMLPad の外にある音源に向けた話なので、ブラウザの中だけでは音に出ません（理由は後述します）。</p>

<h2 id="パン-p-の基本">パン <code class="language-plaintext highlighter-rouge">P</code> の基本</h2>

<p>パンは、その音を左右のどこに置くかの指定です。<code class="language-plaintext highlighter-rouge">P</code> に続けて 0〜127 の値を書きます。<code class="language-plaintext highlighter-rouge">0</code> が左いっぱい、<code class="language-plaintext highlighter-rouge">127</code> が右いっぱい、<code class="language-plaintext highlighter-rouge">64</code> がセンターです。範囲外の値はクランプされます。</p>

<pre><code class="language-mml">A T120 o4 L8 Q4
A P16 c e g &gt; c   &lt; P112 c e g &gt; c
</code></pre>

<p><code class="language-plaintext highlighter-rouge">P16</code> で左寄りに置いた分散和音を鳴らし、続く <code class="language-plaintext highlighter-rouge">P112</code> で右寄りに同じフレーズを鳴らしています。1 本のチャンネルでも、演奏の途中で <code class="language-plaintext highlighter-rouge">P</code> を書き直せば、その時点から定位が変わります。</p>

<h2 id="センター基準の-pl--pr--pc">センター基準の <code class="language-plaintext highlighter-rouge">PL</code> / <code class="language-plaintext highlighter-rouge">PR</code> / <code class="language-plaintext highlighter-rouge">PC</code></h2>

<p>絶対値の <code class="language-plaintext highlighter-rouge">P</code> のほかに、センターを基準にした相対指定があります。</p>

<table>
  <thead>
    <tr>
      <th style="text-align: left">記法</th>
      <th style="text-align: left">意味</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="text-align: left"><code class="language-plaintext highlighter-rouge">PLn</code></td>
      <td style="text-align: left">センターから n だけ左（<code class="language-plaintext highlighter-rouge">PL32</code> = <code class="language-plaintext highlighter-rouge">P32</code>）</td>
    </tr>
    <tr>
      <td style="text-align: left"><code class="language-plaintext highlighter-rouge">PRn</code></td>
      <td style="text-align: left">センターから n だけ右（<code class="language-plaintext highlighter-rouge">PR32</code> = <code class="language-plaintext highlighter-rouge">P96</code>）</td>
    </tr>
    <tr>
      <td style="text-align: left"><code class="language-plaintext highlighter-rouge">PC</code></td>
      <td style="text-align: left">センターに戻す（= <code class="language-plaintext highlighter-rouge">P64</code>）</td>
    </tr>
  </tbody>
</table>

<pre><code class="language-mml">A T120 o4 L8 Q4
A PL32 c e g b   PC c e g b   PR32 c e g b
</code></pre>

<p>左（<code class="language-plaintext highlighter-rouge">PL32</code>）→ センター（<code class="language-plaintext highlighter-rouge">PC</code>）→ 右（<code class="language-plaintext highlighter-rouge">PR32</code>）と、同じフレーズを移動させています。センターが 64 だと覚えておかなくても、<code class="language-plaintext highlighter-rouge">PL</code> / <code class="language-plaintext highlighter-rouge">PR</code> で「中央から何ステップ」と書けるので、左右対称の配置をそろえやすくなります。</p>

<h2 id="2-チャンネルで左右に広げる">2 チャンネルで左右に広げる</h2>

<p>複数チャンネルをそれぞれ別の定位に置くと、ステレオに広がった演奏になります。</p>

<pre><code class="language-mml">A T120 o4 L8 Q4 PL40
A c e g b   g e c e
B o3 L8 Q4 PR40
B c g e g   c g e g
</code></pre>

<p><code class="language-plaintext highlighter-rouge">A</code> を左（<code class="language-plaintext highlighter-rouge">PL40</code>）、<code class="language-plaintext highlighter-rouge">B</code> を右（<code class="language-plaintext highlighter-rouge">PR40</code>）に置き、上の旋律と下の伴奏を左右に分けています。<code class="language-plaintext highlighter-rouge">T</code>（テンポ）のような曲全体に効く設定は <code class="language-plaintext highlighter-rouge">A</code> にだけ書きます。Web プレイヤーで再生すると、2 つの声部が左右に分かれて聞こえます。</p>

<h2 id="複数チャンネルへまとめて書く">複数チャンネルへまとめて書く</h2>

<p>ここまでは 1 行に 1 チャンネルを書いてきましたが、複数のチャンネルに同じ内容を書きたいときは、行頭にチャンネル文字を <strong>スペースなしで並べて</strong> 書けます。並べた全チャンネルに、その行の内容がまとめて適用されます。</p>

<pre><code class="language-mml">A T120
AB o4 L8 Q4
A c e g &gt; c
B e g &gt; c e
</code></pre>

<p><code class="language-plaintext highlighter-rouge">AB o4 L8 Q4</code> の 1 行で、<code class="language-plaintext highlighter-rouge">A</code> と <code class="language-plaintext highlighter-rouge">B</code> の両方にオクターブ・長さ・ゲート長をまとめて設定しています。共通の設定（<code class="language-plaintext highlighter-rouge">L</code> や <code class="language-plaintext highlighter-rouge">Q</code>、<code class="language-plaintext highlighter-rouge">$</code> で始まるモードなど）を各チャンネルに書き写す手間が省けます。<code class="language-plaintext highlighter-rouge">ABCDEFGH ...</code> のように、もっと多くのチャンネルへ一度に書くこともできます。</p>

<p>ひとつ注意点があります。チャンネル文字の <strong>直後にはスペースが必要</strong> です。<code class="language-plaintext highlighter-rouge">AB4</code> と続けて書くと、これは「<code class="language-plaintext highlighter-rouge">A</code> チャンネルで音符 <code class="language-plaintext highlighter-rouge">B4</code>」と解釈されてしまいます。</p>

<h2 id="プログラムチェンジ-n">プログラムチェンジ <code class="language-plaintext highlighter-rouge">@n</code></h2>

<p>プログラムチェンジは、音源側の音色（プログラム）を切り替える指定です。<code class="language-plaintext highlighter-rouge">@</code> に続けて番号を書きます。</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>A @0 o4 L8 Q4 c e g b
A @3:120 o4 L8 Q4 c e g b
</code></pre></div></div>

<ul>
  <li><code class="language-plaintext highlighter-rouge">@n</code> … プログラム番号 0〜127 を送ります。<code class="language-plaintext highlighter-rouge">n</code> が 128 以上のときは Bank LSB + Program に自動で分割されます（bank = n ÷ 128、slot = n を 128 で割った余り）。</li>
  <li><code class="language-plaintext highlighter-rouge">@bank:slot</code> … Bank と Slot を明示します。<code class="language-plaintext highlighter-rouge">@3:120</code> なら Bank 3 / Slot 120 です。</li>
</ul>

<p>同じタイミングでは Bank Select → Program Change の順で送られ、同じ番号を続けて送ったときは自動的にまとめられます（チャンネルごと）。</p>

<p>ここで一点、注意があります。<strong>この記事の Web プレイヤーでは、プログラムチェンジを書いても音色は変わりません。</strong> 内蔵シンセは波形（Sine / Saw / Tri / Square）を選ぶだけの簡易なもので、切り替えるべき音色のテーブルを持っていないためです。プログラムチェンジは MewMMLPad の外にある音源（VSTi や外部 MIDI 音源）に向けたメッセージで、実際に音色が変わるのは、そうした音源に演奏を流したときです。そのため上の例は、鳴らせる譜面ではなく構文の例として載せています。外部音源への流し方は、この記事の後半で扱います。</p>

<h2 id="mewfm--mew8bit-向けの-programchangecc102">MewFM / Mew8Bit 向けの <code class="language-plaintext highlighter-rouge">$ProgramChange=CC102</code></h2>

<p>VSTi 版を DAW で使うときの補足です。<strong>ホストによっては Program Change がうまく扱われず、音色切り替えが音源まで届かないことがあります</strong>（Cubase などで起こります）。この場合、MML 側で <code class="language-plaintext highlighter-rouge">@n</code> を書いても切り替えが伝わりません。</p>

<p>これに対して、スロット番号を Program Change の代わりに CC（コントロールチェンジ）で送る <code class="language-plaintext highlighter-rouge">$ProgramChange=CC102</code> というモードがあります。</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>A $ProgramChange=CC102
A @5 o4 L8 Q4 c e g b
</code></pre></div></div>

<p>ただし、これは <strong>受け取る音源が CC102 をスロット選択として解釈できることが前提</strong> です。現状この解釈に対応しているのは MewFM / Mew8Bit で、一般的な VSTi は CC102 を音色切り替えとしては受け取りません。そのため、汎用の回避策ではなく、いまのところは MewFM / Mew8Bit と組み合わせるときの機能と考えてください。</p>

<p>なお、将来の更新で、より幅広いホストや音源でも扱えるよう対応が広がる可能性はあります。ただし現時点では上記のとおりです。</p>

<p>番号は <code class="language-plaintext highlighter-rouge">$ProgramChange=CC&lt;番号&gt;</code> で変更でき、Bank Select は従来どおり CC 0 / 32 で送られます。</p>

<h2 id="daw外部音源へ流す">DAW・外部音源へ流す</h2>

<p>ここまでのパンやプログラムチェンジは、最終的に MewMMLPad の外にある音源で鳴らしてこそ活きます。MewMMLPad は <strong>MIDI を出力する側</strong> なので、その MIDI を DAW や外部音源に届ければ、好きな音色で演奏させられます。</p>

<h3 id="cubase-で-vst3-として使う">Cubase で VST3 として使う</h3>

<p>VST3 版は、MIDI を出力する VSTi として DAW に挿します。Cubase での基本的な流れは次のとおりです。</p>

<ol>
  <li>鳴らしたい音源（HALion や Kontakt など）をトラックに挿す</li>
  <li>その音源トラックの MIDI 入力ポートを MewMMLPad にする</li>
  <li>トラックをモニタ ON にする（再生・停止を問わず MIDI が音源へ届きます）</li>
  <li>トランスポートを再生すると、MML どおりに MIDI が出て音源が鳴ります</li>
</ol>

<p>（VST3 版は Cubase / Windows で動作確認しています。ほかの DAW での手順や動作は未検証です。）</p>

<h3 id="16-チャンネルを別音色で鳴らす">16 チャンネルを別音色で鳴らす</h3>

<p>MewMMLPad のチャンネル <code class="language-plaintext highlighter-rouge">A</code>〜<code class="language-plaintext highlighter-rouge">P</code> は MIDI ch 1〜16 に対応します。1 つの音源トラックで <code class="language-plaintext highlighter-rouge">A</code>〜<code class="language-plaintext highlighter-rouge">P</code> を同時に受け取り、チャンネルごとに別音色を鳴らすには、<strong>送る側・受け取る側の MIDI ch をどちらも「All（オムニ）」</strong>にします。</p>

<ul>
  <li>MewMMLPad 側の出力 ch を <code class="language-plaintext highlighter-rouge">All</code> … 全チャンネルが ch 1〜16 のままホストへ流れます</li>
  <li>受け取る VSTi 側の入力 ch も <code class="language-plaintext highlighter-rouge">All</code> … マルチティンバー音源なら ch ごとに別パッチで発音します</li>
</ul>

<p>これで <code class="language-plaintext highlighter-rouge">A</code> → ch 1 → パート 1、<code class="language-plaintext highlighter-rouge">B</code> → ch 2 → パート 2 … と、1 トラックに最大 16 パートを流し込めます。逆に全部を 1 つの音色でまとめたいときは、受け側の入力 ch を 1 つに固定します。</p>

<p>ここで前半のプログラムチェンジが効いてきます。チャンネルごとに <code class="language-plaintext highlighter-rouge">@n</code> を書いておけば、各チャンネルのパートに音色を割り当てた状態で送り出せます。</p>

<h3 id="midi-クリップとして書き出す">MIDI クリップとして書き出す</h3>

<p>リアルタイムに鳴らすだけでなく、MML の内容を MIDI クリップとして DAW に置くこともできます。ヘッダの <strong>MIDI</strong> ボタンから任意のトラックへドラッグすると、チャンネルごとに分かれた SMF として配置されます。MML を直前に編集していても、ドラッグした時点の最新の内容が反映されます。</p>

<h3 id="スタンドアローン版から外部音源へ">スタンドアローン版から外部音源へ</h3>

<p>スタンドアローン版では、MewMMLPad の MIDI 出力を別のアプリ（音源）へ渡すために、内部ルーティング（ループバック）を使います。Windows なら、<a href="/development/2026/05/25/windows-midi-services-loopback/">Windows MIDI Services の内蔵ループバック</a> を使えば、サードパーティ製の仮想 MIDI ケーブルなしで「MewMMLPad → 音源」の経路を作れます。</p>

<h2 id="まとめ">まとめ</h2>

<p>パンで音を左右に配置し、プログラムチェンジで音色を選び、DAW や外部音源へ送り出す。ここまでで、MML をブラウザの中だけで完結させる段階から、実際の制作に持ち出す段階までをひととおりたどりました。今回で、連載で予定していた MML の機能はひととおり出そろいました。</p>

<p>各コマンドの細かい仕様は <a href="/mewmmlpad/mml-reference/">MML リファレンス</a> に、実際の曲を題材にした解説は <a href="/mewmmlpad/samples/">サンプル曲で学ぶ</a> にまとめてあります。連載全体の目次は <a href="/mewmmlpad/series/">シリーズ一覧</a> からどうぞ。</p>]]></content><author><name>mewlist</name></author><category term="development" /><summary type="html"><![CDATA[音を左右に置くパン（P / PL / PR / PC）、音色を切り替えるプログラムチェンジ（@n / @bank:slot）、そして打ち込んだ MML を DAW や外部音源へ送り出すルーティング（16ch オムニ MIDI、MIDI クリップ書き出し）まで。MML 連載シリーズの締めくくり、8 回目。]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://mewli.st/img/mewmmlpad/series-hero-v2.png" /><media:content medium="image" url="https://mewli.st/img/mewmmlpad/series-hero-v2.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">マクロと変数 — MML 連載 #7</title><link href="https://mewli.st/development/2026/05/24/mml-macros-and-variables/" rel="alternate" type="text/html" title="マクロと変数 — MML 連載 #7" /><published>2026-05-24T03:00:00+09:00</published><updated>2026-05-24T03:00:00+09:00</updated><id>https://mewli.st/development/2026/05/24/mml-macros-and-variables</id><content type="html" xml:base="https://mewli.st/development/2026/05/24/mml-macros-and-variables/"><![CDATA[<p><a href="/mewmmlpad/series/">MML 連載シリーズ</a> の 7 回目です。本シリーズで扱う MML 記法は <strong><a href="/mewmmlpad/">MewMMLPad</a>（VST3 / スタンドアローン / ブラウザ版）</strong> のものです。記事内の例はすべて MewMMLPad の Web プレイヤー上で動かしながら確認できます（PMD / FMP など他環境の MML とは方言が異なる箇所があります）。</p>

<p>今回は <strong>フレーズに名前を付けて再利用する</strong> 仕組みを扱います。<code class="language-plaintext highlighter-rouge">% Name</code>（マクロ）と <code class="language-plaintext highlighter-rouge">!X{...}</code>（変数）です。<a href="/development/2026/05/24/mml-tuplets-and-repeats/">前回</a> の繰り返し <code class="language-plaintext highlighter-rouge">[...]N</code> が「その場で連続反復」だったのに対し、マクロと変数は <strong>離れた場所でも同じフレーズを呼び出せる</strong> のが違いです。</p>

<h2 id="マクロ--name-の基本">マクロ <code class="language-plaintext highlighter-rouge">% Name</code> の基本</h2>

<p>マクロ（エイリアス）は、<strong>MML の断片に名前を付けて、あとから名前で呼び出す</strong> 仕組みです。<code class="language-plaintext highlighter-rouge">% 名前 内容</code> で定義し、<code class="language-plaintext highlighter-rouge">%名前</code> で展開します。</p>

<pre><code class="language-mml">% Riff c d e g
A T120 o4 L8 Q4
A %Riff %Riff
</code></pre>

<p><code class="language-plaintext highlighter-rouge">% Riff c d e g</code> で「c d e g」というフレーズに <code class="language-plaintext highlighter-rouge">Riff</code> という名前を付け、<code class="language-plaintext highlighter-rouge">A</code> チャンネルの <code class="language-plaintext highlighter-rouge">%Riff %Riff</code> で 2 回呼び出しています。展開すると次のようになります。</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>%Riff %Riff  →  c d e g  c d e g
</code></pre></div></div>

<p>定義行はチャンネル行より前に、<code class="language-plaintext highlighter-rouge">%</code> で始まる行として書きます。名前は英数字で付けられます。同じフレーズを何度も打ち込む代わりに、定義をひとつ直せば呼び出し先がすべて変わるのが利点です。</p>

<p>なお、マクロ展開中の演奏位置カーソルは <code class="language-plaintext highlighter-rouge">%Riff</code> を呼び出した位置に固定されます（展開後の音を 1 音ずつ追いかける表示にはなりません）。</p>

<h2 id="任意の-mml-をマクロにできる">任意の MML をマクロにできる</h2>

<p>マクロの中身は音符だけではありません。音量やオクターブなどのコマンドを含めて、任意の MML をまとめられます。</p>

<pre><code class="language-mml">% Lead V100 o5 c d e f
A T120 L8 Q4
A %Lead %Lead
</code></pre>

<p><code class="language-plaintext highlighter-rouge">% Lead V100 o5 c d e f</code> は、音量 <code class="language-plaintext highlighter-rouge">V100</code>・オクターブ <code class="language-plaintext highlighter-rouge">o5</code> の設定ごとフレーズに名前を付けたものです。<code class="language-plaintext highlighter-rouge">%Lead</code> を呼ぶたびに設定とフレーズがまとめて展開されます。</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>%Lead %Lead  →  V100 o5 c d e f  V100 o5 c d e f
</code></pre></div></div>

<p>リフレインや決まり文句のフレーズ、音色の設定セットなどを 1 か所にまとめておけます。</p>

<h2 id="変数-x">変数 <code class="language-plaintext highlighter-rouge">!X{...}</code></h2>

<p>変数はマクロに似ていますが、<strong>1 文字の名前</strong>で、<strong>チャンネルごとに独立</strong> している点が違います。<code class="language-plaintext highlighter-rouge">!X{値}</code> で定義し、<code class="language-plaintext highlighter-rouge">!X</code> で展開します。</p>

<pre><code class="language-mml">A T120 o4 L8 Q4
A !X{c e g} !X !X
</code></pre>

<p><code class="language-plaintext highlighter-rouge">!X{c e g}</code> で変数 X に「c e g」を代入し、続く <code class="language-plaintext highlighter-rouge">!X !X</code> で 2 回展開します。インライン（同じ行）で定義してそのまま使えます。</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>!X{c e g} !X !X  →  c e g  c e g
</code></pre></div></div>

<p>変数は <strong>チャンネルごとに別物</strong> です。<code class="language-plaintext highlighter-rouge">A</code> で <code class="language-plaintext highlighter-rouge">!X{c e g}</code>、<code class="language-plaintext highlighter-rouge">B</code> で <code class="language-plaintext highlighter-rouge">!X{e g b}</code> と定義すれば、同じ <code class="language-plaintext highlighter-rouge">!X</code> という記述でもチャンネルごとに違う中身が展開されます。</p>

<h2 id="組み合わせて短い演奏にしてみる">組み合わせて短い演奏にしてみる</h2>

<p>マクロの中に変数を仕込んでおくと、<strong>同じマクロを、チャンネルごとに中身を変えて使い回せます</strong>。これが 2 つを組み合わせる一番の旨味です。マクロ・変数に、これまでの繰り返しも組み合わせた実演を見てみます。</p>

<pre><code class="language-mml">% Arp Q2 L16 !X8. ^ !Xr &gt; !Xr &lt; !X8. ^ !Xr &gt; !X &lt; !X8.
A T120 o4 V80
A !X{e} [%Arp]4
B      o3 V120
B !X{a} %Arp !X{g} %Arp !X{f} %Arp !X{d} %Arp
</code></pre>

<p>マクロ <code class="language-plaintext highlighter-rouge">Arp</code> は、変数 <code class="language-plaintext highlighter-rouge">!X</code> の音を軸にした 1 小節ぶんのリズムパターンです。<code class="language-plaintext highlighter-rouge">Q2</code>（短めのゲート）でスタッカート気味にし、付点 8 分・16 分・休符・オクターブの上下（<code class="language-plaintext highlighter-rouge">&gt;</code> <code class="language-plaintext highlighter-rouge">&lt;</code>）・スラー（<code class="language-plaintext highlighter-rouge">^</code>）を組み合わせています。可変なのは <code class="language-plaintext highlighter-rouge">!X</code> の部分だけで、リズムの形は固定です。<code class="language-plaintext highlighter-rouge">!X{e}</code> を入れると次のように展開されます。</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>%Arp (X=e)  →  Q2 L16 e8. ^ e r &gt; e r &lt; e8. ^ e r &gt; e &lt; e8.
</code></pre></div></div>

<ul>
  <li><code class="language-plaintext highlighter-rouge">A</code> チャンネルは <code class="language-plaintext highlighter-rouge">!X{e} [%Arp]4</code>。<code class="language-plaintext highlighter-rouge">e</code> を軸にした同じパターンを 4 小節繰り返します。</li>
  <li><code class="language-plaintext highlighter-rouge">B</code> チャンネルは <code class="language-plaintext highlighter-rouge">!X</code> を <code class="language-plaintext highlighter-rouge">a</code> → <code class="language-plaintext highlighter-rouge">g</code> → <code class="language-plaintext highlighter-rouge">f</code> → <code class="language-plaintext highlighter-rouge">d</code> と 1 小節ごとに差し替えながら <code class="language-plaintext highlighter-rouge">%Arp</code> を 4 回。上声部が同じ音型で回り続ける下を、ベースが下降していきます。</li>
</ul>

<p>パターンの形はマクロ 1 行ぶんだけ。あとは変数を差し替えるだけで、固定の上声部と動くベースが同じ定義から組み上がります。</p>

<p><code class="language-plaintext highlighter-rouge">% Name</code> は <strong>どのチャンネルからでも呼べる共通フレーズ</strong>、<code class="language-plaintext highlighter-rouge">!X</code> は <strong>チャンネルごとに中身を差し替えられるプレースホルダ</strong> です。マクロ本体に変数を仕込めば、1 つのパターン定義から各チャンネルで少しずつ違う演奏を展開できます。打ち込みの重複を減らし、あとからまとめて直せるのが利点です。</p>

<h2 id="次回">次回</h2>

<p>次の <a href="/mewmmlpad/series/">#8「パン、プログラムチェンジ、DAW へのルーティング」</a> では、<code class="language-plaintext highlighter-rouge">P</code> / <code class="language-plaintext highlighter-rouge">PL</code> / <code class="language-plaintext highlighter-rouge">PR</code> / <code class="language-plaintext highlighter-rouge">PC</code>（定位）、<code class="language-plaintext highlighter-rouge">@n</code> / <code class="language-plaintext highlighter-rouge">@bank:slot</code>（音色切替）、そして DAW・外部音源への送り出しを扱います。</p>

<p>連載全体の目次は <a href="/mewmmlpad/series/">シリーズ一覧</a> からどうぞ。</p>]]></content><author><name>mewlist</name></author><category term="development" /><summary type="html"><![CDATA[MML のフレーズを名前で再利用する 2 つの仕組み — % Name（マクロ）と !X{...}（変数）、マクロに変数を仕込んでチャンネルごとに使い回す合わせ技。WebPlayer で鳴らしながら確認できる MML 連載シリーズの 7 回目。]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://mewli.st/img/mewmmlpad/series-hero-v2.png" /><media:content medium="image" url="https://mewli.st/img/mewmmlpad/series-hero-v2.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">連符と繰り返し — MML 連載 #6</title><link href="https://mewli.st/development/2026/05/24/mml-tuplets-and-repeats/" rel="alternate" type="text/html" title="連符と繰り返し — MML 連載 #6" /><published>2026-05-24T02:00:00+09:00</published><updated>2026-05-24T02:00:00+09:00</updated><id>https://mewli.st/development/2026/05/24/mml-tuplets-and-repeats</id><content type="html" xml:base="https://mewli.st/development/2026/05/24/mml-tuplets-and-repeats/"><![CDATA[<p><a href="/mewmmlpad/series/">MML 連載シリーズ</a> の 6 回目です。本シリーズで扱う MML 記法は <strong><a href="/mewmmlpad/">MewMMLPad</a>（VST3 / スタンドアローン / ブラウザ版）</strong> のものです。記事内の例はすべて MewMMLPad の Web プレイヤー上で動かしながら確認できます（PMD / FMP など他環境の MML とは方言が異なる箇所があります）。</p>

<p>今回は <strong>リズムを組み立てる</strong> 道具を 2 つ扱います。<code class="language-plaintext highlighter-rouge">{...}N</code>（連符）と <code class="language-plaintext highlighter-rouge">[...]N</code>（繰り返し）です。1 音ずつ書くと長くなるパターンを、まとめて簡潔に表現できます。</p>

<h2 id="連符-n-の基本">連符 <code class="language-plaintext highlighter-rouge">{...}N</code> の基本</h2>

<p>連符（タプレット）は、<strong>指定した音価の中に複数の音を均等に詰め込む</strong> 記法です。<code class="language-plaintext highlighter-rouge">{ }</code> で囲んだ音符のまとまりに、外側の数字で全体の長さを指定します。</p>

<pre><code class="language-mml">A T120 o4 L4 Q4
A {ceg}4 {ceg}4 c
</code></pre>

<p><code class="language-plaintext highlighter-rouge">{ceg}4</code> は 3 つの音を <strong>4 分音符の時間に均等割り</strong> した 3 連符です。数字の <code class="language-plaintext highlighter-rouge">4</code> は <strong>個々の音の長さではなく、3 音まとめて 4 分音符に収める</strong> という意味になります。<code class="language-plaintext highlighter-rouge">{ceg}4</code> を 2 回鳴らしてから 4 分音符の <code class="language-plaintext highlighter-rouge">c</code> を置くと、3 連符と通常の音符の長さの違いがはっきりします。</p>

<h2 id="スロット数を変える">スロット数を変える</h2>

<p><code class="language-plaintext highlighter-rouge">{ }</code> の中に並べる音の数を変えれば、3 連符以外の連符も作れます。</p>

<pre><code class="language-mml">A T120 o4 L4 Q4
A {cd}4 {cde}4 {cdef}4 {cdefg}4
</code></pre>

<p>順に 2・3・4・5 連符。すべて 4 分音符 1 拍ぶんの時間に収まるので、音数が増えるほど 1 音が短くなります。</p>

<p>休符 <code class="language-plaintext highlighter-rouge">r</code> も 1 スロットとして数えられます。</p>

<pre><code class="language-mml">A T120 o4 L4 Q4
A {c r e}4 {c r e}4 c
</code></pre>

<p><code class="language-plaintext highlighter-rouge">{c r e}4</code> は「c・休符・e」の 3 スロット。真ん中が抜けた 3 連符のリズムになります。</p>

<h2 id="連符の中で使える記法">連符の中で使える記法</h2>

<p><code class="language-plaintext highlighter-rouge">{ }</code> の中では、音程や音符以外に <code class="language-plaintext highlighter-rouge">&lt; &gt; o</code>（オクターブ）、<code class="language-plaintext highlighter-rouge">V</code>（音量）、<code class="language-plaintext highlighter-rouge">Q</code>（ゲート長）、<code class="language-plaintext highlighter-rouge">&amp;</code>（タイ）、<code class="language-plaintext highlighter-rouge">^</code>（スラー）が使えます。</p>

<pre><code class="language-mml">A T120 o4 L4 Q4
A {c e &gt; c}4 {c e &gt; c}4 &lt; c
</code></pre>

<p><code class="language-plaintext highlighter-rouge">{c e &gt; c}4</code> は連符の途中で <code class="language-plaintext highlighter-rouge">&gt;</code> を使い、3 音目を 1 オクターブ上げています。<strong>オクターブ変更は <code class="language-plaintext highlighter-rouge">{ }</code> を抜けたあとも持続</strong> するため、連符の外に出た <code class="language-plaintext highlighter-rouge">c</code> を元の高さに戻すには <code class="language-plaintext highlighter-rouge">&lt;</code> で下げています。</p>

<h2 id="繰り返し-n">繰り返し <code class="language-plaintext highlighter-rouge">[...]N</code></h2>

<p><code class="language-plaintext highlighter-rouge">[ ]</code> で囲んだまとまりを <code class="language-plaintext highlighter-rouge">N</code> 回繰り返します。</p>

<pre><code class="language-mml">A T120 o4 L8 Q4
A [c e g e]2 c4
</code></pre>

<p><code class="language-plaintext highlighter-rouge">[c e g e]2</code> は次のように展開されます。</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>[c e g e]2  →  c e g e  c e g e
</code></pre></div></div>

<p>同じフレーズを 2 回書く必要がなく、回数を変えるのも数字ひとつで済みます。</p>

<h2 id="入れ子の繰り返し">入れ子の繰り返し</h2>

<p><code class="language-plaintext highlighter-rouge">[ ]</code> の中にさらに <code class="language-plaintext highlighter-rouge">[ ]</code> を書けます。</p>

<pre><code class="language-mml">A T120 o4 L8 Q4
A [c [e g]2 a]2
</code></pre>

<p>内側の <code class="language-plaintext highlighter-rouge">[e g]2</code> が先に展開され、それを含む全体が 2 回繰り返されます。</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>[c [e g]2 a]2  →  c e g e g a   c e g e g a
</code></pre></div></div>

<p>リズムパターンの一部だけを多く繰り返したいときに便利です。</p>

<h2 id="ループ脱出-abn">ループ脱出 <code class="language-plaintext highlighter-rouge">[a:b]N</code></h2>

<p>繰り返しの <strong>最終回だけ末尾を変えたい</strong> ことがあります。<code class="language-plaintext highlighter-rouge">[a:b]N</code> は、<code class="language-plaintext highlighter-rouge">:</code> の前（<code class="language-plaintext highlighter-rouge">a</code>）を毎回、<code class="language-plaintext highlighter-rouge">:</code> の後ろ（<code class="language-plaintext highlighter-rouge">b</code>）を <strong>最終回以外</strong> で演奏します。</p>

<pre><code class="language-mml">A T120 o4 L8 Q4
A [c e g : a]3
</code></pre>

<p>これは次のように展開されます。</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>[c e g : a]3  →  c e g a   c e g a   c e g
</code></pre></div></div>

<p><code class="language-plaintext highlighter-rouge">c e g</code> は 3 回、<code class="language-plaintext highlighter-rouge">a</code> は最初の 2 回だけ。フレーズを何度か回したあと、最後だけフィルイン（<code class="language-plaintext highlighter-rouge">a</code>）を外してすっきり終わる、といった使い方ができます。</p>

<h2 id="組み合わせて短い演奏にしてみる">組み合わせて短い演奏にしてみる</h2>

<p>連符・繰り返し・ループ脱出をまとめて使ってみます。</p>

<pre><code class="language-mml">A T128 o4 L8 Q4
A [{c e g}4 g4 : {g e c}4 c4]2 r2
A [{c e g}4 g4 : {g e c}4 c4]2 {g d e}4 c4
B      o3 L4 V70
B [c c : g g]4 &lt; g8 &gt; ~c4.
</code></pre>

<p>A チャンネルは設定行のあと、演奏を 2 行に分けています（同じチャンネル名を続けて書くと前の続きとして演奏されます）。</p>

<ul>
  <li>1 行目：<code class="language-plaintext highlighter-rouge">[{c e g}4 g4 : {g e c}4 c4]2</code> は、<strong>上昇 3 連符 + 4 分音符</strong>（<code class="language-plaintext highlighter-rouge">a</code>）と <strong>下降 3 連符 + 4 分音符</strong>（<code class="language-plaintext highlighter-rouge">b</code>）のループ脱出。<code class="language-plaintext highlighter-rouge">a b a</code> と展開され（最終回だけ <code class="language-plaintext highlighter-rouge">b</code> を外す）、末尾の <code class="language-plaintext highlighter-rouge">r2</code> で区切ります。</li>
  <li>2 行目：同じループのあと、ループの <code class="language-plaintext highlighter-rouge">b</code> の代わりに <code class="language-plaintext highlighter-rouge">{g d e}4 c4</code> という別のフレーズを置いて締めます。繰り返しの本体は使い回しつつ、終わり方だけ変える書き方です。</li>
</ul>

<p>B チャンネルの <code class="language-plaintext highlighter-rouge">[c c : g g]4</code> は、<code class="language-plaintext highlighter-rouge">c c</code>（<code class="language-plaintext highlighter-rouge">a</code>）と <code class="language-plaintext highlighter-rouge">g g</code>（<code class="language-plaintext highlighter-rouge">b</code>）のループ脱出を 4 回。<code class="language-plaintext highlighter-rouge">c c g g c c g g c c g g c c</code> と展開され、根音 c と属音 g を行き来する土台になります。最後の <code class="language-plaintext highlighter-rouge">&lt; g8 &gt; ~c4.</code> は、1 オクターブ下の <code class="language-plaintext highlighter-rouge">g</code>（8 分音符）から <a href="/development/2026/05/24/mml-pitch-bend-and-glissando/">#5</a> のグリッサンド <code class="language-plaintext highlighter-rouge">~</code> で <code class="language-plaintext highlighter-rouge">c</code> まで駆け上がり、付点 4 分音符で締める動きです。</p>

<p><code class="language-plaintext highlighter-rouge">{...}N</code> は <strong>時間の均等割り</strong>、<code class="language-plaintext highlighter-rouge">[...]N</code> は <strong>フレーズの反復</strong> という、リズムを組み立てる土台になる 2 つの道具です。<code class="language-plaintext highlighter-rouge">[a:b]N</code> を覚えておくと、A・B 両チャンネルのように「繰り返しの最終回だけ変える」表現が簡単に書けます。</p>

<h2 id="次回">次回</h2>

<p>次の <a href="/mewmmlpad/series/">#7「マクロと変数」</a> では、<code class="language-plaintext highlighter-rouge">% Name</code>（マクロ）と <code class="language-plaintext highlighter-rouge">!X{...}</code>（変数）で、リズムパターンやフレーズを名前で再利用する話を扱います。</p>

<p>連載全体の目次は <a href="/mewmmlpad/series/">シリーズ一覧</a> からどうぞ。</p>]]></content><author><name>mewlist</name></author><category term="development" /><summary type="html"><![CDATA[MML でリズムを組み立てる 2 つの道具 — {...}N（連符）と [...]N（繰り返し）、[a:b]N（ループ脱出）、入れ子。WebPlayer で鳴らしながら確認できる MML 連載シリーズの 6 回目。]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://mewli.st/img/mewmmlpad/series-hero-v2.png" /><media:content medium="image" url="https://mewli.st/img/mewmmlpad/series-hero-v2.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">ピッチベンドとグリッサンド — MML 連載 #5</title><link href="https://mewli.st/development/2026/05/24/mml-pitch-bend-and-glissando/" rel="alternate" type="text/html" title="ピッチベンドとグリッサンド — MML 連載 #5" /><published>2026-05-24T00:00:00+09:00</published><updated>2026-05-24T00:00:00+09:00</updated><id>https://mewli.st/development/2026/05/24/mml-pitch-bend-and-glissando</id><content type="html" xml:base="https://mewli.st/development/2026/05/24/mml-pitch-bend-and-glissando/"><![CDATA[<p><a href="/mewmmlpad/series/">MML 連載シリーズ</a> の 5 回目です。本シリーズで扱う MML 記法は <strong><a href="/mewmmlpad/">MewMMLPad</a>（VST3 / スタンドアローン / ブラウザ版）</strong> のものです。記事内の例はすべて MewMMLPad の Web プレイヤー上で動かしながら確認できます（PMD / FMP など他環境の MML とは方言が異なる箇所があります）。</p>

<p>今回は <strong>音程を連続的に動かす</strong> 表現を扱います。<code class="language-plaintext highlighter-rouge">_</code>（ピッチベンド）と <code class="language-plaintext highlighter-rouge">~</code>（グリッサンド）、それぞれの挙動を制御する <code class="language-plaintext highlighter-rouge">$BendRange</code> / <code class="language-plaintext highlighter-rouge">$PitchBendOrigin</code> / <code class="language-plaintext highlighter-rouge">$Glissando</code> を整理します。</p>

<p>なお、各サンプル MML の下にピッチ推移のグラフを併記しています。横軸が時間、縦軸が音程（そのグラフの最低音〜最高音をプロット高さに正規化）です。</p>

<h2 id="ピッチベンド-_-の基本構文">ピッチベンド <code class="language-plaintext highlighter-rouge">_</code> の基本構文</h2>

<p>ピッチベンドは 2 つの音を滑らかにつないで音程を連続的に動かす記法です。書式は次のとおり。</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>起点音(遅延) _ (遷移時間) 目標音(全体長)
</code></pre></div></div>

<p>カッコ内は省略可能で、省略時には次のデフォルトが適用されます。</p>

<table>
  <thead>
    <tr>
      <th style="text-align: left">省略箇所</th>
      <th style="text-align: left">デフォルト</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="text-align: left">遅延</td>
      <td style="text-align: left">ゼロ（即ベンド開始）</td>
    </tr>
    <tr>
      <td style="text-align: left">遷移時間</td>
      <td style="text-align: left">全体長 − 遅延 の残り時間でベンド</td>
    </tr>
    <tr>
      <td style="text-align: left">全体長</td>
      <td style="text-align: left"><code class="language-plaintext highlighter-rouge">L</code> の長さ</td>
    </tr>
  </tbody>
</table>

<h2 id="全体長を-l-にまかせる">全体長を <code class="language-plaintext highlighter-rouge">L</code> にまかせる</h2>

<p>最小の書き方は <code class="language-plaintext highlighter-rouge">a_b</code>。</p>

<pre><code class="language-mml">A T120 o4 L4 Q8
A c_d r8 d_c
</code></pre>

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 200" style="max-width:720px;display:block;margin:0.5em 0 1.5em" aria-label="c_d r8 d_c のピッチ推移">
  <rect width="720" height="200" rx="10" fill="#1c2540" />
  <rect x="6" y="6" width="708" height="188" rx="6" fill="none" stroke="#3a4566" stroke-width="1" />
  <path d="M 16 16 L 16 28 M 16 16 L 28 16" stroke="#6a78a0" stroke-width="1.5" fill="none" />
  <path d="M 704 16 L 704 28 M 704 16 L 692 16" stroke="#6a78a0" stroke-width="1.5" fill="none" />
  <path d="M 16 184 L 16 172 M 16 184 L 28 184" stroke="#6a78a0" stroke-width="1.5" fill="none" />
  <path d="M 704 184 L 704 172 M 704 184 L 692 184" stroke="#6a78a0" stroke-width="1.5" fill="none" />
  <rect x="70" y="36" width="610" height="128" rx="3" fill="#0a0e1a" />
  <line x1="70" y1="36" x2="680" y2="36" stroke="#2a3550" stroke-width="0.5" stroke-dasharray="3,4" />
  <line x1="70" y1="164" x2="680" y2="164" stroke="#2a3550" stroke-width="0.5" />
  <text x="62" y="40" font-size="13" fill="#d1d5db" text-anchor="end">d</text>
  <text x="62" y="168" font-size="13" fill="#d1d5db" text-anchor="end">c</text>
  <polyline points="82,164 326,36" fill="none" stroke="#4dd0e1" stroke-width="6" stroke-opacity="0.18" stroke-linecap="round" />
  <polyline points="426,36 670,164" fill="none" stroke="#4dd0e1" stroke-width="6" stroke-opacity="0.18" stroke-linecap="round" />
  <polyline points="82,164 326,36" fill="none" stroke="#4dd0e1" stroke-width="2.5" stroke-linecap="round" />
  <polyline points="426,36 670,164" fill="none" stroke="#4dd0e1" stroke-width="2.5" stroke-linecap="round" />
  <text x="204" y="186" font-size="11" fill="#c8d0e6" text-anchor="middle">c_d</text>
  <text x="548" y="186" font-size="11" fill="#c8d0e6" text-anchor="middle">d_c</text>
</svg>

<p><code class="language-plaintext highlighter-rouge">c_d</code> は L=4 分音符の時間で c から d まで全音ベンド、<code class="language-plaintext highlighter-rouge">d_c</code> は逆方向です。<code class="language-plaintext highlighter-rouge">$BendRange</code> の既定は 2 半音なので、この範囲に収まるなら設定なしでそのまま鳴らせます。ベンドの動きを最後まで聞かせたいので、サンプルでは <code class="language-plaintext highlighter-rouge">Q8</code>（100% ゲート）にしています。</p>

<p>遷移時間を絞ると、ベンドにかける時間を短くできます。</p>

<pre><code class="language-mml">A T120 o4 L4 Q8
A c_16d r8 d_16c
</code></pre>

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 200" style="max-width:720px;display:block;margin:0.5em 0 1.5em" aria-label="c_16d r8 d_16c のピッチ推移">
  <rect width="720" height="200" rx="10" fill="#1c2540" />
  <rect x="6" y="6" width="708" height="188" rx="6" fill="none" stroke="#3a4566" stroke-width="1" />
  <path d="M 16 16 L 16 28 M 16 16 L 28 16" stroke="#6a78a0" stroke-width="1.5" fill="none" />
  <path d="M 704 16 L 704 28 M 704 16 L 692 16" stroke="#6a78a0" stroke-width="1.5" fill="none" />
  <path d="M 16 184 L 16 172 M 16 184 L 28 184" stroke="#6a78a0" stroke-width="1.5" fill="none" />
  <path d="M 704 184 L 704 172 M 704 184 L 692 184" stroke="#6a78a0" stroke-width="1.5" fill="none" />
  <rect x="70" y="36" width="610" height="128" rx="3" fill="#0a0e1a" />
  <line x1="70" y1="36" x2="680" y2="36" stroke="#2a3550" stroke-width="0.5" stroke-dasharray="3,4" />
  <line x1="70" y1="164" x2="680" y2="164" stroke="#2a3550" stroke-width="0.5" />
  <text x="62" y="40" font-size="13" fill="#d1d5db" text-anchor="end">d</text>
  <text x="62" y="168" font-size="13" fill="#d1d5db" text-anchor="end">c</text>
  <polyline points="82,164 141,36 317,36" fill="none" stroke="#4dd0e1" stroke-width="6" stroke-opacity="0.18" stroke-linecap="round" stroke-linejoin="round" />
  <polyline points="434,36 493,164 669,164" fill="none" stroke="#4dd0e1" stroke-width="6" stroke-opacity="0.18" stroke-linecap="round" stroke-linejoin="round" />
  <polyline points="82,164 141,36 317,36" fill="none" stroke="#4dd0e1" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" />
  <polyline points="434,36 493,164 669,164" fill="none" stroke="#4dd0e1" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" />
  <text x="199" y="186" font-size="11" fill="#c8d0e6" text-anchor="middle">c_16d</text>
  <text x="551" y="186" font-size="11" fill="#c8d0e6" text-anchor="middle">d_16c</text>
</svg>

<p><code class="language-plaintext highlighter-rouge">c_16d</code> は 1/16 の時間で d に到達し、残りは d を保持。アタック直後にしゃくり上げる動きになります。</p>

<h2 id="全体長を明示する">全体長を明示する</h2>

<p>目標音のあとに数字を書くと、その音の長さが「全体長」になります。</p>

<pre><code class="language-mml">A T120 o4 L4 Q8
A c_d4 r8 c_d2
</code></pre>

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 200" style="max-width:720px;display:block;margin:0.5em 0 1.5em" aria-label="c_d4 r8 c_d2 のピッチ推移">
  <rect width="720" height="200" rx="10" fill="#1c2540" />
  <rect x="6" y="6" width="708" height="188" rx="6" fill="none" stroke="#3a4566" stroke-width="1" />
  <path d="M 16 16 L 16 28 M 16 16 L 28 16" stroke="#6a78a0" stroke-width="1.5" fill="none" />
  <path d="M 704 16 L 704 28 M 704 16 L 692 16" stroke="#6a78a0" stroke-width="1.5" fill="none" />
  <path d="M 16 184 L 16 172 M 16 184 L 28 184" stroke="#6a78a0" stroke-width="1.5" fill="none" />
  <path d="M 704 184 L 704 172 M 704 184 L 692 184" stroke="#6a78a0" stroke-width="1.5" fill="none" />
  <rect x="70" y="36" width="610" height="128" rx="3" fill="#0a0e1a" />
  <line x1="70" y1="36" x2="680" y2="36" stroke="#2a3550" stroke-width="0.5" stroke-dasharray="3,4" />
  <line x1="70" y1="164" x2="680" y2="164" stroke="#2a3550" stroke-width="0.5" />
  <text x="62" y="40" font-size="13" fill="#d1d5db" text-anchor="end">d</text>
  <text x="62" y="168" font-size="13" fill="#d1d5db" text-anchor="end">c</text>
  <polyline points="82,164 250,36" fill="none" stroke="#4dd0e1" stroke-width="6" stroke-opacity="0.18" stroke-linecap="round" />
  <polyline points="334,164 670,36" fill="none" stroke="#4dd0e1" stroke-width="6" stroke-opacity="0.18" stroke-linecap="round" />
  <polyline points="82,164 250,36" fill="none" stroke="#4dd0e1" stroke-width="2.5" stroke-linecap="round" />
  <polyline points="334,164 670,36" fill="none" stroke="#4dd0e1" stroke-width="2.5" stroke-linecap="round" />
  <text x="166" y="186" font-size="11" fill="#c8d0e6" text-anchor="middle">c_d4（4 分音符）</text>
  <text x="502" y="186" font-size="11" fill="#c8d0e6" text-anchor="middle">c_d2（2 分音符）</text>
</svg>

<p>両方とも c から d へベンドしますが、全体長が 4 分音符と 2 分音符で異なります。</p>

<p>遅延と遷移時間を組み合わせると、より細かい制御ができます。</p>

<pre><code class="language-mml">A T120 o4 L4 Q8
A c8_d4 r8 c8_16d4
</code></pre>

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 200" style="max-width:720px;display:block;margin:0.5em 0 1.5em" aria-label="c8_d4 r8 c8_16d4 のピッチ推移">
  <rect width="720" height="200" rx="10" fill="#1c2540" />
  <rect x="6" y="6" width="708" height="188" rx="6" fill="none" stroke="#3a4566" stroke-width="1" />
  <path d="M 16 16 L 16 28 M 16 16 L 28 16" stroke="#6a78a0" stroke-width="1.5" fill="none" />
  <path d="M 704 16 L 704 28 M 704 16 L 692 16" stroke="#6a78a0" stroke-width="1.5" fill="none" />
  <path d="M 16 184 L 16 172 M 16 184 L 28 184" stroke="#6a78a0" stroke-width="1.5" fill="none" />
  <path d="M 704 184 L 704 172 M 704 184 L 692 184" stroke="#6a78a0" stroke-width="1.5" fill="none" />
  <rect x="70" y="36" width="610" height="128" rx="3" fill="#0a0e1a" />
  <line x1="70" y1="36" x2="680" y2="36" stroke="#2a3550" stroke-width="0.5" stroke-dasharray="3,4" />
  <line x1="70" y1="164" x2="680" y2="164" stroke="#2a3550" stroke-width="0.5" />
  <text x="62" y="40" font-size="13" fill="#d1d5db" text-anchor="end">d</text>
  <text x="62" y="168" font-size="13" fill="#d1d5db" text-anchor="end">c</text>
  <polyline points="82,164 200,164 317,36" fill="none" stroke="#4dd0e1" stroke-width="6" stroke-opacity="0.18" stroke-linecap="round" stroke-linejoin="round" />
  <polyline points="435,164 552,164 611,36 670,36" fill="none" stroke="#4dd0e1" stroke-width="6" stroke-opacity="0.18" stroke-linecap="round" stroke-linejoin="round" />
  <polyline points="82,164 200,164 317,36" fill="none" stroke="#4dd0e1" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" />
  <polyline points="435,164 552,164 611,36 670,36" fill="none" stroke="#4dd0e1" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" />
  <text x="199" y="186" font-size="11" fill="#c8d0e6" text-anchor="middle">c8_d4</text>
  <text x="552" y="186" font-size="11" fill="#c8d0e6" text-anchor="middle">c8_16d4</text>
</svg>

<ul>
  <li><code class="language-plaintext highlighter-rouge">c8_d4</code>：8 分音符ぶん c を保持 → 残り 8 分音符の時間で d に到達</li>
  <li><code class="language-plaintext highlighter-rouge">c8_16d4</code>：8 分音符ぶん c を保持 → 1/16 で d へ移動 → 残りは d を保持</li>
</ul>

<p>タメてから一気に上げる、といった表現に使えます。</p>

<h2 id="bendrange-でベンド幅を広げる"><code class="language-plaintext highlighter-rouge">$BendRange</code> でベンド幅を広げる</h2>

<p><code class="language-plaintext highlighter-rouge">$BendRange</code> は <strong>ピッチベンドの最大半音差</strong> を決める設定です。デフォルトは 2 半音（長 2 度）。</p>

<pre><code class="language-mml">A T120 o4 L4 Q8
A c_d r8 c_e r8 c_g
</code></pre>

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 200" style="max-width:720px;display:block;margin:0.5em 0 1.5em" aria-label="c_d r8 c_e r8 c_g のピッチ推移（$BendRange=2 でクリップ）">
  <rect width="720" height="200" rx="10" fill="#1c2540" />
  <rect x="6" y="6" width="708" height="188" rx="6" fill="none" stroke="#3a4566" stroke-width="1" />
  <path d="M 16 16 L 16 28 M 16 16 L 28 16" stroke="#6a78a0" stroke-width="1.5" fill="none" />
  <path d="M 704 16 L 704 28 M 704 16 L 692 16" stroke="#6a78a0" stroke-width="1.5" fill="none" />
  <path d="M 16 184 L 16 172 M 16 184 L 28 184" stroke="#6a78a0" stroke-width="1.5" fill="none" />
  <path d="M 704 184 L 704 172 M 704 184 L 692 184" stroke="#6a78a0" stroke-width="1.5" fill="none" />
  <rect x="70" y="36" width="610" height="128" rx="3" fill="#0a0e1a" />
  <line x1="70" y1="36" x2="680" y2="36" stroke="#2a3550" stroke-width="0.5" stroke-dasharray="3,4" />
  <line x1="70" y1="91" x2="680" y2="91" stroke="#2a3550" stroke-width="0.5" stroke-dasharray="2,4" />
  <line x1="70" y1="127" x2="680" y2="127" stroke="#2a3550" stroke-width="0.5" stroke-dasharray="2,4" />
  <line x1="70" y1="164" x2="680" y2="164" stroke="#2a3550" stroke-width="0.5" />
  <text x="62" y="40" font-size="13" fill="#d1d5db" text-anchor="end">g</text>
  <text x="62" y="95" font-size="13" fill="#d1d5db" text-anchor="end">e</text>
  <text x="62" y="131" font-size="13" fill="#d1d5db" text-anchor="end">d</text>
  <text x="62" y="168" font-size="13" fill="#d1d5db" text-anchor="end">c</text>
  <polyline points="302,164 450,91" fill="none" stroke="#fbbf24" stroke-width="1.5" stroke-dasharray="4,4" stroke-linecap="round" opacity="0.7" />
  <polyline points="523,164 670,36" fill="none" stroke="#fbbf24" stroke-width="1.5" stroke-dasharray="4,4" stroke-linecap="round" opacity="0.7" />
  <polyline points="82,164 229,127" fill="none" stroke="#4dd0e1" stroke-width="6" stroke-opacity="0.18" stroke-linecap="round" />
  <polyline points="302,127 450,91" fill="none" stroke="#4dd0e1" stroke-width="6" stroke-opacity="0.18" stroke-linecap="round" />
  <polyline points="523,54 670,36" fill="none" stroke="#4dd0e1" stroke-width="6" stroke-opacity="0.18" stroke-linecap="round" />
  <polyline points="82,164 229,127" fill="none" stroke="#4dd0e1" stroke-width="2.5" stroke-linecap="round" />
  <polyline points="302,127 450,91" fill="none" stroke="#4dd0e1" stroke-width="2.5" stroke-linecap="round" />
  <polyline points="523,54 670,36" fill="none" stroke="#4dd0e1" stroke-width="2.5" stroke-linecap="round" />
  <text x="155" y="186" font-size="11" fill="#c8d0e6" text-anchor="middle">c_d</text>
  <text x="376" y="186" font-size="11" fill="#c8d0e6" text-anchor="middle">c_e（破線：本来の軌道）</text>
  <text x="596" y="186" font-size="11" fill="#c8d0e6" text-anchor="middle">c_g</text>
</svg>

<p>デフォルトでも <code class="language-plaintext highlighter-rouge">c_d</code>（2 半音）は c→d まで普通にベンドします。一方 <code class="language-plaintext highlighter-rouge">c_e</code>（4 半音）や <code class="language-plaintext highlighter-rouge">c_g</code>（7 半音）はベンド幅の上限に引っかかります。既定の Target モードでは <strong>目標音でノートオンする</strong> ため、目標音は固定されたまま、<strong>起点側が <code class="language-plaintext highlighter-rouge">$BendRange</code> ぶん（=2 半音）手前まで引き上げられて</strong> そこから目標音に向かう動きになります。グラフの黄色破線は <code class="language-plaintext highlighter-rouge">$BendRange</code> が広ければ通る本来の軌道、シアン実線が実際に鳴る軌道です。</p>

<pre><code class="language-mml">A T120 o4 L4 Q8 $BendRange=12
A c_d r8 c_e r8 c_g
</code></pre>

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 200" style="max-width:720px;display:block;margin:0.5em 0 1.5em" aria-label="c_d r8 c_e r8 c_g のピッチ推移（$BendRange=12）">
  <rect width="720" height="200" rx="10" fill="#1c2540" />
  <rect x="6" y="6" width="708" height="188" rx="6" fill="none" stroke="#3a4566" stroke-width="1" />
  <path d="M 16 16 L 16 28 M 16 16 L 28 16" stroke="#6a78a0" stroke-width="1.5" fill="none" />
  <path d="M 704 16 L 704 28 M 704 16 L 692 16" stroke="#6a78a0" stroke-width="1.5" fill="none" />
  <path d="M 16 184 L 16 172 M 16 184 L 28 184" stroke="#6a78a0" stroke-width="1.5" fill="none" />
  <path d="M 704 184 L 704 172 M 704 184 L 692 184" stroke="#6a78a0" stroke-width="1.5" fill="none" />
  <rect x="70" y="36" width="610" height="128" rx="3" fill="#0a0e1a" />
  <line x1="70" y1="36" x2="680" y2="36" stroke="#2a3550" stroke-width="0.5" stroke-dasharray="3,4" />
  <line x1="70" y1="91" x2="680" y2="91" stroke="#2a3550" stroke-width="0.5" stroke-dasharray="2,4" />
  <line x1="70" y1="127" x2="680" y2="127" stroke="#2a3550" stroke-width="0.5" stroke-dasharray="2,4" />
  <line x1="70" y1="164" x2="680" y2="164" stroke="#2a3550" stroke-width="0.5" />
  <text x="62" y="40" font-size="13" fill="#d1d5db" text-anchor="end">g</text>
  <text x="62" y="95" font-size="13" fill="#d1d5db" text-anchor="end">e</text>
  <text x="62" y="131" font-size="13" fill="#d1d5db" text-anchor="end">d</text>
  <text x="62" y="168" font-size="13" fill="#d1d5db" text-anchor="end">c</text>
  <polyline points="82,164 229,127" fill="none" stroke="#4dd0e1" stroke-width="6" stroke-opacity="0.18" stroke-linecap="round" />
  <polyline points="302,164 450,91" fill="none" stroke="#4dd0e1" stroke-width="6" stroke-opacity="0.18" stroke-linecap="round" />
  <polyline points="523,164 670,36" fill="none" stroke="#4dd0e1" stroke-width="6" stroke-opacity="0.18" stroke-linecap="round" />
  <polyline points="82,164 229,127" fill="none" stroke="#4dd0e1" stroke-width="2.5" stroke-linecap="round" />
  <polyline points="302,164 450,91" fill="none" stroke="#4dd0e1" stroke-width="2.5" stroke-linecap="round" />
  <polyline points="523,164 670,36" fill="none" stroke="#4dd0e1" stroke-width="2.5" stroke-linecap="round" />
  <text x="155" y="186" font-size="11" fill="#c8d0e6" text-anchor="middle">c_d</text>
  <text x="376" y="186" font-size="11" fill="#c8d0e6" text-anchor="middle">c_e</text>
  <text x="596" y="186" font-size="11" fill="#c8d0e6" text-anchor="middle">c_g</text>
</svg>

<p><code class="language-plaintext highlighter-rouge">$BendRange=12</code> に広げると最大 1 オクターブまでベンド可能になり、<code class="language-plaintext highlighter-rouge">c_g</code> も狙いどおり 7 半音上昇します。</p>

<p>外部音源を鳴らすときは、<strong>音源側のピッチベンドレンジ設定と <code class="language-plaintext highlighter-rouge">$BendRange</code> を一致させる</strong> 必要があります。たとえば音源側が 12 半音に設定されていれば <code class="language-plaintext highlighter-rouge">$BendRange=12</code>、24 半音設定なら <code class="language-plaintext highlighter-rouge">$BendRange=24</code> というように、MML と音源で値を揃えます。ずれていると同じ MML でも鳴る音程が変わってしまいます。内蔵シンセは MML 側の <code class="language-plaintext highlighter-rouge">$BendRange</code> に自動で追従するので、内蔵だけで完結するなら一致を気にする必要はありません。</p>

<p><code class="language-plaintext highlighter-rouge">$BendRange</code> の値は <strong>異音程タイ（<code class="language-plaintext highlighter-rouge">$TieMode=Bend</code>）にも共通で適用されます</strong>。</p>

<h2 id="pitchbendorigin--どちらの音でノートオンするか"><code class="language-plaintext highlighter-rouge">$PitchBendOrigin</code> — どちらの音でノートオンするか</h2>

<p>ピッチベンドには「<strong>起点音と目標音、どちらでノートオンするか</strong>」という選択があります。<code class="language-plaintext highlighter-rouge">$PitchBendOrigin</code> で切り替えます。</p>

<table>
  <thead>
    <tr>
      <th style="text-align: left">設定</th>
      <th style="text-align: left">挙動</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="text-align: left"><code class="language-plaintext highlighter-rouge">$PitchBendOrigin=Default</code>（=Target、既定）</td>
      <td style="text-align: left">目標音でノートオン、起点音は中間ベンドで提示</td>
    </tr>
    <tr>
      <td style="text-align: left"><code class="language-plaintext highlighter-rouge">$PitchBendOrigin=Source</code></td>
      <td style="text-align: left">起点音でノートオン、目標音方向にベンド</td>
    </tr>
  </tbody>
</table>

<pre><code class="language-mml">A T120 o4 L4 Q8 $BendRange=12
A c_g r8 c_g
</code></pre>

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 200" style="max-width:720px;display:block;margin:0.5em 0 1.5em" aria-label="c_g r8 c_g のピッチ推移（Origin=Target、note-on は g）">
  <rect width="720" height="200" rx="10" fill="#1c2540" />
  <rect x="6" y="6" width="708" height="188" rx="6" fill="none" stroke="#3a4566" stroke-width="1" />
  <path d="M 16 16 L 16 28 M 16 16 L 28 16" stroke="#6a78a0" stroke-width="1.5" fill="none" />
  <path d="M 704 16 L 704 28 M 704 16 L 692 16" stroke="#6a78a0" stroke-width="1.5" fill="none" />
  <path d="M 16 184 L 16 172 M 16 184 L 28 184" stroke="#6a78a0" stroke-width="1.5" fill="none" />
  <path d="M 704 184 L 704 172 M 704 184 L 692 184" stroke="#6a78a0" stroke-width="1.5" fill="none" />
  <rect x="70" y="36" width="610" height="128" rx="3" fill="#0a0e1a" />
  <line x1="70" y1="36" x2="680" y2="36" stroke="#2a3550" stroke-width="0.5" stroke-dasharray="3,4" />
  <line x1="70" y1="164" x2="680" y2="164" stroke="#2a3550" stroke-width="0.5" />
  <text x="62" y="40" font-size="13" fill="#d1d5db" text-anchor="end">g</text>
  <text x="62" y="168" font-size="13" fill="#d1d5db" text-anchor="end">c</text>
  <polyline points="82,164 317,36" fill="none" stroke="#4dd0e1" stroke-width="6" stroke-opacity="0.18" stroke-linecap="round" />
  <polyline points="434,164 670,36" fill="none" stroke="#4dd0e1" stroke-width="6" stroke-opacity="0.18" stroke-linecap="round" />
  <polyline points="82,164 317,36" fill="none" stroke="#4dd0e1" stroke-width="2.5" stroke-linecap="round" />
  <polyline points="434,164 670,36" fill="none" stroke="#4dd0e1" stroke-width="2.5" stroke-linecap="round" />
  <circle cx="82" cy="36" r="5" fill="#ffb74d" stroke="#0a0e1a" stroke-width="1.5" />
  <circle cx="434" cy="36" r="5" fill="#ffb74d" stroke="#0a0e1a" stroke-width="1.5" />
  <text x="376" y="186" font-size="11" fill="#c8d0e6" text-anchor="middle">c_g（● = MIDI ノートオン位置：g）</text>
</svg>

<p>既定（Target）では、g でノートオンした上で初期ベンド値を c に下げた状態から開始し、目標音 g に向かって上昇します。ピッチベンドが「目標音にたどり着く」イメージです。</p>

<pre><code class="language-mml">A T120 o4 L4 Q8 $BendRange=12 $PitchBendOrigin=Source
A c_g r8 c_g
</code></pre>

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 200" style="max-width:720px;display:block;margin:0.5em 0 1.5em" aria-label="c_g r8 c_g のピッチ推移（Origin=Source、note-on は c）">
  <rect width="720" height="200" rx="10" fill="#1c2540" />
  <rect x="6" y="6" width="708" height="188" rx="6" fill="none" stroke="#3a4566" stroke-width="1" />
  <path d="M 16 16 L 16 28 M 16 16 L 28 16" stroke="#6a78a0" stroke-width="1.5" fill="none" />
  <path d="M 704 16 L 704 28 M 704 16 L 692 16" stroke="#6a78a0" stroke-width="1.5" fill="none" />
  <path d="M 16 184 L 16 172 M 16 184 L 28 184" stroke="#6a78a0" stroke-width="1.5" fill="none" />
  <path d="M 704 184 L 704 172 M 704 184 L 692 184" stroke="#6a78a0" stroke-width="1.5" fill="none" />
  <rect x="70" y="36" width="610" height="128" rx="3" fill="#0a0e1a" />
  <line x1="70" y1="36" x2="680" y2="36" stroke="#2a3550" stroke-width="0.5" stroke-dasharray="3,4" />
  <line x1="70" y1="164" x2="680" y2="164" stroke="#2a3550" stroke-width="0.5" />
  <text x="62" y="40" font-size="13" fill="#d1d5db" text-anchor="end">g</text>
  <text x="62" y="168" font-size="13" fill="#d1d5db" text-anchor="end">c</text>
  <polyline points="82,164 317,36" fill="none" stroke="#4dd0e1" stroke-width="6" stroke-opacity="0.18" stroke-linecap="round" />
  <polyline points="434,164 670,36" fill="none" stroke="#4dd0e1" stroke-width="6" stroke-opacity="0.18" stroke-linecap="round" />
  <polyline points="82,164 317,36" fill="none" stroke="#4dd0e1" stroke-width="2.5" stroke-linecap="round" />
  <polyline points="434,164 670,36" fill="none" stroke="#4dd0e1" stroke-width="2.5" stroke-linecap="round" />
  <circle cx="82" cy="164" r="5" fill="#ffb74d" stroke="#0a0e1a" stroke-width="1.5" />
  <circle cx="434" cy="164" r="5" fill="#ffb74d" stroke="#0a0e1a" stroke-width="1.5" />
  <text x="376" y="186" font-size="11" fill="#c8d0e6" text-anchor="middle">c_g（● = MIDI ノートオン位置：c）</text>
</svg>

<p>Source モードでは c でノートオンし、ベンドで g に持ち上げる挙動になります。アタックが起点側に出るので、しゃくりの始まりをはっきり聞かせたい場面で使い分けます。ピッチ推移そのものは Target モードと同じですが、ノートオンが発生する音程が違います（グラフの ● 印の位置）。</p>

<h2 id="グリッサンド--の基本">グリッサンド <code class="language-plaintext highlighter-rouge">~</code> の基本</h2>

<p><code class="language-plaintext highlighter-rouge">~</code> は <strong>半音単位の階段で 2 音をつなぐ</strong> 表現です。ピッチベンドが連続的な滑らかさなのに対し、グリッサンドはクロマティックな階段になります。</p>

<pre><code class="language-mml">A T120 o4 L1 Q4
A c~&gt;c
</code></pre>

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 200" style="max-width:720px;display:block;margin:0.5em 0 1.5em" aria-label="c~&gt;c のグリッサンド（step: 1/32）">
  <rect width="720" height="200" rx="10" fill="#1c2540" />
  <rect x="6" y="6" width="708" height="188" rx="6" fill="none" stroke="#3a4566" stroke-width="1" />
  <path d="M 16 16 L 16 28 M 16 16 L 28 16" stroke="#6a78a0" stroke-width="1.5" fill="none" />
  <path d="M 704 16 L 704 28 M 704 16 L 692 16" stroke="#6a78a0" stroke-width="1.5" fill="none" />
  <path d="M 16 184 L 16 172 M 16 184 L 28 184" stroke="#6a78a0" stroke-width="1.5" fill="none" />
  <path d="M 704 184 L 704 172 M 704 184 L 692 184" stroke="#6a78a0" stroke-width="1.5" fill="none" />
  <rect x="70" y="36" width="610" height="128" rx="3" fill="#0a0e1a" />
  <line x1="70" y1="36" x2="680" y2="36" stroke="#2a3550" stroke-width="0.5" stroke-dasharray="3,4" />
  <line x1="70" y1="164" x2="680" y2="164" stroke="#2a3550" stroke-width="0.5" />
  <text x="62" y="40" font-size="13" fill="#d1d5db" text-anchor="end">c'</text>
  <text x="62" y="168" font-size="13" fill="#d1d5db" text-anchor="end">c</text>
  <polyline points="82,153.33 100.33,153.33 100.33,142.67 118.67,142.67 118.67,132 137,132 137,121.33 155.33,121.33 155.33,110.67 173.67,110.67 173.67,100 192,100 192,89.33 210.33,89.33 210.33,78.67 228.67,78.67 228.67,68 247,68 247,57.33 265.33,57.33 265.33,46.67 283.67,46.67 283.67,36 670,36" fill="none" stroke="#4dd0e1" stroke-width="6" stroke-opacity="0.18" stroke-linecap="round" stroke-linejoin="round" />
  <polyline points="82,153.33 100.33,153.33 100.33,142.67 118.67,142.67 118.67,132 137,132 137,121.33 155.33,121.33 155.33,110.67 173.67,110.67 173.67,100 192,100 192,89.33 210.33,89.33 210.33,78.67 228.67,78.67 228.67,68 247,68 247,57.33 265.33,57.33 265.33,46.67 283.67,46.67 283.67,36 670,36" fill="none" stroke="#4dd0e1" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" />
  <text x="376" y="186" font-size="11" fill="#c8d0e6" text-anchor="middle">c~&gt;c（step: 1/32、起点 c は無音、c# から階段で c' に到達）</text>
</svg>

<p>c から 1 オクターブ上の c まで、半音ずつ階段状に音が上がります。<code class="language-plaintext highlighter-rouge">~</code> の <strong>起点音そのものは独立して発音されません</strong>（目標音の入り口として扱われます）。</p>

<p>ステップサイズはデフォルトで 32 分音符。荒くしたい場合は数字を入れます。</p>

<pre><code class="language-mml">A T120 o4 L1 Q4
A c~16&gt;c
</code></pre>

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 200" style="max-width:720px;display:block;margin:0.5em 0 1.5em" aria-label="c~16&gt;c のグリッサンド（step: 1/16）">
  <rect width="720" height="200" rx="10" fill="#1c2540" />
  <rect x="6" y="6" width="708" height="188" rx="6" fill="none" stroke="#3a4566" stroke-width="1" />
  <path d="M 16 16 L 16 28 M 16 16 L 28 16" stroke="#6a78a0" stroke-width="1.5" fill="none" />
  <path d="M 704 16 L 704 28 M 704 16 L 692 16" stroke="#6a78a0" stroke-width="1.5" fill="none" />
  <path d="M 16 184 L 16 172 M 16 184 L 28 184" stroke="#6a78a0" stroke-width="1.5" fill="none" />
  <path d="M 704 184 L 704 172 M 704 184 L 692 184" stroke="#6a78a0" stroke-width="1.5" fill="none" />
  <rect x="70" y="36" width="610" height="128" rx="3" fill="#0a0e1a" />
  <line x1="70" y1="36" x2="680" y2="36" stroke="#2a3550" stroke-width="0.5" stroke-dasharray="3,4" />
  <line x1="70" y1="164" x2="680" y2="164" stroke="#2a3550" stroke-width="0.5" />
  <text x="62" y="40" font-size="13" fill="#d1d5db" text-anchor="end">c'</text>
  <text x="62" y="168" font-size="13" fill="#d1d5db" text-anchor="end">c</text>
  <polyline points="82,153.33 118.75,153.33 118.75,142.67 155.5,142.67 155.5,132 192.25,132 192.25,121.33 229,121.33 229,110.67 265.75,110.67 265.75,100 302.5,100 302.5,89.33 339.25,89.33 339.25,78.67 376,78.67 376,68 412.75,68 412.75,57.33 449.5,57.33 449.5,46.67 486.25,46.67 486.25,36 670,36" fill="none" stroke="#4dd0e1" stroke-width="6" stroke-opacity="0.18" stroke-linecap="round" stroke-linejoin="round" />
  <polyline points="82,153.33 118.75,153.33 118.75,142.67 155.5,142.67 155.5,132 192.25,132 192.25,121.33 229,121.33 229,110.67 265.75,110.67 265.75,100 302.5,100 302.5,89.33 339.25,89.33 339.25,78.67 376,78.67 376,68 412.75,68 412.75,57.33 449.5,57.33 449.5,46.67 486.25,46.67 486.25,36 670,36" fill="none" stroke="#4dd0e1" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" />
  <text x="376" y="186" font-size="11" fill="#c8d0e6" text-anchor="middle">c~16&gt;c（step: 1/16、起点 c は無音、c# から階段で c' に到達）</text>
</svg>

<p><code class="language-plaintext highlighter-rouge">c~16&gt;c</code> は <strong>ステップサイズを 1/16</strong> にした版。1 音ぶんの長さが広がるため、より段差のはっきりした上昇になります。</p>

<h2 id="glissando-でデフォルト値を変える"><code class="language-plaintext highlighter-rouge">$Glissando</code> でデフォルト値を変える</h2>

<p>毎回ステップを書くのが面倒な場合は <code class="language-plaintext highlighter-rouge">$Glissando</code> でデフォルトを変えられます。</p>

<pre><code class="language-mml">A T120 o4 L1 Q4 $Glissando=8
A c~&gt;c
</code></pre>

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 200" style="max-width:720px;display:block;margin:0.5em 0 1.5em" aria-label="c~&gt;c のグリッサンド（$Glissando=8、step: 1/8、途中から開始）">
  <rect width="720" height="200" rx="10" fill="#1c2540" />
  <rect x="6" y="6" width="708" height="188" rx="6" fill="none" stroke="#3a4566" stroke-width="1" />
  <path d="M 16 16 L 16 28 M 16 16 L 28 16" stroke="#6a78a0" stroke-width="1.5" fill="none" />
  <path d="M 704 16 L 704 28 M 704 16 L 692 16" stroke="#6a78a0" stroke-width="1.5" fill="none" />
  <path d="M 16 184 L 16 172 M 16 184 L 28 184" stroke="#6a78a0" stroke-width="1.5" fill="none" />
  <path d="M 704 184 L 704 172 M 704 184 L 692 184" stroke="#6a78a0" stroke-width="1.5" fill="none" />
  <rect x="70" y="36" width="610" height="128" rx="3" fill="#0a0e1a" />
  <line x1="70" y1="36" x2="680" y2="36" stroke="#2a3550" stroke-width="0.5" stroke-dasharray="3,4" />
  <line x1="70" y1="110.67" x2="680" y2="110.67" stroke="#2a3550" stroke-width="0.5" stroke-dasharray="2,4" />
  <line x1="70" y1="164" x2="680" y2="164" stroke="#2a3550" stroke-width="0.5" />
  <text x="62" y="40" font-size="13" fill="#d1d5db" text-anchor="end">c'</text>
  <text x="62" y="114" font-size="13" fill="#d1d5db" text-anchor="end">f</text>
  <text x="62" y="168" font-size="13" fill="#d1d5db" text-anchor="end">c</text>
  <polyline points="82,110.67 155.5,110.67 155.5,100 229,100 229,89.33 302.5,89.33 302.5,78.67 376,78.67 376,68 449.5,68 449.5,57.33 523,57.33 523,46.67 596.5,46.67 596.5,36 670,36" fill="none" stroke="#4dd0e1" stroke-width="6" stroke-opacity="0.18" stroke-linecap="round" stroke-linejoin="round" />
  <polyline points="82,110.67 155.5,110.67 155.5,100 229,100 229,89.33 302.5,89.33 302.5,78.67 376,78.67 376,68 449.5,68 449.5,57.33 523,57.33 523,46.67 596.5,46.67 596.5,36 670,36" fill="none" stroke="#4dd0e1" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" />
  <text x="376" y="186" font-size="11" fill="#c8d0e6" text-anchor="middle">c~&gt;c（$Glissando=8、step: 1/8、f の段から開始）</text>
</svg>

<p><code class="language-plaintext highlighter-rouge">$Glissando=8</code> 以降の <code class="language-plaintext highlighter-rouge">~</code> は <strong>1/8 ステップ</strong> が既定になります。ただし <code class="language-plaintext highlighter-rouge">c~&gt;c</code>（起点 c は無音なので c# 〜 c’ の 12 段）を L=1（全音符）の中で再生するには、ステップ幅 1/8 では時間が足りません。MewMMLPad は <strong>時間内に目標音 <code class="language-plaintext highlighter-rouge">c'</code> まで到達するよう、グリッサンドの途中（= f の段）から開始</strong> します。グラフ下半分の空き（c 〜 f より下の範囲）が、省略された 4 段ぶん（c#〜e）に相当します。</p>

<h2 id="組み合わせて短い演奏にしてみる">組み合わせて短い演奏にしてみる</h2>

<p>ピッチベンドとグリッサンドを 1 フレーズに混ぜてみます。</p>

<pre><code class="language-mml">A T100 o4 L8 Q8 $BendRange=12
A r2 c_g4 r4 g~&gt;c2
B      o3 L4 V70
B c1            c1
</code></pre>

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 200" style="max-width:720px;display:block;margin:0.5em 0 1.5em" aria-label="A r2 c_g4 r4 g~&gt;c2 のピッチ推移">
  <rect width="720" height="200" rx="10" fill="#1c2540" />
  <rect x="6" y="6" width="708" height="188" rx="6" fill="none" stroke="#3a4566" stroke-width="1" />
  <path d="M 16 16 L 16 28 M 16 16 L 28 16" stroke="#6a78a0" stroke-width="1.5" fill="none" />
  <path d="M 704 16 L 704 28 M 704 16 L 692 16" stroke="#6a78a0" stroke-width="1.5" fill="none" />
  <path d="M 16 184 L 16 172 M 16 184 L 28 184" stroke="#6a78a0" stroke-width="1.5" fill="none" />
  <path d="M 704 184 L 704 172 M 704 184 L 692 184" stroke="#6a78a0" stroke-width="1.5" fill="none" />
  <rect x="70" y="36" width="610" height="128" rx="3" fill="#0a0e1a" />
  <line x1="70" y1="36" x2="680" y2="36" stroke="#2a3550" stroke-width="0.5" stroke-dasharray="3,4" />
  <line x1="70" y1="89.33" x2="680" y2="89.33" stroke="#2a3550" stroke-width="0.5" stroke-dasharray="2,4" />
  <line x1="70" y1="164" x2="680" y2="164" stroke="#2a3550" stroke-width="0.5" />
  <text x="62" y="40" font-size="13" fill="#d1d5db" text-anchor="end">c'</text>
  <text x="62" y="93" font-size="13" fill="#d1d5db" text-anchor="end">g</text>
  <text x="62" y="168" font-size="13" fill="#d1d5db" text-anchor="end">c</text>
  <polyline points="278,164 376,89.33" fill="none" stroke="#4dd0e1" stroke-width="6" stroke-opacity="0.18" stroke-linecap="round" />
  <polyline points="278,164 376,89.33" fill="none" stroke="#4dd0e1" stroke-width="2.5" stroke-linecap="round" />
  <polyline points="474,78.67 486.25,78.67 486.25,68 498.5,68 498.5,57.33 510.75,57.33 510.75,46.67 523,46.67 523,36 670,36" fill="none" stroke="#4dd0e1" stroke-width="6" stroke-opacity="0.18" stroke-linecap="round" stroke-linejoin="round" />
  <polyline points="474,78.67 486.25,78.67 486.25,68 498.5,68 498.5,57.33 510.75,57.33 510.75,46.67 523,46.67 523,36 670,36" fill="none" stroke="#4dd0e1" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" />
  <text x="327" y="186" font-size="11" fill="#c8d0e6" text-anchor="middle">c_g4（ベンド）</text>
  <text x="572" y="186" font-size="11" fill="#c8d0e6" text-anchor="middle">g~&gt;c2（グリッサンド）</text>
</svg>

<p>A チャンネルは、休符のあと c から g へ 4 分音符かけてベンド、休符をはさんでから g からオクターブ上の c までグリッサンド。B チャンネルは根音 c のロングトーンで支える構成です（グラフは A チャンネルのピッチ推移のみ示しています）。</p>

<p><code class="language-plaintext highlighter-rouge">_</code> と <code class="language-plaintext highlighter-rouge">~</code> は <strong>音程の動かし方の質が異なる</strong> 表現です。連続的に滑らかに動かすなら <code class="language-plaintext highlighter-rouge">_</code>、半音階の階段状に動かすなら <code class="language-plaintext highlighter-rouge">~</code>、という使い分けが基本になります。</p>

<h2 id="次回">次回</h2>

<p>次の <a href="/mewmmlpad/series/">#6「タプレットと繰り返し」</a> では、<code class="language-plaintext highlighter-rouge">{...}N</code>（連符）と <code class="language-plaintext highlighter-rouge">[...]N</code>（繰り返し・ループ脱出）の話を扱います。</p>

<p>連載全体の目次は <a href="/mewmmlpad/series/">シリーズ一覧</a> からどうぞ。</p>]]></content><author><name>mewlist</name></author><category term="development" /><summary type="html"><![CDATA[MML で音程を連続的に動かす表現 — _ (ピッチベンド)、~ (グリッサンド)、$BendRange / $PitchBendOrigin / $Glissando を整理します。WebPlayer で鳴らしながら確認できる MML 連載シリーズの 5 回目。]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://mewli.st/img/mewmmlpad/series-hero-v2.png" /><media:content medium="image" url="https://mewli.st/img/mewmmlpad/series-hero-v2.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">テンポ・調号・キーシフト — MML 連載 #4</title><link href="https://mewli.st/development/2026/05/23/mml-tempo-key-shift/" rel="alternate" type="text/html" title="テンポ・調号・キーシフト — MML 連載 #4" /><published>2026-05-23T01:00:00+09:00</published><updated>2026-05-23T01:00:00+09:00</updated><id>https://mewli.st/development/2026/05/23/mml-tempo-key-shift</id><content type="html" xml:base="https://mewli.st/development/2026/05/23/mml-tempo-key-shift/"><![CDATA[<p><a href="/mewmmlpad/series/">MML 連載シリーズ</a> の 4 回目です。本シリーズで扱う MML 記法は <strong><a href="/mewmmlpad/">MewMMLPad</a>（VST3 / スタンドアローン / ブラウザ版）</strong> のものです。記事内の例はすべて MewMMLPad の Web プレイヤー上で動かしながら確認できます（PMD / FMP など他環境の MML とは方言が異なる箇所があります）。</p>

<p>今回は <strong>曲全体に効くパラメータ</strong> をまとめて扱います。<code class="language-plaintext highlighter-rouge">T</code>（テンポ）、<code class="language-plaintext highlighter-rouge">{+f}</code> <code class="language-plaintext highlighter-rouge">{-eab}</code> <code class="language-plaintext highlighter-rouge">{=*}</code>（調号）、<code class="language-plaintext highlighter-rouge">K</code>（キーシフト）の 3 つです。1 音 1 音の記法ではなく、フレーズや曲全体に影響する設定群を整理します。</p>

<h2 id="t-でテンポを決める"><code class="language-plaintext highlighter-rouge">T</code> でテンポを決める</h2>

<p><code class="language-plaintext highlighter-rouge">T&lt;数字&gt;</code> で <strong>BPM（拍／分）</strong> を指定します。既定は 120。</p>

<pre><code class="language-mml">A T80 o4 L4 Q4
A c d e f g a b &gt; c
</code></pre>

<p>ゆったりした <code class="language-plaintext highlighter-rouge">T80</code> の C メジャースケール。</p>

<pre><code class="language-mml">A T180 o4 L4 Q4
A c d e f g a b &gt; c
</code></pre>

<p>同じ MML を <code class="language-plaintext highlighter-rouge">T180</code> で速くするとまったく違う印象に。同じ音符でもテンポ次第で雰囲気が変わるのがよく分かります。</p>

<p><code class="language-plaintext highlighter-rouge">T</code> は <strong>曲全体に効くグローバル設定</strong> です。複数チャンネルで演奏する場合も、<code class="language-plaintext highlighter-rouge">A</code> チャンネルの先頭にまとめて書く慣習にしておくと管理が楽です。</p>

<h2 id="テンポを途中で変える">テンポを途中で変える</h2>

<p><code class="language-plaintext highlighter-rouge">T</code> は曲中でいつでも書き換えできます。区間ごとに速度を変えたり、ritardando（だんだん遅く）の段階的近似を作ったりできます。</p>

<pre><code class="language-mml">A o4 L4 Q4
A T160 c d e f   T120 g a b &gt; c   T80 &lt; g a b &gt; c2
</code></pre>

<p>3 拍ぶんずつテンポを下げて、最後の小節は半分の速度まで落とす書き方。本格的に滑らかなテンポ変化を作るなら、もっと細かく <code class="language-plaintext highlighter-rouge">T</code> を刻みます。</p>

<h2 id="調号-f--eab-">調号 <code class="language-plaintext highlighter-rouge">{+f}</code> <code class="language-plaintext highlighter-rouge">{-eab}</code> <code class="language-plaintext highlighter-rouge">{=*}</code></h2>

<p>楽譜の「シャープ・フラットが何個」に相当する設定です。波括弧の中に、変化させる音名を並べます。</p>

<table>
  <thead>
    <tr>
      <th style="text-align: left">記法</th>
      <th style="text-align: left">効果</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="text-align: left"><code class="language-plaintext highlighter-rouge">{+f}</code></td>
      <td style="text-align: left">以降の <code class="language-plaintext highlighter-rouge">f</code> を <strong>シャープ</strong> として扱う</td>
    </tr>
    <tr>
      <td style="text-align: left"><code class="language-plaintext highlighter-rouge">{+fc}</code></td>
      <td style="text-align: left"><code class="language-plaintext highlighter-rouge">f</code> と <code class="language-plaintext highlighter-rouge">c</code> をシャープに（D メジャー / B マイナーの調号）</td>
    </tr>
    <tr>
      <td style="text-align: left"><code class="language-plaintext highlighter-rouge">{-b}</code></td>
      <td style="text-align: left">以降の <code class="language-plaintext highlighter-rouge">b</code> を <strong>フラット</strong> に</td>
    </tr>
    <tr>
      <td style="text-align: left"><code class="language-plaintext highlighter-rouge">{-eab}</code></td>
      <td style="text-align: left"><code class="language-plaintext highlighter-rouge">e</code> <code class="language-plaintext highlighter-rouge">a</code> <code class="language-plaintext highlighter-rouge">b</code> をフラットに（E♭ メジャー / C マイナーの調号）</td>
    </tr>
    <tr>
      <td style="text-align: left"><code class="language-plaintext highlighter-rouge">{=f}</code></td>
      <td style="text-align: left"><code class="language-plaintext highlighter-rouge">f</code> の調号指定を解除</td>
    </tr>
    <tr>
      <td style="text-align: left"><code class="language-plaintext highlighter-rouge">{=*}</code></td>
      <td style="text-align: left">すべての調号を解除</td>
    </tr>
  </tbody>
</table>

<p>D メジャースケール（D E F# G A B C# D）を <strong>個別の <code class="language-plaintext highlighter-rouge">+</code></strong> で書くと：</p>

<pre><code class="language-mml">A T120 o4 L8 Q4
A d e f+ g a b &gt; c+ d
</code></pre>

<p>これを <strong>調号</strong> で書くと：</p>

<pre><code class="language-mml">A T120 o4 L8 Q4 {+fc}
A d e f g a b &gt; c d
</code></pre>

<p>どちらも同じ音が鳴りますが、調号版は <strong>毎回 <code class="language-plaintext highlighter-rouge">+</code> を書く必要がなく</strong>、フレーズが格段に読みやすくなります。曲全体で同じ調が続くなら、調号で済ませるのが基本です。</p>

<p>調号は途中で切り替えられます。</p>

<pre><code class="language-mml">A T120 o4 L4 Q4 {+fc}
A d e f g a b &gt; c d   {=*}   &lt; d e f g a b &gt; c d
</code></pre>

<p>前半は D メジャー、<code class="language-plaintext highlighter-rouge">{=*}</code> で調号を全解除すると後半は通常の音名に戻り、<code class="language-plaintext highlighter-rouge">f</code> と <code class="language-plaintext highlighter-rouge">c</code> がナチュラルになります。</p>

<h2 id="臨時記号との優先関係">臨時記号との優先関係</h2>

<p>調号で <code class="language-plaintext highlighter-rouge">{+f}</code> を指定していても、個別音に <code class="language-plaintext highlighter-rouge">f=</code>（ナチュラル）や <code class="language-plaintext highlighter-rouge">f-</code>（フラット）を書けば、その音だけ <strong>調号を上書き</strong> します。</p>

<pre><code class="language-mml">A T120 o4 L4 Q4 {+f}
A f g a   f= g a   f g a
</code></pre>

<ul>
  <li>1〜3 音目：<code class="language-plaintext highlighter-rouge">{+f}</code> の調号が効き、<code class="language-plaintext highlighter-rouge">f</code> は <strong>F#</strong></li>
  <li>4〜6 音目：<code class="language-plaintext highlighter-rouge">f=</code> は明示的にナチュラルなので <strong>F</strong>、続く <code class="language-plaintext highlighter-rouge">g a</code> はそもそも調号と無関係</li>
  <li>7〜9 音目：再び <code class="language-plaintext highlighter-rouge">f</code>（調号は引き続き有効なので <strong>F#</strong>）</li>
</ul>

<p>ルールはシンプルで、<strong>個別臨時記号が常に勝つ</strong>、調号は書かれていない音名の既定値を決める、と覚えておけば OK です。</p>

<h2 id="k-キーシフト"><code class="language-plaintext highlighter-rouge">K</code> キーシフト</h2>

<p><code class="language-plaintext highlighter-rouge">K&lt;数字&gt;</code> は <strong>すべての音を半音単位でシフト</strong> します。曲全体を別キーで演奏したいときに使います。</p>

<pre><code class="language-mml">A T120 o4 L4 Q4 K0
A c d e f g a b &gt; c
</code></pre>

<p><code class="language-plaintext highlighter-rouge">K0</code>（既定）では C メジャースケールがそのまま。</p>

<pre><code class="language-mml">A T120 o4 L4 Q4 K3
A c d e f g a b &gt; c
</code></pre>

<p><code class="language-plaintext highlighter-rouge">K3</code> で <strong>半音 3 つ上</strong>（短 3 度上）。同じ MML が E♭ メジャースケールとして聞こえます。<code class="language-plaintext highlighter-rouge">K-2</code> のように負値で下方向にもシフトできます（範囲は -127〜+127）。</p>

<h3 id="段階的に上げる">段階的に上げる</h3>

<p><code class="language-plaintext highlighter-rouge">K2</code>、<code class="language-plaintext highlighter-rouge">K4</code>、<code class="language-plaintext highlighter-rouge">K6</code> と <strong>書く値を順に増やせば</strong>、フレーズごとにキーを上げていけます。</p>

<pre><code class="language-mml">A T120 o4 L4 Q4
A c d e f g   K2   c d e f g   K4   c d e f g
</code></pre>

<p>3 つの 5 音音型が半音 2 つずつ上がって聞こえます。</p>

<h3 id="相対指定-k-k">相対指定 <code class="language-plaintext highlighter-rouge">K)</code> <code class="language-plaintext highlighter-rouge">K(</code></h3>

<p>絶対値を毎回計算するのが面倒な場合は、<code class="language-plaintext highlighter-rouge">K)</code> <code class="language-plaintext highlighter-rouge">K(</code> で <strong>現在のシフトに対する相対変化</strong> を書けます。</p>

<table>
  <thead>
    <tr>
      <th style="text-align: left">記法</th>
      <th style="text-align: left">効果</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="text-align: left"><code class="language-plaintext highlighter-rouge">K)</code></td>
      <td style="text-align: left">+1 半音</td>
    </tr>
    <tr>
      <td style="text-align: left"><code class="language-plaintext highlighter-rouge">K(</code></td>
      <td style="text-align: left">-1 半音</td>
    </tr>
    <tr>
      <td style="text-align: left"><code class="language-plaintext highlighter-rouge">K)2</code></td>
      <td style="text-align: left">相対 +2 半音</td>
    </tr>
    <tr>
      <td style="text-align: left"><code class="language-plaintext highlighter-rouge">K(3</code></td>
      <td style="text-align: left">相対 -3 半音</td>
    </tr>
  </tbody>
</table>

<pre><code class="language-mml">A T120 o4 L4 Q4
A c d e f g   K)2   c d e f g   K)2   c d e f g
</code></pre>

<p><code class="language-plaintext highlighter-rouge">K)2</code> は「今のシフトに +2 する」なので、3 つのフレーズはそれぞれ K0、+2、+4 半音と段階的に上がります。上と同じ結果ですが、<strong>転調の単位を毎回そのまま書ける</strong> のが利点です。</p>

<h3 id="調号と-k-の違い">調号と <code class="language-plaintext highlighter-rouge">K</code> の違い</h3>

<ul>
  <li><strong>調号 <code class="language-plaintext highlighter-rouge">{+f}</code></strong>：特定の音名だけシャープ／フラットにする（スケール内の音を変える）</li>
  <li><strong><code class="language-plaintext highlighter-rouge">K</code></strong>：すべての音を一様にシフトする（曲全体を移調する）</li>
</ul>

<p>両方を組み合わせれば、「F メジャー譜面（<code class="language-plaintext highlighter-rouge">{-b}</code>）のまま、ボーカルキーに合わせて 2 半音上げる（<code class="language-plaintext highlighter-rouge">K2</code>）」のような調整ができます。譜面を書き直さずにキーだけ動かせるのが <code class="language-plaintext highlighter-rouge">K</code> の使いどころです。</p>

<h2 id="組み合わせて短い演奏にしてみる">組み合わせて短い演奏にしてみる</h2>

<p>F メジャーで 2 小節を組んでみます。</p>

<pre><code class="language-mml">A T100 o5 L8 Q4 {-b}
A f g a b &gt; c &lt; b a g   f e d c d e f g
B      o3 L4 V70 {-b}
B f2 c2                 b2 f2
</code></pre>

<p><code class="language-plaintext highlighter-rouge">{-b}</code> で B フラット 1 つ（F メジャーの調号）。<code class="language-plaintext highlighter-rouge">T100</code> のゆったりしたテンポ。A チャンネルは旋律、B チャンネルは半音符の根音で <code class="language-plaintext highlighter-rouge">I → V → IV → I</code> の進行を支えます。</p>

<p>次に、<strong>MML はそのままで <code class="language-plaintext highlighter-rouge">K2</code> だけ追加</strong> して、G メジャーで聞いてみます。</p>

<pre><code class="language-mml">A T100 o5 L8 Q4 {-b} K2
A f g a b &gt; c &lt; b a g   f e d c d e f g
B      o3 L4 V70 {-b} K2
B f2 c2                 b2 f2
</code></pre>

<p>書いた音符は同じですが、全体が半音 2 つぶん上にシフトして G メジャー相当に聞こえます。<code class="language-plaintext highlighter-rouge">K</code> は <strong>譜面の構造を保ったままキーだけ動かす</strong> のに便利です。</p>

<h2 id="次回">次回</h2>

<p>次の <a href="/mewmmlpad/series/">#5「ピッチベンドとグリッサンド」</a> では、<code class="language-plaintext highlighter-rouge">_</code>（ピッチベンド）と <code class="language-plaintext highlighter-rouge">~</code>（グリッサンド）、<code class="language-plaintext highlighter-rouge">$BendRange</code> などで <strong>音程を滑らかに動かす</strong> 話を扱います。</p>

<p>連載全体の目次は <a href="/mewmmlpad/series/">シリーズ一覧</a> からどうぞ。</p>]]></content><author><name>mewlist</name></author><category term="development" /><summary type="html"><![CDATA[MML の曲全体にかかるパラメータ — T（テンポ）、{+f} {-eab} {=*}（調号）、K（キーシフト）。臨時記号との優先関係を含めて整理します。WebPlayer で鳴らしながら確認できる MML 連載シリーズの 4 回目。]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://mewli.st/img/mewmmlpad/series-hero-v2.png" /><media:content medium="image" url="https://mewli.st/img/mewmmlpad/series-hero-v2.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">音量とアクセント — MML 連載 #3</title><link href="https://mewli.st/development/2026/05/23/mml-volume-and-accent/" rel="alternate" type="text/html" title="音量とアクセント — MML 連載 #3" /><published>2026-05-23T00:00:00+09:00</published><updated>2026-05-23T00:00:00+09:00</updated><id>https://mewli.st/development/2026/05/23/mml-volume-and-accent</id><content type="html" xml:base="https://mewli.st/development/2026/05/23/mml-volume-and-accent/"><![CDATA[<p><a href="/mewmmlpad/series/">MML 連載シリーズ</a> の 3 回目です。本シリーズで扱う MML 記法は <strong><a href="/mewmmlpad/">MewMMLPad</a>（VST3 / スタンドアローン / ブラウザ版）</strong> のものです。記事内の例はすべて MewMMLPad の Web プレイヤー上で動かしながら確認できます（PMD / FMP など他環境の MML とは方言が異なる箇所があります）。</p>

<p>今回は <strong>音量とアクセント</strong> を扱います。<code class="language-plaintext highlighter-rouge">V</code> でベロシティの絶対値を決めて、<code class="language-plaintext highlighter-rouge">)</code> <code class="language-plaintext highlighter-rouge">(</code> で相対的に増減し、<code class="language-plaintext highlighter-rouge">$Accent</code> モードで大文字 / 小文字を強拍 / 弱拍に使い分ける、という流れです。これでフレーズに <strong>抑揚</strong> が付けられるようになります。</p>

<h2 id="ベロシティとは">ベロシティとは</h2>

<p>MML の音量は <strong>MIDI のベロシティ</strong> に対応します。0〜127 の範囲で、数字が大きいほど強く鳴ります。</p>

<p>ピアノで言えば「鍵盤を叩く強さ」、ギターで言えば「弦を弾く力」のイメージ。ベロシティの差が音色そのものを変える楽器（FM 音源、サンプラー、内蔵シンセの ADSR 設定）では、強弱はそのまま <strong>音色のキャラクター差</strong> になります。</p>

<h2 id="v-で値を直接指定"><code class="language-plaintext highlighter-rouge">V</code> で値を直接指定</h2>

<p><code class="language-plaintext highlighter-rouge">V&lt;数字&gt;</code>（0〜127、既定 100）でその時点以降のベロシティを設定します。</p>

<pre><code class="language-mml">A T120 o4 L4 Q4
A V30 c V60 c V90 c V127 c
</code></pre>

<p>4 つの c を、V30 → V60 → V90 → V127 と段階的に強くしています。クレッシェンドの一番粗いやり方です。</p>

<h2 id="-と--で相対増減"><code class="language-plaintext highlighter-rouge">)</code> と <code class="language-plaintext highlighter-rouge">(</code> で相対増減</h2>

<p>毎回 <code class="language-plaintext highlighter-rouge">V&lt;数字&gt;</code> を書くのは煩雑なので、<strong>現在のベロシティから一定量だけ動かす</strong> ショートカットが用意されています。</p>

<table>
  <thead>
    <tr>
      <th style="text-align: center">記号</th>
      <th style="text-align: left">効果</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="text-align: center"><code class="language-plaintext highlighter-rouge">)</code></td>
      <td style="text-align: left">ベロシティを <code class="language-plaintext highlighter-rouge">lv</code> ぶん <strong>上げる</strong>（既定 +8）</td>
    </tr>
    <tr>
      <td style="text-align: center"><code class="language-plaintext highlighter-rouge">(</code></td>
      <td style="text-align: left">ベロシティを <code class="language-plaintext highlighter-rouge">lv</code> ぶん <strong>下げる</strong>（既定 -8）</td>
    </tr>
  </tbody>
</table>

<pre><code class="language-mml">A T120 o4 L8 Q4
A V60 c ) c ) c ) c ) c ) c ) c ) c   ( c ( c ( c ( c ( c ( c ( c
</code></pre>

<p>V60 から 8 刻みで上昇 → ピークで折り返し、8 刻みで下降。手書きの <strong>クレッシェンド → デクレッシェンド</strong> がこれだけで書けます。</p>

<h2 id="lv-で増減量を変える"><code class="language-plaintext highlighter-rouge">lv</code> で増減量を変える</h2>

<p><code class="language-plaintext highlighter-rouge">)</code> <code class="language-plaintext highlighter-rouge">(</code> の刻み幅は <code class="language-plaintext highlighter-rouge">lv&lt;数字&gt;</code> で変更できます（既定 8）。</p>

<pre><code class="language-mml">A T120 o4 L8 Q4
A V60 lv4  c ) c ) c ) c ) c   r4   V60 lv16  c ) c ) c ) c
</code></pre>

<p>前半は <code class="language-plaintext highlighter-rouge">lv4</code>（細かく増加）、後半は <code class="language-plaintext highlighter-rouge">lv16</code>（大きく増加）。同じ <code class="language-plaintext highlighter-rouge">)</code> の数でも上がり方の幅が違います。長いフレーズで滑らかに上げたいなら <code class="language-plaintext highlighter-rouge">lv</code> を小さく、短い区間で一気に持ち上げたいなら <code class="language-plaintext highlighter-rouge">lv</code> を大きくします。</p>

<h2 id="24-で増減量を直接指定"><code class="language-plaintext highlighter-rouge">)24</code> で増減量を直接指定</h2>

<p><code class="language-plaintext highlighter-rouge">)</code> <code class="language-plaintext highlighter-rouge">(</code> の直後に数字を書くと、その回だけ <code class="language-plaintext highlighter-rouge">lv</code> の設定を無視して <strong>指定した量で増減</strong> します。<code class="language-plaintext highlighter-rouge">lv</code> を書き換えるほどではないけど「ここだけ大きく上げたい」というときに使います。</p>

<pre><code class="language-mml">A T120 o4 L8 Q4
A V40 c )8 c )16 c )24 c )32 c
</code></pre>

<p><code class="language-plaintext highlighter-rouge">)8</code> <code class="language-plaintext highlighter-rouge">)16</code> <code class="language-plaintext highlighter-rouge">)24</code> <code class="language-plaintext highlighter-rouge">)32</code> と段階的に大きい刻みで上昇。<code class="language-plaintext highlighter-rouge">lv</code> を変えずに 1 音ずつジャンプ幅を変えられます。</p>

<pre><code class="language-mml">A T120 o4 L8 Q4
A V60 c ) c ) c )40 c ( c ( c (40 c
</code></pre>

<p>通常の <code class="language-plaintext highlighter-rouge">)</code> <code class="language-plaintext highlighter-rouge">(</code>（既定 <code class="language-plaintext highlighter-rouge">lv8</code>）の中に <code class="language-plaintext highlighter-rouge">)40</code> <code class="language-plaintext highlighter-rouge">(40</code> を混ぜた例。普段は細かく動かしつつ、節目だけ強くアクセントを付けるような使い方に向きます。</p>

<h2 id="accent-モード--大文字--小文字で強拍--弱拍"><code class="language-plaintext highlighter-rouge">$Accent</code> モード — 大文字 / 小文字で強拍 / 弱拍</h2>

<p>ここまでは「ベロシティを 1 つの値で管理」してきましたが、もっと <strong>構造的に強弱を書きたい</strong> ことがあります。たとえば「拍頭は強く、それ以外は弱く」というパターン。</p>

<p><code class="language-plaintext highlighter-rouge">$Accent=On</code> を宣言すると、<strong>音名の大文字 / 小文字</strong> がそのままベロシティの強弱に対応するようになります。</p>

<table>
  <thead>
    <tr>
      <th style="text-align: left">モード</th>
      <th style="text-align: left">大文字音符</th>
      <th style="text-align: left">小文字音符</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="text-align: left"><code class="language-plaintext highlighter-rouge">$Accent=Off</code>（既定）</td>
      <td style="text-align: left">大小同じ（普通の音名）</td>
      <td style="text-align: left">大小同じ</td>
    </tr>
    <tr>
      <td style="text-align: left"><code class="language-plaintext highlighter-rouge">$Accent=On</code></td>
      <td style="text-align: left"><code class="language-plaintext highlighter-rouge">V</code> のアクセントベロシティ（強）</td>
      <td style="text-align: left"><code class="language-plaintext highlighter-rouge">v</code> の非アクセントベロシティ（弱）</td>
    </tr>
  </tbody>
</table>

<p>つまり <code class="language-plaintext highlighter-rouge">$Accent=On</code> 時は、<code class="language-plaintext highlighter-rouge">V100 v50</code> のように <strong>2 種類の値を設定</strong> して、書き分けで使います。</p>

<p><strong>順序の注意</strong>：<code class="language-plaintext highlighter-rouge">$Accent=On</code> を <strong>先に</strong> 宣言してから <code class="language-plaintext highlighter-rouge">V</code> <code class="language-plaintext highlighter-rouge">v</code> を設定してください。逆の順序だと V/v が強弱の値として正しく拾われません。</p>

<pre><code class="language-mml">A T120 o4 L8 Q4 $Accent=On V100 v50
A Cccc Cccc Cccc Cccc
</code></pre>

<p><code class="language-plaintext highlighter-rouge">C</code> だけ強拍（V100）、<code class="language-plaintext highlighter-rouge">c</code> は弱拍（v50）。<code class="language-plaintext highlighter-rouge">Cccc</code> を 4 回並べると、<strong>4 拍子の頭にアクセントが入る</strong> リズムパターンになります。</p>

<p>別の音で書いてもパターンは保たれます。</p>

<pre><code class="language-mml">A T120 o4 L8 Q4 $Accent=On V100 v50
A Cdef Gdef Cdef Gdef
</code></pre>

<p><code class="language-plaintext highlighter-rouge">C</code> と <code class="language-plaintext highlighter-rouge">G</code> だけ強く、間の <code class="language-plaintext highlighter-rouge">def</code> は弱く。同じことを <code class="language-plaintext highlighter-rouge">V</code> と <code class="language-plaintext highlighter-rouge">)</code> <code class="language-plaintext highlighter-rouge">(</code> で書こうとすると毎拍コマンドが必要ですが、Accent モードなら <strong>音名の大小</strong> だけで強弱が表現できます。</p>

<h2 id="組み合わせて短い演奏にしてみる">組み合わせて短い演奏にしてみる</h2>

<p>ここまでの要素で、4 小節の演奏を組んでみます。</p>

<pre><code class="language-mml">A T120 o5 L8 Q4 $Accent=On V100 v50
A Cccc Eeee   Cccc Eeee   Aaaa Cccc   Gggg Cccc
B o3 L4 V80
B c2 g2       c2 g2       a2 f2       g2 c2
</code></pre>

<p>A チャンネルは <code class="language-plaintext highlighter-rouge">$Accent=On</code> で <strong>拍頭の C / E / A / G が強拍</strong>、間の <code class="language-plaintext highlighter-rouge">c / e / a / g</code> は弱拍。B チャンネルは半音符の根音で <code class="language-plaintext highlighter-rouge">I → V → I → V → vi → IV → V → I</code> の進行。A と B はそれぞれ 4 小節（16 拍）で揃っています。</p>

<p><code class="language-plaintext highlighter-rouge">Cccc</code> 1 つで 1 拍ぶんの「タッタッタッタ」が書ける、というのが Accent モードの書き味の良さです。</p>

<h2 id="次回">次回</h2>

<p>次の <a href="/mewmmlpad/series/">#4「テンポ・調号・キーシフト」</a> では、曲全体に効くパラメータ — <code class="language-plaintext highlighter-rouge">T</code>（テンポ）、<code class="language-plaintext highlighter-rouge">{+f}</code> <code class="language-plaintext highlighter-rouge">{-eab}</code>（調号）、<code class="language-plaintext highlighter-rouge">K</code>（キーシフト）を扱います。</p>

<p>連載全体の目次は <a href="/mewmmlpad/series/">シリーズ一覧</a> からどうぞ。</p>]]></content><author><name>mewlist</name></author><category term="development" /><summary type="html"><![CDATA[MML で音量と強弱を操る — V でベロシティ、) と ( で増減、lv で増減量を調整、$Accent モードで大文字 / 小文字を強拍 / 弱拍に使い分け。WebPlayer で鳴らしながら整理します。MML 連載シリーズの 3 回目。]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://mewli.st/img/mewmmlpad/series-hero-v2.png" /><media:content medium="image" url="https://mewli.st/img/mewmmlpad/series-hero-v2.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">休符・ゲート長・タイ・スラー — MML 連載 #2</title><link href="https://mewli.st/development/2026/05/22/mml-rests-ties-slurs/" rel="alternate" type="text/html" title="休符・ゲート長・タイ・スラー — MML 連載 #2" /><published>2026-05-22T10:00:00+09:00</published><updated>2026-05-22T10:00:00+09:00</updated><id>https://mewli.st/development/2026/05/22/mml-rests-ties-slurs</id><content type="html" xml:base="https://mewli.st/development/2026/05/22/mml-rests-ties-slurs/"><![CDATA[<p><a href="/mewmmlpad/series/">MML 連載シリーズ</a> の 2 回目です。本シリーズで扱う MML 記法は <strong><a href="/mewmmlpad/">MewMMLPad</a>（VST3 / スタンドアローン / ブラウザ版）</strong> のものです。記事内の例はすべて MewMMLPad の Web プレイヤー上で動かしながら確認できます（PMD / FMP など他環境の MML とは方言が異なる箇所があります）。</p>

<p>今回は <strong>音を鳴らさない時間</strong> と <strong>音と音のつなげ方</strong> を扱います。具体的には、<strong>休符</strong>（音を出さない時間）、<strong>ゲート長</strong>（1 音をどこまで伸ばすか）、<strong>タイ・スラー</strong>（音と音をつなぐ）あたりです。フレーズに「間」と「息」を作るための道具一式です。</p>

<h2 id="休符-r">休符 <code class="language-plaintext highlighter-rouge">R</code></h2>

<p><code class="language-plaintext highlighter-rouge">R</code> は休符。長さの指定方法は音符と同じで、<code class="language-plaintext highlighter-rouge">r4</code> なら 4 分休符、<code class="language-plaintext highlighter-rouge">r8</code> なら 8 分休符。長さを省略すると <code class="language-plaintext highlighter-rouge">L</code> のデフォルトが使われます。</p>

<pre><code class="language-mml">A T120 o4 L8 cdef r4 gab&gt;c
</code></pre>

<p>途中に <code class="language-plaintext highlighter-rouge">r4</code>（4 分休符）を挟むだけで、フレーズに「間」ができます。<strong>チャンネルの行内ならどこにでも置ける</strong>ので、リズムの設計をテキストで直接書ける感覚です。</p>

<h2 id="同音再発音-x">同音再発音 <code class="language-plaintext highlighter-rouge">X</code></h2>

<p><code class="language-plaintext highlighter-rouge">X</code>（小文字 <code class="language-plaintext highlighter-rouge">x</code> も可）は、<strong>直前と同じ音をもう一度鳴らす</strong> 記号。</p>

<pre><code class="language-mml">A T120 o4 L8 c x x x   d x x x   e2
</code></pre>

<p>ドを 4 回、レを 4 回、ミを伸ばす、という形。リズムを刻む用途で書くときに「同じ音」だと一目で分かり、あとから別の音に変えるのも <code class="language-plaintext highlighter-rouge">c</code> の 1 文字を直すだけで済みます。</p>

<p>長さも個別指定できます：<code class="language-plaintext highlighter-rouge">x4</code> は前の音を 4 分音符の長さで再発音。</p>

<h2 id="ゲート長-q--音をどれだけ伸ばすか">ゲート長 <code class="language-plaintext highlighter-rouge">Q</code> — 音をどれだけ伸ばすか</h2>

<p>タイとスラーを説明する前に、<code class="language-plaintext highlighter-rouge">Q</code> を押さえておく必要があります。</p>

<p><code class="language-plaintext highlighter-rouge">Q&lt;数字&gt;</code> で <strong>ゲート長</strong>（音符 1 つあたり、実際に音を出している時間の割合）を指定します。<code class="language-plaintext highlighter-rouge">Q1</code> 〜 <code class="language-plaintext highlighter-rouge">Q8</code> の 8 段階で、</p>

<table>
  <thead>
    <tr>
      <th style="text-align: center"><code class="language-plaintext highlighter-rouge">Q</code></th>
      <th style="text-align: center">比率</th>
      <th style="text-align: left">聞こえ方</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="text-align: center"><code class="language-plaintext highlighter-rouge">Q8</code>（既定）</td>
      <td style="text-align: center">100%</td>
      <td style="text-align: left">フルゲート（次の音まで途切れない）</td>
    </tr>
    <tr>
      <td style="text-align: center"><code class="language-plaintext highlighter-rouge">Q4</code></td>
      <td style="text-align: center">50%</td>
      <td style="text-align: left">やや短め</td>
    </tr>
    <tr>
      <td style="text-align: center"><code class="language-plaintext highlighter-rouge">Q1</code></td>
      <td style="text-align: center">12.5%</td>
      <td style="text-align: left">スタッカート</td>
    </tr>
  </tbody>
</table>

<pre><code class="language-mml">A T120 o4 L4 Q8 c d e f   Q4 c d e f   Q1 c d e f
</code></pre>

<p>同じスケールを Q8（フル）、Q4（半分）、Q1（とても短い）の順に並べました。後ろにいくほど音が短く切れていきます。</p>

<p><code class="language-plaintext highlighter-rouge">Q</code> の値はそのチャンネルに <strong>以後ずっと有効</strong> で、次に <code class="language-plaintext highlighter-rouge">Q</code> を書くまで変わりません。フレーズの一部だけスタッカートにしたいときは局所的に切り替えます。</p>

<h2 id="q小文字--リリースを-ticks-単位で削る"><code class="language-plaintext highlighter-rouge">q</code>（小文字） — リリースを ticks 単位で削る</h2>

<p>大文字 <code class="language-plaintext highlighter-rouge">Q</code> が <strong>比率</strong> でゲート長を指定するのに対し、小文字 <code class="language-plaintext highlighter-rouge">q</code> は <strong>ticks 単位の絶対値</strong> でリリースを早めます。MewMMLPad の解像度は 1 小節 = 192 ticks（つまり 1 拍 = 48 ticks）。</p>

<table>
  <thead>
    <tr>
      <th style="text-align: center"><code class="language-plaintext highlighter-rouge">q</code></th>
      <th style="text-align: left">動作</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="text-align: center"><code class="language-plaintext highlighter-rouge">q0</code></td>
      <td style="text-align: left">何もしない（既定）</td>
    </tr>
    <tr>
      <td style="text-align: center"><code class="language-plaintext highlighter-rouge">q4</code></td>
      <td style="text-align: left">リリースを 4 ticks 早める（1 拍未満のごく短い時間）</td>
    </tr>
    <tr>
      <td style="text-align: center"><code class="language-plaintext highlighter-rouge">q24</code></td>
      <td style="text-align: left">リリースを 24 ticks 早める（半拍ぶん早く切る）</td>
    </tr>
  </tbody>
</table>

<pre><code class="language-mml">A T120 o4 L4 Q8 c d e f   q24 c d e f
</code></pre>

<p>前半 <code class="language-plaintext highlighter-rouge">Q8 c d e f</code> はフルゲートで連続。後半は同じ <code class="language-plaintext highlighter-rouge">Q8</code> のままですが、<code class="language-plaintext highlighter-rouge">q24</code> で各音が <strong>24 ticks（半拍）早めにリリース</strong> されるので、音と音の間に隙間ができます。</p>

<p><code class="language-plaintext highlighter-rouge">Q</code> と <code class="language-plaintext highlighter-rouge">q</code> は独立して効きます。Q でゲート長の比率を決めたうえで、さらに q で「最後に少し早く切る」みたいな細かい調整ができます。</p>

<hr />

<p>これ以降のタイとスラーの例では、効果が聞き取りやすいよう <strong>意図的に <code class="language-plaintext highlighter-rouge">Q4</code> を指定</strong> します。<code class="language-plaintext highlighter-rouge">Q</code> を既定の <code class="language-plaintext highlighter-rouge">Q8</code>（=100% ゲート）のままだと、タイやスラーがなくても音が途切れずに鳴ってしまい、結合や legato の効果が分かりにくいためです。</p>

<h2 id="タイ---音をつなぐ">タイ <code class="language-plaintext highlighter-rouge">&amp;</code> — 音をつなぐ</h2>

<p><code class="language-plaintext highlighter-rouge">&amp;</code> は <strong>音符をつなぐ</strong> 記号です。挙動は同音同士と異音程で違います。</p>

<h3 id="同音タイ常に一音化">同音タイ：常に一音化</h3>

<pre><code class="language-mml">A T120 o4 L4 Q4 c c   c&amp;c r e
</code></pre>

<p>前半の <code class="language-plaintext highlighter-rouge">c c</code> は 2 つの c を別々にアタックしますが、後半の <code class="language-plaintext highlighter-rouge">c&amp;c</code> は <code class="language-plaintext highlighter-rouge">c2</code> と等価で <strong>1 つの長い音</strong>（再アタックなし）になります。<code class="language-plaintext highlighter-rouge">Q4</code> で前半の 2 音には隙間ができるので、「再アタックあり／なし」の違いが聞き取れます。</p>

<p><code class="language-plaintext highlighter-rouge">c4&amp;c8</code> のように違う長さ同士でも結合できるので、<code class="language-plaintext highlighter-rouge">c4.</code>（付点）と書きにくい複雑な長さを作るときにも使えます。</p>

<h3 id="異音程タイデフォルトはフルゲート通常発音">異音程タイ：デフォルトはフルゲート＋通常発音</h3>

<p>異音程同士の <code class="language-plaintext highlighter-rouge">&amp;</code> は、デフォルト（<code class="language-plaintext highlighter-rouge">$TieMode=Slur</code>）では：</p>

<ul>
  <li>前のノートをフルゲートで伸ばす</li>
  <li>次のノートは通常通り発音する</li>
</ul>

<pre><code class="language-mml">A T120 o4 L8 Q4 c d e f   c&amp;d e&amp;f
</code></pre>

<p>前半 <code class="language-plaintext highlighter-rouge">c d e f</code> はスタッカート気味に鳴ります。後半 <code class="language-plaintext highlighter-rouge">c&amp;d e&amp;f</code> はタイで結ばれているので、ペア内が <strong>フルゲートで隙間なくつながる</strong> のが聞き取れます。<code class="language-plaintext highlighter-rouge">c&amp;d&amp;e&amp;c</code> のように連鎖もできます。</p>

<h3 id="bend-モード再アタックなしでピッチが動く">Bend モード：再アタックなしでピッチが動く</h3>

<p><code class="language-plaintext highlighter-rouge">$TieMode=Bend</code> を宣言すると、異音程タイは <strong>再アタックせずにピッチベンドで動く</strong> 挙動になります。<code class="language-plaintext highlighter-rouge">$BendRange</code> で音程差の上限（半音単位、既定 2）を指定します。</p>

<p>下の例は、同じ <code class="language-plaintext highlighter-rouge">c&amp;g r2</code> を <strong>Bend モード</strong>と <strong>Default モード（既定）</strong> で並べて鳴らす形にしています。</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>A T120 $BendRange=12 Q4
A o4 L4 $TieMode=Bend    c&amp;g r2
A o4 L4 $TieMode=Default c&amp;g r2
</code></pre></div></div>

<iframe src="/mewmmlpad/player/?embed=1#project=H4sIAAAAAAAACpXKvQrCMBiF4Vv5OIhTlCRGWwMOiqMOips6hPbzjyaRNtqheO8iOLp4eKfD0-EUa-8SLDy33ld3Vw7udbxxkSDw5Lq5xgCrBLyvYDGnndKSegsO5daFM8-Upo05hDlFQytDvd2V17Hk2UcQERX9M9X6B1jyyT2q9AUQKC4uBK4a2H2H1j0ZFo1rU4zpAoESVg61nOZmlI3ld1qg-fxjZUZZnk0nKjcTqbOX6P7o-HoDl9RahAkBAAA" loading="lazy" width="100%" height="260" style="border:0; max-width:720px; border-radius:6px;" title="MewMMLPad WebPlayer — TieMode 比較"></iframe>

<p><small><strong>▶</strong> で再生できます。書き換えてその場で試すこともできます。</small></p>

<ul>
  <li>前半（Bend）：C から G へ <strong>再アタックなしにピッチが滑らかに上昇</strong> します</li>
  <li>後半（Default）：C はタイでフルゲートに伸び、続く G は <strong>新しいアタックで発音</strong> されます</li>
</ul>

<p><code class="language-plaintext highlighter-rouge">|音程差| &gt; BendRange</code> だとクリップされるので、大きい音程差を扱うときはレンジを広めに取ります。ピッチベンドのより細かい制御（遅延や遷移時間）は <a href="/mewmmlpad/series/">#6 ピッチベンドとグリッサンド</a> で扱います。</p>

<h2 id="スラー---息を切らずに">スラー <code class="language-plaintext highlighter-rouge">^</code> — 息を切らずに</h2>

<p><code class="language-plaintext highlighter-rouge">^</code> は <strong>legato（レガート）</strong> の記号。前の音をフルゲートで伸ばし、次の音は再アタックして発音します。</p>

<h3 id="異音スラー">異音スラー</h3>

<pre><code class="language-mml">A T120 o4 L8 Q4 c d e f   c^d e^f
</code></pre>

<p>前半はスタッカートで鳴り、後半 <code class="language-plaintext highlighter-rouge">c^d e^f</code> は <strong>ペアの 1 音目が次の音までフルゲートで伸びる</strong> ため、息を切らさず legato でつながります。</p>

<h3 id="同音スラーsamenoteslur-で挙動を切替">同音スラー：<code class="language-plaintext highlighter-rouge">$SameNoteSlur</code> で挙動を切替</h3>

<p>同音同士の <code class="language-plaintext highlighter-rouge">^</code> は、デフォルトでは <strong>再発音あり</strong> です（<code class="language-plaintext highlighter-rouge">$SameNoteSlur=Default</code> / <code class="language-plaintext highlighter-rouge">FullGate</code>）。</p>

<table>
  <thead>
    <tr>
      <th style="text-align: left">設定</th>
      <th style="text-align: left"><code class="language-plaintext highlighter-rouge">g^g</code> の挙動</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="text-align: left"><code class="language-plaintext highlighter-rouge">$SameNoteSlur=Default</code> / <code class="language-plaintext highlighter-rouge">FullGate</code>（既定）</td>
      <td style="text-align: left">前音をフルゲートで伸ばして次音を <strong>再発音</strong></td>
    </tr>
    <tr>
      <td style="text-align: left"><code class="language-plaintext highlighter-rouge">$SameNoteSlur=Combine</code></td>
      <td style="text-align: left"><code class="language-plaintext highlighter-rouge">g&amp;g</code> と同じく <strong>一音化</strong>（再アタックなし）</td>
    </tr>
  </tbody>
</table>

<pre><code class="language-mml">A T120 o4 L4 Q4 c c d d   c^c d^d e
</code></pre>

<p>前半は同じ音を <code class="language-plaintext highlighter-rouge">Q4</code> で 4 回スタッカートに、後半は <code class="language-plaintext highlighter-rouge">c^c d^d</code> を並べた形。既定では「<strong>長い c → 短い c → 長い d → 短い d</strong>」のように、各ペアの 1 音目だけがフルゲートで伸びるのが聞こえます。<code class="language-plaintext highlighter-rouge">$SameNoteSlur=Combine</code> に切り替えると 2 音が完全に一体化して、<code class="language-plaintext highlighter-rouge">c2 d2 e</code> のように聞こえるようになります。</p>

<h2 id="-と--の使い分け"><code class="language-plaintext highlighter-rouge">&amp;</code> と <code class="language-plaintext highlighter-rouge">^</code> の使い分け</h2>

<p>似た記号ですが、意味が違います。</p>

<ul>
  <li><strong><code class="language-plaintext highlighter-rouge">&amp;</code> タイ</strong>：<strong>同音は常に一音化、異音は <code class="language-plaintext highlighter-rouge">$TieMode</code> で動作切替</strong></li>
  <li><strong><code class="language-plaintext highlighter-rouge">^</code> スラー</strong>：<strong>legato、次音は基本「再アタックあり」、同音は <code class="language-plaintext highlighter-rouge">$SameNoteSlur</code> で切替</strong></li>
</ul>

<p>楽譜の「タイ」「スラー」と概念は似ていますが、MML では「<strong>結合してひとつにする</strong>」のか「<strong>息を切らずにつなぐ</strong>」のかを記号で厳密に区別します。</p>

<h2 id="組み合わせて短い演奏にしてみる">組み合わせて短い演奏にしてみる</h2>

<pre><code class="language-mml">A T120 o5 L8 Q4 c^d e^f g4. r8   e^d c^d e^f g4   a^g f^e d^c e d   c4 r4 c2
B      o3 L4    c2 g2            c2 g2            a2 f2             g2 c2
</code></pre>

<p>4 小節構成。A チャンネルはスラーで legato なメロディを作り、付点 4 分のあと 8 分休符で間を取り、3 小節目から下行して 4 小節目で <code class="language-plaintext highlighter-rouge">c</code> へ着地。B チャンネルは半音符の根音で <code class="language-plaintext highlighter-rouge">I → V → I → V → vi → IV → V → I</code> の進行を支えます。両チャネルとも合計 16 拍（4 小節）でぴったり揃っています。</p>

<h2 id="次回">次回</h2>

<p>次の <a href="/mewmmlpad/series/">#3「音量とアクセント」</a> では、<code class="language-plaintext highlighter-rouge">V</code>（ベロシティ）と <code class="language-plaintext highlighter-rouge">(</code> <code class="language-plaintext highlighter-rouge">)</code> の増減、<code class="language-plaintext highlighter-rouge">$Accent</code> モードでフレーズに<strong>強弱</strong>を付ける話を扱います。</p>

<p>連載全体の目次は <a href="/mewmmlpad/series/">シリーズ一覧</a> からどうぞ。</p>]]></content><author><name>mewlist</name></author><category term="development" /><summary type="html"><![CDATA[MML でフレーズに「間」と「息」を作る — 休符 R、ゲート長 Q と q、タイ & と スラー ^、同音再発音 X、そして $TieMode / $SameNoteSlur の挙動を、WebPlayer で鳴らしながら整理します。MML 連載シリーズの 2 回目。]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://mewli.st/img/mewmmlpad/series-hero-v2.png" /><media:content medium="image" url="https://mewli.st/img/mewmmlpad/series-hero-v2.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">音程と音符の長さ — MML 連載 #1</title><link href="https://mewli.st/development/2026/05/21/mml-pitch-and-length/" rel="alternate" type="text/html" title="音程と音符の長さ — MML 連載 #1" /><published>2026-05-21T10:00:00+09:00</published><updated>2026-05-21T10:00:00+09:00</updated><id>https://mewli.st/development/2026/05/21/mml-pitch-and-length</id><content type="html" xml:base="https://mewli.st/development/2026/05/21/mml-pitch-and-length/"><![CDATA[<p><a href="/mewmmlpad/series/">MML 連載シリーズ</a> の 1 回目です。本シリーズで扱う MML 記法は <strong><a href="/mewmmlpad/">MewMMLPad</a>（VST3 / スタンドアローン / ブラウザ版）</strong> のものです。記事内の例はすべて MewMMLPad の Web プレイヤー上で動かしながら確認できます（PMD / FMP など他環境の MML とは方言が異なる箇所があります）。</p>

<p>今回は MML を書くうえで最も基本になる、<strong>音程</strong>（どの高さの音を鳴らすか）と <strong>音符の長さ</strong>（どれくらい鳴らすか）を扱います。</p>

<p>具体的に扱う記号：</p>

<ul>
  <li>音名：<code class="language-plaintext highlighter-rouge">c d e f g a b</code></li>
  <li>臨時記号：<code class="language-plaintext highlighter-rouge">+</code>（シャープ）/ <code class="language-plaintext highlighter-rouge">-</code>（フラット）/ <code class="language-plaintext highlighter-rouge">=</code>（ナチュラル）</li>
  <li>オクターブ：<code class="language-plaintext highlighter-rouge">o&lt;数字&gt;</code> と <code class="language-plaintext highlighter-rouge">&lt;</code> <code class="language-plaintext highlighter-rouge">&gt;</code></li>
  <li>音符の長さ：<code class="language-plaintext highlighter-rouge">L&lt;数字&gt;</code> でのデフォルト指定、<code class="language-plaintext highlighter-rouge">c4</code> のような個別指定、付点、加減算</li>
</ul>

<p>辞書的な仕様は <a href="/mewmmlpad/mml-reference/">MML リファレンス</a> に整理してあります。本記事はそれを「<strong>書いて、聴いて、覚える</strong>」順番でなぞる構成です。</p>

<h2 id="7-つの音">7 つの音</h2>

<p>MML で音を鳴らす最小単位は <strong>音名 1 文字</strong> です。ドレミファソラシは英語表記でこうなります。</p>

<table>
  <thead>
    <tr>
      <th style="text-align: center">ドレミ</th>
      <th style="text-align: center">英語</th>
      <th style="text-align: center">MML</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="text-align: center">ド</td>
      <td style="text-align: center">C</td>
      <td style="text-align: center"><code class="language-plaintext highlighter-rouge">c</code></td>
    </tr>
    <tr>
      <td style="text-align: center">レ</td>
      <td style="text-align: center">D</td>
      <td style="text-align: center"><code class="language-plaintext highlighter-rouge">d</code></td>
    </tr>
    <tr>
      <td style="text-align: center">ミ</td>
      <td style="text-align: center">E</td>
      <td style="text-align: center"><code class="language-plaintext highlighter-rouge">e</code></td>
    </tr>
    <tr>
      <td style="text-align: center">ファ</td>
      <td style="text-align: center">F</td>
      <td style="text-align: center"><code class="language-plaintext highlighter-rouge">f</code></td>
    </tr>
    <tr>
      <td style="text-align: center">ソ</td>
      <td style="text-align: center">G</td>
      <td style="text-align: center"><code class="language-plaintext highlighter-rouge">g</code></td>
    </tr>
    <tr>
      <td style="text-align: center">ラ</td>
      <td style="text-align: center">A</td>
      <td style="text-align: center"><code class="language-plaintext highlighter-rouge">a</code></td>
    </tr>
    <tr>
      <td style="text-align: center">シ</td>
      <td style="text-align: center">B</td>
      <td style="text-align: center"><code class="language-plaintext highlighter-rouge">b</code></td>
    </tr>
  </tbody>
</table>

<p>行の頭はチャンネル指定（<code class="language-plaintext highlighter-rouge">A</code>〜<code class="language-plaintext highlighter-rouge">P</code> の大文字 1 文字）で、その後に音を書いていきます。</p>

<pre><code class="language-mml">A o4 cdefgab
</code></pre>

<p>大文字 <code class="language-plaintext highlighter-rouge">C D E F G A B</code> でも同じ音が鳴ります。これは <code class="language-plaintext highlighter-rouge">$Accent=On</code>（アクセントモード）が有効なときだけ意味の違いが出る、専用の使い分けなので、普段は小文字でも大文字でも、好みで構いません。本シリーズでは見やすさのために音名を小文字、コマンドや設定は大文字、で統一していきます。</p>

<h2 id="シャープフラットナチュラル">シャープ・フラット・ナチュラル</h2>

<p>半音上げ下げは音名の <strong>直後</strong> に記号を付けます。</p>

<table>
  <thead>
    <tr>
      <th style="text-align: left">効果</th>
      <th style="text-align: center">記号</th>
      <th style="text-align: center">例</th>
      <th style="text-align: left">意味</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="text-align: left">シャープ（半音上）</td>
      <td style="text-align: center"><code class="language-plaintext highlighter-rouge">+</code> または <code class="language-plaintext highlighter-rouge">#</code></td>
      <td style="text-align: center"><code class="language-plaintext highlighter-rouge">c+</code></td>
      <td style="text-align: left">C♯</td>
    </tr>
    <tr>
      <td style="text-align: left">フラット（半音下）</td>
      <td style="text-align: center"><code class="language-plaintext highlighter-rouge">-</code></td>
      <td style="text-align: center"><code class="language-plaintext highlighter-rouge">c-</code></td>
      <td style="text-align: left">C♭</td>
    </tr>
    <tr>
      <td style="text-align: left">ナチュラル</td>
      <td style="text-align: center"><code class="language-plaintext highlighter-rouge">=</code></td>
      <td style="text-align: center"><code class="language-plaintext highlighter-rouge">c=</code></td>
      <td style="text-align: left">その音だけ調号を無視</td>
    </tr>
  </tbody>
</table>

<p><code class="language-plaintext highlighter-rouge">#</code> も使えますが、本シリーズでは MML の標準である <code class="language-plaintext highlighter-rouge">+</code> を使います。</p>

<pre><code class="language-mml">A o4 c c+ d d+ e f f+ g g+ a a+ b
</code></pre>

<p>12 音すべてを順に鳴らす、いわゆる <strong>クロマチックスケール</strong> です。下行（高い音から低い音へ）に書きたい場合は、音名自体を高い方から並べます。</p>

<pre><code class="language-mml">A o5 c &lt;b a+ a g+ g f+ f e d+ d c+ c
</code></pre>

<p><code class="language-plaintext highlighter-rouge">-</code> のフラットでも同じ音域を書けます（例：<code class="language-plaintext highlighter-rouge">b-</code> は A♯ と同音）。シャープ・フラットのどちらを使うかは、調や旋律のニュアンスに合わせて選びます。</p>

<p><code class="language-plaintext highlighter-rouge">=</code>（ナチュラル）は、調号（あとの記事で扱います）で半音上下を設定している状態でも、<strong>その音符だけは元の音に戻す</strong>という打ち消し記号です。普段はあまり書きませんが、調号と組み合わせるときに役立ちます。</p>

<h2 id="オクターブ">オクターブ</h2>

<p>音域は <strong>オクターブ</strong> で指定します。</p>

<table>
  <thead>
    <tr>
      <th style="text-align: left">記号</th>
      <th style="text-align: left">動作</th>
      <th style="text-align: left">範囲・既定</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="text-align: left"><code class="language-plaintext highlighter-rouge">o&lt;数字&gt;</code></td>
      <td style="text-align: left">オクターブを絶対指定</td>
      <td style="text-align: left">0〜8、既定は <code class="language-plaintext highlighter-rouge">o4</code></td>
    </tr>
    <tr>
      <td style="text-align: left"><code class="language-plaintext highlighter-rouge">&gt;</code></td>
      <td style="text-align: left">1 つ上げる</td>
      <td style="text-align: left">—</td>
    </tr>
    <tr>
      <td style="text-align: left"><code class="language-plaintext highlighter-rouge">&lt;</code></td>
      <td style="text-align: left">1 つ下げる</td>
      <td style="text-align: left">—</td>
    </tr>
  </tbody>
</table>

<p>中央 C（ピアノの真ん中のド）は <code class="language-plaintext highlighter-rouge">o4 c</code> です。</p>

<pre><code class="language-mml">A o3 c   o4 c   o5 c   o6 c
</code></pre>

<p><code class="language-plaintext highlighter-rouge">&lt;</code> と <code class="language-plaintext highlighter-rouge">&gt;</code> は <strong>相対指定</strong> で、現在のオクターブから 1 段ずつ動かせます。スケールを書いているとき、最後の <code class="language-plaintext highlighter-rouge">c</code> だけ次のオクターブに上げたい、みたいな場面でよく使います。</p>

<pre><code class="language-mml">A o4 cdefgab&gt;c
</code></pre>

<p>最後の <code class="language-plaintext highlighter-rouge">&gt;c</code> で、シから 1 オクターブ上のドへ滑らかにつながります。</p>

<h2 id="音符の長さ">音符の長さ</h2>

<p>ここからが、MML が「楽譜」になるための要素です。</p>

<h3 id="デフォルト長さl">デフォルト長さ：<code class="language-plaintext highlighter-rouge">L</code></h3>

<p><code class="language-plaintext highlighter-rouge">L&lt;数字&gt;</code> でデフォルトの音符長を指定します。数字は <strong>「全音符を何個に割ったか」</strong> を表します。</p>

<table>
  <thead>
    <tr>
      <th style="text-align: center"><code class="language-plaintext highlighter-rouge">L</code></th>
      <th style="text-align: left">意味</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="text-align: center"><code class="language-plaintext highlighter-rouge">L1</code></td>
      <td style="text-align: left">全音符</td>
    </tr>
    <tr>
      <td style="text-align: center"><code class="language-plaintext highlighter-rouge">L2</code></td>
      <td style="text-align: left">2 分音符</td>
    </tr>
    <tr>
      <td style="text-align: center"><code class="language-plaintext highlighter-rouge">L4</code></td>
      <td style="text-align: left">4 分音符（既定）</td>
    </tr>
    <tr>
      <td style="text-align: center"><code class="language-plaintext highlighter-rouge">L8</code></td>
      <td style="text-align: left">8 分音符</td>
    </tr>
    <tr>
      <td style="text-align: center"><code class="language-plaintext highlighter-rouge">L16</code></td>
      <td style="text-align: left">16 分音符</td>
    </tr>
    <tr>
      <td style="text-align: center"><code class="language-plaintext highlighter-rouge">L32</code></td>
      <td style="text-align: left">32 分音符</td>
    </tr>
  </tbody>
</table>

<p>数字が大きいほど短い、という感覚は最初は不思議ですが、「全音符を 4 つに割ったうちの 1 つ ＝ 4 分音符」と覚えると馴染みます。</p>

<pre><code class="language-mml">A o4 L8 cdefgab&gt;c&lt;   L4 cdefgab&gt;c&lt;   L2 cdefgab&gt;c&lt;
</code></pre>

<p>同じスケールを、8 分・4 分・2 分の順に並べました。後ろにいくほどゆっくりになります。</p>

<h3 id="個別指定音符の直後に数字">個別指定：音符の直後に数字</h3>

<p>各音符のすぐ後ろに数字を書くと、その音だけ長さを上書きできます。</p>

<pre><code class="language-mml">A o4 L8 c d e2 f g a4 b&gt;c
</code></pre>

<p><code class="language-plaintext highlighter-rouge">e2</code>（2 分音符のミ）と <code class="language-plaintext highlighter-rouge">a4</code>（4 分音符のラ）だけが伸び、他は <code class="language-plaintext highlighter-rouge">L8</code> のデフォルト（8 分音符）で進みます。</p>

<h3 id="付点">付点（<code class="language-plaintext highlighter-rouge">.</code>）</h3>

<p>長さの後ろに <code class="language-plaintext highlighter-rouge">.</code> を付けると <strong>1.5 倍</strong> になります。これが付点。</p>

<table>
  <thead>
    <tr>
      <th style="text-align: center">表記</th>
      <th style="text-align: left">意味</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="text-align: center"><code class="language-plaintext highlighter-rouge">c4.</code></td>
      <td style="text-align: left">付点 4 分音符（4 分 + 8 分）</td>
    </tr>
    <tr>
      <td style="text-align: center"><code class="language-plaintext highlighter-rouge">c4..</code></td>
      <td style="text-align: left">二重付点 4 分音符（4 分 + 8 分 + 16 分）</td>
    </tr>
    <tr>
      <td style="text-align: center"><code class="language-plaintext highlighter-rouge">c4...</code></td>
      <td style="text-align: left">三重付点 4 分音符</td>
    </tr>
  </tbody>
</table>

<pre><code class="language-mml">A o4 L8 c4. d g4. e c2
</code></pre>

<p>付点を混ぜると、いわゆる <strong>「タッカ」のリズム</strong>（長 → 短）が書けます。</p>

<h3 id="加減算---">加減算（<code class="language-plaintext highlighter-rouge">+</code> / <code class="language-plaintext highlighter-rouge">-</code>）</h3>

<p>長さを <strong>足し引き</strong> できる構文もあります。</p>

<table>
  <thead>
    <tr>
      <th style="text-align: center">表記</th>
      <th style="text-align: left">意味</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="text-align: center"><code class="language-plaintext highlighter-rouge">c4+8</code></td>
      <td style="text-align: left">4 分音符 + 8 分音符（= 付点 4 分相当）</td>
    </tr>
    <tr>
      <td style="text-align: center"><code class="language-plaintext highlighter-rouge">c4+8.</code></td>
      <td style="text-align: left">4 分 + 付点 8 分</td>
    </tr>
    <tr>
      <td style="text-align: center"><code class="language-plaintext highlighter-rouge">c4-32</code></td>
      <td style="text-align: left">4 分 − 32 分（= 7/32 拍）</td>
    </tr>
    <tr>
      <td style="text-align: center"><code class="language-plaintext highlighter-rouge">c1-4-8</code></td>
      <td style="text-align: left">全音符 − 4 分 − 8 分（連続適用可）</td>
    </tr>
  </tbody>
</table>

<p><code class="language-plaintext highlighter-rouge">c4+8</code> と <code class="language-plaintext highlighter-rouge">c4.</code> は同じ長さですが、書き分けたい場面でどちらも使えるようにしています。32 分を引いて少しだけ短くする <code class="language-plaintext highlighter-rouge">c4-32</code> のような、付点では書きにくい中途半端な長さも組めます。</p>

<pre><code class="language-mml">A o4 L4 c c+8 d c4-32 e2
</code></pre>

<h2 id="組み合わせて短い演奏にしてみる">組み合わせて短い演奏にしてみる</h2>

<p>ここまでで触れた要素だけで、それなりに音楽的なフレーズが書けます。</p>

<pre><code class="language-mml">A T120 o5 L8 c d e g.  e16 d c2
B      o3 L4 c2 g2
</code></pre>

<p>A チャンネルがメロディ（音名 + 個別長さ + 付点 + 16 分音符）、B チャンネルが低音の根音 2 つ。チャンネル名を変えて 2 行に並べるだけで、自然に和声が乗ります。</p>

<h2 id="次回">次回</h2>

<p>次の <a href="/development/2026/05/22/mml-rests-ties-slurs/">#2「休符・ゲート長・タイ・スラー」</a> では、<strong>音を鳴らさない時間</strong> と <strong>音と音のつなげ方</strong> を扱います。<code class="language-plaintext highlighter-rouge">R</code>（休符）、<code class="language-plaintext highlighter-rouge">Q</code> / <code class="language-plaintext highlighter-rouge">q</code>（ゲート長）、<code class="language-plaintext highlighter-rouge">&amp;</code>（タイ）、<code class="language-plaintext highlighter-rouge">^</code>（スラー）の使い分けで、フレーズに息継ぎと表情を加える話です。</p>

<p>連載全体の目次は <a href="/mewmmlpad/series/">シリーズ一覧</a> からどうぞ。</p>]]></content><author><name>mewlist</name></author><category term="development" /><summary type="html"><![CDATA[MML の最も基礎、音程（C〜B と臨時記号、オクターブ）と音符の長さ（L コマンド、個別指定、付点、加減算）を、WebPlayer で鳴らしながら見ていきます。MML 連載シリーズの 1 回目。]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://mewli.st/img/mewmmlpad/series-hero-v2.png" /><media:content medium="image" url="https://mewli.st/img/mewmmlpad/series-hero-v2.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">MML 入門 — ブラウザで 1 音から曲を組み立てる</title><link href="https://mewli.st/development/2026/05/20/write-mml-in-browser/" rel="alternate" type="text/html" title="MML 入門 — ブラウザで 1 音から曲を組み立てる" /><published>2026-05-20T11:00:00+09:00</published><updated>2026-05-20T11:00:00+09:00</updated><id>https://mewli.st/development/2026/05/20/write-mml-in-browser</id><content type="html" xml:base="https://mewli.st/development/2026/05/20/write-mml-in-browser/"><![CDATA[<p>「音楽を作る」と聞いたら、ピアノを弾く、楽譜を書く、DAW でマウスを使って音符を並べる、あたりが思い浮かぶでしょうか。実はもう一つ、<strong>文字を打って音楽を書く</strong> という方法があります。</p>

<p><strong>MML（Music Macro Language）</strong> という記法です。チップチューンと呼ばれる音楽の多くも、この記法で書かれていました。</p>

<p>今回は <a href="/mewmmlpad/player/">MewMMLPad Web プレイヤー</a> を使って、ブラウザだけで MML を試してみます。インストール不要、無料です。<strong>記事の各 MML 例の下にプレイヤーを直接埋め込んであるので、その場で ▶ ボタンを押して音を聴きながら読み進められます。</strong> 編集して書き換えてみることもできます。</p>

<h2 id="まず-1-音だけ鳴らしてみる">まず 1 音だけ鳴らしてみる</h2>

<p>プレイヤーのエディタに、これだけ打ち込んでみてください。</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>A o4 c
</code></pre></div></div>

<iframe src="/mewmmlpad/player/?embed=1#project=H4sIAAAAAAAACqtWSssvyk0sUbJSyk0tz83NKUhM0S0oys9KTS5R0lEqSy0qzszPU7Iy1FHKzc1RslJyVMg3UUhW0lFKzkjMy0vNKVayiq6u1SEFxdYCANeHFUd2AAAA" loading="lazy" width="100%" height="260" style="border:0; max-width:720px; border-radius:6px;" title="MewMMLPad WebPlayer — 1 音"></iframe>

<p><small><strong>▶</strong> で再生できます。書き換えてその場で試すこともできます。</small></p>

<p>ド (C) が 1 つ鳴ります。<code class="language-plaintext highlighter-rouge">Ctrl+Space</code> でも再生できます。</p>

<p>それぞれの文字の意味は次の通り。</p>

<ul>
  <li><code class="language-plaintext highlighter-rouge">A</code> — チャンネル（演奏する「行」みたいなもの。A〜P まで 16 個）</li>
  <li><code class="language-plaintext highlighter-rouge">o4</code> — オクターブ 4。真ん中のドは <code class="language-plaintext highlighter-rouge">o4 c</code></li>
  <li><code class="language-plaintext highlighter-rouge">c</code> — ド</li>
</ul>

<p>これが MML の基本構造です。<strong>チャンネル → 設定 → 音符</strong>、を文字で並べていく。</p>

<h2 id="ドレミファソラシドを並べる">ドレミファソラシドを並べる</h2>

<p>音符を続けて書けば、その順に鳴ります。</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>A T120 o4 L8 V100 cdefgab&gt;c
</code></pre></div></div>

<p>これでドレミファソラシドが鳴ります。</p>

<p>新しい記号：</p>

<ul>
  <li><code class="language-plaintext highlighter-rouge">T120</code> — テンポ 120 BPM</li>
  <li><code class="language-plaintext highlighter-rouge">L8</code> — 音符のデフォルト長さを 8 分音符に</li>
  <li><code class="language-plaintext highlighter-rouge">V100</code> — 音量（ベロシティ）100</li>
  <li><code class="language-plaintext highlighter-rouge">&gt;</code> — オクターブを 1 上げる</li>
</ul>

<iframe src="/mewmmlpad/player/?embed=1#project=H4sIAAAAAAAACqtWSssvyk0sUbJSyk0tz83NKUhM0S0oys9KTS5R0lEqSy0qzszPU7Iy1FHKzc1RslJyVAgxNDJQyDdR8LFQCDM0MFBITklNS09MsktW0lFKzkjMy0vNKVayiq6u1SEFxdYCAI0BpiWLAAAA" loading="lazy" width="100%" height="260" style="border:0; max-width:720px; border-radius:6px;" title="MewMMLPad WebPlayer — スケール例"></iframe>

<p><small><strong>▶</strong> で再生できます。書き換えてその場で試すこともできます。</small></p>

<h2 id="音の長さを変える">音の長さを変える</h2>

<p><code class="language-plaintext highlighter-rouge">L8</code> でデフォルト長さを設定しましたが、個別の音符にも長さを書けます。</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>A o4 c4 d4 e2 f1
</code></pre></div></div>

<iframe src="/mewmmlpad/player/?embed=1#project=H4sIAAAAAAAACpXCsQ2AIBAF0FUuv8ZCQ0XnHMaCwBE1HBggWhB2dwZfXkfIRWyDgfArEm_rp7vki12DwsOlnjnBzAoiEQYrZU1Ok9fEC4UZCu6wKXGsMFsf6s99fGu22diAAAAA" loading="lazy" width="100%" height="260" style="border:0; max-width:720px; border-radius:6px;" title="MewMMLPad WebPlayer — 音の長さ"></iframe>

<p><small><strong>▶</strong> で再生できます。書き換えてその場で試すこともできます。</small></p>

<ul>
  <li><code class="language-plaintext highlighter-rouge">c4</code> — 4 分音符のド</li>
  <li><code class="language-plaintext highlighter-rouge">d4</code> — 4 分音符のレ</li>
  <li><code class="language-plaintext highlighter-rouge">e2</code> — 2 分音符のミ</li>
  <li><code class="language-plaintext highlighter-rouge">f1</code> — 全音符のファ</li>
</ul>

<p><strong>数字が大きいほど短い</strong>というのが最初は不思議に感じるかもしれません。<code class="language-plaintext highlighter-rouge">4</code> は「全音符を 4 つに割ったうちの 1 つ」つまり 4 分音符、<code class="language-plaintext highlighter-rouge">8</code> は「8 つに割った 1 つ」で 8 分音符、と覚えると馴染んでいきます。</p>

<h2 id="2-チャンネル重ねる">2 チャンネル重ねる</h2>

<p>行（チャンネル）を増やすと、複数の楽器を同時に鳴らせます。</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>A T120 o4 L8 V100 cegcegce
B      o3 L4 V70  c4 g4 c4 g4
</code></pre></div></div>

<iframe src="/mewmmlpad/player/?embed=1#project=H4sIAAAAAAAACpXEsQrCMBhF4Ve53DlCogElm84dSxd1CDFWJX9S0qJD6bsL9Qk8fJyZ91LFT3SU-BFJg79thlpeMUxUfMc6PkumM4oiiY5HtGarUSyaAzqjNULsV5d8wlrZobHo9hoIFr39nYrh4XOOaaQ7z4v6x3X5AuB3Wn2pAAAA" loading="lazy" width="100%" height="260" style="border:0; max-width:720px; border-radius:6px;" title="MewMMLPad WebPlayer — 2 チャンネル"></iframe>

<p><small><strong>▶</strong> で再生できます。書き換えてその場で試すこともできます。</small></p>

<p>A チャンネルが高音のアルペジオ、B チャンネルが低音のコード。<code class="language-plaintext highlighter-rouge">T120</code> のような曲全体に効く設定は A 行にだけ書きます。</p>

<p>これを書いて再生すると、2 つの音が同時に鳴ります。<strong>和音記号のようなものを使わずに、行を増やすだけ</strong>で重ね合わせができる、というのが MML 的な発想です。</p>

<h2 id="繰り返しで曲っぽくする">繰り返しで「曲っぽく」する</h2>

<p>同じパターンを何度も書くのは面倒です。<code class="language-plaintext highlighter-rouge">[...]N</code> で N 回繰り返せます。</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>A T120 o4 L8 V100 [cdefgab&gt;c&lt;]4
B      o3 L4 V70  [c4 g4 c4 g4]4
</code></pre></div></div>

<iframe src="/mewmmlpad/player/?embed=1#project=H4sIAAAAAAAACpXEsQrCMBRG4Vf5uXOERANKEEHnjtIlZohpWi25SWmLDqXvLvQNPHychdoysp_JEMcvcxp8sxvG0scwk6BPHKd3yWSUIOZEhq64q71E0ahOqJWUsKGJbeefl3B2-pFv2CoHVBr1UQI2aHQa250mQeHlc45pImOXVfzDrT_l0nmusQAAAA" loading="lazy" width="100%" height="260" style="border:0; max-width:720px; border-radius:6px;" title="MewMMLPad WebPlayer — 繰り返し"></iframe>

<p><small><strong>▶</strong> で再生できます。書き換えてその場で試すこともできます。</small></p>

<p>これで 4 回繰り返されます。</p>

<p>繰り返しを入れ子にしたり、変奏を足したり、マクロでパターンを定義して使い回したりすると、だんだん「曲」になっていきます。</p>

<h2 id="実際の曲を覗いてみる">実際の曲を覗いてみる</h2>

<p>ここまでの記号で書ける範囲だと「練習」感がありますが、本格的な曲も同じ MML 記法で書けます。</p>

<p>サンプル曲を読み込んでみてください。8 チャンネルを使った実例です。</p>

<iframe src="/mewmmlpad/player/?embed=1#project=H4sIAAAAAAAACo1SDW_aSBT8K5NNWuWuUO33rhFBSoAkUpEul-tFSDg5OdhxqWCd2i5BQvS3V2sD4dLSdGVp386bGb-3b5fkIctnUUlaZJY8zWbTxyhuPubZ52RckgaZJ3kxyRxpsQaZzaakRQ7x7_3ky9dJmX0tMEjKMskLNDFLnqaTogzdKT4yoUIXutOzbq9_fnGJ5cmfK1x1cZROJ0URuTg7ERxHZ4mLryOXJieMV3wMmMbfDFcDLXF0Oh4nrjz5y-GGUYq5pqE7qykWgxvGcRTVlMzhRlNgLmjounspakPpYcDgKS_XDeMGoevvz1MauvO9aS1Dd7E3KzjwwYTuctPnT39_da0l_HW8wT_Jl1McDBf5An8gXwyrLR_m9SnHMarccZ3z2yJHPlzk9W1mAqMu7lJ0YvTR7uPuHp0U6LVv5W_nmy_yEXDxq3yKZq0_Q6ZwMFz2VsDojW_Fo9012n9G-TN68YyyHbS52kF7yDgi9o4Bi_9kZ-yj9v32HLN3zE8wE0g2INIqSrfnqCKdI5NoR3zHyEe1zPvgGx4O3y64H-rr1LRiXnrmCHP_ZEdYpnedcfJwmN63VxzAsaK45cgZbn_kxndpJ344jDpx27N3uaRBxp8i55JpQVqjJXmK5glpkSJ6KrOs_EQaJCIt-p5SJa1iQhghdIPEFRYobY1lkvpdNEjhUamtUQ2S-5hJqrlaNZZrAWW0XtLIwFQCtqEKaq0V1ihNrZS_p7FUCSqsZJYHwkuqWpnhVjGluVoXKoWvqKpO1_Cv5FwosU-uArFtjtNACsYp4yxQKtjqKTeUWc6tksrYrQmVRmtqudFCG_6_Pl70-JqTCZjWWmkjuFLBa07rgZb5JHLpNCEbF2aqSzJcW7Guh75Xgm2vx_jBbb-fPIzKR0hrhKDaKMYV2_oYpQMaWGm4ChTfNVrdrr4Db2Te7hoGAAA" loading="lazy" width="100%" height="260" style="border:0; max-width:720px; border-radius:6px;" title="MewMMLPad WebPlayer — Ubiquitous Letters"></iframe>

<p><small><strong>▶</strong> で再生できます。8 チャンネルが順次入ってくる構成です。</small></p>

<p>このサンプルがどう組み立てられているかの解説は <a href="/mewmmlpad/samples/">サンプル曲で学ぶ</a> にまとめてあります。マクロ、変数、ピッチベンド、グリッサンド、タプレットといった発展的な記法が、1 つの曲の中でどう組み合わさっているかを 1 行ずつ追えるよう書きました。</p>

<h2 id="つぎは何ができる">つぎは何ができる？</h2>

<p>ここまでで触れたのは、まだ MML の基本部分だけです。以下のような表現も同じテキスト 1 枚で書けます。</p>

<ul>
  <li>ピッチベンド（音をゆっくり別の音に滑らせる）</li>
  <li>グリッサンド（音階を駆け上がる / 駆け下がる）</li>
  <li>タプレット（連符、3 連符 / 5 連符 / 7 連符）</li>
  <li>マクロ、変数（リズムパターンを定義して使い回す）</li>
  <li>調号、トランスポーズ（キー変更）</li>
  <li>ピッチエンベロープ、ボリュームエンベロープ、LFO（内蔵シンセの音色作り）</li>
</ul>

<p>全コマンドは <a href="/mewmmlpad/mml-reference/">MML リファレンス</a> に整理してあります。</p>

<h2 id="各機能を深掘りする連載">各機能を深掘りする連載</h2>

<p>本記事はシリーズ全体の入口です。今後、MML の各機能（音程・長さ・休符・タイ・ベロシティ・テンポ・調号・ピッチベンド・グリッサンド・タプレット・繰り返し・マクロ・変数・パン・プログラムチェンジ・DAW ルーティング）を、<strong>1 つずつ深掘りする連載</strong> を順に公開していきます。各記事も今回と同じく WebPlayer を埋め込むので、機能ごとの挙動をその場で聴きながら読めます。</p>

<p>連載一覧は <a href="/mewmmlpad/series/">こちら</a> からどうぞ。</p>

<h2 id="daw-フローに-mml-シーケンサーを組み込む">DAW フローに MML シーケンサーを組み込む</h2>

<p>すでに DAW で DTM をしている方なら、<strong><a href="/mewmmlpad/">MewMMLPad</a> の VST3 / スタンドアローン版</strong> がそのまま選択肢に加わります。MML を「<strong>もう一つの打ち込み手段</strong>」として、いま使っている DAW のフローに組み込めます。</p>

<p>具体的にできること：</p>

<ul>
  <li><strong>Web 版で書いた曲をそのまま持ち込める</strong>：Web プレイヤーの Save / Load 形式は VST3 / スタンドアローン版と同じです。ブラウザで作ったスケッチをそのまま読み込んで、続きを書けます</li>
  <li><strong>DAW に MIDI を流す</strong>：VST3 として DAW に挿し、MewMMLPad の出力を別トラックの音源へルーティング。チャネル <code class="language-plaintext highlighter-rouge">A</code>〜<code class="language-plaintext highlighter-rouge">P</code> がそのまま MIDI ch 1〜16 に対応するので、マルチティンバー音源なら 1 プラグインで最大 16 パートまで担当できます</li>
  <li><strong>MIDI クリップとしてドラッグ書き出し</strong>：編集中の MML を MIDI クリップとして DAW のトラックに直接ドラッグ。骨組みは MML で、仕上げは DAW、という分業が成立します</li>
  <li><strong>本格的な尺のシーケンス</strong>：ブラウザ版は短いスケッチ向けですが、VST3 / スタンドアローン版は楽曲全体を書ける尺と性能を持っています</li>
  <li><strong>内蔵シンセも同梱</strong>：スタンドアローン単体で完結します。試聴・スケッチ・MIDI 書き出しまでひととおり</li>
</ul>

<p>ピアノロールに音符を置くのと、MML で書くのは思考のモードが違います。両方を行き来できるようにしておくと、曲作りの幅が広がります。</p>

<p>興味がある方は、ぜひ BOOTH の商品ページをチェックしてみてください。</p>

<p><a href="https://mewlist.booth.pm/items/8284100" class="button is-primary is-medium" target="_blank" rel="noopener">BOOTH で詳細を見る</a></p>

<p>ショップページ: <a href="https://mewlist.booth.pm/items/8284100" target="_blank" rel="noopener">mewlist.booth.pm/items/8284100</a></p>]]></content><author><name>mewlist</name></author><category term="development" /><summary type="html"><![CDATA[MML を書いたことがない人のための、ブラウザだけで試せる入門。MewMMLPad Web プレイヤーを使って、1 音から始めて、スケール → 長さ → 2 チャンネル → 繰り返し、と段階を踏みながら「曲」を組み立てていきます。インストール不要、無料。]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://mewli.st/img/mewmmlpad/series-hero-v2.png" /><media:content medium="image" url="https://mewli.st/img/mewmmlpad/series-hero-v2.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry></feed>