% %%% demo4: MML の使い方のデモ (4): 新規・拡張機能 % % このファイルでは新規に加えた機能の使用例を示します。 % これについてのマニュアル文書化は少し待ってください。 % 新規機能の概要は以下の通りです。 % ただし、これらの全機能のデモが含まれているわけではありません。 %  ・@M(テンポ)、@K(調)、@T(拍子)を複数書けるようにした。 %   これにより、曲途中での変更が可能になり、特にリタルダンドなどの %   テンポ変更を、楽譜情報を損なわずにできるようになった。 %   これらは必ずトラック 0 (#0) で指定しなければならない。 %  ・同様に、@I(楽器)も複数指定可能とし、トラックの楽器を %   曲途中で変更できるようにした。 %  ・音長(音の実際になる長さ)を指定できるようにした。 %  ・マクロ機能(マクロ文字列の設定)を加えた。 %  ・クレッシェンド/デクレッシェンド、リタルダンド/アッチェレランドなど、 %   強弱やテンポを順次変更していく簡単な機能を加えた。 %  ・マスターボリュームを設定できるようにした。 % (以下は上級者向け) %  ・楽器指定(プログラムチェンジ)でバンク選択をできるようにした。 %   例えば楽器番号 12 をバンク 1/5(1 が上位バイト、5 が下位バイト)とするには、 %    @I12:1:5 %   のように書く。(詳細準備中) %  ・バンク選択以外のコントロールチェンジを書けるようにした。 %   (詳細準備中) % #0 @T4/4 @K0 O4 L4 V90 @M120 % テンポの初期設定(デフォールト値と同じ) % これが @M= で戻る「初期テンポ」になります。 \reset="@M=V90 O4L4R1" % マクロの使用例(マクロ機能も参照) % 以下で \reset というマクロ名は、@M=V90 O4R1 という % 文字列に置き換えられる(標準設定に戻して1小節休む) % % テンポの変更例 % cdefgab % 初期テンポでの音階 \reset % 標準設定に戻して1小節休む。以下も同様 @M60 % テンポを半分に(1拍の長さを2倍に) cdefgab % 同じ楽譜情報で長さが2倍になる。 \reset @M240 % テンポを倍に(1拍の長さを半分に) cdefgab % 同じ楽譜情報で長さが半分になる。 \reset % 初期テンポ @M120 に対し、上の @M60, @M240 はそれぞれ、 % @M/2(あるいは @M=/2)、@M*2(あるいは @M=*2)と書いてもよい。 % % テンポの順次変更(リタルダンド、アッチェレランド) % {cdefgab}m120:60 % テンポを 120 から 60 に遅くしていく(リタルダンド) \reset {cdefgab}m120:180 % テンポを 120 から 180 に速くしていく(アッチェレランド) \reset % % 強弱の順次変更(クレッシェンド、デクレッシェンド) % {cdefgab}:60:120 % 音の強さを 60 から 120 に上げていく(クレッシェンド) \reset {cdefgab}:120:60 % 音の強さを 120 から 60 に下げていく(デクレッシェンド) \reset % % 音長の変更 % @*0.4 % 音長を音符の長さの 0.4 倍に(スタッカート) cdefgab % c*0.4 d*.04 ... のように各音に指定するのでもよい。 \reset @*1.1 % 音長を音符の長さの 1.1 倍に(レガート) cdefgab \reset @*1 % 標準値に戻す % % マクロ機能 % \a="cdef" % \a というマクロ名に cdef という文字列を定義 \a\a % これは cdefcdef と同じになる。 \reset \a2="\a\a" % マクロ定義の中でマクロ名を使ってもよい。 \a2 % これは \a\a、したがって cdefcdef と同じ \reset c:0