DAW悪戦苦闘記

DAWやMIDIを通じてDTMを楽しむ記録。MIDI検定試験にもチャレンジするなり。

制作手順: MMLによるMIDIデータの作成

今回は、ドラム・パート以外のMIDIデータをMMLで効率良く作成する手順について補足する。MMLスクリプトの構成概要もここで説明しておきたい。

daw-jones.hatenablog.com

MMLによるパート譜の記述

MML自体かなり豊富な言語仕様を備えているので、楽曲全体のMIDIデータをすべてMMLで書き起こすことも技術的にはやろうと思えば可能である。しかし、かえって複雑になる恐れもあるため、そこは上手にDominoと役割分担させる方が得策である。

MMLはパートごとに分けて順次作成

全パート(チャネル)を一つのMMLスクリプトファイルとして作成することも可能ではあるが、修正対応の容易さを考慮し、パートごとにファイルは分けて一つずつ潰して行く方が無難であろう。

例えば、まずベースのMMLを作成してMIDIデータに変換し、Dominoへ取り込んでから音出し確認の上で、マスター編集ファイルの該当チャネルへ複写・編集、それが終わったら次はブラスのMMLを作成、以下同様の工程を繰り返す、といった具合になる。

MMLでの記述対象

最新版MMLでは、各ノートのベロシティのみならずゲート・タイムの指定やピッチベンド等コントーロール・チェンジの記述も可能であるが、すべてを盛り込むと非常に煩雑になってしまうので、ここでは音符の高さ(ピッチ)と長さ(ステップ値)のみを記述するに留める。

ゲート・タイム(デュレーション)については、強力なDominoの一括変更機能を使った方が作業効率が良い。またコントーロール・チェンジについてもDominoのGUIを通して編集する方がわかりやすいし間違いが少ないはずである。

MMLスクリプトの例

上記を前提としたMMLスクリプトの例を以下に示す:

f:id:daw_jones:20170108151040p:plain

  • 1行目: 分解能をティック値で指定する。MIDI検定実技では480である。
  • 2行目: MML上でオクターブの上げ下げを示す記号の定義。上げる場合に<、下げる場合に>を指定したい場合はこの1行を入れる。デフォールトはこの逆であるが、ここはあくまでユーザの好み。
  • 4行目: 拍の指定。本例では4/4。6/8であればBT6,8と書く。なお、本行より以下すべて行頭にAを記載しているが、これはトラック名称"A"という意味。ここでは1チャネル分しか記述しないのでAしか出てこない。
  • 5行目: 本MMLスクリプトにおけるオクターブの標準位置を指定する。下図(1)のDominoにおける 環境設定 > 全般(1) > オクターブ にも対応する。すなわち、数値4は中央C(ノート番号60)のオクターブに相当する。
  • 6行目: テンポ値を指定する。すなわち、1分間あたりの四分音符拍数。
  • 7行目: 調性を指定する。調性に合わせて自動的に変化記号を付けてMIDIデータを書き出すので、MMLスクリプトでは該当ノート一つ一つにわざわざ変化記号を付ける必要はない。この省力化の恩恵はかなり大きいと思う。
  • 8行目: デフォールトの音符の長さ(の分母値)を指定する。本例では八分音符。こうすることで以下のMMLスクリプトでは八分音符以外のノートについてのみ音符値を書けばよい。
  • 9行目: 楽譜記載の通りにデフォールトのベロシティを指定する。MIDI検定実技ではmfを80として上下に16ずつ増減させる決まりになっている。本例ではffということになる。
  • 10行目: ノートオフのタイミング。"0"を指定することで、現段階ではデュレーションを音符の長さ目一杯に取り、後でDominoに取り込んでからゲート・タイムを適宜修正する。MMLではデフォールトq1となっているので、例えば四分音符は479ティック目(= 480 - 1)でノートオフとなってしまう。
  • 11行目: 音色指定。これはお好み。Dominoに取り込んですぐに音色と合わせて発音確認したい場合は指定する。なお、MIDI検定実技の楽譜ではプログラム・ナンバーは1〜128の範囲で指定するようになっており、Dominoの環境設定でもこれに合わせている(下図(2)参照)。しかしMMLでは0〜127の範囲指定なので1減じた値を指定する。
  • 13〜16行目: 実際の楽譜をMMLでコーディングした部分。本例ではギターのパートのみ。小節区切りの目印である|は書いても書かなくてもよい。rは休符の意味である。その他音程は英名表記で、また音符の長さは分母の値のみ記述する。ただし、音符長さを0で指定した場合は和音を構成する(たとえばc0gはCとGの二和音構成)。その他の文法詳細については下記文献に譲る。

f:id:daw_jones:20170108152159p:plain

MMLの言語仕様

MML詳細については、以下の文献を参照されたい:

  • MML実習マニュアル(PDF): 大黒学氏の「無料チュートリアル:音楽」のページよりLaTeX版もダウンロードできる。下記取説を閲覧する前に一読を勧める。MMLに関してはおそらくウェブ上唯一のまとまったテキストで、大変貴重。
  • mml2mid Version 5.29 利用の手引: 後述のmml2midツールの取扱説明書。現時点では最新版がv5.30bにアップグレードされているので、一部仕様については最新版ツールに同梱の取説を参考にする(さらに使い込むのであれば)。

mml2midによるMIDIファイルへの変換

上記の要領で記述したMMLスクリプトを、mml2midツールによって標準MIDIファイル(SMF)に変換する。mml2midのインストール方法については、以前書いた下記記事を参照されたい。

daw-jones.hatenablog.com

 

変換処理は、下記の通りにコマンド一発で完了する。すなわち、mml2midコマンドにMMLスクリプトファイル名を引数として与えると、同一ディレクトリ内に拡張子がmidであるSMFが自動的に作成される。

mml2mid {変換対象のMMLスクリプトファイル}

 

例えば、以下のようなコマンドを実行すると、synth_lead.mid というSMFが作成される。このSMFを次の工程でDominoに取り込み、必要に応じて追加で編集加工する。

mml2mid synth_lead.mml

 

次回は、上述のようにパートごとに変換作成したSMFのDominoへの読み込みと統合編集作業について詳解したい。