MMLで書かれた音楽の演奏方法

ここでは、Pytakt MMLで書かれた音楽を演奏する方法を2つ紹介します。1つは標準MIDIファイル(単にMIDIファイルとも呼ばれます) に変換してそれを再生する方法、もう1つはPytaktから直接、シンセサイザ (波形合成ためのソフトウェアやハードウェア) へMIDIメッセージを送って再生する方法です。

MMLをMIDIファイルに変換する

Pytaktをインストールすると使用可能になるpytaktコマンドを使い、シェル(ターミナル; Windowsの場合はPowerShell) から次のように入力して、MMLで記述された音楽のMIDIファイルを作成することができます。cde という文字列がMMLに相当し、これは4分音符でド、レ、ミと順番に演奏することを意味しています。test.mid は作成されるMIDIファイルのファイル名です。

$ pytakt -o test.mid -m 'cde'

MIDIファイルの再生は、各OSでの方法に従ってください。

上と同じことを、Pythonインタプリタから対話的に行うことも可能です。pytaktコマンドを引数なしで起動すると、pytaktライブラリを読み込んだ状態でPythonインタプリタが立ち上がります。そこから、下のようにして MIDIファイルを出力することができます。

$ pytakt
pytakt version 1.1.0
>>> mml('cde').writesmf('test.mid')

また、MMLのテキストをファイルに格納しておいて、それをMIDIファイルへ変換することも可能です。例えば、好みのテキストエディタ(この例ではemacs) で、cde という内容を入力し、test.mml という名でセーブします。

emacs image

その後、pytaktコマンドを使って下のようにMIDIファイルに変換できます。

$ pytakt -o test.mid test.mml

Pytaktで直接演奏する

Pytaktから直接演奏することで、MIDIファイル変換の手間が省け、また、ピアノロールを表示しながらの演奏が可能になります。

Pytaktで直接演奏するためには、PCに内蔵されたソフトウェア・シンセサイザ (ソフトシンセ) またはMIDIキーボードなどの外部シンセサイザが必要です。下に、ソフトシンセを利用する場合のセットアップ例をOSごとに示します。

セットアップが済んだら、下のようにしてpytaktを起動してピアノロールのウィンドウを表示してみましょう。

$ pytakt -m 'cde'  (コマンドラインからの場合)
$ pytakt test.mml  (ファイルからの場合)

pianoroll window

そして、右上の再生ボタンを押せば演奏が始まり、もう一度押せば停止します。ピアノロールを表示せずに演奏だけ行いたい場合には、下のように-p オプションを指定します。

$ pytakt -p -m 'cde'  (コマンドラインからの場合)
$ pytakt -p test.mml  (ファイルからの場合)

Pythonから対話的に実行する場合は、下のように play()show() を使用します。

$ pytakt
pytakt version 1.1.0
>>> play('cde')   # 演奏 (mml('cde').play() でも可)
>>> mml('cde').show()   # ピアノロール表示

MIDIの出力先を変更する

Pytaktから直接演奏する場合において、MIDIの出力先が複数あるときは、そのうちどれを使うかを選択する必要が出てきます。出力先の一覧は pytakt -l で確認できます。

$ pytakt -l
MIDI Output Devices:
    [0] 14:0 Midi Through Port-0
 >  [1] 129:0 TiMidity port 0
    [2] 129:1 TiMidity port 1
    [3] 129:2 TiMidity port 2
    [4] 129:3 TiMidity port 3

MIDI Input Devices:
    [0] 14:0 Midi Through Port-0

'*': opened   '>': currently selected

上の表示から、選択中の出力先は [1] の TiMidity port 0 であることが分かります。これを例えば [4] の TiMidity port 3 に変更して演奏したい場合には、-d オプションを使用します。

$ pytakt -d4 -m 'cde'
$ pytakt -d4 test.mml
$ pytakt -d4
pytakt version 1.1.0
>>> play('cde')

上のように -d に続けて []内に表示される番号を指定するか、あるいは-d "port 3" のようにデバイス名の一部を指定します。

Pythonを対話的に実行しているときは、set_output_device() によって途中で出力先を変更することができます。

>>> set_output_device(3)
>>> show_devices()   # 出力先が変更されたことを確認する
MIDI Output Devices:
    [0] 14:0 Midi Through Port-0
    [1] 129:0 TiMidity port 0
    [2] 129:1 TiMidity port 1
 >  [3] 129:2 TiMidity port 2
    [4] 129:3 TiMidity port 3

MIDI Input Devices:
    [0] 14:0 Midi Through Port-0

'*': opened   '>': currently selected
>>> play('cde')  # [3] TiMidity port 2 に出力される

jupyter notebook から実行する

jupyter notebook の環境からでも、python インタプリタを起動して MMLを利用することが可能ですが、下の2行によりpytaktモジュールを先立ってインポートする必要があります。

from pytakt import *
from pytakt.midiio import *

インポートと演奏を行っている様子を下に示します。MML文字列が複数行にわたる場合は、下のように三重引用符を使用します。

jupyter notebook

music21ライブラリ及び MuseScore等の五線譜作成アプリケーションがインストールされ、music21の設定(configure)が正しく行われている環境であれば、次のようにノートブック上に五線譜をインライン表示することが可能です。

jupyter notebook



Last update: Apr 24 2026 12:07 JST     Copyright (C) 2026 Satoshi Nishimura Top Page