┏━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ ミューズ(Muse) ┃ http://kato.chobi.net/ ┃
┃ 取扱説明書 ┃ kato@my.zaq.jp ┃
┃ ┃ 加藤 一郎 ┃
┣━━━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ ♪♪♪ このファイル自体がMuseデータのサンプルとなっています ♪♪♪ ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
(注) Sample*.mus および Readme.txt の例示曲は
著作権に抵触しないことを確認しております。
目次
- 【第1章】アプリケーション概説
- 【第2章】コーディングの手引き
- [1]ピアノ独奏
- (1- 1) まずはドレミを鳴らしてみよう
- (1- 2) オクターブの指定はどうやるのかな
- (1- 3) 半音の指定はどうやるのかな
- (1- 4) 調性の指定方法
- (1- 5) 音の長さを指定しよう
- (1- 6) 付点の表現
- (1- 7) タイの表現
- (1- 8) コメントを使って可読性を高める
- (1- 9) スタッカートの指定方法
- (1-10) 省略音長について
- (1-11) 連符の表現
- (1-12) テンポを変えてみる
- (1-13) 装飾音の付け方
- (1-14) 音の強さを指定しよう
- (1-15) 音部記号について
- (1-16) 和音とタイミングコントロール
- (1-17) コードによる伴奏
- (1-18) 音符の連結
- (1-19) 再現表記の活用
- (1-20) アクセントを付ける
- (1-21) グルーヴ感を与える
- (1-22) アルペジオの記述方法
- (1-23) 最小分解能と微分音長
- (1-24) エコーをかける
- [2]アンサンブル演奏
- (2- 1) メンバーとフィンガーの概念
- (2- 2) 演奏タイミングを強制的に合せる
- (2- 3) 繰返し記述と複写機構
- (2- 4) パーカッションの演奏方法
- (2- 5) フィンガー単位に指定する値
- (2- 6) メンバー単位に指定する値
- (2- 7) 音色の指定
- (2- 8) クレッシェンドとデクレッシェンド
- (2- 9) ステレオ効果の利用
- (2-10) 移調の仕方
- (2-11) 楽器の音色をアレンジする
- (2-12) なめらかなグリッサンド
- (2-13) ダンパーペダルの操作
- (2-14) 全体に影響を及す値
- (2-15) リタルダンドとアッチェレランド
- (2-16) ノンレガートな奏法
- (2-17) アーティキュレーションの指定
- (2-18) 強弱と音量の関係
- (2-19) 発音中の音量を変化させる
- (2-20) コードの転回形
- [3]より高度な記述
- (3- 1) コマンドによる制御
- (3- 2) カラオケとして利用する
- (3- 3) 楽曲中の位置決めを容易にする
- (3- 4) 途中で強制的に停止させる
- (3- 5) 表示フォントを切換える
- (3- 6) 音声ファイルを再生させる
- (3- 7) マクロで各種の繰返しに対応する
- (3- 8) 演奏パターンの部品化
- (3- 9) スコア譜とパート譜の混在
- (3-10) メンバー色をカスタマイズする
- (3-11) ドラマーの転向について
- (3-12) ドラムロールの響きを向上させる
- (3-13) 演奏会場を設定する
- (3-14) 移調楽器をフィンガー毎に割り当てる
- (3-15) フィンガー属性を一気に指定する
- (3-16) 音色バリエーションを指定する
- (3-17) 波形を加工する
- (3-18) ペダル踏み替えタイミングの調整
- (3-19) 表示済みテキストに追記する
- (3-20) コメントスイッチの活用
- (3-21) コントロールの指定
- (3-22) エクスクルーシブの指定
- (3-23) MP3エクスポートのオプション
- (3-24) 楽譜の体裁を整える
- [4]補足
- [1]ピアノ独奏
- 【第3章】機能詳説
- ( 1) Museファイルのロード
- ( 2) 演奏の仕方
- ( 3) シークバーの扱い方
- ( 4) キー操作による演奏制御
- ( 5) 楽器やドラムの試聴
- ( 6) メンバー情報の確認
- ( 7) フィンガー情報の確認
- ( 8) 譜面モニタの使い方
- ( 9) 音源の選択
- (10) サウンドフォントの活用
- (11) VSTiプラグインの活用
- (12) 演奏会場の確認
- (13) フォントの確認
- (14) 配色マップの活用
- (15) MIDIファイルの保存
- (16) WAVEやMP3ファイルへの出力
- (17) 楽譜の印刷
- (18) MIDIキーボードの接続
- (19) 初期化ファイルによる指定
- (20) 履歴について
- (21) 繰返し演奏
- (22) コマンドラインによる起動
- (23) マニュアル表示
- 【第4章】文法リファレンス
- 音符記述
- フィンガー系
- メンバー系
- 全域指定
- コマンド系
- ≫≫≫ 著作権などについて ≪≪≪
- 《 開発後記 》
- 《Ver1.0 開発後記》1999.03.01
- 《Ver1.1 開発後記》1999.03.03
- 《Ver1.2 開発後記》1999.03.05
- 《Ver1.3 開発後記》1999.03.11
- 《Ver1.4 開発後記》1999.03.20
- 《Ver1.5 開発後記》1999.04.02
- 《Ver1.6 開発後記》1999.04.08
- 《Ver1.7 開発後記》1999.04.30
- 《Ver1.8 開発後記》1999.06.01
- 《Ver1.9 開発後記》1999.06.12
- 《Ver2.0 開発後記》1999.06.20
- 《Ver2.1 開発後記》1999.06.26
- 《Ver2.2 開発後記》1999.07.07
- 《Ver2.3 開発後記》1999.08.08
- 《Ver2.4 開発後記》1999.08.15
- 《Ver2.5 開発後記》1999.08.25
- 《Ver2.6 開発後記》1999.09.22
- 《Ver2.7 開発後記》1999.10.04
- 《Ver2.8 開発後記》1999.10.30
- 《Ver2.9 開発後記》1999.11.23
- 《Ver3.0 開発後記》1999.12.30
- 《Ver3.1 開発後記》2000.01.15
- 《Ver3.2 開発後記》2000.03.02
- 《Ver3.3 開発後記》2000.04.03
- 《Ver3.4 開発後記》2000.05.10
- 《Ver3.5 開発後記》2000.06.17
- 《Ver3.6 開発後記》2000.07.23
- 《Ver3.7 開発後記》2000.08.10
- 《Ver3.8 開発後記》2000.09.29
- 《Ver3.9 開発後記》2000.10.21
- 《Ver4.0 開発後記》2000.12.06
- 《Ver4.1 開発後記》2001.03.04
- 《Ver4.2 開発後記》2001.04.16
- 《Ver4.3 開発後記》2001.07.08
- 《Ver4.4 開発後記》2001.11.18
- 《Ver4.5 開発後記》2002.02.02
- 《Ver4.6 開発後記》2002.09.06
- 《Ver4.7 開発後記》2003.02.12
- 《Ver4.8 開発後記》2003.05.25
- 《Ver4.9 開発後記》2006.05.12
- 《Ver5.0 開発後記》2007.05.18
- 《Ver5.1 開発後記》2007.06.30
- 《Ver5.2 開発後記》2007.10.10
- 《Ver5.3 開発後記》2008.02.06
- 《Ver5.4 開発後記》2008.07.11
- 《Ver5.5 開発後記》2010.01.09
- 《Ver5.6 開発後記》2010.02.17
- 《Ver5.7 開発後記》2010.04.09
- 《Ver5.8 開発後記》2010.04.24
- 《Ver5.9 開発後記》2011.04.23
- 《Ver6.0 開発後記》2011.07.06
- 《Ver6.1 開発後記》2012.06.03
- 《Ver6.2 開発後記》2012.08.16
- 《Ver6.3 開発後記》2013.01.08
- 《Ver6.4 開発後記》2013.04.25
- 《Ver6.5 開発後記》2013.06.23
- 《Ver6.6 開発後記》2013.11.10
- 《Ver6.7 開発後記》2014.02.25
- 《Ver6.8 開発後記》2015.01.10
- 《Ver6.9 開発後記》2015.05.05
- 《Ver7.0 開発後記》2015.07.01
- 《Ver7.1 開発後記》2016.01.03
- 《Ver7.2 開発後記》2016.01.30
- 《Ver7.3 開発後記》2016.02.29
- 《Ver7.4 開発後記》2016.05.03
- 《Ver7.5 開発後記》2016.09.10
- 《Ver7.6 開発後記》2016.10.15
- 《Ver7.7 開発後記》2017.01.27
- 《Ver7.8 開発後記》2018.08.18
- 《Ver7.9 開発後記》2019.08.17
- 《Ver8.0 開発後記》2020.02.28
- 《Ver8.1 開発後記》2021.02.26
【第1章】 アプリケーション概説
[1]Museとは何か
Muse(ミューズ)はテキストファイルで譜面を記述し、 そのファイルを読込ませて音楽を演奏させるソフトウェアです。 主な特徴は以下の通りです。 ・複雑なクラシック曲にも耐えうる柔軟かつシンプルな記述文法 ・高速なデータロードと正確かつ軽快なシーク処理 ・音色ごとに色づけされたピアノ鍵盤の自動演奏 ・疑似楽譜上でデータを視覚的に確認できる譜面モニタ ・歌詞やコメントを任意のタイミングで表示できるテキストエリア ・サロゲートペアを含むユニコード(UTF-8/UTF-16)に対応 ・WAVEやMP3などのオーディオファイルを効果音として曲中再生可能 ・楽器やドラムの音色を一覧形式で試聴確認できる機能ウィンドウ ・波形加工や演奏会場など音色のエフェクトを確認できるダイアログ ・サウンドフォントやVSTiを音源メニューに追加し簡便に切替選択 ・作成したデータはMIDIファイルはもとよりWAVEやMP3でも保存可能 ・作成データから直接PDF楽譜を出力できるLilyPond駆動機構 ・MuseLoid音源にて伴奏付きで歌唱させるデータ作成が可能 ・複数サウンドフォントを組み合わせたオリジナル楽団の編成 ・sfzを活用したサンプリング音源の構築機構 ・MIDIキーボードを接続しデータを再生しながら合奏可能 ・お気に入りのデータをメニューに組み込むアルバム機構 ・シャッフル再生も可能なアルバム登録曲の連続演奏 ・文字フォントや配色などを確認しデータ作成を支援するツール ・高速なインクリメンタルサーチを備えたマニュアル閲覧機構 ・本マニュアル自体がMuseデータであり記述例を試聴しながら習得可能 ※ 対応OS:Windows Vista /7 /8 /8.1 /10
[2]インストールとアンインストール
●必要なファイルは、muse.exe と Readme.txt(本ファイル)の2つだけです。 適当なフォルダにコピーすればインストールは完了です。 ●bass.dll,bassmidi.dll,bassenc.dll は、un4seen が提供しているライブラリ です。サウンドフォント演奏やエクスポート処理に活用しています。これらの機 能を利用する場合は、muse.exeと同じフォルダに配置してください。利用しない 場合は、削除しても他の機能に影響はありません。 (注)BASSライブラリの著作権は、別に保護されています。 ●添付ファイルの“clap.mp3”は必須ではありませんが、Readme.txtの曲例で使用 しているため同一フォルダに配置することを推奨します。Sample*.musのファイル 群は文字通りサンプルです。どんなフォルダに置いても構いません。削除してい ただいても結構です。 (注)すべてのSample曲および本Readme.txtに収録している楽曲は、 日本音楽著作権協会の作品検索で、著作権の消滅を確認しております。 詳細は、≫≫≫ 著作権などについて ≪≪≪ をご覧ください。 ●初回の起動で、初期化ファイル(muse.ini)と、履歴ファイル(muse.log)の2つが、 muse.exeの存在フォルダに自動生成されます。 (注)“Program Files”や“My Document”など、アクセス検閲のあるフォルダに インストールすると、muse.ini や muse.log が生成されない場合があります。 アクセス権限の縛りがないMuse用のフォルダを作成し、そこにインストール する事をお勧めします。 ●アンインストールは、インストールしたフォルダにあるファイルをごっそり消去 すれば完璧です。レジストリへの書き込みは一切していません。
[3]Museデータの基本的な作成手順
Museデータは単純なテキストファイルです。このデータファイルは、メモ帳などを 使って作成します。以下、Museデータを新規作成する場合の手順を示します。 (初心者の方のために、一般のテキストエディタを“メモ帳”と表現しています)
┌──────────────────────────┐ ①│ メモ帳を起動し、Muse文法に従ったテキストを入力する │ └──────────────────────────┘ │⇒「名前を付けて保存」 ↓ ┌────────────────────────────────┐ ②│ Museの「ファイル(F)」→「開く(O)」にて、保存したデータを読込む │ └────────────────────────────────┘ ↓ ┌───────────────┐ ┌→③│ Museの鍵盤をクリックして演奏 │ │ └───────────────┘ │ ↓ │ ┌───────────────────┐ │ ④│ メモ帳に戻って、データを加筆修正する │ │ └───────────────────┘ │ │⇒「上書き保存」 │ ↓ │ ┌───────────────────────────────┐ │ ⑤│ Museの「ファイル(F)」→「リロード(L)」にてデータを再度読込む │ │ └───────────────────────────────┘ │ │以降、③④⑤の繰返し └───┘
●新規作成ではなく既存データを手直しする場合は、上記②の作業から始めること になります。Museにデータを読込んだ後「ファイル(F)」→「データ編集(D)」を 選択すると、そのデータを読込んだメモ帳が起動します。 (注)手順①で「名前を付けて保存」する際、他のテキストデータと区別するため に、拡張子を.musにすることを推奨します。更に、この拡張子をMuseに関連 付けしておけば、エクスプローラでMuseデータをダブルクリックするだけで、 簡便にMuseを起動できる様になります。 ●Museデータ作成作業(Musing)において、譜面モニタは絶大な威力を発揮します。 特に任意の譜面位置を右クリックする「リロード&ラン」の機構は手順③④⑤の 繰返し作業を大幅に効率化させます。ぜひご活用ください。譜面モニタの利用方 法は、【第3章】機能詳説 の“( 8) 譜面モニタの使い方”をご覧ください。 (注)以上の操作説明は基本的な流れだけです。詳細な操作仕様や、Musingを支援 するダイアログの使い方に関しては“【第3章】機能詳説”をご覧ください。 また、Museデータの文法に関しては“【第2章】コーディングの手引き”を 参照してください。
[4]高度な機能を活用するための準備
Museは、他の優れたソフトウェアと連携させることで、以下に示すような機能を 付加することが可能です。基本的に連携のためのセッティングは一回行えば済む ようになっており、一度連携させてしまえばあたかもMuseの機能の一部のように 利用することができます。またソフトウェアとしての依存関係はありませんので、 後々連携を解除することも簡単にできます。 (注)以下で紹介する機能はあくまでもオプションです。 利用しない場合は、対応ソフトやプラグインのインストール作業は不要です。 また、同梱しているBASSライブラリ群(*.dll)も、以下で紹介するサウンド フォントやエクスポート機能を利用しない場合は不要です。 ●サウンドフォントの活用 ・サウンドフォント(*.sf2)を入手すると利用できるようになります。 ・Muse音源メニューからダイレクトにサウンドフォントの音源指定ができます。 ・MuseLoid規格のサウンドフォントを利用すると、歌唱させることができます。 ・WAVEファイルやMP3ファイルへのエクスポートが可能です。 ・楽団編成ファイル(*.sfm)を準備すると、複数のサウンドフォントを組合わせ た演奏や、sfz形式のサウンドフォント演奏も可能となります。 (注)MuseLoidを利用したデータの作成に関しては、 “(4- 9) MuseLoid対応データの作成要領”を参照してください。 ●VSTiプラグインの活用 ・VSTiライブラリ(*.dll)を入手すると利用できるようになります。 ・Muse音源メニューからダイレクトにVSTiの音源指定ができます。 ・WAVEファイルやMP3ファイルへのエクスポートが可能です。 (注)対応プラグインは、VSTi2.4(32bit版)です。 ●PDFによる楽譜の出力 ・フリーソフト“LilyPond”をインストールすると利用できるようになります。 ・ロードしているMuseデータ内容を、PDFの楽譜で出力することが可能です。 ・楽譜の体裁を整えるためのコマンドも準備されています。 詳細は【第2章】コーディングの手引きの“ (3-24) 楽譜の体裁を整える” をご覧ください。 (注)具体的なセッティング方法は“【第3章】機能詳説”を参照してください。 ・サウンドフォント関係 → (10) サウンドフォントの活用 ・VSTi関係 → (11) VSTiプラグインの活用 ・エクスポート関係 → (16) WAVEやMP3ファイルへの出力 ・LilyPond関係 → (17) 楽譜の印刷
【第2章】 コーディングの手引き
本章は、Museファイルのコーディング例が各所に出てきます。例示の部分は、行頭 1文字目にセミコロンやパーセントの無い行です。 実は、このReadme.txt自体が Museのデータファイルになっています。本ファイルをMuseに読込ませて実際に聴き ながら読んでいただくと、理解も早いと思われます。演奏は各節で一時停止する様 にしました。鍵盤をマウスクリックして次に進めてください。シークバーの左右の 三角ボタンで位置決めもできます。
[1]ピアノ独奏
(1- 1) まずはドレミを鳴らしてみよう
楽典における音名は以下の様に4系統あります。
日本 : ハ ニ ホ ヘ ト イ ロ 英米 : C D E F G A B 独 : C D E F G A H ← 古代旋法の名残でHである。 伊 : Do Re Mi Fa Sol La Si
Museはこの内、日本の小学生に馴染の深いイタリア系と、音楽的素養をお持ちの方 向けに英米系、更にグレードの高い独系の3種類の記譜をサポートしています。デ フォルトでは、イタリア語になっています。つまり“ドレミファソラシ”です。こ れらの各音を“d r m f s l c”という小文字アルファベットに対応させています。 これを並べれば音が出ます。休符も一種の音名ととらえ、アンダーバー“_”で表 現します。各音の間のスペースはなくとも構いません。
d r m f s l c _
英米系における対応文字は“c d e f g a b”です。独系は英米系に対し、最後の “b”が“h”となり、“b”は“h”の半音下がった音として解釈されます。これら 音名の切替えは、記譜する前に“x”指定を与えることで行います。“x0”がイタ リア系、“x1”が英米系、“x2”が独系です。
x2 c d e f g a h _ x0 c l s f m r d _
(注)実はMuseの音名は「音階」の名称というよりは、五線譜上の「位置」の名称と 定義する方がふさわしいのです。ですから、まさに“日本人”の多くが愛用し ている“ドレミ”の概念に近いと言えます。以降、本マニュアルではイタリア 系の音名で説明を進めます。
(1- 2) オクターブの指定はどうやるのかな
オクターブの指定は、o- o0 o1 o2 o3 o4 o5 o6 o7 o8 o9 で行います。添えられ た数字が大きくなる程高いオクターブを表します。基本のドはo4に設定されていま す。この他にも、現在のオクターブを相対的に上下させる“<”“>”があります。
o4 d r m f s l c o5 d r m f s l c o6 d _ o3 d r m f s l c < d r m f s l c < d _
相対オクターブ指定のみで記述しておくと、出だしの絶対オクターブの指定を切替 えるだけで、全体のオクターブをシフトできるので便利です。 (注)鍵盤上に表示される音域は、o0 f から o8 m までですが、それを越える音域 も発音は可能であり、譜面モニタには音符が表示されます。実際の発音範囲は、 o- d から o9 s までです。
(1- 3) 半音の指定はどうやるのかな
シャープは音名の後ろに“+”を添え、フラットは音名の後ろに“-”を添えます。
o4 d d+ r r+ m f f+ s s+ l l+ c < d d > c c- l l- s s- f m m- r r- d _ _
(注)ドイツ音名の場合、Bes(ベス)は b- と記述します。 また、ダブルシャープ、ダブルフラットを指定する場合は、それぞれ“++”“--” と2つの記号を続けて音名の後ろに添えてください。
d++ m--
なお、Muse記法は小節の概念がないため、臨時半音記号が小節内で効果があるとい う楽譜の一般則は当てはまりません。必要な箇所には個々に付けてください。ただ し、次の節で紹介する調性の指定は可能です。
(1- 4) 調性の指定方法
調性が決っている場合、いちいち各音に“+-”を添えるのが面倒なのは譜面と同じ です。この様な場合は“\”の後に“+”“-”を必要な数だけ添えて調を指定でき ます。以下はイ長調の例です。この例では降下する時にナチュラルにしてみました。 ナチュラルの指定は音名の後ろに“=”を添えて指定します。当然のことながら、 臨時記号として添えた“+”“-”“++”“--”“=”は調性より優先します。
\+++ o4 c < d r _ m f s _ s= f= m _ r d= > c _
調の変更は任意のタイミングで行うことができます。ハ長調に戻す時は“\=”とい う記述をします。 (注)ドイツ音名指定“x2”の場合、音名“b”は調性の影響を受けません。 また、音名“h”はフラット系の調性の影響を受けません。
(1- 5) 音の長さを指定しよう
音名あるいは半音記号“+-=”の後に数字を添えて音長を表します。添える数字は、 1,2,4,8,16,32,64 の7種類に限定されており、それぞれ全音符、二分音符、四分 音符、八分音符、十六分音符、三十二分音符、六十四分音符に対応しています。 休符の長さもこの数字を添えて表現します。
\= r8 f8 l4 l8 l8 l4 s8 l8 c-4 c-8 c-8 c-2 l4 m8 f8 s4 f8 m8 l1 _2 _4
また、64分音符より短い音長が指定できる微分音長も用意されています。 詳細は“(1-23) 最小分解能と微分音長”を参照してください。 (注)音長にゼロを指定することも可能ですが基本的に演奏されない音となります。 ゼロ音長の効能は、以下の節を参照してください。 →“(1-16) 和音とタイミングコントロール” →“(1-19) 再現表記の活用”
(1- 6) 付点の表現
付点は音長数字の後にピリオド“.”を添えて表現します。
\= o5 d4 f4. f8 f4 l4 s4. f8 s4 l4 f4 f4 l4 < d4 r2 _4
複付点は2つのピリオド“..”で表現します。添えられる付点は2つまでです。 3つ以上の付点を添えたい場合は、次節で紹介する音長の加算を活用してください。
(1- 7) タイの表現
音長数字は“^”を挟んで連ねることで、加算できます。この記号を音長の加算記 号と呼びます。この加算記号はいくつでもつなげることができるので、音長に関し かなり柔軟に対応できます。したがって、ほとんどのタイ記述は本指定でできます。 前節の付点、複付点はもちろん、複々付点にあたる長さも表現できます。
\++++ o4 >c2< m2 r4 m4 f2^2. s4 s4 f4 s1^4 l4 l4 s4 <d2.> c4 l4 s4 r4 m4 f1 _2
(注)後述する連符にかかるタイや、マクロ範囲をまたがるタイなどを記述する必要 がある場合は“音符の連結”という概念を用います。 →“(1-18) 音符の連結”を参照のこと。 何小節もかけてタイが続く様な場合、綿々と加算記号を記述することになります。 この様な時は、バッククォート“`”を利用すると簡潔に記述できます。 この記号は乗算記号と呼び、添えられた音長を指定数だけ繰返し加算します。
d2^2^2^2^2^2^2^2^2^2^2^2^2^2 → d2`14
乗算記号と加算記号は混在して記述できます。この場合、乗算記号が優先して演算 されます。なお、乗算記号は連続して記述することもできます。
d1^2`4^8`3 → d1^2^2^2^2^8^8^8 (乗算記号が優先する例) d2`4`3 → d2`12 (乗算記号が連続する例)
(1- 8) コメントを使って可読性を高める
音程と音長が組合わさると音楽の様相を成してきます。一つ比較的長めの旋律を書 いてみましょう。本格的に曲を記述する場合、可読性のあるコーディングを意識す る必要があります。Museは可読性を高めるため、次の様なコメント記述を準備して います。 【ライン・コメント】 ・セミコロン(;)以降改行まではコメントとして無視する。 【ブロック・コメント】 ・感嘆符(!)で囲まれた部分はコメントと見なす。 ・8個までの感嘆符を列挙することで、その数で対を成した領域指定ができる。 ・後部の感嘆符がない場合は、前部からファイル末尾までをすべて無視する。 【キャンセル文字】 ・スペース・タブ・改行・全角文字・半角カタカナ・半角縦棒(|)は無視する。
★線路は続くよどこまでも(アメリカ民謡) \+ ┃ s4.r8s8.r16s8.l16 ┃ c2s2 ┃ <d4.d8>s4l4 ┃ c2._4 ┃ ┃ s4.r8s8.r16s8.l16 ┃ c2s2 ┃ l4.l8l4c4 ┃ l2._4 ┃ ┃ l4.l8s+8.l16c8.l16 ┃ s2r2 ┃ <d4d4>s4l4 ┃ c2._4 ┃ ┃ m4.f8s8.f16s8.m16 ┃ r4.r8s2 ┃ c4.<d8>c4l4 ┃ s2._4 ┃
特に、半角の縦棒(|)や全角の縦棒(┃∥)は小節の区切りとしてお薦めです。 他にも 〓 ⇒ ⇔ Γ ∧ ∨ < > ⌒ ∩ ¬ : ※ ♯ ♭ ♪ † ‡ ¶ などなど、 全角文字の豊富な表現力を、すべてコメントとして使用できます。 (注)Museが演奏対象とする文字コードはASCIIコードの範囲であり、ユニコードに よる拡張範囲は含まれません。それらは全角文字と等価に扱われます。 セミコロンは、ある行をちょっとコメントアウトしたい時や、行の末尾にコメント を付けたい時などに便利です。 感嘆符は、開始側だけ記述すれば、そこから最後までをすべてコメント化すること ができるので、ある程度書き進んだデータの途中部分をデバッグする時に便利です。 また、このブロックコメント(!)は、その感嘆符の数で対応する領域をコメント化 します。例えば以下の様な場合、領域②④は!で囲まれているので、当然コメント ですが、①③も!!!で囲まれているためコメントとなります。
!!! ① !②! ③ !④! !!!
この様にMuseのブロックコメントは感嘆符の数により対を成し、入れ子を構成する ことが可能です。ただし、感嘆符の列挙記述の上限数は8個(!!!!!!!!)までです。 なお、セミコロンは感嘆符より優先されるので、セミコロン以降改行までの感嘆符 は、ブロックコメントの指定文字として機能しません。 (注)ダブルクォート内の ! や ; は文字として扱われます。ブロックコメント内の ダブルクォートにもこの規則が適用されるため、ダブルクォートは常に「対」 にして記述してください。ブロックコメント内に「単独」のダブルクォートを 記述したい場合は、開始側のダブルクォートの前にセミコロン(;)を与えて、 ライン・コメント化してください。
(1- 9) スタッカートの指定方法
スタッカートは音長数字や付点の後にスラッシュ“/”を添えることで表現します。 スラッシュは最大4つまで付けることができ、その数でスタッカートの強さを表し ます。
★ベートーベン 交響曲第6番「田園」 \- o4 ┃_8.l8.c8.<r8. ┃d8.>c16.l16.s8. d8. ┃f8.s8.l8.c16.l16.┃s2. ┃_8.l8.c8.<r8.///┃d8.>c16.l16.s8.////d8.////┃f8.s8.l8.c16.l16.┃s2. ┃_1 ┃
スタッカートの目安は以下の通りです。 / → メゾスタッカート // → スタッカート /// → スタッカティシモ //// → スタッカティシシモ (注)スラッシュの数と音長の定量的な関係は“(2-16) ノンレガートな奏法”また は“【第4章】文法リファレンス”を参照してください。更に繊細な曲想を表 現したい場合は“(2-17) アーティキュレーションの指定”をご覧ください。 なお、加算記号で音長を連ねた場合は、最後の音長のみにスタッカートを記述する ことができます。ただしスタッカートの効果は、加算乗算後の全体の音長に対して 与えられます。最後の音長値のみに掛かるわけではありません。
(1-10) 省略音長について
省略音長とは、本来記述すべき音長部分の指定が省略された場合、直前の音符や休 符で指定した音長が採用されるという機構です。音長の変り目だけを意識すれば良 いので、記述量がぐっと減ります。
★アルプス一万尺(アメリカ民謡) \+ o4 s8 s8 l8 c8 s8 c8 l8 r8 s8 s8 l8 c8 s4 f8 r8 ;省略音長を使用しない例 s8 s l c <d> c l s f r m f s4. ;省略音長を使用した例 _8
省略音長の対象には、スタッカートの指定も含まれます。次にスタッカートを明示 しない限り、直前のスタッカートが引継がれます。省略音長からスタッカートをク リアしたい場合は、スタッカートのない音長数字を明示してください。
スタッカートのみ切替え ここでスタッカートをクリア ↓ ↓ d8/ r m f/// s8 c (省略音長を使用した場合) ↓ d8/ r8/ m8/ f8/// s8 c8 (省略せずに記述した場合)
(注)スタッカートをクリアする方法は、音長数字を明示する代わりに /0 や /= を 指定する方法もあります。/0 と /= の違いや、それらの指定方法については、 “(2-17) アーティキュレーションの指定”を参照してください。 加算記号を使いつつ局所々々で音長を省略すると、省略部分それぞれに直前の音符 の音長がセットされます。そして結果として生成された全体の音長が新たな省略音 長として次の音に継承されていきます。
┌─┬─┐前音の四分音符が省略位置に入る │ ↓ ↓ d4 m ^8^ s → d4 m4^8^4 s4^8^4 └┬┘ ↑ └──┘前音の音長全体が省略位置に入る
ただし、加算記号を使った音長表現の場合、その省略部分にスタッカートは展開さ れず、音長のみがセットされます。そして全体として新たな音長がセットされたと みなされ、継承するスタッカートはクリアされます。
d4// m^8^ s → d4// m4^8^4 s4^8^4
一方、加算記号を使った音長表現自体にスタッカートを付けた場合は、音長と共に スタッカートも継承されていきます。
d4 m^8^// s → d4 m4^8^4// s4^8^4//
(1-11) 連符の表現
連符は、丸括弧( )で音名を括り、閉じ括弧側に音長を添えることで表現します。 添えた音長内で括弧内の音がすべて収まる様に各音の音長が配分されます。八分音 符内に納める三連符は次の様になります。
( d r m )8
なお連符における音長も省略可能であり、省略音長の概念が適用できます。
★ヴェルディ「アイーダ行進曲」 \- o4 d4 ┃f2. (sds)4 ┃ l l l (lcf) ┃ l4. s8 f4 _ ┃ ┃s8 l l8. s16 f8 _ s8. l16 ┃ l4 s8. l16 l4 f8. s16 ┃ s2. _2
この連符記法は括弧内に入る音符の数で何連符か判断します。また括弧末尾に付け る数値で音長を自由に指定できますから、トリルやグリッサンドなどの奏法記述に 利用することができます。
\= ( <drdrdrdrdrdr> )2 ← トリル ( <mff+ss+ll+c<dd+rr+m>> )2 ← グリッサンド
(注)トリルのような繰返しは“(2- 3) 繰返し記述と複写機構”が有効です。 繰返し数でトリルの速度を制御できるので調整が簡便になります。
( fsfsfsfsfsfs )2 → ( {fs}6 )2
連符内の音符に音長を与えるとその比率で演奏されます。これにより、連符内での 不均一な音長記述や、装飾音記述が可能となります。これを連符内スケーリングと 呼びます。
_4. m4. f4. ( s-32 s4 l-32 l4 c-32 c4 )4. < d2 >
連符内スケーリングの規則に従うと、以下の2つは同じ演奏になります。
( d4 m4 s2 )2 ( d8 m8 s4 )2
連符内の音符が省略音長だった場合、閉じ括弧に添えられた音長がそこに与えられ ます。よって、連符全体をスタッカートで演奏したい場合は、閉じ括弧に添えた音 長にスタッカート指定をすれば、それを実現できます。
( d r m f s )2//
中身のない連符は、直前に記述した連符の再現を意味します。この記法を利用する と、同一のアルペジオパターンが繰り返される演奏を簡素に表記できます。
o3 ( ds<dmmfmd> )2 ( ds<dmmfmd> ) ( ds<dmmfmd> ) ( ds<dmmfmd> ) _4 ↓ ↓ ↓ o4 ( ds<dmmfmd> )2 () () () _4
(1-12) テンポを変えてみる
テンポの指定は“%”に続く 1~999 の範囲の数値で行います。この数値は1分間 あたりの四分音符の拍数を表します。テンポ指定は任意のタイミングで何度でも変 更できます。
★おお牧場はみどり(チェコスロバキア民謡) \+ %120 o4 r4 >c8.< d16 r4 c s m r2 %80 o2 c8 c4 <d8> c4 l l8 l4 c8 l s c4 %300 o5 r4 >c8.< d16 r4 c s m r2 c8 c4 <d8 r4 d> m f s _
(1-13) 装飾音の付け方
装飾音がある場合、それが付いている音符を装飾音の音長分だけ短くし、そこに装 飾音を埋込んで、全体として拍が合う様にする必要があります。この様な局面の記 述をする場合には音長を少しだけ短くする指定があると便利です。この指定方法は “~”を用いて行います。この指定記号を音長の減算記号と呼びます。 例えば、四分音符の長さを十六分音符だけ短くするには次の様に指定します。
d4~16
実際にこの記法を使った演奏例は、以下の様になります。
★サラサーテ「チゴイネルワイゼン」 %60 \--- o5 > s8 < d8 r8 m2 r4 (drmr)16 d4~16 > c=16 < d2 _16
加算記号“^”を音長のプラス記号とすれば、減算記号“~”は音長のマイナス記号 と例えることができます。よって、同じ結果になる表現方法が存在します。
d4^8^16^32 → d2~32
減算記号“~”指定は、いくつでもつなげられる性質や省略音長に対するルール等、 すべて加算記号“^”の指定と同じです。また、両者を混在して記述することもで きるため、結果として3つの演算記号(加算・減算・乗算)は数式風に記述できます。
d2^4^8`3~16 → 2分音符+4分音符+(8分音符×3)-16分音符
なお、減算記号における音長も省略可能であり、省略音長の概念が適用できます。 例えば以下の様な前打音装飾であれば、うまい具合に装飾分の音長が継承されます。
(slcl)16 s8.~ …… 省略音長を利用した記述 (slcl)16 s8.~16 …… 実際に演奏される結果 │ ↑ └───┘
(1-14) 音の強さを指定しよう
音の強弱は“v”に続く0~127の範囲の数値で行います。この数値は数が大きいほ ど強くなり、0で無音状態となります。
★スメタナ 交響詩「我が祖国」より“モルダウ” %100 \+ o4 v90 >c8< m4 f8 s4 l8c4c8c4. <d4. d> c4.^4 _2 v50 >c8< v80 m4 v60 f8 v90 s4 v60 l8c4c8c4. v120 <d4. d> v70 c4.^4 _2
また“v”の後に符号±付の数値を指定すると、現在の強弱値を相対的に変化させ ることができます。相対指定で記述しておくと、出だしの絶対指定を切替えるだけ で、強弱の流れを保ったまま、全体の強さをシフトできるので便利です。
v30 d4 v+30 m4 v+30 s4 v+30 <d4> v-30 s4 v-30 m4 v-30 d4 _
(注)相対変化の結果が 0~127 の範囲を越える場合は、0あるいは127の限界値 がセットされ、文法エラーとしての検出はしません。
(1-15) 音部記号について
音部記号には、一般に馴染み深い“ト音記号”や“ヘ音記号”の他に“ハ音記号” というものもあり、しかもハ音記号はソプラノ記号からバリトン記号まで5種類も 存在します。結局、音部記号は合計7つの種類があることになります。馴染みの薄 い音部記号でかかれた譜面を読みとるのは大変労力が要ります。 そこで音部記号“?”を導入しました。“?”に続く0~6の数字で7種の音部記号を 表します。この7つの分類に関しては“【第4章】文法リファレンス”を参照して ください。この記号は、譜面上の音部記号を指定することで、あたかもその譜面が ト音記号で書かれたものとして“d r m”の入力ができるというもので、まさに譜 面を写し取る記法としては極め付け、しかし音楽的には邪道な記法です。ここまで くると、Museにおける“d r m”の記号は「音程」ではなく五線譜上の音符「位置」 を表す記号であると解釈してもらった方が良いかも知れません。 以下の例は、ヘ音記号で書かれた譜面をト音記号で読み取り記述したものです。
★シューベルト「未完成交響曲」 \++ ?6 o4 v127 s2. l2c4 s2. f4rm >c2l4< r2.^1 v100 _2
(注)実音での入力が速やかにできる方はこの指定を使う必要はありません。ヘ音記 号だろうがハ音記号だろうが、“?0”すなわちデフォルト状態で、入力してく ださい。
(1-16) 和音とタイミングコントロール
いよいよ複数の音を同時に鳴らす節にたどり着きました。あるタイミングで同時に 音を鳴らすには、その音を鍵括弧 [ ] で括るだけです。この鍵括弧内にはいくつ でも音を指定でき、すべての音が一斉に鳴り出します。またそれぞれの音に音長を 指定できるので、すぐに終る音から最後まで残る音まで混在させることができます。
%125 \= v100 ?0 o4 [ d2 m2 s2 ] _2 [ d2 f4. l4. ] _2 [ >c2< r2. s1 ] _2 _1
さて、今までの節ではある音を出すタイミングは、その一つ前の音が鳴り終ってか らという暗黙の了解がありました。しかしこの和音においては、それぞれの音の鳴 り終わるタイミングを変えることができるため、次の音が鳴り始めるタイミングを どこかで指定する必要があります。その指定は、閉じ鍵括弧に音長を添えることで 行います。つまり鍵括弧に添えた音長が、和音全体の占有する時間であるという訳 です。よって、この占有音長よりも長い音長の音が和音内に記述されていれば、そ れが鳴りやむ前に次の音が鳴り始めることになります。
%50 [ d2 m2 s2 ]4 < d8 r8 m8 _4. %100 _1
和音においての省略音長は、まず閉じ括弧に添えられた占有音長に伝わり、和音の 先頭に戻って、順次伝播していきます。一般に和音は、和音を構成するすべての音 の長さと、占有音長が一致しているため、省略音長を有効に利用できます。
[ d2. m2. s2. ]2. → [ d m s ]2.
和音における省略音長の継承プロセスは多少複雑なため、以下に図解しておきます。
┌────①───┐ │ ↓ → ♪ [ ♪→♪→♪ ]♪─④→ ♪→ ↑ ③ │ │ │ └──②──┘ ①占有音長が省略されていると、直前の音長値が採用される。 ②和音の初音が省略されていると、占有音長の値が採用される。 ③和音内の省略音長値の継承は、和音内に閉じている。和音外へ継承されない。 ④和音の次の音への省略音長値は、占有音長の音長が採用される。
(例) d8/ [ r m4 f ] s → d8/ [ r8/ m4 f4 ]8/ s8/
連符における省略音長の継承プロセスも、和音と同様のパターンを取ります。
(例) d8/ ( r m4 f ) s → d8/ ( r8/ m4 f4 )8/ s8/
鍵括弧[ ]の記述は、主に和音表現のために使用しますが、括弧内の音長に関わり なく次の音を出すタイミングをコントロールできる記法とも解釈できます。このた めに、鍵括弧に添える音長にゼロを添えることに意味があります。例えば、ドの音 を全音符で鳴らし続けながら、1オクターブ上でドミソの三連符を演奏する場合は、 次の様に記述できます。
%80 o4 [ d1 ]0 < (d m s)1 _
なお、中身のない和音は休符と同じ演奏になります。
[]4 → _4
(注)エクスポートされるPDFファイルには、以下の様な譜刻上の差が出ます。 _4 は休符として譜刻するが、[]4 は占有音長分の空白休符となる。 (ただし、音長が全音を越える場合は、両者とも小節休符が譜刻されます)
(1-17) コードによる伴奏
伴奏を表現する手段として、音楽には“コード”という優れた記法があります。 Museは42個のコードをサポートしており、容易に伴奏を付けることができます。 対応している各コードの詳細については“【第4章】文法リファレンス”を参照し てください。 コードはシングルクォート ' ' で括って表記します。通常譜面には、英米語表記 のCDEFGABの音階に、♯や♭が添えられてルート音が指定され、更にコード ネームが続けて書かれています。Muse記法ではシングルクォートの中に、それをそ のまま書写せばよい様になっています。その際、シャープやフラットは+-の表記 ではなく“#”と“b”(←小文字のB)を使ってください。音長の指定は、閉じ側の シングルクォートの後に音長表現を添えることで行います。なお、この音長も省略 可能であり、省略音長の概念が適用できます。また、オクターブも指定に従います。
'C#m7'4 ← C♯のマイナーセブンスを四分音符で演奏する
コードネームの後には、丸括弧で括ったテンションを与えることができます。 テンションは、-9,9,+9,11,+11,-13,13 の7種類の中から任意に指定できます。 複数のテンションを与える場合は、カンマで区切ってください。 また、コードネームやテンションの後に、分数コード記述によるベース音の追加も 可能です。分数コードはスラッシュ“/”で区切り、その後にルート音と同じ表記 方法でベース音を記述してください。 この様にコード記述はいろいろな付加指定が可能なので、これらを理解していただ くために、少しずつ指定を膨らませていく例を以下に示します。
%100 o4 'D'4 _ 'D' _ ; コードDを四分音符で2回鳴らす。 'Dsus4'4 _ 'Dsus4' _ ; コードDをサス4にする。 'Dsus4/G'2 _4 ; これにベース音Gを添えて二分音符で鳴らす。 'Dsus4(9)/G'2 _4 ; ナインスのテンションを追加する。 'Dsus4(9,13)/G'2 _1 ; 更にサーティーンスのテンションも追加する。
本来、伴奏コードは次章“[2]アンサンブル演奏”で紹介するメンバーを用いた 方法で記述した方が格段に楽に入力できますが、まだ紹介していないので、ここで は前述の和音記法を使用して書いてみましょう。 →メンバー記述での例は“(2-20) コードの転回形”を参照のこと。 以下の例は、始めは伴奏なしで演奏し、次に同旋律に伴奏を付けて演奏してみます。 少々ごちゃごちゃしていますが、①と②で旋律の位置は合せてありますので、よく 見比べてみてください。
★山の音楽家(ドイツ民謡) %92 \+ o4 ①まずは無伴奏 r8 s8 s l l c8. <d16r8d> c c l l s4 _8 ②次は伴奏付き r8 [s'G'4]8s[l8'D'4]l[c'G'2]8.<d16r8d>[c'G'4]c[l>'D7'4<]l[s'G']4_8
なお、C・D・Eをルート音とするコードは、現在のオクターブ値が採用されます が、F・G・A・Bをルート音とするコードは、1オクターブ低い側にシフトする ことで、コード全体の音域を極力現在のオクターブ指定内に納めようとします。 またコードにおいては、その調性が既に考慮されて譜面上に記譜されているので、 以下の指定はあえて反映しない様になっています。 ・調性指定 \ ・音部記号 ?
(1-18) 音符の連結
例えば、四分音符とそれに続く三連符の初音との間がタイになっている場合、加算 音長でそのタイを記述することはできません。その様な場合は“&”指定を利用し ます。“&”指定は、連続する同音階の音符を切れ目なく演奏させる指定です。
%125 \= d4 & ( d m s )4 _2 ← 初音がタイ接続されている場合 ( s m d )4 & d4 _2 ← 終音がタイ接続されている場合
連符内に記述することもできます。
d4 ( & d r m f s & s & s f m r d & )1 d4 _2
この“&”指定は加算記号での表記よりも本来のタイの記述に近いと言えます。 和音やコードの連結も可能であり、その場合は互いの構成音の内音階の等しい音を 連結します。
[ d m s ] & [ d f l ] ← ドの音だけがタイでつながる [ d m s ] & m ← ミの音がタイでつながる s & [ d m s ] ← ソの音がタイでつながる
ただし、和音内の要素音同士に連結記号“&”を記述しても効果は現れません。 和音内で音長を連結したい場合は、加算記号“^”で表現してください。
[ d8 & d32 m2 s2 ]4 ← エラーにはならないが連結はしない。 [ d8^32 m2 s2 ]4 ← 8分音符+32分音符の長さが与えられる。
和音内に“&”が記述された場合、“&”記号の直前の音符が、その和音の次に続く 音符や和音と連結対象となります。以下は和音同士の連結例です。
[ d m s ] & [ d m s ] ← ドミソすべての音が連結する。 [ d m s & ] [ d m s ] ← ソの音だけが連結する。 [ d m & s ] [ d m s ] ← ミの音だけが連結する。 [ d & m s ] [ d m s ] ← ドの音だけが連結する。 [ d m s ] [ & d m s ] ← エラーにはならないが、どの音も連結しない。
(注)音の強弱(v)が異なる音符を連結した場合は、前音の強弱値が採用されます。 “&”の前後の音程が異なる場合は連結はしませんが、前音のスタッカートを打消 して通常の音長となります。この効果は“&”が添えられた音だけに働くため、ス タッカート付き旋律の一部を一時的にスラーにして演奏する場合に便利です。
_4 d// r m f & s d _
(注)“(1-21) グルーヴ感を与える”で解説する止音調整が指定されている場合も、 上記の通常音長化が働きます。ただし止音指定で音長を通常よりも伸ばす側に 指定している場合は“&”を添えても音長は変化しません。
(1-19) 再現表記の活用
同じ和音やコードが繰返されたり、リズムだけが変化する場合、思いの外記述量が 増えてしまいます。
[l<df>]4/ [l<df>] [l<df>] [l<df>] [l<dm>] [l<dm>] [sc<r>] [sc<r>] <'F' 'F' 'F' 'F'> 'Dm' 'Dm' 'C' 'C' 'Dm' 'Dm' 'Dm' 'Dm' 'D'1 _2
この様な場合は再現表記を活用すると簡潔に記述することができます。この表記は カンマ“,”を記述することで行います。カンマ部分には直前で鳴らした和音・コー ドの記述が再現されます。上記例を再現表記を用いて表すと、以下の様になります。
[l<df>]4/ ,,, [l<dm>] , [sc<r>] , ; 和音 <'F' ,,, > 'Dm' , 'C' , 'Dm' ,,, 'D'1 _2 ; コード
再現表記は休符や単一音を対象にしないので、休符や単一音が間で演奏されても直 前の和音・コードを再現することができます。連符内や和音内にも記述可能です。
>s8.< [dms]16 _8. [dms]16 >s8.< [dms]16 ([dms][dms][dms])4 _2 ↓ ↓ ↓ >s8.< [dms]16 _8. ,16 >s8.< ,16 (,,,)4 _2
再現表記は、添える音長数字を対象としないので、音長を変化させる場合でも利用 することができます。また、省略音長を併用すれば、より簡潔な記述になります。 更に初音にゼロ音長を指定することでリズムパターンを完全に分離できます。
_4 'Cm'8 'Cm'8 'Cm'16 'Cm'8 'Cm'16 'Cm'8 'Cm'8 'Cm'8 'Cm'8 ↓ _4 'Cm'8 ,8 ,16 ,8 ,16 ,8 ,8 ,8 ,8 ← 再現表記を活用 ↓ _4 'Cm'8, ,16 ,8 ,16 ,8,,, ← 更に省略音長も活用 ↓ _4 'Cm'0 ,8,,16,8,16 ,8,,, ← リズムパターンを分離
最後のリズムパターン分離は“(3- 8) 演奏パターンの部品化”で解説するマクロ 記述で効果を発揮します。
(1-20) アクセントを付ける
音楽には、特にリズムを司る重要な要素として“アクセント”があります。そして、 アクセントは“拍子”と密接な関係があります。拍子とは本来、同じ間隔で記譜を 区切るという意味以上に、周期的に発生する強弱の波を表す意義があると言えます。 「4/4拍子と8/8拍子は、数学的には約分で同じ結果になりますが、物理的に は音楽の周波数が異なる」とでも申しましょうか。従ってアクセントは、音楽の流 れの中で、聴く者に拍子(周期)を感じさせる重要な役割を果たすことになります。 Muse記法には拍子の概念はありませんが、このアクセントを簡便に指定する表記を 用意しています。小文字の“w”に-127~+127 の数値(アクセント値)を添えた記述 を行うことで、その次に鳴る音のみ、音の強さ(v)に変化を与えることができます。 同様の演奏表記は、“v”指定そのものでも可能ではありますが、“w”を使用する ことで元の強さに戻す手間が不要となります。下記記述は、前半でアクセント無し、 後半でアクセントを付けた例です。アクセントを付けることで、演奏を一段と躍動 的なものにすることができます。
★ベートーベン「トルコ行進曲」 %105 v60 <s8mmm┃ smm<m┃ r16d>cl s8f ┃ mfs4> ← ●アクセント無し w+40 <s8mmm┃w smm<m┃w r16d>cl w s8s+┃w l2> ← ●アクセント有り
w に添えるアクセント値は省略することが可能であり、一層コーディングの見通し を良くします。省略した場合は直近のwで指定された増分値が採用されます。増分 値を変えたい場合は、再度wに数値を添えて指定してください。なお、w0 と記述す るとアクセント指定が無効となります。 (注)和音やコード、連符の直前にwを指定した場合は、それら音群全体にアクセン トが付きます。一方、和音や連符の中の一音にのみにwを指定すれば、その音 だけにアクセントを付けることもできます。なお、アクセント値は最後に指定 した w の値で常に更新されます。
(1-21) グルーヴ感を与える
人間の行う演奏は、楽譜通りではない微妙なタイミングのずれが起ります。そして 人はそれを意図的に行うことで、より高度な音楽表現を与えます。これらの“ノリ (グルーヴ感)”は逆に電子音楽には不得意な領域です。タイミングが正確であるが 故に、楽譜通りにデータ作成すると律儀で杓子定規な演奏になってしまうからです。 出音タイミング調整“p”と、止音タイミング調整“q”は、各音の発音に対し微妙 な味付けをするための指定です。この指定をしておくと以降の音符に対して、音の 出だしや音を止めるタイミングをずらすことができます。 この指定方法には、対象とする音符の音長を基準とした相対指定と、ずらす音長を 直接与える絶対指定とがあります。相対指定は、pやqに±の符号を添え、1~100の 数値を与えることで、本来の音長を基準にして1%~100%のズレが起こります。 絶対指定は、pやqに加算記号“^”や減算記号“~”を添えて、その後に音長表記を 与えることで、その音長分のズレが一律に起ります。 ≪出音グルーヴ≫ p 音が出るタイミングを調整する指定です。音の出だしを早めたり遅くしたりする ことで、“突っ込み”や“タメ”のニュアンスを与えることができます。特に、 リズムを刻むパートに活用すると、楽曲全体にグルーヴ感が与えられます。また ソロパートに活用すると、ソロを浮き立たせる効果も出ます。
(例)p+10 音長の10%分、出音を早めます。 p-15 音長の15%分、出音を遅くします。 p^32 32分音符分、出音を早めます。 p~16. 付点16分音符分、出音を遅くします。 p0 調整を行いません。デフォルトです。
≪止音グルーヴ≫ q 音が鳴り止むタイミングを調整する指定です。短めにしたり長めにしたりするこ とで、軽快な感じや粘りのある感じを与えることができます。原理的にはスタッ カート指定と同じ効果がありますが、よりきめ細かく指定でき、各音符への指定 をする必要がないので記述量が減ります。
(例)q+10 音長の10%分、音が長く鳴ります。 q-15 音長の15%分、音が短めになります。 q^32 32分音符分、音が長く鳴ります。 q~16. 付点16分音符分、音が短めになります。 q0 調整を行いません。デフォルトです。
以上の調整を図示すると以下の様になります。
≪出音≫ ≪止音≫ 音が出る ========⇒ 音が止る ↓ ↓ ┏━━━━━━━━━━━━━━┓ ┗━━━━━━━━━━━━━━┛ ← p0 → ← q0 → p+ p- q- q+ ……相対指定系列 p^ p~ q~ q^ ……絶対指定系列
(注)スタッカート指定“/”が付いている音符には“q”指定は作用しません。 つまり“q”指定よりもスタッカートの方が優先度が高いことを意味します。 止音タイミング調整は、更に「固定音長指定」が可能です。“q”後に直接音長を 記述した場合にこの指定となります。この指定がなされていると、それ以降の音符 がいかなる音長であっても、「音が出ている長さ」はこの指定音長となります。
(例) q8 d4 r2 m4
<-- 4分音符 --> <------- 2分音符 -------> <-- 4分音符 --> ┏d━┓ ┏r━┓ ┏m━┓ ┗━━┛ ┗━━┛ ┗━━┛ 8分音符 8分音符 8分音符
この指定は、和音による占有音長記述を簡便化する方法と解釈することもできます。 上記の例を和音記述で表現すると以下の様になります。ただし、音符にゼロ音長が 指定された場合は無音となります。
q8 d4 r2 m4 f0 ↓ ↓ ↓ ↓ [d8]4 [r8]2 [m8]4 無音
この指定を解除する場合は“q0”を記述します。 (注)固定音長指定や絶対指定では、音長の加算(^)減算(~)乗算(`)表現も可能です。 ただし、絶対指定でのpやqに続く1文字目の(^)や(~)は、演算記号ではなく 音長増減方向の識別子として働き、音長演算には直接関与しません。 なお、これらの音長は連符内においても連符比率でスケーリングされず、 記述された音長がそのまま採用されます。
(1-22) アルペジオの記述方法
ピアノの譜面によく見かける記号で、和音音符の左側に縦の波線が添えられたもの があります。これはアルペジオ(分散和音)奏法の一種で、和音を同時に奏するので はなく、多少ずらしながら奏でていく指定です。この奏法は、ギターの演奏ではそ の楽器の特性上自然に発生するパターンです。このパターンを記述するために、和 音やコードの「発音遅延」指定があります。和音やコードの音長にコロンを添え、 その後にずらす音長を与えることで表現します。
\+++ v100 _4 [ml<dm>]2:32 _4 [<dml>]2:32 _4 [l<rf>]2:32 _4 [s<rm>]2:32 _1 'G'1:64 'E7'2:64 'G7/D':64 'C'1:32 ,1:32 ,1:8. _1
発音遅延の順番は以下の通りです。 ・和音の発音遅延はその記述音順に従う。 ・コードの発音遅延は低音部から高音部に向けて起こる。 64分音符よりも短い発音遅延をしたい場合は微分音長“i”を利用してください。 →“(1-23) 最小分解能と微分音長”を参照のこと。 なお、コロンに添える遅延音長は、通常の省略音長と独立の省略が可能です。 よって一度定義すれば、後はコロンだけの記述で同様の発音遅延が起ります。 コロンを記述しない場合は、アルペジオが起らず通常の音長が再現されます。
'F7-9/D'4:32 ,: ,: ,: _1
遅延音長の末尾にマイナス記号を添えることで、発音の順番を逆向きにすることが できます。このマイナス記号による発音方向の切替えを利用すれば、ダウン・スト ロークとアップ・ストロークを交互に繰り返すギターの奏法などを簡便に記述する ことができます。
'C'4:32 'C'4:32- 'C'4:32 'C'4:32- _2 'C'4:32 ,:- ,: ,:- _2 ← 上記の省略記法
コードと和音を組合せて表記してもアルペジオや逆アルペジオを実現することがで き、コードに音を追加していくことが可能です。なおアルペジオの発音順番は、和 音内の音符やコードの記述順に従います。
'G7'1:16 _4 ↓ ['G7'c<rf>]1:16 _4 ↓ [>>c<r<'G7'c<rf>]1:16 _2
(注)アルペジオの音長は、連符内においても連符比率でスケーリングされず、 記述された音長がそのまま採用されます。
(1-23) 最小分解能と微分音長
Museは音長に関して、64分音符の1/60の最小分解能を持っています。 64分音符以下の微分音長は、減算記号“~”を使うことで、
64.~64
の様に記述できますが、よりきめ細かく指定するために微分音長記号“i”があり ます。この指定は“i”に1~960の数値を添えて、その音長を指定する方法です。 i60が64分音符と同じ音長を表現し、i30で64分音符の半分の音長を表します。 したがって、Museの最小分解能は i1 となります。
di60 ← d64 と同等 di30 ← d64.~64 と同等 di15 ← d64..~64. と同等
アルペジオの発音遅延部分や、微妙に発音をずらして演奏効果を出す場合に、微分 音長を利用すると効果的です。
[dms]4:i10 ← 発音遅延に利用した例 d4^i10 ← 微妙に音長を延した例
微分音長は、通常の音長数字(1,2,4,8,16,32,64)と同じ局面で記述することができ ます。また、音長数字と微分音長とを混在させた加減乗算も可能です。ただし、微 分音長自体には付点を添えることはできません。
di10`5~i3 ← 微分音長を含む演算 di45. ← NG(付点は付けられない)
(1-24) エコーをかける
“生の楽器演奏”の模倣として“電子音楽”をとらえる限り「本物」を越えること はできません。しかし、電子音楽だからこその演奏効果も存在します。エコーは、 MIDI界ではディレイと呼ばれており、この様な効果は電子音楽の得意とする所です。 今までのMuse記法を組合せて、エコーを表現する例を以下に示します。
\= v127 [(dms<d>)1]8 v-10, v-10, v-10, v-10, v-10, v-10, v-10, v-10, v-10, v-10, v-10, v-10, _1.
上記の例は和音と連符を組合せて利用し、発音をずらしながら相対強弱指定で少し ずつ小さな音にしていくことでエコーを実現しています。再現表記を活用すること で見通しの良い記述になっていますが、“(2- 3) 繰返し記述と複写機構”を利用 することで更に簡素に記述できます。
v127 [(dms<d>)1]8 {v-10,}12 _1. _2.
[2]アンサンブル演奏
(2- 1) メンバーとフィンガーの概念
まず、Museにおける演奏シチュエーションを説明します。 演奏者は16名おり、それぞれAさん、Bさん ‥‥‥ Oさん、およびZさんとい うニックネームで呼ばれます。これら演奏者を今後“メンバー”と呼ぶことにしま す。目の前に128種類の楽器が準備されており、それぞれのメンバーが自由な楽 器で演奏できます。演奏中の楽器の持替えもできますし、同じ種類の楽器を複数の メンバーが持つこともできます。ただし、Zさんだけは生れながらのドラマーで、 パーカッション以外は演奏できません。 (注)実はドラマーの役割を変更する事もできます。 詳しくは“(3-11) ドラマーの転向について”を参照してください。 各メンバーには決った色が割当てられており、演奏の際にどのメンバーがどの様に 弾いているかをメインウィンドウのピアノ鍵盤上で確認できます。自動演奏の際の 配色を考慮してメンバーを選ぶのも一興です。メンバー色はカスタマイズすること も可能です。その配色を検討するために、メニュー「機能(G)」→「配色マップ(K)」 に、配色設計を支援するダイアログも提供しています。 (注)メンバー色の変更方法に関しては“(3-10) メンバー色をカスタマイズする” を、「配色マップ(K)」の使い方に関しては“(14) 配色マップの活用”を、 参照してください。 次にAさん1人に着目してみます。彼は10本の指を持っており各指は、0~9の 数字が割当てられています。この指を今後“フィンガー”と呼びます。生身の人間 は1本の指で1音を奏でるのが精一杯ですが、このMuseメンバーは皆、超絶技巧の 持主で、1フィンガーで和音やコードを演奏することができます。 実は前章“[1]ピアノ独奏”で紹介した演奏は、すべてAさんの1本の指で行っ ていたのです。 音符を書く前に“#”に続けて、この“メンバー”と“フィンガー”を記述するこ とで、どの演奏者のどの指で弾くのかを指定します。このメンバーとフィンガーを セットにした“#”指定を、今後“フィンガー宣言”と呼びます。すべての音はど れかのフィンガーに属しており、次のフィンガー宣言が現れるまで同じフィンガー 音と解釈されます。 (注)Museはいきなり音符を書き始めると、初めてのフィンガー宣言“#”がくる までの間は“#A0”であると解釈します。“[1]ピアノ独奏”では、この 解釈を前提にコーディング例を示していました。 では、Aさんの2本の指(#A1,#A2)と、Kさんの1本の指(#K1)で演奏してもらいま しょう。
★ドボルザーク「新世界より」第2楽章 %60 \= #A1 o5 v120 ┃m8.s16s4m8.r16d4 ┃r8.m16s8.m16r2 ┃ ┃m8.s16s4m8.r16d4 ┃r8.m16r8.d16d2 ┃ ┃l8.<d16d4>c8sl4 ┃l8<d>csl2 ┃ ┃l8.<d16d4>c8sl4 ┃l8<d>csl2 ┃ ┃m8.s16s4m8.r16d4 ┃r8.m16s8.m16r4r+ ┃ ┃m8.s16s4<d8.r16m8m>┃<r8.d16r8>l<d2> ┃ ┃<r8.d16r8>l8<d2> ┃<r4.d8r4>l<d2._4 ┃ #A2 o4 v120 ┃m8.s16s4m8.r16d4 ┃r8.m16s8.m16r2 ┃ ┃m8.s16s4m8.r16d4 ┃r8.m16r8.d16d2 ┃ ┃f8.l16l4s8mf4 ┃f8lsmf2 ┃ ┃f8.l16l4s8mf4 ┃f8lsmf2 ┃ ┃m8.s16s4m8.r16d4 ┃r8.m16s8.m16r4r+ ┃ ┃d8.m16r4m8.f16s8s ┃f8.f16f8fm2 ┃ ┃f8.f16f8fm2 ┃f4.f8f4fm2._4 ┃ #K1 o3 v120 ┃'C'2'C' ┃'G7'2'G7' ┃ ┃'C'2'C' ┃'Dm7'4'G7''C'2 ┃ ┃'F'2:64'F':64 ┃<'F':64'F':64> ┃ ┃'F'2:64'F':64 ┃<'F':64'F':64> ┃ ┃'C'2'C' ┃'G7'2'G7' ┃ ┃'C'4'G''Am''C' ┃'G7'2'C' ┃ ┃'G7'2'C' ┃['G7'c]1:16'C'2._4 ┃
フィンガー宣言(#)はたとえ断続的に現れても、前回のそのフィンガーの音から継 続して演奏されます。したがって、上述の演奏は以下の様にスコア風に記述するこ ともできます。いわば、パート譜をスコアに書き換えたといった所です。
★ドボルザーク「新世界より」第2楽章(スコア風の記述方法) %60 \= #A1 o5 v120 #A2 o4 v120 #K1 o3 v120 #A1 ┃m8.s16s4m8.r16d4 ┃r8.m16s8.m16r2 ┃ #A2 ┃m8.s16s4m8.r16d4 ┃r8.m16s8.m16r2 ┃ #K1 ┃'C'2'C' ┃'G7'2'G7' ┃ #A1 ┃m8.s16s4m8.r16d4 ┃r8.m16r8.d16d2 ┃ #A2 ┃m8.s16s4m8.r16d4 ┃r8.m16r8.d16d2 ┃ #K1 ┃'C'2'C' ┃'Dm7'4'G7''C'2 ┃ #A1 ┃l8.<d16d4>c8sl4 ┃l8<d>csl2 ┃ #A2 ┃f8.l16l4s8mf4 ┃f8lsmf2 ┃ #K1 ┃'F'2:64'F':64 ┃<'F':64'F':64> ┃ #A1 ┃l8.<d16d4>c8sl4 ┃l8<d>csl2 ┃ #A2 ┃f8.l16l4s8mf4 ┃f8lsmf2 ┃ #K1 ┃'F'2:64'F':64 ┃<'F':64'F':64> ┃ #A1 ┃m8.s16s4m8.r16d4 ┃r8.m16s8.m16r4r+ ┃ #A2 ┃m8.s16s4m8.r16d4 ┃r8.m16s8.m16r4r+ ┃ #K1 ┃'C'2'C' ┃'G7'2'G7' ┃ #A1 ┃m8.s16s4<d8.r16m8m>┃<r8.d16r8>l<d2> ┃ #A2 ┃d8.m16r4m8.f16s8s ┃f8.f16f8fm2 ┃ #K1 ┃'C'4'G''Am''C' ┃'G7'2'C' ┃ #A1 ┃<r8.d16r8>l8<d2> ┃<r4.d8r4>l<d2._4 ┃ #A2 ┃f8.f16f8fm2 ┃f4.f8f4fm2._4 ┃ #K1 ┃'G7'2'C' ┃['G7'c]1:16'C'2._4 ┃
(2- 2) 演奏タイミングを強制的に合せる
テンポ値が添えられていない単独の“%”指定は、タイミングを合せるという意味 で、非常に強力な指定です。この指定を行うと、それまで記述していた音符群は、 全メンバー、全フィンガーを通じて、時間的に同じスタートラインに整列します。 その整列タイミングは“%”指定が与えられた時点で、全体を通じて最も先まで進 んでいる音符位置が採用されます。図解すると以下の様になります。 ■例えば、以下のような記述をしたとします。
#A0 |①---------->| #A1 |②------------------------>| #B0 |③---------------->| #A0 |④-------------->| #A1 |⑤-------------->| #B0 |⑥-------------->|
フィンガー宣言はたとえ断続的に現れても、前回のそのフィンガーの音から継続 して演奏されるため、上記は実際の演奏では以下の様になります。
#A0 |①---------->|④-------------->| #A1 |②------------------------>|⑤-------------->| #B0 |③---------------->|⑥-------------->|
■今度は、③と④の間に“%”指定を行ったとします。
#A0 |①---------->| #A1 |②------------------------>| #B0 |③---------------->| % ←●ここで%指定を行った。 #A0 |④-------------->| #A1 |⑤-------------->| #B0 |⑥-------------->|
すると、“%”が記述された部分で全メンバー・全フィンガーのタイミングが強 制的に整列するので、最も先まで音符のある②まで休符が挿入され、実際の演奏 は以下の様になります。
#A0 |①---------->| 休符 |④-------------->| #A1 |②------------------------>||⑤-------------->| #B0 |③---------------->| 休符 |⑥-------------->| ↑ ●この位置にタイミングが整列する。
(注)この強制タイミング合せの効果は、あくまでもテンポ値の添えられていない 単独の“%”が指定された場合にのみ起り、テンポ値を与えた場合はその限り ではありません。タイミングを合せ、しかもテンポ値も変えたい場合は、 % %120 という様に、別の意味を持つ2つの%を記述してください。 1つ目でタイミングがそろい、2つ目でテンポが変ります。 明に記述していない休符が与えられるということを意識しておけば、逆にこの強引 な処理を積極的に使用し、一気に全メンバーのタイミングを合せることが可能とな ります。例えば、たまにしか演奏に参加しないメンバーがある場合、延々と休符を 記述して出番を待つかわりに、出番の直前で“%”を書けば事足りる訳です。 ただし、前半(①②③)に記述した内容が、整列タイミングを越えて後半(④⑤⑥)に 波及する場合があります。それは、以下の3つの場合です。 (1)メンバー属性指定で与えた遅延音長がタイミング整列位置を越えている場合 →後半に属性の効果がなだれ込み、その遅延速度は後半のテンポに従います。 (2)和音記述において、占有音長より長い音長を和音内音符に与えた場合 →後半まで音が持続されます。後半の音長は後半のテンポに従います。 (3)前半の音符末尾や後半の音符冒頭に、連結(&)が付与されている場合 →強制休符が挿入されなければ、連結効果は持続します。(上記例 ②-⑤)
(2- 3) 繰返し記述と複写機構
音楽はその特性上反復が多く出現します。伴奏やリズム、そして歌の1番と2番の 旋律などです。その様な場合、同じパターンを繰返させる指定を使うと記述量を減 らすことができます。それは任意の部分を中括弧で括り、その後ろに2以上の数値 を添えることで指定します。この指定により、添えた数値の回数分、中括弧内の演 奏を繰返します。なお、数値を省略した場合は1と見なされます。また、ゼロを添 えると中括弧内を演奏させない指定となります。
#A0 { dms }3 ← ドミソを3回繰り返す #A0 { dms } ← ドミソを1回繰り返す #A0 { dms }0 ← 何も演奏しない(ただし複写元の定義となる)
複数のメンバーをごっそり括って繰り返させる事もできます。
{ #A1 ┃m8.s16s4m8.r16d4 ┃r8.m16s8.m16r2 ┃ #A2 ┃m8.s16s4m8.r16d4 ┃r8.m16s8.m16r2 ┃ #K1 ┃'C'2'C' ┃'G7'2'G7' ┃ }3
中身の無い中括弧を記述すると、その直前に指定された中身のある中括弧の内容が その分に展開されます。この“複写機構”とも言える記法は、少し離れた位置に同 一パターンがある場合に活用すると便利です。また中括弧は入れ子の記述も可能で すから、工夫すると記述量がぐっと減ります。
#A0 dms ccc dms rrr ┃ dms ccc dms rrr ┃ dms ccc dms rrr ↓ #A0 { {dms} ccc {} rrr }3
中括弧以外の部分に o や v の指定をすれば、ユニゾン演奏として同一の旋律をオ クターブ上や下で鳴らし、更に各メンバーの音量に変化を与えるような記述も簡便 にできます。 ≪オクターブ違いのユニゾン表現の例≫
#A0 o4 drmf slc_ cccc mrd_ #B0 o5 drmf slc_ cccc mrd_ ↓ #A0 o4 { drmf slc_ cccc mrd_ } #B0 o5 { }
≪同一旋律で音の強さを変化させる例≫
#A0 v80 fsfs ccc_ <d>cls mrd_ #B0 v50 fsfs ccc_ <d>cls mrd_ ↓ #A0 v80 { fsfs ccc_ <d>cls mrd_ } #B0 v50 { }
(2- 4) パーカッションの演奏方法
パーカッションはドラムメンバーZさんの0~9の10本のフィンガーにかかっていま す。他のメンバーはパーカッションを叩くことはできません。逆にドラムメンバー Zさんはパーカッション専任です。 (注)実はドラマーの役割を変更する事もできます。 詳しくは“(3-11) ドラマーの転向について”を参照してください。 ドラムの種類は、ドラムメンバーに記述する音名に対応しています。よって、ドラ ムメンバーにも音階や音長が存在するため、和音記述や連符記述なども可能です。 以下に、次々に音程を変えることで、いろいろなドラム種を鳴らす例を示します。
%80 #Z0 v127 o1 d+2 r4 r+ m8 f f+4 s8 s+ l l+ _16 c < d8 d+4 r4 r+ m8 f f+4 s8 s+ l l+ _16 c < d8 d+4 r4 r+ m8 f f+4 s8 s+ l l+ _16 c < d8 d+4 r4 r+ m8 f f+4 s8 s+ l l+ _16 c < d8 d+4 r4 r+ m8 f f+4 s8 s+ l l+ _16 c < d8 d+4 r8 r+8 _4
ドラムメンバーは、他のメンバーとは異なる特性を持っているため、指定しても無 効になる属性や、そもそも指定不可能な属性があります。
・調性指定 \ ‥‥‥ 無効 → (1- 4)参照のこと ・音部記号 ? ‥‥‥ 無効 → (1-15)参照のこと ・コード記述 ' ' ‥‥‥ 不可 → (1-17)参照のこと ・移調指定 T ‥‥‥ 無効 → (2-10)参照のこと
(注)各音程に対して、どの様なドラム音が割当てられているかは、メニューの 「機能(G)」→「ドラムの試聴(Z)」で実際に試聴してみてください。ただし、 音源によっては、o1列とo6列のドラムが部分的に鳴らないものがあります。 逆に「ドラムの試聴」の音域を越えて発音できる音源もあります。
(2- 5) フィンガー単位に指定する値
この節でご紹介することは、既に“[1]ピアノ独奏”で出てきた機能がほとんど ですが、フィンガーという概念を得たので再度確認します。 以下の値は、各フィンガー毎に独立して存在しています。
・音名タイプ x ・連結 & ・オクターブ o ・音部記号 ? ・音の強弱 v ・和音/コード再現 , ・アクセント w ・連符再現 () ・スタッカート / ・アルペジオ音長 : ・出音グルーヴ p ・移調楽器 y ・止音グルーヴ q ・省略音長
(注)移調楽器yに関しては“(3-14) 移調楽器をフィンガー毎に割り当てる”を参照 してください。 これらの値を「フィンガー属性」と呼びます。フィンガー属性がセットされる先は、 直前のフィンガー宣言“#”で指定されたフィンガーになります。各フィンガーで 独立なこれらの値は、16メンバー × 10フィンガー すなわち 160 の個別指定がで きることになります。他のフィンガーで異なる値を指定をしても、各フィンガーで 独立に値を保持するため、何度も指定し直す必要はありません。 (注)アクセントwには2つの機能があります。一つは次の音の強弱を一時的に変化 させる機能。もう一つはその変化量(アクセント値)をセットする機能です。 前者の機能はフィンガー宣言(#)を越えて作用することはありませんが、後者 の機能は次の値が指定されるまで保持されます。したがって、#A0 w+20 と記 述した後、再度 #A0 を記述すれば、その次にくる音にアクセントを付けるこ となく、w+20をアクセント値のデフォルトとしてセットできます。
(2- 6) メンバー単位に指定する値
各メンバーには、それぞれ独立にいろいろな値を指定することができます。これら の値を「メンバー属性」と呼びます。メンバー属性はメンバー単位に設定するため、 フィンガー毎に異なる値を指定することはできません。1メンバー内のフィンガー ですべて同値になります。なお、メンバー属性の指定文字はすべて大文字なのが特 徴です。
・音色 P ・移調 T ・音量 V ・ピッチ U ・ステレオ S ・ペダル Y ・残響 R ・出力変位特性 R= ・揺らぎ W ・変調特性 W= ・コーラス Q ・周波数特性 Q= ・コントロール X
(注)ドラムメンバーは、移調属性(T)が無視されます。 詳細は“(2- 4) パーカッションの演奏方法”を参照してください。 さて各属性値の詳細は後節に譲るとして、ここではこれらの値を各メンバーに指定 する方法をご紹介しましょう。それには“@”にメンバー記号(A~O,Z)を添え、ま ずメンバーを宣言した後、メンバー属性の値を記述していきます。すなわち、以下 のような形式で指定します。
@E P23
この例は、Eメンバーの音色(P)を23番(ハーモニカ)に指定した場合です。この “@E”の部分と“P23”の部分は、離れていても構いません。以降“@E”の部分を 「メンバー宣言」と呼びます。メンバー属性(上記の例では P23 )が記述された際、 その属性値が反映されるのは、あくまでも前もってメンバー宣言で指定しておいた メンバー(上記の例では @E )が対象になります。なお、メンバー宣言もメンバー属 性も曲の途中で何度でも指定し直せます。 メンバー宣言におけるメンバー記号(A~O,Z)は、列挙記述が可能であり、複数のメ ンバーに対して一気に指定できるのが特徴です。例えば、A・B・Cさんを同じ楽 器(P)、音量(V)、移調(T)にしたければ、以下の様に1行で指定できます。
★ドビュッシー「亜麻色の髪の乙女」 %66 \= @ABC P101 V120 T0 ← ここで一気に指定(メンバー属性の記述順は自由) #A0 ?0 o4 v120 #B0 ?6 o4 v120 #C0 ?0 o4 v120 #A0┃<s4^8m16d>l8<d16m┃s8m16d>l8<d16md8d16>l┃<d8>c16ls2^ ┃2l8<d┃ ┃r4.s8md16m┃r8sm4l4^1┃_2 #B0┃_2.┃_4 _ _8 <r> ┃l2.^ ┃2 <_4┃m2f4 ┃m4d4[d>f<]4^1 ┃ #C0┃_2.┃_4 _ _8 'F'8┃'C'2.^2┃_4 ┃'G'2' Am'4┃'G''Em''Am'4^1┃
メンバー属性が反映されるメンバーは、それが挟み込まれるフィンガーには直接関 係はなく、単に反映するタイミングを決めるだけです。以下の例は、#A0フィンガー で音量指定されていますが、それが反映するメンバーはAメンバーではなく、直前 のメンバー宣言によるBCDの3メンバーとなります。
@BCD #A0 d m s V80 d r m V90 d f l V120 d
なお、“@”に添えるメンバーは省略可能であり、省略するとその時点のフィンガー が属するメンバーを指定したことになります。
#A0 d r m @A P23 f s l ↓ #A0 d r m @ P23 f s l ← メンバーAが省略されていると解釈される。
更に、“@”の直後に“~”を添えることで以降に記述するメンバーの意味を逆転さ せることができるため、宣言したくないメンバーのみを列挙することが可能です。
@ABC ;肯定形の記述(ABCメンバーを対象とする) @~Z ;否定形の記述(Zメンバー以外を対象とする)
(注)“@~”にメンバーを1つも添えない場合は、全メンバー宣言となります。 メンバー属性を音符の間に挟み込むことで、その属性値を反映させるタイミングを、 指定することができます。挟み込む例を以下に示します。4つの例とも、同じ演奏 をします。
@A #A0 dms V80 drm V90 dfl V120 d (@メンバーを明示する場合) #A0 @ dms V80 drm V90 dfl V120 d (@メンバーを省略する場合) #A0 dms @V80 drm @V90 dfl @V120 d (逐一@を添える場合) #A0 dms @V80 drm V90 dfl V120 d (一回目の@のみ明示する場合)
(2- 7) 音色の指定
“@”によるメンバー宣言の後に“P”に添える1~128の数字で音色を指定します。 各数字と実際の音色の関係は、メニューの「機能(G)」→「楽器の試聴(P)」にて 実際に試聴してみてください。以下の例は、同じメンバー(ここではIメンバー) で次々と音色を変化させています。これは“楽器の持替え”に相当します。
★ピクニック(イギリス民謡) %112 \+ @I P025 ;スチールギター #I0 r8s4l8c4s m8s4m8r4._8 @I P079 ;口笛 #I0 >c8<r4m8s4f8s <r2>c @I P042 ;ビオラ #I0 r8s4l8c4s m8s4m8r2 @I P106 ;バンジョー #I0 <r8>c4<r8d>l4c8 s2 _2 #Z0 v80 [o2l]0 ;大太鼓 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 _2 v127 #Z1 v80 [o2r]0 ;小太鼓 ,8 ,4 ,8 ,8 ,16 ,16 ,8 ,8 ,8 ,4 ,8 ,8 ,16 ,16 ,8 ,8 ,8 ,4 ,8 ,8 ,16 ,16 ,8 ,8 ,8 ,4 ,8 ,8 ,16 ,16 ,8 ,8 ,8 ,4 ,8 ,8 ,16 ,16 ,8 ,8 ,8 ,4 ,8 ,8 ,16 ,16 ,8 ,8 ,8 ,4 ,8 ,8 ,16 ,16 ,8 ,8 ,8 ,4 ,8 ,8 _4
上記例における大太鼓と小太鼓は、ゼロ音長の和音と再現表記を組合せて、リズム の見通しを良くしています。→“(1-19) 再現表記の活用”を参照のこと。 ドラムメンバーに対する音色“P”の属性は、ドラムセットの選択を意味します。 どの様なドラムセットがあるかは“【第4章】文法リファレンス”を参照してくだ さい。以下は、次々とドラムセットを変更する例です。どのドラムセットが演奏さ れているかわかりやすくするため、TEXTコマンドで文字列を表示させています。 TEXTコマンドに関しては“(3- 2) カラオケとして利用する”をご覧ください。
%55 @Z *TEXT"スタンダード" P1 #Z0 o2 (drmfslc<dr)2._4 *TEXT"ルーム" P9 #Z0 o2 (drmfslc<dr)2._4 *TEXT"ロック" P17 #Z0 o2 (drmfslc<dr)2._4 *TEXT"エレクトロン" P25 #Z0 o2 (drmfslc<dr)2._4 *TEXT"アナログ" P26 #Z0 o2 (drmfslc<dr)2._4 *TEXT"ダンス" P27 #Z0 o2 (drmfslc<dr)2._4 *TEXT"ジャズ" P33 #Z0 o2 (drmfslc<dr)2._4 *TEXT"ブラシ" P41 #Z0 o2 (drmfslc<dr)2._4 *TEXT"クラシック" P49 #Z0 o2 (drmfslc<dr)2._4
ドラムセットによる音色の変化がどの様なものなのかは「機能(G)」→「ドラムの 試聴(Z)」のメニューで実際に試聴してみてください。標準と異なる音色には、ボ タンに黒丸●が付きます。ただし、ドラムセットの内容は音源依存性が強いため、 ●の信憑性は絶対ではありません。 (注)MIDI音源によっては“Ethnic”や“Asia”や“SFX”のドラム音色が使用でき ない機種があります。この場合、直前に選んでいたドラムセットが維持され、 結果としてボタンフェースと異なる音になります。逆に音源が上位機種の場合、 「ドラムの試聴」で選べるドラムセット以外にも多くの音色を持っています。 詳細は“【第4章】文法リファレンス”を参照してください。
(2- 8) クレッシェンドとデクレッシェンド
“@”によるメンバー宣言の後に“V”に添える0~127の数字で音量を指定します。 音量は127が最大で、0で無音状態となります。
%100 \= @G P055 ;← ここでのメンバー宣言“@G”が次行の“V”指定に作用する #G0 V30 d4ms<d> V60 d4ms<d> V127 d4ms<d> _2
“v”指定は各音の発音時点の音量を示しますが、“V”指定は発音している最中で も変えることができます。この特徴を引出す方法として「遅延効果」指定がありま す。これはVの音量値の後にコロンを添え、そこに音長を与えることで表現します。 この指定は“与えられた音長分の時間をかけて指定の音量に到達せよ”という指定 です。この指定で、なめらかなクレッシェンド・デクレッシェンドが可能です。
★グルーバー「きよしこの夜」(賛美歌) %50 @L P071 V20 #L0 V127:4. _4. V20:4. _4. ← 音量調整用のフィンガー #L1 v127 o4 s8.l16s8 m4. #L2 v127 o3 'C'2. #L0 V127:4. _4. V20:4. _4. #L1 s8.l16s8 m4. #L2 'C'2. #L0 V127:4. _4. V20:4. _4. #L1 <r4r8> c4. #L2 'G7'2. #L0 V127:4. _4. V20:4. _4. #L1 <d4d8> s4. #L2 'C'2. _2
“V”指定が1つのメンバーの全フィンガーに作用する性質を利用して、音量を司 る専門のフィンガーを立ち上げると、綺麗にコーディングできます。上記の例はL メンバーの音量全体を#L0フィンガーで調整しています。音量変化を制御するコー ディング方法は他にもあります。詳しくは“(2-19) 発音中の音量を変化させる” を参照してください。 また“V”の後に符号±付の数値を指定すると、現在の音量値を相対的に変化させ ることができます。ただし相対変化の結果が 0~127 の範囲を越える場合は、ゼロ あるいは127の限界値がセットされ、文法エラーとしての検出はしません。
#B0 @V80 d r m V+100 d r m ← V180となるので、V127がセットされる
ピアノやマリンバなどの減衰系楽器に“V”の遅延効果を使用してクレッシェンド やデクレッシェンドをかけると、発音後に音が大きくなるといった不自然な演奏に なるのでご注意ください。 →“(2-18) 強弱と音量の関係”を参照のこと。 (注)連符内に記述された遅延音長は、その連符内の比率でスケーリングされます。 遅延音長は、後述するステレオやピッチ、残響、揺らぎ、コーラス、テンポ、 そして強弱でも指定できますが、連符内に記述した場合、これらも同様に遅 延音長がスケーリングされます。
(2- 9) ステレオ効果の利用
“@”によるメンバー宣言の後に“S”に添える-64~+64の数値でステレオ効果を指 定します。-64で左側のみ、+64で右側のみ、0で中央から鳴ります。この効果を利 用すれば、左側から伴奏とパーカッションが鳴り、右側から旋律が聞えるといった 広がりのある演奏を記述することができます。 以下の例は左から右に音が移動する記述してみました。“S”指定が音符の合間に 入り込んでいますが、先に2行目で宣言してある @A によりこのステレオ効果は、 Aメンバーに作用することになります。
%80 \= @A P018 V127 ;← ●以降のS指定は、@AによりAメンバーに作用する #A0 v127 o2 _32 S-64m S-62f S-60f+ S-58s S-56s+ S-54l S-52l+ S-50c S-48<d S-46d+ S-44r S-42r+ S-40m S-38f S-36f+ S-34s S-32s+ S-30l S-28l+ S-26c S-24<d S-22d+ S-20r S-18r+ S-16m S-14f S-12f+ S-10s S-8s+ S-6l S-4l+ S-2c S0<d S+2d+ S+4r S+6r+ S+8m S+10f S+12f+ S+14s S+16s+ S+18l S+20l+ S+22c S+24<d S+26d+ S+28r S+30r+ S+32m S+34f S+36f+ S+38s S+40s+ S+42l S+44l+ S+46c S+48<d S+50d+ S+52r S+54r+ S+56m S+58f S+60f+ S+62s S+64s+ S+64s+ S+62s S+60f+ S+58f S+56m S+54r+ S+52r S+50d+ S+48d> S+46c S+44l+ S+42l S+40s+ S+38s S+36f+ S+34f S+32m S+30r+ S+28r S+26d+ S+24d> S+22c S+20l+ S+18l S+16s+ S+14s S+12f+ S+10f S+8m S+6r+ S+4r S+2d+ S0d> S-2c S-4l+ S-6l S-8s+ S-10s S-12f+ S-14f S-16m S-18r+ S-20r S-22d+ S-24d> S-26c S-28l+ S-30l S-32s+ S-34s S-36f+ S-38f S-40m S-42r+ S-44r S-46d+ S-48d> S-50c S-52l+ S-54l S-56s+ S-58s S-60f+ S-62f S-64m _32 _4.
“S”指定は発音している最中でも変えることができます。この特徴を引出す方法 として「遅延効果」指定があります。これはSのステレオ値の後にコロンを添え、 そこに音長を与えることで表現します。この指定は“与えられた音長分の時間をか けて指定のステレオ位置に到達せよ”という指定です。この指定でなめらかな音の 左右移動が可能となります。以下の例は、まず左から右に波が押寄せ、次に右から 左にヘリコプターが飛ぶ情景を記述したものです。
%60 #L0 v127 @L V127 S-64 ← まずは左位置 P123 S+64:1 d1^4 ← 波の音が右側へ向って移動 P126 S-64:1 d1^4 ← ヘリコプターが左に向って移動
遅延指定は記述量を減らすのに大変有効です。例えば冒頭の例の記述を繰返し指定 も活用しながら書き直すと、以下の様に4行で済み、見通しも良くなります。
_32 S-64 S+64:1^1 { m f f+ s s+ l l+ c < d d+ r r+ }5 m f f+ s s+ S-64:1^1 { s+ s f+ f m r+ r d+ d > c l+ l }5 s+ s f+ f m _32 _4.
(注)ドラムメンバーは初期状態で、各ドラムにステレオ値が与えられています。 “S”指定はそれらの位置を基準にして、左右にシフトさせます。従って、 何も指定しなくてもそれなりの空間配置になっています。
(2-10) 移調の仕方
“@”によるメンバー宣言の後に“T”に添える-120~+120の数値でキーの変更がで きます。マイナスで低音側へ、プラスで高音側へそれぞれ半音単位にシフトします。 この機能は、コード記述も含めて指定のメンバー全体に効き目があります。12の 倍数を指定すればオクターブのシフトとしても利用できます。この移調指定は特に 移調楽器の譜面を入力する際に効果を発揮します。移調楽器に関する移調量の指定 値は“【第4章】文法リファレンス”を参照してください。
★フォーレ「シチリアーノ」 %80 \= @HMO V100 S0 T0 @H P001 @M P074 @O P072 #H0 v127 o5 _2^8m8┃l4<d8m4l8 ┃<d8.>c16l8c4m8┃m8.r16f+8m8.r16f+8 ┃m4.^4>m8 ┃ ┃l4<d8m4s8 ┃c-8.l16s8l4>l8┃l8.s+16c8l8.s+16<d8┃>l4.^4_8 ∥ #M0 v90 o6 ?6 _2^4 ┃f8l<d>fl<d>┃r+flms<d> ┃>l<mf>l<mf ┃dm+sd4. ┃ ┃f8l<d>fl<d>┃rs-cdfl+ ┃>c<fldm+c ┃fd>lf4. ∥ #O0 v60 o4 _2^4 'Am' 'F#m7-5'4. 'Em' 'D7'2. 'E' 'Am'4. 'Am7' 'Bb' 'A' 'Dm7' 'E' 'Am'2. @HMO T+3 ← ここで半音3つ分、高音側へ移調 #H0 v127 o5 _2^8m8┃l4<d8m4l8 ┃<d8.>c16l8c4m8┃m8.r16f+8m8.r16f+8 ┃m4.^4>m8 ┃ ┃l4<d8m4s8 ┃c-8.l16s8l4>l8┃l8.s+16c8l8.s+16<d8┃>l4.^4_8 ∥ #M0 v90 o6 ?6 _2^4 ┃f8l<d>fl<d>┃r+flms<d> ┃>l<mf>l<mf ┃dm+sd4. ┃ ┃f8l<d>fl<d>┃rs-cdfl+ ┃>c<fldm+c ┃fd>lf4. ∥ #O0 v60 o4 _2^4 'Am' 'F#m7-5'4. 'Em' 'D7'2. 'E' 'Am'4. 'Am7' 'Bb' 'A' 'Dm7' 'E' 'Am'2. _2
なお、この移調指定はドラムメンバーに対しては無効です。
(2-11) 楽器の音色をアレンジする
Museでは“P”指定により128の楽器から音色を選べますが、それぞれの音色に 対して更に微妙な味付けを行うことができます。この味付けをMIDI界ではエフェク トと称しています。Museのエフェクトは以下の3種類があります。 ・残響 R 音を止めた際後に残る余韻の強さです。特に減衰系の楽器で効果が顕著です。 音はそれが鳴り続けている間でも常に残音を発生していますから、音の累積が 起こり音量が上がる効果もあります。MIDI用語ではリバーブと呼ばれています。 ・揺らぎ W 一般に言われるビブラートです。特に通奏系の楽器で効果が顕著です。 MIDI用語ではモジュレーションと呼ばれています。 ・コーラス Q 同じ楽器でも大人数で演奏すると、それぞれの微妙な音色の違いや奏法のズレ で全体の音に深みや厚みがでます。この指定は、いわばその人数に比例する値 と考えてください。0でソロの音色、127で大合奏という訳です。当然のこ とながら、奏者が多いほど音量も増加しますが、ステレオ“S”の発音位置が ぼやける効果もあります。舞台全体に広がるというイメージです。 以上の3つの指定は、すべて 0~127 の値を添えてその量を記述します。これらの エフェクト指定は、ドラムメンバーにも効果があります。各数字と実際のエフェク トの関係は、メニューの「機能(G)」→「楽器の試聴(P)」や「ドラムの試聴(Z)」 にて、実音で確認してください。
★一日の終り(フランス民謡) %80 \= @M P66 T0 #M0 o4 ?0 @M R0 W0 Q0 ← まずはエフェクトなし #M0 s4.f8ms<dr m2d r8d>c<rd4>l s2._4 @M R127 W127 Q127 ← 次にエフェクトを付けてみる #M0 s4.f8ms<dm r2>l c4.l8sc<dr d2._4
この節で紹介した3つの指定は、すべて「遅延効果」を与えることができます。 指定方法は、音量(V)やステレオ(S)と同様に、コロンの後に遅延音長を添えます。 通奏系の音に対し、次第にビブラートを強くしていったり、次第に演奏参加人員を 増やしていくといった効果を表現できます。
%100 @N P72 R0 W0 Q0 #N0 o4 d2& W127:1^2 d1^2 _4 ← 後半で次第に揺らぎを高めていく % %40 @K P53 R0 W0 Q0 #K0 o4 Q127:1^2 d1^2 _4 ← 次第に参加人員を増やす
(注)MIDI音源によっては、エフェクトの効かない仕様の機種があります。PCには 複数の音源が搭載されている場合があるので、メニューの「音源(V)」で音源 を切替えてみてください。より高性能なMIDI音源が見つかる可能性があります。
(2-12) なめらかなグリッサンド
トロンボーンやバイオリンは、その楽器特性から半音よりも細かい音程の音を演奏 することができます。Museでは、メンバー属性として“ピッチ”指定が可能であり、 半音の1/10精度の微分音程を指定することができます。 “@”によるメンバー宣言の後に“U”に添える-240~+240の数値でピッチを指定し ます。指定数値の10が半音分の音程を意味するので、±240によって、上下2 オクターブ、合計4オクターブ分のピッチシフトが可能です。
@A U+120 ← Aメンバーのピッチを1オクターブ上げる指定
他のメンバー属性と同様、指定したピッチは次の指定があるまで効果を維持します。 標準のピッチに戻す場合は、数値0を指定してください。
@A U0 ← 標準のピッチに戻す指定
更に“U”指定も“V”や“S”と同様に「遅延効果」指定を行うことができます。 これはUのピッチ量にコロンを添え、そこに音長を与えることで表現します。この 指定は“与えられた音長分の時間をかけて指定のピッチに到達せよ”という指定で すから、なめらかなピッチ変化、すなわちグリッサンドを演奏することができます。 エレキギターのチョーキングや管楽器のしゃくり上げなどにも活用でき、音楽表現 が多彩になります。
@A U-120:4 ← 4分音符分の時間をかけて1オクターブ下げる指定
以下は、なめらかなグリッサンドを演奏する例です。
★森のくまさん(アメリカ童謡) %80 @G P58 \= #G1 s8f+s m4& @U-120:4 m4 _8 @U0 mr+md4 & @U+120:4 d4 _8 @U0 ~~~~~~~~ ~~~ ~~~~~~~~ ~~~ ↑ ↑ ↑ ↑ ピッチ下降 標準に戻す ピッチ上昇 標準に戻す
ここで紹介したピッチ指定はドラムメンバーにも適用が可能であり、ドラムの表情 を変化させることができます。メニューの「機能(G)」→「ドラムの試聴(Z)」にて、 実音で確認してください。 (注)ピッチ変化は、鍵盤表示や譜面モニタには反映しません。
(2-13) ダンパーペダルの操作
ピアノに付いているダンパーペダルの操作は“@”によるメンバー宣言の後に“Y0” あるいは“Y1”で指定します。Y0はペダルを離す指定、Y1はペダルを踏む指定です。 ペダルが踏まれている間、音の減衰が抑制され、伸びやかに響きます。Y1が連続し て指定された場合、一度素早くペダルを離し、速やかに踏み直します。したがって 踏み替えの場合は、Y0Y1と記述する必要はありません。 (注)音源によってはY1の記述でペダルの踏み替えが効かない場合があります。その 際は“(3-18) ペダル踏み替えタイミングの調整”を参照してください。 以下は、ダンパーペダルを使用しない場合(離しっぱなし)と、ダンパーペダル操作 をする場合の比較例です。特に低音部の響きを聴き比べてください。
★ベートーベン「月光ソナタ」 @A P1 V127 Q0 R0 W0 S0 ;←●以降のY指定は@AによりAメンバーに作用する %60 \++++ ; ペダルを使用しない場合 #A1 o4 ?6 v127 [>l4<l]1 [>s4<s] [>f4<f]2[>r4<r] [>m<m], _2 #A2 o4 v80 (>s<dm)4()()() ()()()() (>l<dm)()(>l<r=f)() (>sc+<f)(>s<dm)(>s<dr+)(>fc+<r+) _2 ; ペダルを操作した場合 #A1 o4 ?6 v127 [>l4<l]1 [>s4<s] [>f4<f]2[>r4<r] [>m<m], _2 #A2 o4 @ v80 Y1 (>s<dm)4()()() Y1 ()()()() Y1 (>l<dm)() Y1 (>l<r=f)() Y1 (>sc+<f)(>s<dm) Y1 (>s<dr+) Y1 (>fc+<r+) _2 Y0 ↑ ↑ ↑ これらの位置にダンパーペダルの操作を挿入した。
ペダルを完全に踏み込まず、途中まで踏み込む事で響き具合を微妙に制御する演奏 テクニックをハーフペダルと言います。MIDI音源によってはこの発音に対応したも のがあります。ハーフペダルの指定は“Y”にピリオド“.”を添え、続けて1~126 の数値を与えます。
Y0 ← ペダルを踏んでいない状態 (通常のペダル) Y.1 ← ペダルをほんの少し踏み込む ↑ Y.64 ← ペダルを半分ほど踏み込む │ハーフペダル Y.126 ← ペダルをほとんど踏み込む ↓ Y1 ← ペダルを完全に踏み込んだ状態 (通常のペダル)
“Y”指定は音の減衰を抑制する指定として、ドラムも含め、ピアノ以外の楽器に も活用が可能です。ただし、通奏系の楽器に指定すると、次にY0がくるまでの間、 音長を越えて鳴り続けるのでご注意ください。 (注)ダンパーペダルを踏んでいる間は、同時発音数が累積されていきます。 踏みっぱなしにしておくと、演奏モタレの原因になるのでご注意ください。 適当な間隔を持ってY1などで踏み直すか、Y0で適宜離すことを推奨します。
(2-14) 全体に影響を及す値
今までメンバー単位の設定値“@PVSTRWQUY”フィンガー単位の設定値“?xvwopq<>” を紹介しましたが、この節では全メンバー・フィンガーに一気に影響を与える設定 値について紹介します。それは既に紹介したテンポ“%”と調性“\”の2つです。 これらの設定を切替えると、それ以降に記述するすべてのメンバー・フィンガーは それに従うことになります。以下に転調の例を示します。
★ガーシュイン「ラプソディー・イン・ブルー」 %80 @DF P001 V127 S0 T0 \-- ← ●始めは変ロ調 #D0 ?0 o5 v127 (mfs)4┃l-2(s-f-s-)4(f-s-f-)4┃m8r-dd-^r-8r=m^┃d=8>l-s-^f-8m4┃ #F0 ?6 o5 v127 (drm)4┃[f-2]4[<d>l]4[l+4d=2]4s=┃[f-l=]4.[f-l-]8^2┃[f-l=]1∥ \+++++ ← ●ここで嬰ロ調に転調 #D0 o5 v100 _16slsc8c_16slsc<d>cl┃_slsc8cc2┃_16drdm8m_16drdmfmr┃_drdm8mm2┃ #F0 ?6 o5 v80 [m<d>]4[l<d+>][m<r>][l<d+>]┃[m<d=>][c<r>][<d+>l]8[cs][lf][ms]┃ [f=>l<]4[f+r][s>l<][f+r]┃[f=>l<]┃[sm][f+r]8[md][r>c<][d>l<]┃_2.
移調楽器の多彩なアンサンブルで構成されるオーケストラの楽曲は、各楽器毎に異 なる調性で記譜されています。この様な楽曲を記述する場合は、メンバー毎に調性 の指定ができると便利です。これを行うには“\”の後にメンバー記号を添え、そ の後に“+-=”記号を与えてください。例えば、メンバーAのみに♯を3つ付けた い場合は、以下の様にします。
\A+++
“\”に添えるメンバー記号(A~O)は、列挙記述が可能であり、ドラムメンバーを 除く複数のメンバーに対して一気に指定できるのが特徴です。上述の例示楽曲で指 定した \-- は \ABCDEFGHIJKLMNO-- の省略形と見なすことができます。
(2-15) リタルダンドとアッチェレランド
テンポを滑らかに連続変化させるには、テンポ指定“%”における「遅延効果」を 利用します。遅延効果は、%のテンポ値にコロンを添え、そこに音長を与えること で表現します。これは“与えられた音長分の時間をかけて指定のテンポに到達せよ” という指定です。これを使うと、リタルダンドやアッチェレランドなどのテンポ変 化が可能となります。
★バッハ「小フーガ ト短調」 \-- @FG P020 S0 T0 V120 %72 ← ●始めはアンダンテ #F0 v120 o4 ?0 s4<r>c4.l8┃sclsf+lr4┃ #G0 v120 o4 ?0 _1┃_1┃ %132:1^1^1^1 ← ●4小節かけてアレグロにアッチェレランド #F0 s8rlrcl16sl8r┃s8r16sl8r16lc8l16slr<rd>┃ #G0 _1┃_1┃ #F0 clsclsf+lsrslc<drm=┃f=m=rf=m=rd+m=r8>l<rm=┃ #G0 _1┃r4lf4.m=8┃ #F0 f16sfs(slslslslsl)8.f32sl16slclsfm=┃flsld+lslrlsld+lsl┃ #G0 r8fm=rd+m=>l4<┃r8>l<m=>l<fm=16rm=8>l<┃ %72:1^1^1^1 ← ●4小節かけて再びアンダンテにリタルダンド #F0 frd+rsrd+rlrd+rsrd+r┃>l8<f>s<m=>fl<rf┃ #G0 r8>l16<rm=8>l16<m=f8m=16rm=16>l<ls┃fm=rfm=rd+m=r>l<rm=fslc=┃ #F0 m-l_m-rs_r┃d16>c<drdlsl>c<sf+s>lf+m=f+┃s2 #G0 <d>c-<drd>c-l<d>c-lc-<d>c-lsc-┃l8sf+rs4__2┃
休符と速度“%”のみで構成された、テンポ指定専用のフィンガーを設定すると、 短い区間できめ細かく演奏速度を増減させるテンポ・ルバート(緩急法)の調整が 容易になります。
\= #F0 _4 %100_1 %200_1 %300:1_1 %150_1 %80:1_1 #G0 o3 _4 dms<d> dms<d> dms<d> dms<d> dms<d> _4
(2-16) ノンレガートな奏法
減衰系の楽器ではあまり目立ちませんが、通奏系の楽器で同一音程を刻んで演奏す る際、各音の拍がぼやけた感じになる場合があります。この様な場合、各音の後ろ にごく短い休符を挿入することで、次音の拍が明瞭に識別できる様になります。 この「ノンレガート」の表記は、音長の後ろにスラッシュ(/)を1つ付け、続けて いくつかのピリオド(.)を添えて行います。ピリオドは3つまで添えることができ、 その個数で音を区切る度合を表します。占有音長を維持したまま音の長さを短くす る訳ですから、文法上はスタッカートの一種と考えられます。 また、スタッカート(//)やスタッカティシモ(///)にも、ピリオドを1つ添えるこ とができ、それらの間を取った音長を表現します。これらの音長短縮規則を時間軸 で示すと以下の様になります。
発音開始 ===⇒ 占有音長 ↓ ↓ ┠─┼─┼─┼─╂─┼─┼─┼─╂─┼─┼─┼─╂─┼─┼─┼─┨ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑↑ //// /// ///. // //. / /. /.. /...
「ノンレガート・マルカート」における、省略音長の継承などの文法上の扱いは、 「スタッカート」とまったく同じです。以下にノーマルなタンギングから、次第に ノンレガートの傾向を大きくし、マルカートから更にスタッカートへと移行してい く例を示します。下記の例は、各フレージング毎にTEXTコマンドを使って文字列を 表示させています。TEXTコマンドに関しては“(3- 2) カラオケとして利用する” をご覧ください。
%100 #B0 @P72 W10 Q10 T0 ?0 o4 *TEXT"レガート" d8 {d}3 (ddd)4 () d1 _2 *TEXT"ノンレガート" d8/... {d}3 (ddd)4/... () d1 _2 *TEXT"テヌート" d8/.. {d}3 (ddd)4/.. () d1 _2 *TEXT"マルカート" d8/. {d}3 (ddd)4/. () d1 _2 *TEXT"メゾスタッカート" d8/ {d}3 (ddd)4/ () d1 _2 *TEXT"スタッカート" d8// {d}3 (ddd)4// () d1 _2 *TEXT"スタッカティシモ" d8/// {d}3 (ddd)4/// () d1 _2 *TEXT"スタッカティシシモ" d8//// {d}3 (ddd)4//// () d1 _2
ひとかたまりのフレーズの最終音にノンレガートやマルカートの指定を行うことで、 次のフレーズとの分離性を強調することができます。
(2-17) アーティキュレーションの指定
日常会話では語尾が大切です。「ダメッ」「ダメェ~」では、印象がかなり異なり ます。音楽でも音尾のニュアンスが重要で“アーティキュレーションの無い演奏は、 台本の棒読みに等しい”とまで言われています。「アーティキュレーション」とは、 ある音から次の音へどの様に移っていくかを指す言葉で、強弱、テンポと併せて、 特にスラー、スタッカート、レガートなどの音尾表現がキーとなります。 Museではスラッシュ(/)とピリオド(.)を組合せて、スタッカートやノンレガートを 記述できました。この記号化された記法はデータの可読性は高いのですが、その代 償として表現できる止音パターンが9段階しかありません。 一方、グルーヴ属性の止音指定(q)を利用すると100段階の比率や絶対音長の指定が 可能ですが、局所的にアーティキュレーションに変化を与えたい場合は、逐一音符 の間にq指定を差し挟んでいく必要があり、可読性も落ちます。 これらの課題を解消し、もっと柔軟にアーティキュレーションを記述できる方法が 「スタッカート値」による指定です。止音指定(q)のように事前に設定するのでは なく、各音符の末尾に添えて記述します。また、省略音長と共に継承されるため、 通常のスタッカート記号と同様に扱うことができます。 スラッシュ(/)とピリオド(.)を組合せた今までの記法を「スタッカート記号」と呼 び、今回の記法を「スタッカート値」と呼んで区別します。スタッカート値の記述 方法には、相対指定、絶対指定、固定音長の3種類があり、これらは止音指定(q) と同一のラインナップになります。 相対指定は、スラッシュの後に-100~+100の数値で指定します。この数値で本来の 音長を基準にした1%~100%の音長変化を与えます。プラスの数値を指定することで、 音尾を通常より延ばせます。この点はスタッカート記号にはない特徴です。
d4/-30 ← 30%発音が短くなる
絶対指定は、スラッシュの後に(^)または(~)を添えた後、音長を指定することで、 比率ではなく絶対的な音長で発音を増減させる方法です。
d4/~16 ← 16分音符分発音が短くなる
(注)スタッカート値の音長にも加算(^)減算(~)乗算(`)の表現が可能です。ただし、 スラッシュに続く1文字目の(^)や(~)は、音長増減方向の識別子として働き、 音長演算には直接関与しません。 固定音長は、スラッシュの後に(^)や(~)を添えずに、そのまま音長を記述します。 この指定はこの音長自体が発音音長となります。一方、音符に添えられた音長は 占有音長として扱われるため、単音の和音記述と同等の効果が得られます。 ただし、音符にゼロ音長が指定された場合、どのようなタイプのスタッカートで あっても無音となります。
d4/16 ← [d16]4 と等しい d0/16 ← [d16]0 とは異なり発音しない
(注)連符内の音長は、絶対指定も固定音長もその連符内の比率でスケーリングさ れます。この点は止音指定(q)と異なる特性を持っています。
q-25 d4 d d d m& m& m& m s s s s ← 同一音程は連結される q-25 d4 d d d m/0 m m m s4 s s s ← 同一音程でも連結されない
/0 の指定は連結(&)と異なり、後続音が同一音程であっても連結することなく、 止音指定(q)も反映せずに通常音長で演奏します。 /= の指定は省略音長からスタッカートをクリアし、止音指定(q)に復帰します。 止音指定(q)が宣言されていたら、それが反映される点が /0 と異なります。 qに程度な刻み値を与えておき、スラーの開始音で /0 を指定し、終了音で /= を 指定するといった使い方が効果的です。
q-25 d4 d d d m/0 m m m/= s s s s ← 最後のミ以降はq-25が復帰する
(注)/0 や /= もスタッカート記号と同様に省略音長の継承対象になります。 止音指定(q)を使って曲想に応じた全体のアーティキュレーションを宣言しておき、 局所的なニュアンスを、スタッカート値で調整していくという方法がお勧めです。 以下にアーティキュレーションの有無による演奏差の例を示します。
★プロコフィエフ「ピーターと狼」 @M P49/0 V100 R80 W0 Q0 %100 \= <アーティキュレーションが無い例> #M0 q-10 o4 s4<d8.m16s8ls8.m16 s8lc8.<d16>s8mdr m-4m-8cm-4m-8c m-4>c-c-4._8 _1 <スタッカート値でアーティキュレーションを付けた例> #M0 q-10 o4 s4/-35<d8./-10m16s8/-50ls8./0m16 s8/l/=c8./-20<d16/-5>s8/0m/-70dr m-4/-30m-8/=cm-4m-8/0c/-50 m-4/-10>c-/-40c-4./0_8
(2-18) 強弱と音量の関係
Museには音の大小を表現する指定として、強弱“v”と音量“V”の2つがあります。 両者の違いの一つはその指定単位にあります。強弱“v”はフィンガー単位に指定 する値であるのに対し、音量“V”はメンバー単位に指定する値です。 例えて言えば、小文字“v”はそれぞれの指の強さ、大文字“V”はそれぞれの演奏 メンバーの体力(パワー)とでも申しましょうか。 以下で“v”と“V”の片方を一定にして、もう片方の値を次第に変化していく実験 を行います。曲の前半①では旋律と伴奏が共にクレッシェンドしていきます。後半 ②は旋律がデクレッシェンドしていきますが、伴奏は最後まで音量が変わりません。
★ベートーベン 交響曲第9番より“喜びの歌” %104 \+ @G P055 ;← ●以降のV指定は@GによりGメンバーに作用する ;①“v”を一定にして“V”を大きくしていく(全フィンガーに効く) #G0 v127 V25 o5 c4c V30 <dr V40 rd V50>cl V60 ss V90 lc V110 c4.l8 l4_ #G1 v127 o4 'G'1 'D' 'G' 'D' ;②“V”を一定にして“v”を小さくしていく(1つのフィンガーにだけ効く) #G0 V127 v110 c4c <dr v90 rd v60>cl v50 ss v40 lc v30 l4.s8 s4 #G1 v127 'G'1 'D' 'G' 'D'2 'G'2 _1
概念的には総音量は v と V の積で決ります。したがってどちらか一方がゼロなら ば無音状態となります。ただし強弱が“v0”の場合、そのデータはMIDI出力の対象 になりません。このことは“v0”が“V0”と異なり、MIDI音源に負荷を与えること なく鍵盤描画を行うことを示しています。よって強弱“v0”を利用すると、楽曲演 奏とは関係のない無音の鍵盤アニメーションを、もたれることなく実現できます。 もう一つの大きな違いは、“v”指定が各音の発音時点の音量を与えるのに対し、 “V”指定は発音している最中でも変えることができるという点です。 以上の違いを表にまとめると以下の様になります。
────┬────────┬─────────┬──────── │ 指定する単位 │ 変化ポイント │ ゼロ指定時 ────┼────────┼─────────┼──────── 強弱 v │ フィンガー毎 │ 発音開始時点のみ │ MIDI出力しない ────┼────────┼─────────┼──────── 音量 V │ メンバー毎 │ 発音中も変化する │ MIDI出力する ────┴────────┴─────────┴──────── (注)共にゼロ指定の場合はv0が優先され、MIDI出力されません。
音量指定“V”は、発音中も作用するという特徴があるため「遅延効果」を利用す ることで、なめらかなクレッシェンド・デクレッシェンドが実現できることは、 既にご紹介しました。 →“(2- 8) クレッシェンドとデクレッシェンド” 実は、強弱指定“v”にも「遅延効果」の記述が可能です。“V”での書式と同様に コロンに続く遅延音長で表現します。下記の例は、遅延効果の特性を比較するもの です。各タイプにTEXTコマンドを使って文字列を表示させています。TEXTコマンド に関しては“(3- 2) カラオケとして利用する”をご覧ください。
%60 \= @H P50 R127 T0 *TEXT"音量“V”の遅延効果(スロープ状に変化)" #H0 _2 v127 @V20 @V127:1`6 o5 d1^1 r m _2 *TEXT"強弱“v”の遅延効果(階段状に変化)" #H0 _2 @V127 v20 v127:1`6 o5 d1^1 r m _2
音量“V”がスロープ状に音が大きくなるのに対し、強弱“v”は発音のたびに音が 大きくなるという、いわば階段状の変化を示します。ピアノやマリンバなどの減衰 系楽器は、発音後に音量を上げることが物理的に不可能ですから“V”の遅延効果 よりも“v”の遅延効果を利用する方が自然です。
/┌─ 階段状“v” スロープ状“V” / │ /┌──┘ / ┌┘
(注)音源や選択した楽器によって異なりますが、音量Vが単純なボリュームとして の変化に対し、強弱vは波形レベルの変化が起ります。例えば生楽器のピアノ を弱く弾いて録音し、それを大音量で再生しても強い音には感じられません。 この様に強弱vは音そのものの“表情”に変化が起ります。これは“波形”の 変化であり、この点は波形加工の効果が強弱vによって左右されることと相関 があります。 →“(3-17) 波形を加工する”を参照のこと。
(2-19) 発音中の音量を変化させる
音符と音符の切れ目で音量変化を起こさせる場合は特段の工夫は必要ありませんが、 例えば付点全音符を発音後、4分音符分経過した時点で4分音符分の時間を掛けて 音量を上げ、更に4分音符経過したら、今度は2分音符分の長さで音量を徐々に下 げたい、といった場合(下図)には一工夫が必要になります。
V100 | ******* | * * | * * V60 ******* * | * | * V20 | ******* +-----+-----+-----+-----+-----+-----> 付点全音符の長さ
この演奏を実現する方法はいくつか考えられますが、ここでは3つの方法をご紹介 します。どれも同じ演奏をしますので、状況に応じて使い分けてください。 なお、下記説明は“音量V”を例にしていますが、他のメンバー属性(UYSWRQなど) にも応用が可能です。
①音量用のフィンガーを立ち上げて、休符で音量制御のタイミングをとる %60 @E P69 #E0 d1. _2 #E1 @V60 _4 V100:4 _2 V20:2 ②連結記号で音符を分離記述し、その間に音量制御を挿入する #E0 @V60 d4 & V100:4 d2 & V20:2 d2. _2 ③ゼロ音長の和音内に、休符と組合せた音量制御を記述する #E0 @V60 [ _4 V100:4 _2. V20:2 ]0 d1. _2
最後の③の方式は“音長の異なる休符の和音”という、少々トリッキーな方法です。 和音内の音符や休符は、それが出現した時点で和音冒頭に巻き戻されます。この特 性を活かし、それぞれの音量制御が発行されるタイミングを、和音冒頭からの休符 音長で調整する方法です。いわば音量制御の先行入力です。この方式は音量の変化 が同じパターンで連続する場合に、再現表記カンマ(,)が利用でき、見通しの良い データを作成することができます。
★ペールギュント組曲より「朝」(グリーグ) \- %75 @N P74 V35 W20 #N0 [ _8 V110:4 _2 V35:4 ]0 <<d8>lsfsl ,0 <d8>lsfs16lsl ,0 <d8>l<dr>l<r ,0 d8>ls f4_8
この③の方式を利用する場合、休符には和音冒頭からの累積音長を指定する必要が あります。この際、省略音長の特性を利用すると、音量制御間の音長を追加してい く体裁で簡素に記述できます。
[ _8 V40:4 _8_4 V60:2 _8_4_2 V80:8 ]0 ↓ 省略音長は直前の音長を継承するため、累積演算を担わせる事ができる。 [ _8 V40:4 _^4 V60:2 _^2 V80:8 ]0
(注)フィンガー属性は基本的に音符に付与される情報なため、本節の手法は利用で きません。①は作用するフィンガーが異なりますし、②は音の途中での指定で あるため無視されてしまいます。また③は先行入力した最後の指定だけが作用 してしまいます。したがって、本節の手法はあくまでもメンバー属性(移調Tを 除く)に利用できる方法となります。
(2-20) コードの転回形
“旋律”が音程の移り変りを表現するのに対し、“コード”は複数の音の混ざり具 合、ブレンド感を表現します。したがってコードを進行させていく際は、あまり音 域を変化させず、一定の音域に収めて旋律の邪魔をしない方が心地好いアンサンブ ルとなります。 Museは旋律の音域にコードを混入させない様にするため、F・G・A・Bの高音側 をルート音とするコードは、1オクターブ低い側にシフトさせていますが、これだ けでは音域の跳躍を抑止することはできません。根本的にこの跳躍感を解決するた めには、コード各音の並びを組替える“転回”という方法を取ります。 転回はコードネームの直後に“<”あるいは“>”記号を添えて指定します。 “<”でコード内の最低音を1オクターブ上げる上昇方向の組替えを行い、“>”で コード内の最高音を1オクターブ下げる下降方向の組替えを行います。また、同一 記号を列挙することで転回操作の階数が指定できます。列挙は最大4つまでです。
≪上昇方向の転回例≫ ドミソ ミソ<ド> ソ<ドミ> <ドミソ> <ミソ<ド>> #B0 'C' → 'C<' → 'C<<' → 'C<<<' → 'C<<<<' _
以下に転回指定の例を示します。基本形の演奏では、伴奏コードが飛び跳ねていま すが、転回を施すことでコード進行がスムーズになり、旋律と伴奏が互いの役割を 住分けて果す様になります。
\= %120 @D P1 V100 W0 R80 Q0 @A P49 V100 W0 R80 Q0 *TEXT"基本形のコード伴奏" #D0 v120 o5 ┃f4l2f4 ┃m4c2m4 ┃r4c-r-2 ┃s2f ┃_1 #A0 v80 o4 ┃'F'1 ┃'Em'1 ┃'Gdim'1 ┃'Csus4'1 ┃_1 *TEXT"転回形のコード伴奏" #D0 v120 o5 ┃f4l2f4 ┃m4c2m4 ┃r4c-r-2 ┃s2f ┃_1 #A0 v80 o4 ┃'F'1 ┃'Em>>'1 ┃'Gdim'1 ┃'Csus4>'1┃_1 ↑ ↑ これらの部分で転回形を用いた
Museでのコード記述は“ルート音”の指定から始って本節の“転回”の指定まで、 7つものパラメータがあります。省略可能なパラメータがほとんどなので、実際に 記述する際はそれ程の困難もないのですが、あえて最も複雑な指定を行った場合を 以下に示します。(必須なのは、ルート音と音長のみ。音長も省略音長が可能)
コードネーム テンション 音長 ↓ ↓ ↓ ' C# dim >>> (+9,13) /Gb ' 2 :16 ↑ ↑ ↑ ↑ ルート音 転回 ベース音 アルペジオ (分数コード)
なおテンションとベース音は、転回後の和音に各々できるだけ近い音程で 寄り添う様に追加されます。
[3]より高度な記述
(3- 1) コマンドによる制御
この節ではコマンドという概念の機能を紹介します。コマンド書式は“*”でコマ ンド名を与え、それに続けてダブルクォートで括ったパラメータを添えます。
*コマンド名 "パラメータ文字列"
パラメータ文字列は、キャンセル文字に対する唯一の例外領域です。スペース・全 角文字・半角カタカナ・半角縦棒(|)・セミコロン(;)・感嘆符(!)も文字列として 解釈されます。ただし改行とタブだけはキャンセルされます。 (注)HEAD,TEXT,MARK,STOP,LAME,LILYなどのパラメータに、ダブルクォート(")を 記述したい場合、バッククォート(`)を書くことで(")に置換されます。 また、連続するバッククォート(``)も、ダブルクォート(")に置換されます。 バッククォート自体を表示したい場合は、(`@)とアットマークを添えます。 コマンドは以下の種類が用意されています。始めの4つは、鍵盤上部に文字列が表 示される機構を持っており、それぞれ表示色が異なります。
*HEAD ← 曲のタイトル表示 ‥‥‥‥‥‥‥(青) ↓参照項番 *TEXT ← 文字列の表示 ‥‥‥‥‥‥‥‥‥(茶) (3- 2) *MARK ← 位置決め可能な文字列表示 ‥‥‥(紺) (3- 3) *STOP ← 一時停止と文字列表示 ‥‥‥‥‥(赤) (3- 4) *FONT ← 表示文字のフォント指定 (3- 5) *WAVE ← 音声ファイルの再生 (3- 6) *COLR ← メンバー色のカスタマイズ (3-10) *DRUM ← ドラマーに関する転向や残響の制御 (3-11,12) *ROOM ← 演奏会場の設定 (3-13) *FING ← フィンガー属性の一括指定 (3-15) *DATA ← エクスクルーシブの指定 (3-22) *POOL ← エクスクルーシブ共通部の記憶 (3-22) *LAME ← MP3エクスポートのオプション (3-23) *LILY ← 楽譜出力の体裁記述 (3-24)
HEADコマンドは通常曲のタイトル等を記載します。データ中のどの位置に書いても 構いませんが、1つのMuseファイルに唯一つしか記述できません。このHEADコマン ドの文字列内容は、ロード直後にテキスト表示エリアに描画されます。例として、 以下のHEADコマンドは、本Readme.txtをロードした直後に表示されます。
*HEAD"♪ Muse文法解説のための演奏例 ( Readme.txt 連動 )"
(注)COLR,DRUM,ROOM,LAMEおよびLILYの一部も、1つのMuseファイルに唯一つ記述 するコマンドです。
(3- 2) カラオケとして利用する
TEXTコマンドを打っておくと、そのタイミングで鍵盤上部にその文字を表示させる ことができます。文字列の表示色は茶色です。1度表示した文字は次に本コマンド が指定されるまで維持されます。消去したい場合はパラメータを空にしたコマンド を与えてください。
*TEXT""
TEXTコマンドをうまく利用すれば、ちょっとしたカラオケ・システムが作れます。 通常、音符の合間にTEXTコマンドを挟み込めばよいのですが、以下の例では、休符 だけで構成された歌詞用フィンガーを設定しました。この様に専用フィンガーを設 定すると、後述するマクロ機構を活用すれば、一番と二番で同一の旋律を繰り返し ても、歌詞は一番・二番で変えることもできます。 カラオケでは、ほんのちょっと早めに歌詞を出すのがコツです。このフライングの 指定には、音長の減算記号“~”を利用すると調整が容易です。
★静かな湖畔(スイス民謡) %120 \- @JK P69 V127 S0 T0 Q0 #J0 o4 v127 f8.f16f8.s16 l8.l16l8.l16 s8.f16s8.l16 f8.f16d4 l8.l16l8.c16 <d8.d16d8.d16> c8.l16c8.<d16> l4.<d8> l4.<d8> l4.<d8> l8.<d16>l8.<d16> l2 _1 #K0 o3 v127 #K1 ← 歌詞専用のフィンガー *TEXT"♪静かな湖畔の 森かげ近く" _1_1~8 ← 八分音符早めに出す *TEXT"♪起きてはいかがと かっこが鳴く" _1_1 *TEXT"♪カッコー" _2 *TEXT"♪カッコー カッコー" _2 *TEXT"♪カッコー カッコー カッコー" _8^8. *TEXT"♪カッコー カッコー カッコー カッコー" _8^8. *TEXT"♪カッコー カッコー カッコー カッコー カッコー" _2^16
*TEXTで最後に表示した文字列は、演奏が終了しても表示したままになります。 もし演奏終了時点で消去したければ *TEXT"" を最後に記述しておいてください。
(3- 3) 楽曲中の位置決めを容易にする
複数の楽章や楽曲を1つのMuseデータに納める場合、各曲の頭出しが容易に行える と便利です。MARKコマンドは演奏を一時停止することなく、頭出しを可能にします。 文字列を表示する機構としてはTEXTコマンドと同等ですが、演奏/停止を問わず、 シークバーの左右の三角ボタンで位置決めすることができます。表示色は紺色です。
★チャイコフスキー「弦楽四重奏曲第1番ニ長調」 *MARK "第二楽章 アンダンテ・カンタービレ" %58 \-- @B P50 R127 #B0 ?0 o4 c8<rr>c <m4r/.. d4>s8f<d>c f2/ f8rs4 r<d/.. d8r>ls/. f2 _2.
(注)STOPやMARKコマンドが存在する場合、テキスト表示領域をマウス右ボタンでク リックすると、その位置を示す逆三角形のゲージマーク▲をON/OFFできます。 このゲージマークは、STOPが赤、MARKが紺で表示されます。更にゲージマーク が出ている状態でマウス左ボタンをクリックすると、その位置におけるゲージ 間の演奏時間がポップアップします。
(3- 4) 途中で強制的に停止させる
STOPコマンドは、2つの機能に大別されます。一つは、このコマンドに到達した時 点で演奏が一時停止する機能。今一つは、このコマンドを記述した所を曲の最後と 解釈し、そこで演奏を終了する機能です。この2つの区別は、パラメータに文字列 内容を与えるか否かで行います。 ●一時停止の機能
*STOP "マウスをクリックしてください" ↑この記述がある所で演奏が一時停止する。 停止とともにパラメータ文字列が赤字で表示される。
●演奏終了の機能
*STOP "" ↑この記述がある所で演奏は終了する。 (注)この場合でもダブルクォートは必要です。
前者の例は、シークバーの左右の三角ボタンをクリックすると、STOPポイントに位 置決めされるため、強力なデバッグ支援機構として活用できます。この例は、本フ ァイル(Readme.txt)の各節表題で利用しています。参考にしてください。 後者の例は、ある位置以降のデータを一時的に無効にしたい場合に活用できます。 また、後ほど紹介する“マクロ”と組合せることで威力を発揮します。 →“(3- 8) 演奏パターンの部品化”を参照のこと。
(3- 5) 表示フォントを切換える
テキスト表示領域に文字列を表示させるコマンドは、HEAD・TEXT・MARK・STOPの4 種類がありますが、これらの表示フォントはデフォルトで「Meiryo UI/Bold」とな っています。上記4種類のコマンドを発行する前に、FONTコマンドを発行すること で、それらの表示フォントを変更させることができます。書式は以下の通りです。
*FONT"フォント名,修飾"
このFONTコマンドが指定されると、新たなFONTコマンドが発行されるまで、指定さ れたフォントが維持され続けます。フォントには、以下の様な“太字”と“斜体” を組合せた修飾が可能です。 0:標準 1:太字 2:斜体 3:太字+斜体 修飾を省略した場合は標準の修飾が採用されます。逆に、フォント名を省略し修飾 だけを指定した場合は、直前のフォントに対して修飾を施した状態になります。 フォント名と修飾の組合せで表現できる文字形状は、メニューの「機能(G)」→ 「フォントの確認(J)」にて表示イメージを確認することができます。 利用するPCに存在しないフォント名が指定されると、そこでの修飾指定も含めて 無視され、その時点で有効となっていたフォント指定が維持されます。 この特性を生かすと、再現環境に応じたフォントの優先度指定が可能となります。 例えば以下の様に連続したフォント指定を記述することで、特殊なフォントが存在 する環境ではそのフォントを採用させ、存在しない場合は一般的なフォントを採用 させることができます。
*FONT"Times New Roman" ← 一般的に存在するフォント *FONT"HG正楷書体-PRO" ← 少々特殊なフォント *FONT"ほにゃ字" ← かなり特殊なフォント
(注)連続指定したすべてのフォントが、利用するPC上に存在しない場合は、 デフォルトの「Meiryo UI/Bold」が採用されます。
(3- 6) 音声ファイルを再生させる
Museは、任意のタイミングでオーディオ系のファイルを再生させる機構を持ってい ます。通常、MIDI音源とWAVE音源は独立していますから、MIDIでは表現できない効 果音をミキシングすることが可能となります。コマンド名は WAVE で、パラメータ にはWaveファイルに代表される音声を含むオーディオ系のファイル名を記述します。 (注)指定できるファイルは、wav/mp3/wma/avi/mpg/wmv/asf 等で、動画系のデータ でも音声部分のみを再生します。ただし、精緻な同期処理を施していないため、 再生遅延や演奏モタレが起こる傾向にあります。楽器音ではなく、あくまでも 効果音としてご活用ください。 ファイル名はパス記述が可能です。相対パスにする場合は、記述するMuseファイル 自体からの相対パスにします。しかしパス記述は、Museデータを配布することを考 慮すると、使用を避けた方が無難です。Museファイルと音声ファイルは極力同一フ ォルダに配置し、ファイル名だけの指定にすることを推奨します。 (注)指定されたパスで音声ファイルが見つからない場合や、再生不能なファイルが 指定された場合でも、エラーにはならず演奏は進行します。 なお、下記の例は曲の途中から演奏しているので“V”指定を活用してフェードイ ンを実現しています。メンバー宣言でEおよびFのメンバーを指定しているため、 一ヶ所の“V”で、メンバーEFを同時に処理しています。参考にしてください。
★ショパン「幻想即興曲」 %80 \= @EF ← メンバー宣言EF P1 S0 T0 W0 R100 Q0 ← メンバーEFに対し、一気に属性指定 #E0 o4 v127 V30 V127:2 ← メンバーEFを同時にフェードイン #F0 o4 v127 ?6 #E0 (lclclcl)8.s+16l8.c16┃s8_<c4 & (c8lsm-d>l8.<s16>)2┃ #F0 m8c<r+>c┃mc<ms>┃l<d-md->┃ #E0 r2~16c16l8.s+16l8.<r16>┃s4_l(<d>cl)┃s2(lclcl)8s<dr>┃ #F0 c8<m>smc<r+lr+┃mscs rflf┃>m<msc <r>csm>┃ #E0 <m2s2┃f4m[r]4~8(mrdr)8m8.d16┃>s2l2┃^2(c-<d>c-<d>c-)8l8<r8m8┃ #F0 l<dml<d>l[m<m>]d┃cmlmsmlm┃>msc<m>rfl<r>┃fl+<dfl+fm>f┃ #E0 f4mrm┃d4.>f+32sls<m4.r8┃r1┃[d1>s1m1]2 #F0 c<r[m+d]s[rf]c[ms]r┃[>l<d]mlm[>l<r]msm┃[>l<r]msc<r>csm[m1>l1]2┃ *WAVE "clap.mp3" _1_1_1 ;← ●WAVE音が鳴っている間、休符を入れておく
上記例では曲の終了時に拍手のウェーブ音をmp3で入れています。最後の和音の長 さは全音符ですが、和音自体の占有音長を二分音符にして音が鳴り終る前に拍手が かぶる様に工夫しています。また、拍手が鳴っている時間分だけ最後に休符を入れ て、Muse演奏自体が終了しないようにしています。Muse演奏が終了した時点、つま りシークバーが右端に達した時点でWAVE音源もOFFになりますから、最後までWAVE 音を鳴らしたい場合この最後の休符は必須です。WAVE音を途中で強制的に止めたい 場合は、パラメータなしのコマンド *WAVE"" を指定してください。 (注)余談ですが、私は曲が最後まで鳴り終らない内に拍手をするはあまり好きでは ありません。最後の響きまで堪能し、鳴り終ってからの静寂も味わいたいもの です。実際、Museデータでも最終音の余韻を響かすために最後に適度な休符を 与えることをお勧めします。
(3- 7) マクロで各種の繰返しに対応する
音楽には同じパターンが何度も出現することが多々あります。その様なパターンの 入力を何度も何度も行うのは単調で苦痛な作業であり、かえって入力ミスも増えま す。そこでMuseでは、既に入力したパターンを中括弧 { } で括って領域を定義し、 その領域に任意の名前を付けることで、再度同じパターンを使用したくなった場合 に、その名前の入力だけで済ます機構を設けました。 この様な機構は一般に“マクロ”と呼ばれています。ここでは、領域を指定するマ クロ記述を“定義マクロ”と呼び、それを任意の位置に再現するマクロ記述を“展 開マクロ”と呼ぶことにします。それぞれの書式は以下の通りです。
《定義マクロ》→ $ マクロ名 { … ここに実体が入る … } 繰返回数 《展開マクロ》→ $ { マクロ名 } 繰返回数
マクロ名は自由な命名が可能です。ただし、スペース・タブ・改行・全角文字・半 角カタカナ・半角縦棒(|)の、キャンセル文字群は無視されます。セミコロン(;)お よび感嘆符(!)は、コメント記述文字として解釈されるので使えません。 マクロは、今まで紹介したあらゆる指定記述とは本質的にレベルが異なり、演奏時 の音出しや文字表示を指示するものではありません。あくまでも、定義マクロの領 域内に入っている記述が展開マクロの位置に、展開マクロで指定した繰返し回数分、 あたかも存在するかの様に解釈されるだけです。 (注)定義マクロで指定される“繰返回数”は、マクロの定義域に含まれません。 あくまでも、中括弧{ }で囲まれた内容が、展開マクロ側で利用されます。 なお、定義側も展開側も繰返し回数を省略すると1と見なします。 一般にマクロというと、定義マクロ部分は実行されず定義に徹するのが普通ですが、 Museでは、定義マクロ部分も通常の記述部分と同様に演奏されます。この思想によ り、一度書いた部分を気軽にマクロ定義で括っていけます。逆に定義マクロを定義 のみとし演奏させたくない場合については、次節で紹介する“演奏パターンの部品 化”を参照してください。では講釈はこの位にして、とにかく記述例を示してみる ことにします。
★クラリネットをこわしちゃった(フランス童謡) %280 \- @K V080 P49 S0 T0 Q00 R40 W0 @M V120 P70 S0 T0 Q10 R60 W0 @N V120 P72 S0 T0 Q20 R60 W0 @Z P1 #K0 o6 v80 #M0 o4 v80 #N0 o4 v120 *TEXT"ここから、冒頭のマクロの定義開始です" $Macro1{ #K0┃'F'1&┃'F' ┃'F'& ┃'F'2._4┃ ┃'F'1&┃'F' ┃'F'& ┃'F'2._4┃ #M0┃f4fff┃fffs┃l2.s4 ┃f2d4_ ┃ ┃f4fff┃fffs┃l2.s4 ┃f2d4_ ┃ #N0┃f4fff┃fffs┃l2.s4 ┃f2d4_ ┃ ┃l4lll┃lllc┃<d2.>c4┃l2f4_ ┃ *TEXT"これは、セーニョ部分のマクロ定義です" $Macro2{ #K0┃'F'1 ┃'D7>>' ┃'Gm7'& ┃'Gm7'2_ ┃ ┃'C7>>'1& ┃'C7>>' ┃'F'& ┃'F'2_ ┃ ┃'F'1& ┃'F'4_2. ┃'F'1& ┃'F'1 ┃ ┃'F'1& ┃'F' ┃'D7>>' ┃'Gm'4'D7>>''Gm'2┃ ┃'C7>>'1& ┃'C7>>'& ┃'C7>>' ┃ #M0┃l2l4.//l8// ┃f+4rmf+ ┃s2s4.//s8//┃s2_ ┃ ┃s4//ss4.//f8┃m4drm ┃f2f4.//f8//┃f2_ ┃ ┃l2.s4 ┃f4___ ┃l2.s4 ┃f4__<d> ┃ ┃l4l8ll4<d> ┃l4l8ll4<d>┃<rd>cl ┃slcc ┃ ┃s4s8ss4c ┃s4s8ss4c ┃<d>cls ┃ #N0┃<d2d4.//d8//┃r4d>cl ┃c2c4.//c8//┃c2_ ┃ ┃c4//cc4.//c8┃<d4>cls ┃l2l4.//l8//┃l2_ ┃ ┃<d2.>c4 ┃l4___ ┃<d2.>c4 ┃l4__<d> ┃ ┃l4l8ll4<d> ┃l4l8ll4<d>┃<rd>cl ┃slcc ┃ ┃s4s8ss4c ┃s4s8ss4c ┃<d>cls ┃ } #K0 ┃'F'2_┃ #M0 ┃f1 ┃ #N0 ┃f1 ┃ } *TEXT"冒頭のマクロを再現します" ${Macro1} *TEXT"マクロを抜けました" #K0┃'F'1&┃'F' ┃'F'& ┃'F' ┃ ┃'F'1&┃'F' ┃'F'& ┃'F' ┃ ┃'F'1&┃'F' ┃'F'& ┃'F' ┃ #M0┃f4fff┃ffff ┃ffff ┃fffs┃ ┃l2.s4┃f2d ┃f4fff ┃ffff┃ ┃f4fff┃fffs ┃l2.s4 ┃f2d ┃ #N0┃f4fff┃ffff ┃ffff ┃fffs┃ ┃l2.s4┃f2d ┃l4lll ┃llll┃ ┃l4lll┃lllc ┃<d2.>c4┃l2f ┃ *TEXT"セーニョに戻ります" ${Macro2} *TEXT"最後に、コーダを演奏します" #K0┃'F'4_'C7>>'_┃'F'__2┃ #M0┃f4//_<d>_ ┃<f>__2┃ #N0┃f4//_<d>_ ┃<f>__2┃ *TEXT""_1`2 $Drum{ ;ドラムのマクロ(次節でも使用します) #Z0 $Set{v60 [o4r+]0 ,4,8,,4,}17 v127_2o3l2 ${Set} v127_2o3d+2 ${Set}25 v127_2o2r+2 ${Set} v127_2o3l+2 ${Set}8 o4 v127 [l+<l>]1 l+,l+ ,, l+l+l+l+ [l+<l>], ${Set}9 v127_2o5s2 ${Set} v127_2o5f+2 ${Set}7 ,4_,_,__2 }
定義マクロの{ }の中には、今まで出てきたあらゆる記述記号を包含できます。 また、音符の連結“&”までを記述しておき、展開マクロの次の音と連結させるこ とも可能です。この様にマクロはかなり柔軟な記述ができるので、楽典に山の様に 存在する繰返し記述(反復記号・1カッコ・2カッコ・セーニョ・ダルセーニョ・ コーダ・ダカーポ・フィーネ等)を、これ一発で表現できます。 また繰返し回数は、特にパーカッションで威力を発揮します。上記例は1小節分の パターンを $Set で定義しておき、あとは必要な小節分回数で展開しています。 定義マクロは入れ子が何階層でも記述できます。例えば、上記の例で、$Macro1 の 中に、$Macro2 が含まれていますし、ドラムのマクロ $Drum の中にも、$Set が含 まれています。ただし、定義マクロの中にそれ自身の展開マクロを記述すると無限 ループが発生するため、文法エラーとなります。
(3- 8) 演奏パターンの部品化
マクロは繰返し記号への対応という使い方以外にも“演奏パターンの部品化”とい う活用もできます。あらかじめ旋律やリズムのデータを部品化し、それをマクロと して定義しておきます。そして、実際の演奏は展開マクロで行うという構成です。 ただし、Museのマクロはそのままの記述では実際の演奏を行ってしまいますので、 部品として扱うには、その時点では定義するだけで演奏はしない、という方法が必 要になってきます。この構造を実現するには2つの方法があります。 <STOPコマンドを利用する方法> 演奏させるデータの末尾に *STOP"" を記述し、そこで演奏を終了させる様にして おきます。そして、定義マクロは *STOP"" の後に記述する様にします。 <繰返し数ゼロを利用する方法> 定義マクロの繰返し数にゼロを指定することで、定義マクロ自体は演奏しないため、 定義マクロをどこにでも自由に記述することができる様になります。 以下は、前節の曲を *STOP"" を利用した部品構造で書き直した例です。
★クラリネットをこわしちゃった(マクロを部品として利用) %280 \- @K V080 P49 S0 T0 Q00 R40 W0 @M V120 P70 S0 T0 Q10 R60 W0 @N V120 P72 S0 T0 Q20 R60 W0 #K0 o6 v80 #M0 o4 v80 #N0 o4 v120 *TEXT"部品形式で書き直しました(今演奏しているのは部品1です)" ${Part1} *TEXT"ここで、部品2に入ります" ${Part2} #K0 ┃'F'2_┃ #M0 ┃f1 ┃ #N0 ┃f1 ┃ *TEXT"部品1に戻りました" ${Part1} *TEXT"再度、部品2を演奏します" ${Part2} #K0 ┃'F'2_┃ #M0 ┃f1 ┃ #N0 ┃f1 ┃ *TEXT"次は、部品3です" ${Part3} *TEXT"またしても、部品2に戻りました" ${Part2} *TEXT"最後に、コーダの部品4" ${Part4} ${Drum} ← ●前節で定義してあるドラムセットを再利用しています _1 *TEXT"以上です" *STOP"" ← ●ここで演奏終了(以下は部品データ) ■部品1 $Part1{ #K0┃'F'1&┃'F' ┃'F'& ┃'F'2._4┃ ┃'F'1&┃'F' ┃'F'& ┃'F'2._4┃ #M0┃f4fff┃fffs┃l2.s4 ┃f2d4_ ┃ ┃f4fff┃fffs┃l2.s4 ┃f2d4_ ┃ #N0┃f4fff┃fffs┃l2.s4 ┃f2d4_ ┃ ┃l4lll┃lllc┃<d2.>c4┃l2f4_ ┃ } ■部品2 $Part2{ #K0┃'F'1 ┃'D7>>' ┃'Gm7'& ┃'Gm7'2_ ┃ ┃'C7>>'1& ┃'C7>>' ┃'F'& ┃'F'2_ ┃ ┃'F'1& ┃'F'4_2. ┃'F'1& ┃'F'1 ┃ ┃'F'1& ┃'F' ┃'D7>>' ┃'Gm'4'D7>>''Gm'2┃ ┃'C7>>'1& ┃'C7>>'& ┃'C7>>' ┃ #M0┃l2l4.//l8// ┃f+4rmf+ ┃s2s4.//s8//┃s2_ ┃ ┃s4//ss4.//f8┃m4drm ┃f2f4.//f8//┃f2_ ┃ ┃l2.s4 ┃f4___ ┃l2.s4 ┃f4__<d> ┃ ┃l4l8ll4<d> ┃l4l8ll4<d>┃<rd>cl ┃slcc ┃ ┃s4s8ss4c ┃s4s8ss4c ┃<d>cls ┃ #N0┃<d2d4.//d8//┃r4d>cl ┃c2c4.//c8//┃c2_ ┃ ┃c4//cc4.//c8┃<d4>cls ┃l2l4.//l8//┃l2_ ┃ ┃<d2.>c4 ┃l4___ ┃<d2.>c4 ┃l4__<d> ┃ ┃l4l8ll4<d> ┃l4l8ll4<d>┃<rd>cl ┃slcc ┃ ┃s4s8ss4c ┃s4s8ss4c ┃<d>cls ┃ } ■部品3 $Part3{ #K0┃'F'1&┃'F' ┃'F'& ┃'F' ┃ ┃'F'1&┃'F' ┃'F'& ┃'F' ┃ ┃'F'1&┃'F' ┃'F'& ┃'F' ┃ #M0┃f4fff┃ffff ┃ffff ┃fffs┃ ┃l2.s4┃f2d ┃f4fff ┃ffff┃ ┃f4fff┃fffs ┃l2.s4 ┃f2d ┃ #N0┃f4fff┃ffff ┃ffff ┃fffs┃ ┃l2.s4┃f2d ┃l4lll ┃llll┃ ┃l4lll┃lllc ┃<d2.>c4┃l2f ┃ } ■部品4 $Part4{ #K0┃'F'4_'C7>>'_┃'F'__2┃ #M0┃f4//_<d>_ ┃<f>__2┃ #N0┃f4//_<d>_ ┃<f>__2┃ }
“(1-19) 再現表記の活用”で紹介した「リズムパターンの分離」とゼロ音長を利 用して、リズムのマクロ化を実現することもできます。定義マクロで再現表記(,) のみを使いリズムだけを記述しておき、マクロを展開する際にゼロ音長で発音する 和音やコードを指定するという手法です。 <STOPコマンドを利用する方法>
┌─→ 'Cm'0 ${Rhythm} ;Cマイナーのコードをリズムパターンで演奏 ├─→ [dms]0 ${Rhythm} ;ドミソの和音をリズムパターンで演奏 │ │ *STOP"" ;ここで演奏が停止する │ └── $Rhythm{,4,4,8,8,4} ;リズムパターン定義
<繰返し数ゼロを利用する方法>
┌── $Rhythm{,4,4,8,8,4}0 ;リズムパターン定義(ここでは演奏しない) │ ├─→ 'Cm'0 ${Rhythm} ;Cマイナーのコードをリズムパターンで演奏 └─→ [dms]0 ${Rhythm} ;ドミソの和音をリズムパターンで演奏
(3- 9) スコア譜とパート譜の混在
テンポ値が添えられていない単独の“%”指定を利用すると、必然的にスコア風の 記述をすることになります。しかし例えば楽曲部分だけをスコア譜で記述し、歌詞 の部分はパート譜で記述したいといった場合も多々あります。この様な場合は“%” の後にメンバー記号(A~O,Z)を添えてください。添えられたメンバーに対してのみ、 強制タイミング合せの機構が働く様になります。これにより、スコアとパートの楽 譜記述を混在させることができます。 “%”に添えるメンバー記号は、複数列挙することが可能です。( 例 %ABC ) その場合、列挙したメンバー内で、最も先まで音符のある位置まで休符が挿入され、 それらのメンバーだけが、その位置に整列します。 以下は、ABCメンバーをスコア譜で、Dメンバーをパート譜で記述する例です。
#A0 |①---------->| #B0 |②------------------------>| #C0 |③----------------->| %ABC ←─●ここでABCのタイミングを合せる #A0 |④-------------->| #B0 |⑤-------------->| #C0 |⑥-------------->| #D0 |⑦------------->| ←┬●この部分はパート譜で記述 #D0 |⑧------------------->| ←┘
すると、メンバーABCにだけに整列のための休符が与えられ、実際の演奏は以下 の様になります。
●メンバーABCはこの位置に整列 ↓ #A0 |①---------->| 休符 |④-------------->| #B0 |②------------------------>|⑤-------------->| #C0 |③----------------->| 休符 |⑥-------------->| #D0 |⑦------------->|⑧------------------->| ↑ ●メンバーDには強制休符は与えられない
(注)単独の“%”指定は“%ABCDEFGHIJKLMNOZ”の省略形と見なすことができます。 スコア譜のメンバーが多く、パート譜のメンバーが少ない場合、“%”に添えるメ ンバーが増えて入力が煩雑になります。そのような場合は“%”の直後に“~”を添 えることで以降に記述するメンバーの意味を逆転させることができます。すなわち タイミングを合せたくないメンバーのみを列挙すればよいことになります。
%ABC ;肯定形の記述(ABCメンバーを対象とする) %~D ;否定形の記述(Dメンバー以外を対象とする)
(注)“%~”にメンバーを1つも添えない場合は、全メンバーのタイミング合せを行 わない指定となり演奏上の効果はありません。ただし、その位置の行番号を 譜面モニタ下部に表示させる機能は有するため、データの位置確認に活用で きます。この手法は、特にパート譜で記述した場合に有効です。 詳細は、“( 8) 譜面モニタの使い方”→“■属性の表示”を参照のこと。
(3-10) メンバー色をカスタマイズする
Museは初期状態で各メンバーにデフォルトの表示色(メンバー色)が与えられてい ますが、COLRコマンドを活用するとこの各メンバー色を自分の好みの色に変えるこ とができます。具体的な指定は、COLRコマンドのパラメータで行います。
*COLR" A(64a088) E(550c2d) "
上記の例は、メンバーAとEに対して初期の色を変更する記述です。この様にメン バー記号(A~O,Z)に括弧で括られた色コードを添えた記述を、カスタマイズしたい メンバー分、列挙していくという形式で指定します。 色コードの指定は、RGBの各輝度を00~ffまでの16進数表記で行います。この 6桁が色コードで、これはホームページ作成などで使用されるHTMLの指定方法と同 様です。上記例のメンバーAは、赤が64の輝度、緑がa0の輝度、青が88の輝度を指 定しています。パラメータ中に同じメンバーの指定がなされた場合は、最後に指定 した色コードが採用されます。また、タブやスペース・改行は任意に挿入できます。 更に、メンバーIDは列挙が可能であり、一気に複数のメンバーを同一色にすること ができます。
*COLR" ABCD(28a9bb) K(b08a74) IHF(006ce5) "
このCOLRコマンドは、1つのMuseファイルに唯一つ記述します。記述する位置はど こでも構いませんが、その設定は曲頭から作用します。 (注)メンバー色の配色検討は、配色マップダイアログを活用すると便利です。 詳しくは【第3章】機能詳説 の“(14) 配色マップの活用”をご覧ください。
(3-11) ドラマーの転向について
ドラムセットはそのメンバーの音色(P)で指定できますが、ドラムを担うメンバー がZメンバー1人では、同時に異なるドラムセットを鳴らすことができません。 そのためには、もう1人ドラマーをアサインする必要があります。この様な場合に DRUMコマンドを利用すると、A~Oまでのメンバーの内、誰か1人をドラマーとして 転向させることができます。 この指定はDRUMコマンドのパラメータに、転向させるメンバーを与えて行います。 与えられるメンバー記号は A~O の15メンバーの内のいずれか1つです。 例えば、メンバーHさんをドラマーに転向させる場合は、以下の様に記述します。
*DRUM "H"
DRUMコマンドも、HEADコマンドと同様に、1つのMuseファイルに唯一つ記述します。 ファイル中のどの位置に書いても構いませんが、複数記述することはできません。 どの位置にDRUMコマンドを記述したとしても指定メンバーは最初からドラマーとし て演奏に参加します。ただし、演奏の途中で楽器を持替える様に転向させることは できません。基本的にドラマーへの転向は一人だけで、しかも一回だけとなります。 また、このDRUMコマンドを使用すると、上記とは逆にドラマー専任のZメンバーを、 A~Oメンバーと同様のメロディー奏者に転向させることができます。 その記述は、パラメータに“Z-”を与えることで行います。
*DRUM "Z-"
以上の2つの指定を併記する事もできます。 下記はHメンバーをドラマーにし、Zメンバーをメロディー奏者にする例です。
*DRUM "H Z-"
(3-12) ドラムロールの響きを向上させる
スネアロールやシンバルロールなどを演奏させると、まるで機関銃を放ったかのよ うなブツブツした音になってしまう場合があります。これは、同音連打に対する音 源の設定によります。同音連打とは、同一音程の音を連続して鳴らすことを言い、 ドラムでは、ロール奏法としてよく出現します。通常MIDI音源では、同時発音数不 足を警戒し、特にドラムメンバーに対して同音連打の際にすぐに前の音を止めてし まう設定になっています。このためにブツブツした機関銃音になってしまうのです。 既に(3-11)でご紹介したドラム転向コマンド *DRUM を使って、このロール残響の 制御を行うことができます。ロール残響は、0,1,2 の3つのレベルで指定します。 0:同一音の重なりを一切認めないレベル(ドラムメンバーZのデフォルト) 1:一つ前の同一音と重なりを認め、同時発音数もそれなりに押えるレベル 2:すべての同一音で完全に重なりを認めて、残響をすべて維持するレベル これらのレベル値を、*DRUM のパラメータで記述したドラムメンバー記号に添える ことで響きの制御を行います。例えばドラム転向させたHメンバーをレベル2の響 きに指定したい場合は、以下の様に記述します。
*DRUM "H2"
ドラム専属のZメンバーにもこの指定を行いたい場合は、パラメータ部分に同一形 式で列挙記述します。もちろんZメンバー単独での指定も可能です。
*DRUM "H2 Z1" ← ドラム転向とロール残響を一気に指定 *DRUM "Z2" ← Zメンバーにロール残響を指定
なお、レベル値を添えない場合は、音源自体のデフォルトのレベルが採用されます。 (注)一般的な音源のデフォルトは、Zメンバーがレベル0、その他のメンバーは レベル1に設定されているようです。レベル2にする場合は同時発音数不足 にご注意ください。
(3-13) 演奏会場を設定する
ROOMコマンドを活用すると、演奏を行う会場の音場空間を調整することができます。 音場とは、演奏会場の広さ、壁面の反響度合、反射音のうねりや減衰など、音が発 せられて以降の空間内の響き具合を指します。これらの指定は、以下の書式を用い て行います。このROOMコマンドは、1つのMuseファイルに唯一つ記述します。記述 する位置はどこでも構いませんが、その設定は曲頭から作用します。
*ROOM" R①(②,③,④,⑤,⑥,⑦) Q⑧(⑨,⑩,⑪,⑫,⑬,⑭,⑮) "
Rに添えられた値①とそれに続く括弧で括られた6つの値②~⑦は“残響”に関す る指定です。また、Qに添えられた値⑧と括弧内の7つの値⑨~⑮は“コーラス” に関する指定です。RのセットとQのセットはどちらを先に書いても構いません。 これら合計15個の値の意味を以下に示します。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ①残響パターン値 0~7の数字であらかじめ準備されているパラメータの組合せを選びます。 会場の壁に当って戻る音や会場空間内に残る音に対する性質を決めます。 続く括弧内の値を大きくすると、以下のような傾向を示します。(②を除く) 値の範囲は②③が 0~7 で、④~⑦が 0~127 です。 ─────┬─────────────────────────────── ②Type │響きのタイプを0~7の値で指定する。反響アルゴリズムの指定。 ③L.Pass │壁面における高音の吸収率が上がり、丸みのある残響となる。 ④Level │残響の音量が上がる。 ⑤Time │残響が長く残る。 ⑥F.Back │反響の繰返し回数が増える。 ⑦Delay │音の反射時間がかかり、広い会場の表現となる。 ━━━━━┷━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ⑧コーラスパターン値 0~7の数字であらかじめ準備されているパラメータの組合せを選びます。 会場空間内で混ざり合あったり、重なり合ったりする音の性質を決めます。 続く括弧内の値を大きくすると、以下のような傾向を示します。 値の範囲は⑨が 0~7 で、⑩~⑮が 0~127 です。 ─────┬─────────────────────────────── ⑨L.Pass │高音域が減衰し、丸みのあるコーラスとなる。 ⑩Level │重なり合う音の音量が上がる。 ⑪F.Back │音を重ねていく量が増える。 ⑫Delay │重なり合う音のタイミングがずれ“うねり”を生成する。 ⑬Rate │“うねり”の周期が速くなる。 ⑭Depth │“うねり”の振幅が深くなる。 ⑮Send-R │コーラス音の残響が増す。 ━━━━━┷━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ROOMコマンドの設定は“(2-11) 楽器の音色をアレンジする”で解説をした、残響R とコーラスQ の値にそれぞれ乗ずる形で効果が出ます。したがって、R0 Q0 の状態 では、まったく効果が現れません。逆にRやQの値を調節すれば曲中でも音場の効果 量に変化を与えることができます。また、メンバー毎に効果量のバランスを取ると いった記述や、遅延効果を活用するという記述も可能となります。 ROOMコマンドは15個ものパラメータを持ちますが、それぞれ省略が可能です。 括弧内のパラメータを省略すると、①や⑧で指定したパターン値が採用されます。 パターン値が省略された場合は、R4(軟ホール)/Q2(深コーラス) となります。
*ROOM" R3(4,0,64,64,0,0) Q2(0,64,8,80,3,19,0) " *ROOM" R3(4,0,64,64,0,0) " ← コーラス設定を省略 *ROOM" R3(4,0,64,,,0) " ← TimeとF.Backを省略 *ROOM" R3(4,0,64) " ← Time以降を省略 *ROOM" R3(,,64) " ← Level以外を省略 *ROOM" R3() " ← 6つのパラメータすべてを省略 *ROOM" R3 " ← 同上 *ROOM" R(1,3,,54,,108) " ← 残響パターン値を省略(R4と見なす)
(3-14) 移調楽器をフィンガー毎に割り当てる
様々な移調楽器が登場するオーケストラやブラスバンドのスコアを、実音に読み替 えることなくそのままMusingしたい場合、調性(\)と移調(T)を適切に組合せる必要 があります。しかしこれらの指定は全域属性やメンバー属性であるため、1つのメ ンバー内に異なる移調楽器を記述したい場合は、フィンガーIDを切替える度に、 調性(\)と移調(T)を指定し直さなければなりません。そんな局面で便利なのが、移 調楽器“y”指定です。この指定はフィンガー属性であり、フィンガー毎に異なる 移調楽器を指定できます。そして一回指定すれば、次に指定し直すまで効果が持続 します。 この指定は、移調楽器の指定を簡便に行うために「調性」と「移調」を一括で行う 形式になっています。yに続けて“+”“-”を必要な数だけ添えて調を指定します。 (この部分の書式は調性(\)と同じです) 更に続けてスラッシュを添えて-120~+120 の数値を記述します。マイナスで低音側へ、プラスで高音側へそれぞれ半音単位に シフトします。(この部分の書式は移調(T)と同じです)
y++++/-5 ①調性(\++++)の指定と同等 ↑ ↑ ②移調(T-5)の指定と同等 ① ②
実際のMusingイメージは、以下の様になります。
@A P72 ; クラリネット #A0 y---/-3 d r m d r m ← A管 #A1 y++/-2 s l c s l c ← B♭管 #A2 y+++/+3 s l c s l c ← E♭管
y指定を記述したフィンガーでは、調性(\)や移調(T)よりも優先してその値が採用 されます。逆に上記①や②を省略すると調性(\)や移調(T)が有効となります。
y/-5 ← 調性は全域属性(\)が採用される y++++/ ← 移調はメンバー属性(T)が採用される(スラッシュは省略可能) y/ ← 調性も移調も(\)や(T)が採用される(スラッシュは省略可能)
(注)調性(\)については、(1- 4) および (2-14) を、 移調(T)については、(2-10) を参照してください。
(3-15) フィンガー属性を一気に指定する
楽章毎に別けて作成したデータを、1つの組曲や交響曲として編成しようとしたり、 複数の楽曲をメドレーとして綴じようとする場合、いくつかのMuseデータを束ねて 1つのMuseデータにすればよいわけですが、その際以下の点に気を付けなければな りません。 ①HEAD,COLR,DRUM,ROOMコマンドが複数出現しない様にする。 ②マクロ名が重複しない様にする。→(3- 7)参照 ③連結する曲間で各属性の初期化を行う。 特に③におけるフィンガー属性の初期化は、16メンバー×10フィンガー、最大 160のフィンガーに対して行わなければなりません。この手間を省くため、FING コマンドがあります。この指定はFINGコマンドのパラメータに (? x o v w p q y) のフィンガー属性を与えることで、全メンバー・全フィンガーのフィンガー属性を、 一括して指定することができます。パラメータ内に記述する属性はどの様な順番で も構いませんし、その中の一部の指定だけを記述する事も可能です。
┐ #A0 ?0 x0 o4 v100 w0 p0 q0 y/ │ #A1 ?0 x0 o4 v100 w0 p0 q0 y/ │ #A2 ?0 x0 o4 v100 w0 p0 q0 y/ │ : ├→ *FING "?0 x0 o4 v100 w0 p0 q0 y/" #B0 ?0 x0 o4 v100 w0 p0 q0 y/ │ (これ一発でOK) #B1 ?0 x0 o4 v100 w0 p0 q0 y/ │ #B2 ?0 x0 o4 v100 w0 p0 q0 y/ │ : │ : ┘
またこのコマンドは、英米系や独系で音名を記述する方にとって、各フィンガーに 逐一 x1 や x2 の指定をする手間を省きます。例えばデータの冒頭で以下の一行を 記述すれば、再度指定のない限り、以降すべてのフィンガーで英米系音名を利用で きます。
*FING "x1"
FINGコマンドはデータ中の任意のタイミングで何度でも発行できます。記述しない 属性はその時点の値が維持されます。FINGコマンド中に“v+10”などの相対強弱指 定をした場合は、その時点の各フィンガー強弱値を基準にして個々に相対変化が起 ります。 (注)FING指定内のアクセントwは、それ以降効果させるアクセント値をセットする 機能のみが働きます。FING記述直後の音符に直接アクセントを与えることはあ りません。 以下の様にFINGコマンドとメンバー属性の一括指定を活用すると、数行ですべての 属性を初期化することができます。これは別々に作成された複数のMuseデータを連 結したい時に便利です。
% %125 \= *FING "?0 x0 o4 v100 w0 p0 q0 y/" @~ P1/0 V127 S0 U0 Y0 T0 R40 W0 Q0 R=64.64.64 W=64.64.64 Q=64.64
(注)上記例の、音色指定 P1 に添えたスラッシュ・ゼロの意味については、 “(3-16) 音色バリエーションを指定する”を参照してください。 全メンバー・全フィンガーに対して一括指定をするのではなく、特定メンバー内の フィンガーにのみセットしたい場合は、メンバーIDに続く括弧内にフィンガー属 性を記述します。メンバーIDは列挙して記述できます。
*FING" x1 ABC(v40) Z(w+20 q+10) " │ │ └→ Zメンバーの全フィンガーにw+20とq+10をセット │ └→ ABCメンバーの全フィンガーにv40をセット └→ 全メンバーの全フィンガーにx1をセット
(3-16) 音色バリエーションを指定する
試聴画面にある128の音色をベースにして、各音色毎に派生的な音色を指定するこ とができます。これをバリエーションと呼びます。バリエーションの指定方法は、 音色のメンバー属性Pの後にスラッシュを添え、更に0~127のバリエーション番号 を与えることで行います。以下に、いくつかのバリエーション例を示します。
●Drawオルガン(P17)の場合 P17 / 1 ← 厳粛なオルガン P17 / 8 ← ディチューンしたオルガン P17 /16 ← イタリア製の60年代風オルガン P17 /24 ← 濁りのあるオルガン ●ナイロンギター(P25)の場合 P25 / 8 ← ウクレレ P25 /16 ← フレットノイズ付のギター P25 /32 ← バリエーションの効いたギター ●三味線(P107)の場合 P107/ 1 ← 津軽三味線 ●琴(P108)の場合 P108/ 8 ← 大正琴 P108/16 ← カヌーン ●和太鼓(P117)の場合 P117/ 8 ← 大太鼓 ●小鳥(P124)の場合 P124/ 1 ← 犬ワン P124/ 2 ← 奔馬 P124/ 3 ← ピョッ P124/ 4 ← 猫にゃ~ん P124/ 5 ← ヴォ~ン
楽器番号を省略すると、その直前に記述されていた楽器番号が継承されます。この 特性を利用すると、バリエーション番号だけを切り替えていく場合に、簡素な記述 が可能となります。上記の小鳥(P124)の例は、以下のように記述できます。
P124/ 1 ← 犬ワン P/ 2 ← 奔馬 P/ 3 ← ピョッ P/ 4 ← 猫にゃ~ん P/ 5 ← ヴォ~ン
ひとたび楽器Pにバリエーションを与えると、その後バリエーションを添えずに楽 器Pを持替えたとしても、標準 /0 にはならず、以前のバリエーション番号が採用 されます。標準に戻したい場合は、明示的に /0 を添えてください。逆にこの特性 を利用すると、同一バリエーションの楽器持替えはバリエーション番号を省略でき ることになりますが、混乱を避けるために明示した方が無難です。なお、演奏時の バリエーションの挙動は「メンバー情報」ダイアログで確認することができます。 (注)音源で定義されていないバリエーションは、「楽器の試聴」ダイアログで発音 されても、演奏では無効となる場合があります。 バリエーション番号は楽器毎に歯抜けで存在しており、また音源のモデルによって 存在したりしなかったりする番号もあります。明確な規則性もないため、ここでそ のすべてを紹介することはできません。音源マニュアルやヘルプファイルを参照し てください。バリエーションはMIDI用語では“バンクセレクト”と呼ばれています。 (注)MIDIのバンクセレクトは、MSBとLSBという2つのパラメータの組合せを指定で きますが、Museのバリエーション指定はMSBの値であり、LSBはゼロ固定です。 他のLSBを指定したい場合は“(3-21) コントロールの指定”で解説するX指定 をご活用ください。なお「バリエーションを添えないP指定はバリエーション 番号を維持する」というMuseの仕様は、X指定でセットしたLSBの値をクリアさ せないためです。 楽器の試聴ウィンドウは、各楽器毎に数十個のバリエーションが試聴できる様にな っていますが、すべての楽器であらゆるバリエーションが可能とは限りません。 効果が出るバリエーションは楽器毎に異なり、多分に歯抜けになっています。逆に、 高級な音源では上記のバリエーション以外も存在し、組合せで1,000を越える音色 の出せるものもあります。それらの音色は実際のMuseコーディングで確認して下さ い。なお、バリエーションはドラムメンバーに指定しても反映しません。 (注)バリエーションによる派生音は、標準音に比べて音源差が大きい傾向にあり、 また定義されていないバリエーションを指定すると発音そのものをしない音源 もあるため、配布用のMIDIファイルを作成する際は再現性に配慮が必要です。
(3-17) 波形を加工する
Museは、音の波形そのものを加工する指定ができます。この波形加工は音楽的機構 というよりは楽器の製作に近く、音そのものを作り込むシンセサイザーの領域です。 加工ができる特性は以下の3種類であり、それぞれ2~3個の値を持っています。 指定の書式は、R(残響),W(揺らぎ),Q(コーラス)のメンバー属性記号にイコールを 添え、その右辺にピリオドで区切った値を列挙します。各値のデフォルト(標準)は すべて 64 であり、0~127 の範囲で指定します。
(1)出力変位特性 → R = 値1.値2.値3 発音されてから停止(残響)までの時間的な出力レベル変位を制御する。 (2)変調特性 → W = 値1.値2.値3 揺らぎ(ビブラート)の強さや周期などの制御を行う。 (3)周波数特性 → Q = 値1.値2 倍音の発生量制御や特定周波数帯の共鳴の調整を行う。
これら3つの特性指定はメンバー属性の一種であり、直前のメンバー宣言(@)で、 それらが作用するメンバーが規定されるのは、通常のメンバー属性と同様です。 したがって、メンバー単位の制御が可能です。ただし属性記号は同じでも、通常 のR(残響)、W(揺らぎ)、Q(コーラス)とは完全に独立の機構です。 指定する右辺の各値は独立に省略が可能であり、省略すると以前の値を保持します。 ただし省略時も区切りのピリオドは規定数だけ記述しなければなりません。
Q = 25. ← 値2を省略 W = .100. ← 値1と値3を省略 R = 20..50 ← 値2だけ省略
各特性に与えるそれぞれの値が、どの様な性質を持っているかの詳細は、 “【第4章】文法リファレンス”を参照してください。 この特性指定には「遅延効果」の記述が可能です。これは、上記記述の後にコロン を添え、そこに音長を与えることで表現します。例えば2分音符分の時間を経て、 ある特性値に向けて連続的に波形を変化させる場合、以下の様に記述します。 周波数特性の場合は2つの値を持っていますが、それぞれの値が現在の値から指定 された値に向かって、独立にかつ一括して変化します。
Q=10.40:2
なお、音の変化確認を容易にするため波形のイメージ図を添えた確認ダイアログを 用意してあります。楽器やドラムの試聴ダイアログ右下にある [ 波形加工 ⇒ ] ボタンで起動する「波形加工」ダイアログを利用してください。このダイアログに はエフェクト系のR,W,Qの調整レバーもあり、それらを動かして音質も確認できま す。また波形加工の効果は、強弱“v”によっても微妙に変化するため、その調整 レバーも付いています。 (注)波形加工のパラメータ群はとても感度が高く、僅かな値の変化で大きく音形が 変りますし、MIDI音源によって楽器やドラムの種類による変化の具合がかなり 異なりますので、かけすぎに注意してください。また、音源によっては効果が 出るパラメータの範囲が0~127より狭い場合もあります。
(3-18) ペダル踏み替えタイミングの調整
Museはペダル“Y1”を指定すると、内部処理でその直前に“Y0”を自動発行します。 この機構によって、ペダル踏み替えを意識することなく、気軽にY1を記述できます。 しかし、自動発行するY0と、Y1の間隔がゼロ(つまり同時)であるため、厳密に言う と非現実的なペダルタッチになっています。ペダルは「耳と心で付けなさい」と言 われるほど、その上げ下げタイミングは重要な演奏要素です。この繊細なタイミン グを実現しようとすると、音符を分割してY0やY1を差し挟むといった煩雑な記述が 必要となります。それを緩和するのが「ペダル音長」の記法です。 この記法は、Y1の後にコロンを添え、その後に音長を与える形式で記述します。 記述された位置でペダルが離され、指定した音長分遅延してペダルが踏まれます。 (このペダルタッチは、ソフトなニュアンスの楽曲に向いています)
Y1:64 ↓ 遅延 ────────────╂────────┼──→ Y0 (64分音符)→ Y1
別の記法として、音長をマイナス(-)にすると、記述された位置でペダルを踏み、 それよりも音長分先行してペダルを離す、という指定になります。 (このペダルタッチは、歯切れの良いリズムの楽曲に向いています)
Y1:-64 先行 ↓ ───┼────────╂───────────→ Y0 ←(64分音符) Y1
この遅延指定と先行指定の両方を同時に記述することもできます。 その場合の音長は「遅延-先行」という形式で与えます。
Y1:16-32 先行 ↓ 遅延 ───┼────────╂────────┼──→ Y0 ←(32分音符) (16分音符)→ Y1
この前半の音長(遅延音長)と、後半の音長(先行音長)を、総称して「ペダル音長」 と呼びます。ハーフペダルに対しても、同様の記述でペダル音長を指定できます。
Y.50:16-32
(注)ペダル音長は、連符内においても連符比率でスケーリングされず、 記述された音長がそのまま採用されます。 遅延と先行の両方の音長を省略しコロンだけを記述すると、直前で指定したペダ ル音長が採用されます。この省略ペダル音長はメンバー単位に記憶されます。
dddd Y1:32-16 mmmm Y1: ssss Y1:8 dddd Y1: mmmm Y1: ssss ↓ ↓ ↓ Y1:32-16 Y1:8 Y1:8
(注)Y0にペダル音長を指定してもエラーにはなりませんが、効果はありません。 ただしこの場合も、省略ペダル音長の記憶値は更新されます。
dddd Y1:16 mmmm Y0:32 ssss Y1: dddd ↓ ↓ Y0 Y1:32
(3-19) 表示済みテキストに追記する
楽曲の進行に合せて、テキストエリアに歌詞を累積的に表示したい場合、基本的に は、以下の様な記述によって実現します。
*TEXT"でんでん虫々" _1 *TEXT"でんでん虫々 かたつむり" _1 *TEXT"でんでん虫々 かたつむり お前のあたまは" _1 *TEXT"でんでん虫々 かたつむり お前のあたまは どこにある" _1
しかしこの方法は、既に表示されている文字列を繰返して記述するため、データ量 が肥大化し、累積部分の修正作業は煩雑化します。これらの問題を解決するのが、 「追記指定」です。追記指定は、直前の文字系コマンド(TEXT,MARK,STOP)で表示し たテキストの末尾に、文字列を追記して表示します。書式は、アスタリスク(*)に 追記したい文字列をダブルクォートで括って添える形式です。
*TEXT"でんでん虫々" _1 *" かたつむり" _1 *" お前のあたまは" _1 *" どこにある" _1
(注)HEADコマンドに対する追記はできません。 追記指定のパラメータ文字列を空にすると、変化のない元のテキストを再表示する ことになります。これは一見無駄な指定に思えますが、この仕様を利用して、文字 列内容を変えずに使用フォントだけ差し替えるといった応用もできます。 以下に“通常記述”と“追記指定”の比較例を示します。
<通常記述> <追記指定> *FONT"Meiryo UI" _1 *FONT"Meiryo UI" _1 *TEXT"角だせ槍だせ頭だせ" _1 *TEXT"角だせ槍だせ頭だせ" _1 *FONT"メイリオ" _1 *FONT"メイリオ" _1 *TEXT"角だせ槍だせ頭だせ" _1 *""_1 ←★ここで活用
追記指定は、末尾への追加だけではなく“挿入/置換/削除”も可能です。 以下、それらの記述方法を解説します。 -------------- ●挿入する場合 -------------- アスタリスクと開始側ダブルクォートの間に、括弧で括られた「挿入位置」を 記述します。挿入位置は(-127~127)の範囲で指定します。
★挿入位置 ↓ * ( 12 ) "挿入することもできる!"
挿入位置の数値は、先頭から文字をカウントした方が楽な場合は“正値”を、 末尾からカウントした方が楽な場合は“負値”を利用してください。 なお、(0)を指定した場合は“先頭”への挿入になり、 省略した場合、つまり括弧のみの記述は“末尾”への挿入になります。
★正値は先頭からカウント (0)┐ (1)┐ (2)┐ (3)┐ ↓ ↓ ↓ ↓ ┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓ 先頭 ┃で┃┃ん┃┃で┃┃ん┃┃虫┃┃々┃ 末尾 ┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛ ↑ ↑ ↑ ↑ └(-3)└(-2)└(-1)└( ) ★負値は末尾からカウント
以下に“通常記述”と“追記指定”の比較例を示します。
<通常記述> <追記指定> *TEXT"でんでん虫々" _1 *TEXT"でんでん虫々" _1 *TEXT"でん×でん虫々" _1 *(2)"×" _1 *TEXT"でん×でん◎虫々" _1 *(-2)"◎" _1
(注)追記指定を連続させる場合、挿入位置のカウントは、 元のTEXTコマンドではなく、直前の追記結果に対して行ってください。 -------------- ●置換する場合 -------------- 挿入位置の数値の後に、カンマを打って「削除字数」を記述します。 削除字数の指定範囲は(1~127)です。
挿入位置 ↓ * ( 12 , 5 ) "置換することもできる!" ↑ ★削除字数
挿入位置が正値(またはゼロ)の場合は、そこから“末尾”に向けて指定字数の 削除が起こり、負値(または省略)の場合は“先頭”に向けて削除が起こります。 その後、挿入が実施されます。この一連の処理で“置換”が実現します。
(1,2) → ★挿入位置が正値の場合 ├─────┐ ↓ 削除対象 ↓ ┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓ 先頭 ┃角┃┃だ┃┃せ┃┃槍┃┃だ┃┃せ┃ 末尾 ┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛ ↑ 削除対象 ↑ └────────┤ ★挿入位置が負値の場合 ← (-1,3)
以下に“通常記述”と“追記指定”の比較例を示します。
<通常記述> <追記指定> *TEXT"角だせ槍だせ頭だせ" _1 *TEXT"角だせ槍だせ頭だせ" _1 *TEXT"角だせ槍だせ目玉だせ" _1 *(-2,1)"目玉" _1
(注)ダブルクォート表現に絡む組合せ文字(`@)や(``)は、変換後の文字数、 すなわち、1文字としてカウントします。 -------------- ●削除する場合 -------------- 置換の際、追記指定のパラメータ文字列を空にすれば、 単純な削除機能として利用できます。
*(12,5)"" ← 先頭12文字目より先を、5文字削除する *(-7,3)"" ← 末尾7文字目より手前を、3文字削除する *(0,1)"" ← 先頭の1文字を削除する *( ,1)"" ← 末尾の1文字を削除する
(注)挿入位置や削除字数の値が、追記先の文字列をオーバーランする様な場合 でも、文法エラーにはなりません。追記先の文字列範囲で律則された後、 処理が継続します。
(3-20) コメントスイッチの活用
Muse演奏はMIDI音源を介して行われるため、それぞれの音源が持つ品質や音質が反 映されます。作り手が利用した音源と、聴き手が再生する音源とが異なる場合、演 奏ニュアンスの再現性が確保できないことが、MIDIによるDTMの大きな問題点です。 その1つの回避手段として、複数音源に応じたデータを場合分けして作成し、聴き 手が保有する音源とのマッチング確率を上げる方法があります。しかし、場合分け したデータ作成は手間が掛かり、聴き手側の変更作業も厄介です。これらの手間を 緩和するために用意したのが、ブロックコメントのスイッチング機構です。なお、 この機構は音源選択に特化したものではなく、テキスト表示の日本語/外国語切替 や鍵盤色の変更など、いろいろな局面で利用可能です。 まず、ブロックコメント記号である感嘆符(!)の前方に、アスタリスク(*)で始まる 任意名称「コメント名」を付与します。コメント名は自由に命名できます。ただし、 スペース・タブ・改行・全角文字・半角カタカナ・半角縦棒(|)は、無視されます。 また、セミコロン(;)、感嘆符(!)、ダブルクォート(")は、使用できません。
*name!
連続した感嘆符でも、コメント名を付与できます。
*name!!!
コメント名が付与されても、この記述単独では *name は無視されて、通常の ! と 変わらない解釈となります。しかし、この記述の前にコメントスイッチを記述する と、ブロックコメントの開始や終了を表す感嘆符自体が無効化されます。すなわち、 感嘆符で括られた行がコメントではなく有効行にスイッチングすることになります。 コメントスイッチの書式は、アスタリスクプラス(*+)の直後にダブルクォート(")で 括ったコメント名を添える形式です。なお、ここで与えるコメント名も、スペース・ タブ・改行・全角文字・半角カタカナ・半角縦棒(|)などのキャンセル文字は無視さ れます。
*+"name" ← コメントスイッチ
(注)コメント名は無名定義が可能です。その場合、コメント部は *! と記述し、 対応するコメントスイッチは *+"" と記述してください。 この機構が最も活躍する局面は、内容の異なる同名のマクロを定義したい時です。 単純に同名マクロを記述すると「マクロの二重定義エラー」が起きてしまいますが、 コメントスイッチを使えばこれを回避できます。またMuseデータに一箇所だけ指定 が許されている*COLRや*ROOMといったコマンドも、複数タイプを選択肢として記述 することができます。 以下の例は type1,type2,type3 というコメント名を定義しておき、それぞれに、 fff,pppという同名のマクロを記述し、鍵盤色も個別に定義してあります。そして、 コメントスイッチで type1 のみを有効化しています。
*+"type1" ← コメントスイッチ(タイプ1のみ指定) *type1! ┐ *COLR"A(808080) │ $fff{v100} ├ タイプ1の内容 $ppp{v60} │ *type1! ┘ *type2! ┐ *COLR"A(f0f0f0) │ $fff{v120} ├ タイプ2の内容 $ppp{v40} │ *type2! ┘ *type3! ┐ *COLR"A(a0a0a0) │ $fff{v110} ├ タイプ3の内容 $ppp{v20} │ *type3! ┘
(注)以下の様な記述をした場合、*nameは通常の感嘆符で括られていると解釈され、 コメント化されて、コメントスイッチの有無に拠らずスイッチングしません。
! d r m *name !
一度セットしたコメントスイッチを解除することもできます。 その指定はアスタリスクマイナス(*-)で行います。
*+"name" ← コメントスイッチのセット *name! ┐ drmf ├ 演奏する *name! ┘ *-"name" ← コメントスイッチの解除 *name! ┐ slc<d> ├ 演奏しない *name! ┘
なお、コメントスイッチの記述には以下の様な留意点があります。 ・マクロ定義部には作用するが、展開部に対しては作用しない ・繰返しゼロのマクロ定義内であっても作用する ・マクロ展開の対象にはならない
(3-21) コントロールの指定
Museは“X”指定により、MIDI音源のショートメッセージをダイレクトに記述する 方法が備わっています。“X”に機能を表現するコントロール番号を添え、その後 をイコールで区切って、効果の度合いを表現するコントロール値を与えます。
X7=95 ← コントロール番号7に、コントロール値95を与えた
コントロール番号は、0~129まで準備されています。 前半の0~127は、MIDI規格で定められている番号と同一の数字です。これら番号の 意味や機能に関しては、MIDIに関する書籍やマニュアル、該当サイトなどを参照し てください。イコールの右側に指定するコントロール値の範囲は0~127ですが、そ の意味は機能によって異なります。なお、X0~X127のコントロールに関しては、遅 延指定が可能です。他の遅延指定と同様、末尾にコロンと音長を添えて指定します。 例えば以下の様に記述すると、2分音符分の時間を掛けてボリューム(X7)が100か ら60に変化します。
X7=100 X7=60:2
後半のX128とX129はMuseで割り付けた番号で、特殊なコントロール指定になります。 ●アフタータッチ(X128) 既に鳴っている音に対して指定することで、更に効果を与える機能です。 その効果がどのようなものかは、音源によって様々に定義されています。 アフタータッチは、2つの指定方法があります。
X128=40 ← (チャネルプレッシャー) 指定メンバー全体に作用 X128=40.65 ← (キープレッシャー) 指定メンバー内の特定音程に作用
一つ目は“@”によるメンバー宣言で、指定されたメンバーに“40”の強さのプ レッシャーを与える例です。二つ目は、更にその内の“65の音程”の音のみにプ レッシャーを与える例です。この“65の音程”という数字表現の音程は、MIDI用 語では「ノート番号」と呼ばれており、60を中央のドとして、半音単位に1ず つ増減させることで音程を指定します。高い音ほど大きな値を取ります。 (注)一部の音源ではアフタータッチの初期状態が無効となっています。これを有効 にするには、エクスクルーシブというロングメッセージを音源に送出する必要 があります。この送出方法に関しては次節を参照してください。 ●微細ピッチ(X129) “U”指定と同じ機能ですが“X”指定では、より細かな微分音程を指定できます。 与えられるコントロール値は、-8192~+8191の範囲を持ちます。0の指定以外は、 ±の符号を添えて記述します。
X129=+5432
Museデフォルトの±2オクターブのピッチ範囲で、16384の分解能を持つことに なり、約0.3セントというきめの細かい指定が可能となります。“U”指定と“X” 指定は単純な比例関係になっており、以下の指定は両者とも同じ効果を得ます。
<U指定> <X指定> U-240 X129=-8192 U-100 X129=-3412 U-30 X129=-1024 ※MIDIの仕様によりプラス側とマイナス側 U-1 X129=-35 で1ピッチだけ精度が異なります。U指定 U0 X129=0 は、それを利用者に意識させない定義に U+1 X129=+34 なっています。 U+30 X129=+1023 U+100 X129=+3413 U+240 X129=+8191
(注)“X”指定の機能は、従前のメンバー属性“VRWQ……”などを包含しています。 しかし“X”指定での記述は「フィンガー情報」「メンバー情報」「譜面モニ タ属性表示」などに完全には反映されません。“X”指定は音源の性能をより 引き出したい方のための一種裏技的な機能であることをご承知おきください。 なお、X11,X91,X1,X93,X10,X64の6つの指定に関しては、各々V,R,W,Q,S,Yと してフィンガー情報ダイアログで確認できます。ただし、譜面モニタの属性表 示は行いません。
(3-22) エクスクルーシブの指定
Museは、DATAコマンドにより、MIDI音源のロングメッセージをダイレクトに記述す る方法が備わっています。*DATAのパラメータに、16進コードをカンマ区切りで 列挙することでエクスクルーシブを表現します。16進コード並びの様々な用法は、 MIDIに関する書籍やマニュアル、インターネットなどを参照してください。 エクスクルーシブは、F0で始まり F7で終わるデータ列です。DATAコマンドでは、 この始終端コードを自動付与しますので、F0とF7のコードは記述しないでください。 例えば以下は、XG音源の初期化エクスクルーシブの記述です。
*DATA "43, 10, 4C, 00, 00, 7E, 00"
パラメータ内のタブや改行、半角スペースや全角スペースなどは無視されます。 また、無駄なカンマが連続した場合、最小限のカンマに解釈されます。
*DATA ",,43,,10,,, 4C, 00,,,, 00, 7E,, 00," ↓ *DATA " 43, 10, 4C, 00, 00, 7E, 00 "
チェックサムの自動計算機構も備わっています。総計の対象となるデータを括弧で 括ることで、閉じ括弧の次にチェックサムが挿入される様になっています。 以下は、GS音源の初期化エクスクルーシブの記述例です。なお、括弧前後のカン マは付けても付けなくても構いません。
*DATA "41, 10, 42, 12 (40, 00, 7F, 00)" ↓ *DATA "41, 10, 42, 12, 40, 00, 7F, 00, 41"
Museのメンバーという概念は、エクスクルーシブでは「チャネル」という16進数の 番号で扱われます。(Museのメンバー)→チャネル番号の対応関係は以下の通りです。 <GS系の場合> (A)→1 (B)→2 (C)→3 (D)→4 (E)→5 (F)→6 (G)→7 (H)→8 (I)→9 (J)→A (K)→B (L)→C (M)→D (N)→E (O)→F (Z)→0 <XG系の場合> (A)→0 (B)→1 (C)→2 (D)→3 (E)→4 (F)→5 (G)→6 (H)→7 (I)→8 (J)→A (K)→B (L)→C (M)→D (N)→E (O)→F (Z)→9 エクスクルーシブを記述していると、その前半の数値はすべて音源固有の値であり 同じものを何度も記述していることに気づきます。この入力を簡素化するために、 POOLコマンドがあります。パラメータの書式はDATAと同一です。POOLコマンドで 前半部のデータを指定しておくと、続くDATAコマンドでは後半部からの記述だけで 済む様になります。以下にPOOLコマンドを使用した記述例を示します。
*POOL" 41,10,42,12,40 " ← POOLコマンドで前半部を定義 *DATA" 00,7F,00 " ← *DATA" 41,10,42,12,40,00,7F,00 " と同等 *DATA" 01,30,03 " ← *DATA" 41,10,42,12,40,01,30,03 " と同等 *DATA" 01,34,46 " ← *DATA" 41,10,42,12,40,01,34,46 " と同等 *DATA" 01,33,48 " ・ *DATA" 02,00,00 " ・ *DATA" 02,02,40 " 以下同様 *DATA" 02,03,00 " ・ *DATA" 02,04,70 " ・
指定したPOOLコマンドの内容は、次にPOOLコマンドが発行されるまで維持されます。 内容をクリアしたい場合はパラメータが空の *POOL"" を記述してください。 (注)チェックサムの括弧は、POOLとDATAの間を跨ぐ事はできません。 演奏を開始する際、Museは必要最低限の音源初期化のメッセージを送出しています。 しかし、DATAコマンドを使って自らきめ細かく音源初期化を記述したい場合、この 自動送出はかえって邪魔になります。そのような場合は、パラメータを空にした、 *DATA"" を記述してください。この記述がある場合、演奏開始時に自動的に送出し ていたほとんどのメッセージ送信を行わなくなります。具体的には、GSリセット を出力しなくなり、DRUMやROOMコマンドも無効となります。また、ピッチベンドの レンジ設定も行いません。なお、*DATA"" は、1つのMuseファイルに唯一つ記述し ます。記述する位置はどこでも構いませんが、複数記述することはできません。 (注)DATAおよびPOOLコマンドは、指定された数値をそのまま音源に送出します。 7Fを越える値はチェックしていますが、それ以外の論理的な整合チェックは、 Muse側では行いません。記述には細心の注意を払ってください。 なお、DATAやPOOLで記述したエクスクルーシブの内容は、「メンバー情報」 や「フィンガー情報」などのダイアログには反映されません。
(3-23) MP3エクスポートのオプション
サウンドフォントやVSTiを音源とする場合、エンコードソフトLAMEによるMP3エク スポートが可能です。その際、LAMEコマンドを使うとLAMEの持つ多様なエンコード 特性を指定することができます。LAMEコマンドは、そのパラメータ部にLAMEのコマ ンドライン表記をそのまま記述することで指定します。なお、ダブルクォート内の 改行やタブは除去されます。また、LAMEコマンドは1つのMuseファイルに、唯一つ 記述します。ファイル中のどの位置に書いても構いませんが、複数記述することは できません。
<記述例> *LAME" -V 2 --abr 192 "
(注)エンコードオプションの種類は多岐に及んでいます。詳細はLAMEのマニュアル あるいはサイトを参照してください。なおLAMEはデフォルト状態でかなり優秀 なチューニングが成されていますので、本コマンドでエンコード特性を指定し なくとも、充分満足する結果が得られると思います。 LAMEの指定オプションには、音質を左右するエンコード特性以外にもMP3ファイル にID3タグを書き込む指定が存在しています。これをLAMEコマンドに記述しておけ ば、Museデータの演奏部分を修正しエクスポートする作業を繰り返しても、タグ内 容の一貫性が保てます。
<記述例> *LAME" --tt `交響曲九番(合唱付き)` --ta `ベートーベン` --ty 1824 "
バッククォート(`)はダブルクォート(")に置換して渡されます。 アットマークを添えたバッククォート(`@)で、バッククォート自体(`)になります。 また、連続するバッククォート(``)は、ダブルクォート(")となります。 (注)LAMEオプションを正しく記述しないと、エンコード処理に失敗する場合があり ます。また、コンソールへの表示を促すオプション、例えばヘルプ表示(-?)や ジャンル一覧表示(--genre-list)などを指定しても処理は失敗します。 Museデータに *LAMEコマンドが存在すると、そのパラメータが「MP3エクスポート」 ダイアログの最下段に表示されます。出力時の事前チェックに活用してください。 詳細は【第3章】機能詳説の“(16) WAVEやMP3ファイルへの出力”を参照のこと。
(3-24) 楽譜の体裁を整える
Museは、読込まれたMuseデータから五線楽譜への自動変換機構を実装しています。 しかしそもそも“演奏”をテーマとしたMuseと、“楽譜”をテーマとしたLilyPond ではその設計思想はもとより、扱うべき情報のタイプが異なります。確かに、共に “音楽”をテーマにしていますから共通点も多いのですが、その共通項ですら微妙 に情報の質が異なるのが事実です。この差から生じる様々な課題に対応するため、 以下の機能をLILYコマンドとして提供しています。 (1)曲のタイトルや作曲者名を与えたい *LILY"1" ~ *LILY"9" (2)楽譜の五線譜構成を指定したい *LILY"0" (3)多彩なLilyPondのコマンドを直接活用したい スルー指定 " " (4)自動記譜で違和感のある部分を抑止したい *LILY"-" と *LILY"+" (5)短い音長を修飾音にするか否かを切替えたい *LILY"_" (6)楽譜全体のレイアウト属性を指定したい *LILY"|" (7)五線譜毎にレイアウト属性を指定したい *LILY"#" 本機構の中核となる“LILY”というコマンドは、パラメータの1文字目が仕分け文 字となり、各種機能を実現します。(3)の機能は特殊な表記でコマンドIDの無い、 ダブルクォートで括られただけのコマンドです。これらのコマンドはMuse演奏には 影響せず、譜面モニタなどの情報ダイアログにも反映しません。また、MIDIエクス ポート時も無視されます。あくまでも楽譜出力の時のみ作用するコマンドです。 以下、それぞれのコマンドの記法と内容について解説します。 ■■■ (1)タイトルの記述 ■■■ 曲名や作曲者名などを楽譜に表示するには、LILYコマンドのパラメータが、1~9の 数字で始まる書式を使用します。以下の様に、与えられた数字に対応して表示位置 が決められます。xxxxx の部分は表示対象の文字列で、全角文字も使用可能です。
*LILY "1 xxxxx" メイン・タイトル *LILY "2 xxxxx" サブ・タイトル(1行目) *LILY "3 xxxxx" サブ・タイトル(2行目) ← 全ページ上段にも表示 *LILY "4 xxxxx" 右肩表示(上段) *LILY "5 xxxxx" 右肩表示(下段) *LILY "6 xxxxx" 左肩表示(上段) *LILY "7 xxxxx" 左肩表示(下段) *LILY "8 xxxxx" フッター(1ページ目) *LILY "9 xxxxx" フッター(最終ページ)
(注)HEADコマンドが存在する場合は、その前半64文字をメイン・タイトルとして採 用し、フッター(最終ページ)には“LilyPond : Generated by MUSE”と刻印し ていますが、これらは上記コマンドで上書き可能です。 LilyPondの機能文字を表記文字として扱いたい場合は、以下の様に記述します。
`\``` → " `\\` → \ (注) \ は譜刻されるとバックスラッシュになります。 `#` → # `@ → `
■■■ (2)楽譜構成の指定 ■■■ デフォルトでは、すべてのフィンガー・メンバーが対等に記譜されますが、この 楽譜構成を明示的に指定したい場合は、パラメータが 0 で始まるLILYコマンドを 使用します。 <書式説明> ----------------------------------------------------------------- ●フィンガーIDを列挙する事でその順番に五線譜が記譜されます -----------------------------------------------------------------
*LILY"0 #A0 #A1 #B1 #B2 #G0 #C1" ← 6つの五線譜
----------------------------------------------------------------- ●複数フィンガーを(*)や(+)で接続すると1つの五線譜に集約します -----------------------------------------------------------------
*LILY"0 #A0+#A1 #B1*#B2 #G0 #C1" ← 4つの五線譜
接続記号の(*)と(+)の違いは、(*)ができるだけ符尾の向きをそろえ、 拍の位置も合せ込もうとする強い接続であるのに対し、(+)は符尾の向 きを逆にして音符の衝突を避けようとする弱い接続になります。 例えば以下の様に記述すると、DメンバーとEメンバーの分離性を高め て1つの五線譜に集約することができます。
#D0*#D1 + #E1
(注)異なるリズムの旋律を強い接続(*)で集約すると、連桁や符頭が乱 れる場合があります。 ----------------------------------------------------------------- ●メンバーID(@)の記述はメンバー内のフィンガーが(*)で接続されます -----------------------------------------------------------------
*LILY"0 #A0+#A1 @B #G0 #C1" ← Bの全フィンガーが集約される
(注)楽譜構成コマンド自体を記述しない場合、フィンガー数が多いと 自動的に集約が起こりますが、その際は(+)で接続されます。 ----------------------------------------------------------------- ●メンバーIDやフィンガーIDの前に - を書くとドラム譜になります -----------------------------------------------------------------
*LILY"0 -@Z" ← Zの全フィンガーを1つのドラム譜で記譜 *LILY"0 -#Z0 +#Z1" ← Z0とZ1を1つのドラム譜で記譜(弱接続) *LILY"0 -#Z0 *#Z1" ← Z0とZ1を1つのドラム譜で記譜(強接続) *LILY"0 -#Z0 -#Z1" ← Z0とZ1を個別のドラム譜で記譜 *LILY"0 -#Z0 #Z1" ← Z0をドラム譜で、Z1を五線譜で記譜
(注)ドラムメンバーを五線譜で記譜する際は、ヘ音記号が採用されます。 ----------------------------------------------------------------- ●改行やタブ、スペースは無視されます -----------------------------------------------------------------
*LILY"0 ← 改行すると見通しが良くなります。 #A0 + #A1 五線譜の順番や演奏メンバー・フィンガーが、 @B 一目で判る様になります。 #G0 #C1 " ← ★ただし、閉じ側の(")を忘れずに!
(注)LilyPond記譜対象のデータは全域指定やメンバー属性であっても、 それが記述されているフィンガーに属するため、フィンガーという 単位を強く意識して、楽譜構成を組み立ててください。 ----------------------------------------------------------------- ●各五線譜に楽器名を与えるには< >で括った文字を各IDの前に置きます -----------------------------------------------------------------
*LILY"0 < ボーカル > #A0+#A1 ← 日本語も使えます < ピアノ > @B < サックス > #G0 < ベース > #C1"
前後のスペースを譜刻したい場合や、特殊文字のシャープ(#)を含めたい 場合は、(`)で括ります。(`)自体を表示したい場合は(`@)と記述します。
< ` String ` > < `#A7` > < Organ`@60 >
----------------------------------------------------------------- ●楽器名はスラッシュ(/)で区切って2系統定義できます ----------------------------------------------------------------- スラッシュの左側は、曲頭に表示されるフルネームであり、 スラッシュの右側は、それ以降に表示される省略名です。
*LILY"0 < Violin / Vn. > #J0 ← フルネームが Violin < Piano1 / Pf. > #A1 省略名が Vn. です。 < Piano2 / Pf. > #A2 < Flute / Fl. > #N0 < Oboe / Ob. > #G0 < Horn / Hr. > #E0 < Drum / Dm. > @Z"
区切り文字の(/)や(>)を譜刻したい場合は、(`)で括ります。
< `Hip/Hop` / H.H > < `Clarinet<A>` >
----------------------------------------------------------------- ●複数の五線譜をグループとしてまとめることができます ----------------------------------------------------------------- グループにすると五線譜左端の縦線がグループの括り線に変わります。 グループの範囲は、( で始まり、/で終わる様に記述します。
*LILY"0 < Violin / Vn. > #J0 ( ← ピアノのグループ開始 < Piano1 / Pf. > #A1 < Piano2 / Pf. > #A2 / ← ピアノのグループ終了 ( ← 3つの管楽器のグループ開始 < Flute / Fl. > #N0 < Oboe / Ob. > #G0 < Horn / Hr. > #E0 / ← 3つの管楽器のグループ終了 < Drum / Dm. > @Z"
----------------------------------------------------------------- ●五線譜グループには ( [ { の3種類があります -----------------------------------------------------------------
( ← 直線タイプの太線で括られます。小節線同士はつながりません [ ← 直線タイプの太線で、こちらは小節線同士がつながります { ← ピアノ譜でよく使われる波線タイプです。小節線もつながります
どの種類もグループ終了の記号は、スラッシュ(/)を使用します。 グループの階層表現(入れ子関係)も可能です。(括り線が多重化します) ----------------------------------------------------------------- ●括弧の前に < > を書くと五線譜グループに名称を与える事ができます -----------------------------------------------------------------
*LILY"0 < Violin / Vn. > #J0 < Piano / Pf. > { ← ピアノは波線に楽器名を付与 #A1 #A2 / ( < Flute / Fl. > #N0 < Oboe / Ob. > #G0 < Horn / Hr. > #E0 / < Drum / Dm. > @Z"
(注)視認性を高めるため、段落を区切るスラッシュセパレーターが譜刻 されますが、全ての五線譜がグループ化された場合は譜刻されません。 ■■■ (3)スルー指定について ■■■ LilyPondの持つ多彩な表現力をMuseデータ上から活用できる様に、LilyPond自体の コマンドを直接記述できる方式が“スルー指定”です。指定は至って簡単であり、 Museデータ中にダブルクォート(")で括った文字列を挿入するだけです。 楽譜出力時に、そのままの文字列がLilyPondに渡されます。 なお、バッククォート(`)はダブルクォート(")に置換して渡されます。
例1: " ^\trill " 例2: " \tempo `Allegretto` " ← (`)を(")にする置換機構が使えます
(注)アットマークを添えたバッククォート(`@)で、バッククォート自体(`)になり ます。また、連続するバッククォート(``)は、ダブルクォート(")となります。 Museデータには拍子の概念がありませんが、楽譜にはその情報が必要です。従って、 以下のスルー指定は、基本的に必須であると考えてください。
例3: "\time 3/4" ← 3/4拍子を指定します 例4: "\partial 4" ← 4分音符アウフタクトがある場合です
(注)楽譜にとって拍子はとても重要なパラメータです。連符や小節休符が小節線を よぎったり微小な音長が小節線を越えたりすると、エクスポートが失敗したり、 譜刻が乱れる場合があります。適した拍子の指定を心掛けてください。 指定内容を列挙して記述することも可能です。
例5: "\time 3/4 \partial 4" ← 拍子とアウフタクトを指定
スルー指定は、基本的に一種の「フィンガー属性」であると考えてください。 記述されたその位置で、LilyPondに記述内容が送出されます。
例6: #A0 d4 r "\fermata" m f ← レの音にフェルマータを付ける
LilyPondにはその他にも多彩な指定コマンドがあります。LilyPondのコマンドに どの様なものがあるのかは、“【第4章】文法リファレンス”あるいは、LilyPond のマニュアルを参照してください。 ■■■ (4)自動記譜の制御 ■■■ Museの持つ様々な定量的な属性を、定性的な表現形式である“楽譜”に反映させる ために、いくつかの属性は閾値を設定して表示内容を決定し、記譜の自動化を試み ています。しかし意図に反し、それらに違和感を覚える場合もあるかもしれません。 そこで任意の属性に対して、任意のタイミングで自動変換を抑止したり、再開した りできるコマンドを準備しました。このコマンドはデータ中の各所に何度でも発行 できます。
*LILY "- 属性文字並び" ← 自動記譜を抑止します *LILY "+ 属性文字並び" ← 自動記譜を再開します
ダブルクォート内の1文字目は制御文字であり、プラス"+" とマイナス"-"で機能 を切り分けます。2文字目以降に以下の文字を与えることで、対応する属性の自動 記譜機能を制御できます。
/ スタッカート w アクセント v 強弱 V 音量 T 移調(y指定にも作用する) Y ペダル U ピッチベンド : アルペジオ ? 音部記号 \ 調性記号(y指定にも作用する) ' コードネーム $ 展開マクロ % テンポ | 終止符 x 音符・休符(タイミング合せ%による休符も対象) _ 休符(譜刻をしないが時間経過は維持する空白休符となる)
●複数の属性を列挙し、一括指定することができます。
*LILY "+ x" ┐ *LILY "+ w" ├→ *LILY "+ xwv" *LILY "+ v" ┘
●属性制御を反映させるスコープは、以下の例の様に多様な指定が可能です。
*LILY"- xv" ← 記述したフィンガーのみxvを抑止 *LILY"- (xv)" ← 全メンバー・全フィンガーでxvを抑止 *LILY"- ABC(xv)" ← ABCメンバーの全フィンガーでxvを抑止 *LILY"- D(w) EF(xv)" ← Dメンバーはwを、EFメンバーはxvを抑止
(注)終止符"|"に関してのみ、どの様なスコープ指定でも全域扱いとなります。 ●音符・休符の抑止は、例えばトリル部分で実展開の音符の代わりに、スルー指定 を使ったトリル記号を記譜したい場合などに利用します。しかし音符や休符を抑 止すると、その分の経過時間も楽譜から失われる事になります。そこで、スルー 指定の中に代替の音符も与えることでこれを補います。
*LILY"-x" d32rdrdrdr "c4 ^\trill" *LILY"+x" ↑ ↑ ↑ ↑ 記譜の抑止 │ │ 記譜の再開 │ │ │ スルー指定による代替の記譜 │ 演奏はするが記譜はしない
*LILY"-x"はタイミング合せ%で自動挿入される休符も抑止するので、曲頭の空 小節を記譜させたくない場合に、それを効率的に取り払うことができます。その 際、全メンバー・全フィンガーを通じて抑止する必要があるため、括弧付きの指 定を利用すると確実です。
*LILY"-(x)" ─┐ _1 ← 曲頭の空小節 ├ この間の記譜を抑止 % ← タイミング合せ │ *LILY"+(x)" ─┘ #A0 drmf ← 実際の記譜はここから実施される
●マクロは基本的に展開された形で記譜されますが、名前の付いた展開マクロに関 しては、本指定を活用して記譜を抑止できます。この機構は、繰返し記号で表現 された楽譜を出力したい場合に、特に便利です。
*LILY"-$" ${macro} *LILY"+$" ← 演奏はするが記譜はしない
複数フィンガーで構成されているマクロの場合は括弧付きの指定を使い、すべて のメンバー・フィンガーを抑止をしてください。
*LILY"-($)" ← 全メンバー・全フィンガーを抑止 ${macro} ← 複数フィンガーで構成されるマクロ *LILY"+($)" ← 記譜の再開を指定 *STOP"" $macro{ #A0 drmf #B1 mfsl #C2 sldr }
■■■ (5)最小記譜音長の指定 ■■■ 楽譜上にどこまで細かい音長の音符を記譜するかを規定するのが“最小記譜音長” です。ここで指定された音長よりも短い音符は修飾音扱いとなります。
*LILY "_16"
1文字目のアンダーバー(_)に続いて、最小記譜音長(8,16,32,64,0 のいずれか) を記述します。"_0"と指定した場合は、一切修飾音を生成せずに記譜を行います。 このコマンドは任意のタイミングで何度でも発行し値を変更する事が可能です。 (デフォルトは"_32"になっています) また本コマンドは、以下の例の様に多様なスコープで指定できます。
*LILY"_ 16" ← 記述したフィンガーにのみ指定 *LILY"_ (16)" ← 全メンバー・全フィンガーに一括指定 *LILY"_ A(16)" ← Aメンバー内の全フィンガーにのみ指定 *LILY"_ BCD(16)" ← BCDメンバー内のフィンガーに指定 *LILY"_ E(32) F(16)" ← Eメンバーに32を、Fメンバーに16を指定 *LILY"_ GH(8) I(32)" ← GHメンバーに8を、Iメンバーに32を指定
最小記譜音長を短めにするとより正確な記譜ができますが、音符の多い少々うるさ い楽譜となります。逆に長めにすると修飾音が増えて可読性が増しますが、小節の タイミングがずれやすくなります。どの程度の記譜音長が適切であるかは楽曲によ っても異なり、同じ楽曲内でも曲想の変化で異なりますので、状況に応じて本コマ ンドで調整してください。 ■■■ (6)楽譜全体のレイアウト属性 ■■■ LilyPondは楽譜レイアウト全体の制御をするための様々な命令を持っています。 それらを有効に活用するには、LILYコマンドのパラメータの1文字目に“|”を与 えた書式を使用します。前述のスルー指定は、各音符に付随させるフィンガーレベ ルの属性指定ですが、このコマンドは、いわば楽譜全体に付随させるスルー指定で あると言えます。 *LILY"|"は、Museデータ上の任意の位置に何回でも記述できます。たとえ分散して 記述しても、記述された順番で一群の連続した命令としてLilyPondに送信されます。 LilyPondは \paper や \layout、\context などの制御命令を持っていますが、 このコマンドを使用すれば、これらをLilyPondの文法のまま記述できます。 以下、記述例を示します。
*LILY"|\pointAndClickOn % マウスクリック可能なPDF指定" *LILY"|\version `2.18.2` % LilyPondのバージョンを明示" *LILY"|\paper{" *LILY"| #(set-paper-size `a4`) % 強制的にA4用紙を指定" *LILY"| top-margin = 10 % 用紙上部マージンを10に変更" *LILY"| indent = 45 % インデントを45に変更" *LILY"| page-breaking = #ly:minimal-breaking % 最小限のページ指定" *LILY"|}"
(注)スルー指定と同様に、パラメータ内の(`)を(")にする置換機構が使用できます。 パラメータ内にタブや改行も記述できますが、それらは無視されるため、改行の際 はスペーシングに注意してください。(スペースは無視されません) 上記の記述例のように1行ずつ*LILY"|"コマンドを分けて記述することで、改行に 注意を払う必要がなくなり、可読性や保守性も向上するためお勧めです。 (注)このコマンドをMuseデータの後半部に記述したとしても、音符の譜刻が実行さ れる前に楽譜設定としてすべての命令が反映されるため、楽譜の途中ページで レイアウト属性を切り替えるといった制御はできません。 ■■■ (7)五線譜毎のレイアウト属性 ■■■ 前節の*LILY"|"が、楽譜全体のレイアウト属性を指定するコマンドであるのに対し、 *LILY"#"は特定のフィンガー(つまり五線譜)毎に属性を指定できるコマンドです。 対象とするフィンガーは、本コマンド記述時点のフィンガー宣言に依存します。 例えば、以下は#B2フィンガーの符幹を2.5倍の太さにします。
#B2 *LILY"# \override Stem.thickness = #2.5"
(注)*LILY"#"は、Museが\with{}ブロックを自動生成することで実現しています。 したがって、\with{}自体を記述する必要はありません。 *LILY"#"に与えるパラメータは、\with{}内の内容のみを記述してください。 このコマンドは、任意の場所に何度でも記述できます。LilyPondに送信される時点 でフィンガー毎に収集され、音符記譜が開始される前に記述順で発行されます。 楽譜構造*LILY"0"でフィンガーの結合(*や+)が指定されている場合は、結合対象の 各々のフィンガーに与えられた属性が1つの五線譜の属性として収集されます。 収集の順番は、*LILY"0"での記述順に従います。指定内容に競合が起きた場合は、 後者の指定が優先されます。例えば以下のように記述すると、符幹は2.5倍ではな く3.4倍になります。
#B2 *LILY"# \override Stem.thickness = #2.5" *LILY"# \override Stem.thickness = #3.4"
(注)パラメータ内の記述ルールに関しては、*LILY"|"と同一です。
[4]補足
(4- 1) コマンドの実行タイミングについて
“*”コマンドは、マクロのような比較的上位レベルの指定に誤解されがちですが、 実はかなり下位レベルにあり、その実行されるタイミングはフィンガー宣言“#” に依存しています。すなわち、音符と同等のレベルにあります。“*”コマンドを 記述する時は、どのフィンガーに対して書いているのかを意識してください。タイ ミング上は“*”コマンドは音長ゼロの一種の音符であると考えた方が良いかもし れません。その意味では“(2- 6) メンバー単位に指定する値”で説明した、メン バー宣言やメンバー属性も実行されるタイミングは、任意のフィンガーに依存する 訳ですから、音長ゼロの特殊な音符と解釈することができます。この考え方は“%” によるテンポ指定でも当てはまります。テンポを変化させるタイミングは、やはり フィンガー内の記述位置に依存しています。
(4- 2) メンバー色の表示優先度について
鍵盤の色は、その音階の音を発生した瞬間に表示され、音が消えた時に戻ります。 では、同時に複数のメンバーが同じ音を発生した場合は、一体どのメンバー色で表 示されるのでしょうか? それは、Museファイルの記述順番に依存します。いくら 同時といっても、Museファイル上は1メンバーずつ記述する訳ですから、順番があ ります。表示はその順番で行われるため、一番最後のメンバー色が結果として残る ことになります。この原理は譜面モニタでの重ね書きにおいても適用されます。 従ってできるだけ前面に表示したい色のメンバーは、Museファイル上では一番後に 記述するのがコツです。 (注)同時発音数の少ない音源では、それを越える音を出そうとすると音切れが起り ますが、この場合もできるだけ後に記述した音が優先的に発音されます。
(4- 3) 連符・和音・コードの入れ子関係
連符や和音は複数の音を列挙する記述形式を持っています。そして、その音の集合 体が1つの占有音長を持っているので、それ自身1つの音であるとも解釈できます。 同様に、コード記述も1度に複数の音が鳴りますが占有音長という概念から1音と 見なせます。したがって“連符”や“コード”という1つの音が和音の中に記述さ れたり、“和音”や“コード”という1つの音が連符の中に記述できてもよいはず です。Museは考え得るこれらのハイブリッドな記述に対応しています。 《連符の中に各タイプの音を並べた例》
( [dms] [dfl] [cls] d r m 'C#m7' )4
《和音の中に各タイプの音を並べた例》
[ d8 r2 m4 (mf<s>)16 'Eb'1 ]4
低音部と高音部で独立演奏するアルペジオは、和音内和音の記述が便利です。
通常のアルペジオ [ >dmsc< dmsc ]1:32 独立のアルペジオ [ [>dmsc<]:32 [dmsc]:32 ]1
(注)アルペジオ音長が省略された場合、音符音長と同様の継承プロセスでその音長 が決定されます。つまり和音内や連符内で与えられたアルペジオ音長は、その 外側へ伝播しません。→"(1-16) 和音とタイミングコントロール"参照のこと。 アルペジオ指定のある和音の内に和音や連符がある場合、それらは外側で指定され たアルペジオの影響を受けません。以下の例では、drm がアルペジオ演奏となり、 (fsc)や[fsc]は外側の和音冒頭から演奏されます。
[ d (fsc) rm ]1:32 [ d [fsc] rm ]1:32
和音の中に音符とコードを混在させた場合は、全体でアルペジオが構成されます。 その際、アルペジオの発音順は記述の順番に従います。なお、コードにアルペジオ 指定をすると独立のアルペジオになります。
全体のアルペジオ [ >dms< 'C' ]1:32 独立のアルペジオ [ >dms< 'C':32 ]1:32
和音や連符の括弧に添えられたアクセントは、その中の音群すべてに付与されます。 以下の例では、drm に w+20 が、fsl に w+10 のアクセントが与えられます。
w+20 ( d r m w+10 ( f s l ) )2
アクセント値が記述されるとその場で更新されますが、括弧全体に対する指定は生 き続けます。以下の例では、d が w+20 となり、それ以降 rmfs に w+10 のアクセ ントが付き、l はアクセントは付かず、c は最後に指定したアクセント値 w+10 が 付与されます。
w+20 [ d w+10 r ( m f s ) ]2 l w c
(4- 4) ゼロ音長や繰返しゼロの挙動について
基本的に音長にゼロを指定したり、繰返し数をゼロにすると演奏対象から外れます。 しかし、再現表記の対象やその中に書かれた属性の有効性に関しては、和音や連符、 そして繰返し表記によって微妙な違いがあります。以下にその差異を表で示します。
───────────────────────────────────── 和音[ ]0 連符( )0 繰返{ }0 表記例 ───────────────────────────────────── 中の音符を 演奏する 演奏しない 演奏しない [d4rm]0 (d4rm)0 {drmf}0 中の属性を 実行する 実行しない 実行しない [d V10 ms]0 (d V10 ms)0 中の音群を 記憶する 記憶する 記憶しない [(dms)]0 ([dms])0 {(dms)}0 中のマクロを 記憶する 記憶する 記憶する [$n{drm}]0 ($n{drm})0 再現先として 記憶する 記憶する 記憶する [dms]0 (drm)0 {drmf}0 ─────────────────────────────────────
ゼロ音長は演奏対象ではありませんが、アクセント指定(w)はゼロ音長音符で利用 済みとなるため、ゼロ音長音符を越えて作用することはありません。
w+20 d0 m4 ┐ w+20 'C'0 m4 ├ ミの音には、どれもアクセントが付かない w+20 (fsl)0 m4 │ w+20 [dms]0 m4 ┘
一方、繰返しゼロは何も記述されていない状況と同等であり、アクセント指定(w) は繰返しゼロ記述を透過して作用します。
w+30 {dfl}0 m4 → ミの音に w+30 のアクセントが付く
なお連結(&)の場合は、ゼロ音長も繰返しゼロも透過して連結します。
d4 s0 & d4 ┐ d4 & s0 d4 ├ 両側のドは、すべて連結する d4 {mfs}0 & d4 │ d4 & {mfs}0 d4 ┘
(4- 5) メンバー属性の競合について
Museは、メンバー属性をどのフィンガーからでも指定することができるため、複数 のフィンガーを使って同一時刻に異なるメンバー値を記述することができます。し かし同一のメンバー属性は、1メンバー内で一度に1つの値しか取り得ません。
#A0 d r m @V30 d r m #A1 m f s @V90 m f s ↑ここで競合が起きている(実際には一方の値しか取れない)
この様な記述を“メンバー属性の競合”と言います。Museでは、競合が起きた場合 データ上、後に記述された側の属性値を優先します。上の例では @V90 の方が作用 します。また、フィンガー情報のダイアログの右端欄に表示されている音量(V)の 値は、時刻(タイミング)上の最終値ではなく、データ記述上の最後の属性値となり ます。下記の例を参照してください。
#A0 d r m @V30 d r m ← 時間的には V30 が最終値であるが、 #A1 @V90 m f s m f s ← ダイアログには V90 が表示される。
更に、遅延効果における開始の属性値は、その時点のタイミング上の音量ではなく、 このダイアログ上の音量が採用されるので注意が必要です。複数フィンガーや複数 メンバーに対して一括した遅延記述をする場合は、遅延記述をする前に対象となる メンバーの開始値をすべて指定しておけば、この問題を回避する事ができます。
#A0 @V60 drmf @ABCV100:1 drmf #B0 @V40 mfsl mfsl #C0 @V20 slcd slcd ↓★各メンバーの開始値を遅延記述の前に指定しておく #A0 @AV60 @BV40 @CV20 drmf @ABCV100:1 drmf #B0 mfsl mfsl #C0 slcd slcd
(4- 6) 属性指定のスコープについて
Museの属性指定には、大きく2系統があります。演奏時刻を優先としたものと、記 述位置を優先したものです。本来はすべて演奏時刻優先であった方がわかりやすい のですが、Museのコンパイル処理上、記述位置優先を採用しているものがあります。 演奏時刻優先を図示すると以下の様になります。●の位置に記述した指定が、その タイミングで全フィンガーに作用するタイプです。
#A0 xxxxx xx→→ →→→→→ #A1 xxxxx x●→→ →→→→→ #A2 xxxxx xx→→ →→→→→ #B0 xxxxx xx→→ →→→→→ #B1 xxxxx xx→→ →→→→→
一方、記述位置優先というのは、記述したMuseデータの位置以降の記述に作用しま す。演奏時刻はまったく関係ありません。
#A0 xxxxx xxxx xxxxx #A1 xxxxx x●→→ →→→→→ #A2 →→→→→ →→→→ →→→→→ #B0 →→→→→ →→→→ →→→→→ #B1 →→→→→ →→→→ →→→→→
基本的に、メンバー属性は「演奏時刻優先」であり、フィンガー属性は「記述位置 優先」です。*FINGコマンドも、フィンガー属性の指定であるため「記述位置優先」 となります。 (注)メンバー属性でも、以下は例外的に「記述位置優先」となります。 ・移調(T) ・メンバー宣言(@) ・遅延の開始値 以下、属性指定のスコープを意識しなかったために、意図しない演奏になってしま う例をいくつか示します。(⇒は、問題の解決策です) ■FINGコマンド ~~~~~~~~~~~~~~
#A0 d m s *FING"v10" d f l ① #B0 m s c m s d ②
FINGによるv10は、②後半の m s d にのみ効き、前半の m s c には効かないと 思いがちだが、フィンガー属性は「記述位置優先」のため m s c も v10 となる。 ⇒ 全フィンガーのタイミングがそろう%の直後に、FINGコマンドを記述する。 ■移調(T) ~~~~~~~~~
#A0 d d d @T-5 r r r ① #A1 @T+3 m m m f f f ②
Tがメンバー属性であるため、②の後半 f f f はT-5の移調と思いがちだが、 Tは「記述位置優先」のため、T+3の移調となる。 ⇒ フィンガー毎に調性を変えたい場合は、移調指定(y)を活用する。 ■遅延指定 ~~~~~~~~~~
#A0 _1 _1 _1 @V40 ① #A1 _1 @V100:4 ② % #A0 @V100:4 _1 ③
①でV40になっているため、③ではV40からV100への遅延が効くと思いがちだが、 遅延の開始値は「記述位置優先」のため、②の時点でV100が開始値として採用 され、③ではV100からV100への遅延となって、V指定自体がキャンセルされる。 ⇒ メンバー属性を別フィンガーに分散記述した場合は、開始値を明示する。 (記述例:開始値V40を明示する)@V100:4 → @V40V100:4
(4- 7) エクスポートMIDIの定格性
通常のMIDI形式でテンポ変化(リタルダンドやアッチェレランド)を行おうとすると、 階段状の変位でしか扱えません。階段の幅を細かくして誤魔化すことはできますが、 厳密に言うと線形変位ではありません。そこでMuseは、本当になめらかな速度変化 を実現するため画一的なMIDI出力を行わず、数値計算によるテンポ制御を採用して います。これにより、人間的にテンポを揺らがせる演奏を行うことができる訳です。 しかしそのための代償として、Museから出力されたMIDIファイルは、他のシーケン サーや譜面変換ソフトでは処理しきれない端数音符が多く出現してしまいます。 この節では、この現象を一時的に回避するための手段をご紹介します。 それは「テンポ指定%を一切使用しない」ことで実現します(タイミング合せのた めの単独%はこの限りではありません)。要は、デフォルトのテンポ %125 で首尾 一貫して記述されている状況においてのみ、Museの数値計算処理と、従来の定格化 MIDIの表現が一致するわけです。 むろん、テンポ指定を施さないと演奏データとしては意味を成さない場合が多いの ですが、例えば譜面変換がしたい場合は実用上の問題はありませんし、他のシーケ ンサーに読込ませたい場合は、そこで何らかの手を加える事を目的としているはず ですから、テンポの指定をその1つと考えれば問題はないとも言えます。Museは、 MIDIデータを演奏データとしてではなく、音源ドライブのための結果データとして 捉えています。演奏情報はあくまでもMuseデータ側が担うべき、という思想です。 (注)エクスポートされたMIDIファイルには、音源や諸々のパラメータを初期化する ためのセットアップ小節(四分音符4つ分)が曲頭に付加されます。ただし、 この小節のテンポは800と高速なので、実時間にして0.3秒程度です。
(4- 8) 自動記譜の処理仕様
Museは楽譜PDFをエクスポートする際、Museデータを基に極力自動記譜を試みます。 その際の主な処理仕様、および制約は以下の通りです。 <音長> ・各フィンガーの総音長が一致していないと、曲尾の五線譜の末端は一致しません。 ・微分音長(i)を活用しているデータは、音長ズレが解消しない場合があります。 最小記譜音長を短めにすることで解消する場合もあります。 ・小節を跨る音符が存在すると、最小記譜音長よりも短い音符や多重付点が出現 する場合があります。拍子を適切に設定していないとその出現頻度が上がります。 Museには拍子の概念が無いので、"\time 3/4"や"\partial 2"の指定が必要です。 ・連符内のすべての要素音符が省略音長の場合は、符鉤の音長が自動計算されます。 ・連符内の要素音符は、最小記譜音長以下の場合でも修飾音にせず記譜を行います。 ・小節を跨ぐ音長は、音長加算(^)よりもタイ接続(&)の方が正確に記譜できます。 <属性> ・メンバー属性(YUV)は本来メンバー単位の属性ですが、属性を記述したフィンガー 単位に作用します。メンバー内の他のフィンガーには記譜されません。 ・テンポ(%)は全域属性ですが、これも記述フィンガーに属する指定とみなします。 対象フィンガーを記譜対象から外すと、テンポも記譜されません。 ・テンポ(%)を複数のフィンガーに分散して記述すると、rit.やaccel.の算出が不 正確になり、正しい譜刻ができなくなる場合があります。 ・強弱ゼロ(v0)の音符および休符は、記譜の対象外となります。 ・ピッチベンド(U)における曲線の終点音程は忠実に記譜されますが、始点は常に 記譜された音符位置からとなります。 <和音> ・占有音長を越える和音内の要素音符の音長は、占有音長に強制短縮されます。 また複数の音長を含む和音の場合、全音符以上の音長はカットされます。 ・中身の無い和音は休符を譜刻せず、占有音長分の空白休符が記譜されます。 ただし占有音長が充分に長く、小節単位の休符となる場合は譜刻されます。 ・占有音長ゼロの和音中の音符は修飾音として扱われ、音長は短めに譜刻されます。 ・和音内の連符も占有音長を越えたり全音符以上になると正確な記譜ができません。 ・複雑な音長を持つ和音にからんだタイ(&)は記譜しない場合があります。 ・同一音長の音符で構成され、占有音長もその音長に等しい単純な和音の場合、 その和音内に指定されたテンポは記譜されません。 <コードネーム> ・連符内および和音内のコード、四分音符より短い音長のコードは記譜されません。 また、テンション記述部分は無視されます。 ・コードネームは、全フィンガーのコードが楽譜上部にマージされます。 ただし、同一タイミングに同一コードネームがあっても集約されません。 ・コード記述はコードネームに加え、五線譜に展開される発音音符も記譜されます。 コードの記譜抑止 *LILY"-'" はコードネーム側のみの抑止です。 ・もし発音音符側のみを抑止したい場合は、楽譜構成コマンドを活用してください。 楽譜構成コマンドに指定していないフィンガーでも、そのフィンガーにコード記 述が存在していれば、そのコードネームは譜刻されます。 ・コード記述に音符の記譜抑止 *LILY"-x" を使うと、コードネームと発音音符の 両方が譜刻されなくなります。その際、それ以降のコードネームと発音音符の譜 刻位置がずれる場合がありますが、適切なスルー指定で音符を挿入したり、タイ ミング合せ%の位置を工夫すると、ずれを解消できる可能性があります。 <修飾音> ・修飾音として認識した音符は、最小記譜音長以下の符鉤(はた)も記譜します。 ・終端音が開始音程と一致していない場合も、トリルの一部として認識します。 ・トリルに掛かるアーティキュレーションが不正確になる場合があります。 ・小節をタイで跨ぐ長い音長の場合、トリルやトレモロは初音符にのみ付きます。 ・モルデント、ターンなどには対応していません。 ・装飾音が多い場合、各五線譜の小節が多少ずれる場合があります。 <その他> ・エキスポート対象となるデータは全域指定やメンバー属性であっても、それが記 述されているフィンガーに属する形で管理されます。 ・音符が1つも無い(休符や属性指定のみの)メンバーは記譜されません。 ・音符が1つも無いフィンガーでも、同メンバーの他フィンガーに音符があれば、 そのフィンガーにある休符や属性指定は記譜対象になります。 ・16以上の五線譜が必要になる場合は、各五線譜がメンバー単位に集約されます。 ドラムは基本的にドラム譜となりますが、集約の際はヘ音の五線譜になります。 ただし楽譜構成コマンドを記述すれば各五線譜の種類を明示的に指定できます。 ・繰返し記述には対応してません。すべて展開して記譜されます。 ただしマクロに関しては、*LILY"-"コマンドで、その展開を抑止できます。 ・和音とコードへの*LILY"-"は音符の記譜は抑止しますが占有音長は抑止しません。 ・各フィンガーの音部記号やオッターバは、記述された音部記号(?)を尊重しつつ、 出現する音符の音域に基づいて決定しています。不自然な箇所は、スルー指定の "\clef~"や"\ottava~"で対応してください。各々、局所的な指定が可能です。 ・五線譜間の区切りを表現するスラッシュセパレーターは、複数のパートが1つに グループ化されていない場合に記譜されます。 ・曲尾付近に休符が続くフィンガーがあると終止符が記譜されない場合があります。 この症状は、データ最終位置に強制タイミング合せ(%)を記述することで、回避 できる可能性があります。
(4- 9) MuseLoid対応データの作成要領
MuseLoidは、楽器のバリエーション切替により五十音の発声を実現しています。 逐次バリエーション番号を書き込んでMusingすることもできますが、以下のような マクロブロックをデータの任意の場所に配置しておくと、ローマ字のマクロ名で記 述することができ、可読性やメンテナンス性が向上します。
───────────────────────────────────── あ $a{P/ 50}0 い $i{P/ 51}0 う $u{P/ 52}0 え $e{P/ 53}0 お $o{P/ 54}0 か$ka{P/ 55}0 き$ki{P/ 56}0 く$ku{P/ 57}0 け$ke{P/ 58}0 こ$ko{P/ 59}0 さ$sa{P/ 60}0 し$si{P/ 61}0 す$su{P/ 62}0 せ$se{P/ 63}0 そ$so{P/ 64}0 た$ta{P/ 65}0 ち$ti{P/ 66}0 つ$tu{P/ 67}0 て$te{P/ 68}0 と$to{P/ 69}0 な$na{P/ 70}0 に$ni{P/ 71}0 ぬ$nu{P/ 72}0 ね$ne{P/ 73}0 の$no{P/ 74}0 は$ha{P/ 75}0 ひ$hi{P/ 76}0 ふ$hu{P/ 77}0 へ$he{P/ 78}0 ほ$ho{P/ 79}0 ま$ma{P/ 80}0 み$mi{P/ 81}0 む$mu{P/ 82}0 め$me{P/ 83}0 も$mo{P/ 84}0 や$ya{P/ 85}0 ヰ$yi{P/ 86}0 ゆ$yu{P/ 87}0 ヱ$ye{P/ 88}0 よ$yo{P/ 89}0 ら$ra{P/ 90}0 り$ri{P/ 91}0 る$ru{P/ 92}0 れ$re{P/ 93}0 ろ$ro{P/ 94}0 わ$wa{P/ 95}0 ゐ$wi{P/ 96}0 ん$wu{P/ 97}0 ゑ$we{P/ 98}0 を$wo{P/ 99}0 が$ga{P/100}0 ぎ$gi{P/101}0 ぐ$gu{P/102}0 げ$ge{P/103}0 ご$go{P/104}0 ざ$za{P/105}0 じ$zi{P/106}0 ず$zu{P/107}0 ぜ$ze{P/108}0 ぞ$zo{P/109}0 だ$da{P/110}0 ぢ$di{P/111}0 づ$du{P/112}0 で$de{P/113}0 ど$do{P/114}0 ば$ba{P/115}0 び$bi{P/116}0 ぶ$bu{P/117}0 べ$be{P/118}0 ぼ$bo{P/119}0 ぱ$pa{P/120}0 ぴ$pi{P/121}0 ぷ$pu{P/122}0 ぺ$pe{P/123}0 ぽ$po{P/124}0 ───────────────────────────────────── (注)ここで定義したマクロ名は、MuseLoid配列に準拠したローマ字を形式的に マトリックス化したものであり、Musingしやすいように自由に改変するこ とが可能です。
このマクロを使って「カエルの歌が~」と歌唱させた例を以下に示します。
@P55 ${ka}d4 ${e}r ${ru}m ${no}f ${u}m ${ta}r ${ga}d _ か え る の う た が
もし、複数パートで同一の歌詞を歌う場合には、歌詞用フィンガーを設けて共通化 することもできます。その際、歌詞用フィンガーにはメンバー宣言(@)の一括指定 を活用し、休符でタイミングを取ってください。以下の例では @AB としています。
≪ 歌手指定 ≫ @A P55 @B P53 ≪ 歌詞用フィンガー ≫ #A0 @AB ${ka}_4 ${e}_ ${ru}_ ${no}_ ${u}_ ${ta}_ ${ga}_ _ か え る の う た が ≪ 旋律用フィンガー ≫ #A1 m4fsl sfm_ #B1 d4rmf mrd_ #B2 >l4c<dr d>cl_
次に、MuseLoid配列に存在しない音節を発声させるための記述方法を解説します。 ●拗音(ようおん) 例えば「きょ」と日本語で書くと、あたかも「き」が中心であり、小さく添えら れた「ょ」は修飾のような印象がありますが、発声においては全く逆で、「き」 が前打修飾であり「ょ」が主となる発声です。以下のように「き」を64分音符と し、すぐに「ょ」に移行すると、拗音の発声を実現できます。
${ki}d64 ${yo}d4~ _2.
外来語由来の特殊発声、例えば「トゥ」とか「ティ」などもこの方法が使えます。
${tu}d64 ${u}d4~ _2. ${ti}d64 ${i}d4~ _2.
上記はそれぞれ「つぅ」「ちぃ」と指定していますが、前打修飾の音長を短くす ることで、「トゥ」「ティ」と聞こえるように発声してくれます。 (注)この解説の例では短い音長として64分音符を使っていますが、最適な音長は 曲のテンポによって変化するので、微分音長なども使って調整してください。 ●促音(そくおん) 例えば「もっと」と日本語で書くと、あたかも「っ」を発声するような印象を受 けますが、実際には「っ」の部分は無音です。音楽的にはゲネラルパウゼのよう なものです。以下のように「も」を強めのスタッカートとして記述すると、促音 の発声を実現できます。
${mo}d4~64/// ${to}d64 _2.
●長音(ちょうおん) 例えば「ワーク」のような長音の場合、最後の「ク」は後打修飾のように音尾に 短めに添えると、自然な発声になります。
${wa}d4~64 ${ku}d64 _2.
続いて、歌詞と異なる発声について解説します。 実際の歌唱においては、ひらがなの歌詞をそのまま発声させない方が自然な歌声に なる場合が多々あります。楽譜の記載に縛られず、実際の歌声をイメージしながら Musingしてください。 「そつぎょう」 → 「そつぎょお」 「がっこう」 → 「がっこお」 「だったから」 → 「だあたから」 「しかって」 → 「しかあて」 最後に、外国語による歌唱における、MuseLoid発声の限界に関して解説します。 現在のMuseLoid配列には[V][F][TH]などの日本語には無い発声は含まれていません。 それぞれ[B][H][Z]などで代替えし、適宜拗音などを駆使して誤魔化してください。 厳密に言うと、子音のみならず母音も種類が少ないわけですが、この最小セットで それらしく聴こえるようにするのも、Musingテクニックの一種と考えてください。 (注)MuseLoidで歌唱させるには、サウンドフォントを使った音源の設定が必要にな ります。詳しくは【第3章】機能詳説の“(10) サウンドフォントの活用”の 後半にある“■MuseLoid音源の割付方法”を参照してください。
【第3章】 機能詳説
( 1) Museファイルのロード
「ファイル(F)」→「開く(O)」の選択で出現するダイアログで、Museデータを読込 みます。Museデータは譜面を文字で表現するテキストファイルですが、一般のテキ ストファイルと区別するため、ファイル拡張子を.musにすることを推奨します。 (注)Museのショートカットを作成することで、ロード用ダイアログで初期表示す るフォルダを制御できます。ショートカットのプロパティで「作業フォルダ」 の欄に、表示させたいフォルダを指定してください。 ■Museデータの書式は前章で規定された文法に従っていなければなりません。なお、 ファイルの形式は、SHIFT-JISに加え、ユニコード(UTF-8/UTF-16)にも対応してい ます。UTF-16はリトルエンディアン、ビッグエンディアン共可能で、サロゲート ペアにも対応しています。また、各ファイルの文字コードは自動判別されます。 (注)BOMが付いていないUTF-8は、ファイル冒頭に「全角のセント“¢”」を書い ておいてください。これによりS-JISとの自動判別が可能となり、文字化けを 防ぐことができます。なお、全角文字は演奏データとしては無視されるため、 S-JISやUTF-16のファイル冒頭に“¢”が書かれていても支障はありません。 ■ロード時に文法のチェックが行われ、エラーがあるとその内容とMuseファイル上 の行番号をダイアログで知らせます。うまくロードできると、ウィンドウのタイ トル部に“→ mm:ss”の形式で演奏総時間が表示されます。一方、エラーがある と“→ ×”の表示となり、演奏に移れません。エラーが起こると、対象の行番号 がクリップボードに出力されます。(キーボード操作のロードの場合は、エラー内 容も出力されます) (注)ウィンドウタイトルをダブルクリックすると、データの絶対パスを確認する ことができます。 ■データを作成している過程で、ロードとエディットを頻繁に繰返すことを想定し、 「ファイル(F)」→「リロード(L)」の機能を設けました。このメニューは選んだ だけで現在ロードされているファイルを再び読込むので、カット&トライがより 簡便に行えます。また「開く(O)」と異なり、シークバーを巻戻さないので、曲の ある部分をデバッグする時も位置決めが容易です。 ■「ファイル(F)」→「データ編集(D)」の選択で、テキストエディタが起動し、現 在ロードされているデータが表示されます。起動するエディタは拡張子(.txt)と 関連付けられているアプリケーションです。 (注)起動するエディタを明示的に指定したい場合は、初期化ファイル(muse.ini) の#EDや#EPの指定で行えます。詳細は“(19) 初期化ファイルによる指定” を参照してください。
( 2) 演奏の仕方
データロード後、鍵盤部分をマウスクリックすることで演奏を制御します。 演奏中はメニュー右端の“Presented by ...”がグレイアウトし、先頭に♪マーク が表示されます。 《左ボタン》 演奏を開始します。 演奏中ならば一時停止と再開を繰返します。 《右ボタン》 曲頭へ巻戻します。 演奏中ならば演奏を停止し曲頭へ巻戻します。 (注)データ内に“STOP”コマンドがある場合は、文字列の表示色が赤くなり一時 停止の状態になります。演奏の再開はマウスの左ボタンで行います。 ■演奏中はMuseデータに基づいて、発音している音程の鍵盤がメンバー色に変化し、 テキストエリアには曲のタイトルや歌詞が表示されます。 (注)初期化ファイルの設定で、テキストエリアの背景色(TCL)を変更することが できます。詳細は“(19) 初期化ファイルによる指定”を参照してください。 ■エクスプローラからMuseファイルをドラッグ&ドロップすると、すぐに演奏を開 始します。既に何かの曲が演奏されている状態で新たにドロップした場合は、現 在の曲を停止し、新たにドロップされた曲の演奏を開始します。 (注)「楽器の試聴」や「ドラムの試聴」を起動していると演奏はできません。 ■「機能(G)」→「常に手前(T)」の選択で、他のアプリケーションのウィンドウに 対して、常に手前に表示させることができます。その際、Museのサブウィンドウ (譜面モニタなど)やダイアログ(演奏会場の確認など)も手前になります。 (注)メインウィンドウの最大化ボタンは通常のWindowsインタフェースと動作が 異なり、3つのサブウィンドウ(メンバー情報/フィンガー情報/譜面モニタ) を一括してON/OFFする機能として働きます。
( 3) シークバーの扱い方
鍵盤上部のシークバーを動かして演奏開始位置を指定できます。また、スライド領 域を左クリックすることで、一気にその位置へつまみをシークさせることができま す。また、スライド領域を右クリックすると、データがリロードされ、クリック位 置までシークした後に、すぐに演奏を開始します。
┌─┬─────────────────┬─┐ │<│ □ │>│ └↑┴─────↑───↑───────┴↑┘ 左三角 スライド領域 右三角
■左右の三角ボタン シークバーの左三角をマウス右ボタンでクリックすると、リロードした後に曲頭 より演奏を開始します。リロードのみを実行したい場合は、右三角をマウス右ボ タンでクリックしてください。メニューの「リロード(L)」と同じ処理となります。 ■ゲージの制御 データ内に“MARK”あるいは“STOP”コマンドがある場合は、左右の三角をクリ ックすることで、そのコマンドのポイントに位置決めできます。また、テキスト の表示領域をマウス右ボタンでクリックすると“MARK”や“STOP”の位置を示す ゲージ(▲マーク)がON/OFFします。ゲージを表示した状態でテキスト表示領域を マウスの左ボタンでクリックすると、ゲージ区間の演奏時間が表示されます。
( 4) キー操作による演奏制御
演奏の制御はマウスによる方法以外に、以下のキー操作でも行えます。 [SPACE] :演奏の開始/一時停止(鍵盤上のマウス左ボタンと等価) [BS] :演奏停止後、曲頭巻戻( 〃 右ボタンと等価) [ENTER] :曲尾移動(アルバム系リピート演奏時は次曲へスキップ) 矢印[←][→] :演奏位置のシーク 矢印[↓] :リロード後、現位置から演奏再開 矢印[↑] :リロード後、直前のMARK/STOP位置から演奏再開 ■カーソルキー[←][→]やマウスでシークをする場合、現演奏時刻を示す“時刻チ ップ”が表示されます。シークすることなく現位置の時刻を確認したい場合は、 [SHIFT]キーを押下してください。[SHIFT]キーを押下したまま[←][→]を使用す るとシークが高速になります。なお[CTRL]併用の場合は、“MARK”や“STOP”へ の位置決めシークとなります。 ■矢印[↑][↓]でリロードを行う際、文法エラーが存在すると、その内容がクリッ プボードにもコピーされます。 (注)メインウィンドウとメンバー情報以外のウィンドウで矢印キーを使用した場 合は、シークやリロードではなく各ウィンドウで定義されている別の機能が 発行されます。 ■「ファイル(F)」および「機能(G)」の配下にあるメニューは、[CTRL]キーを押し ながら、そのメニューを表す英字キーを押下すると、選択できます。
( 5) 楽器やドラムの試聴
「機能(G)」→「楽器の試聴(P)」および「ドラムの試聴(Z)」の選択で、各音色を 確認できるダイアログが出現します。対象となる音源名称はウィンドウタイトルに 表示されています。音源は任意のタイミングで、メニュー「音源(V)」にて切替え ることができます。なお、発音タイミングで当該の情報がクリップボードに出力さ れます。 (注)試聴系ダイアログを起動している最中は、データの演奏は行えません。 また「楽器の試聴」と「ドラムの試聴」を同時に起動することもできません。 片方の起動中にもう片方をメニュー選択すると、強制的に入れ替わります。 ■発音の仕方 ・任意のボタンを押下することで発音が開始されます。音を止めるにはマウスの右 ボタンを任意の位置でクリックするか、[ESC]キーの押下、あるいは[■音止]ボ タンを押してください。また、[♪]ボタンで発音を再開できます。 ・それぞれの試聴ダイアログには、[x0]の音名ボタンがあり、これを押下すると音 名の表示形式を切替えることができます。 ■楽器の試聴 ・音程のスクロールバーは、左右の三角ボタンで半音ずつ、スライド領域の押下で 1オクターブずつ変化します。音程が表示されているボタンを押下すると、中央 のドに復帰し、発音が停止します。 ・数字キー[1]~[9][0][-][^][\]の押下で、10刻みのバリエーション変更ができ ます。[0]で100番台、[-]で110番台、[^]で120番台となります。[\]は0番台です。 なお、キー押下によるバリエーション変更を行うとフォーカスがスクロールバー に移動するため、その場で[←][→]キーを押下すると、1刻みのバリエーション 変更が可能です。 (注)音源によっては、すべてのバリエーションをサポートしていません。サポー トされていないバリエーションが指定された場合は、各々の音源仕様により、 標準音が鳴る場合と、無音となる場合があります。 ・ローマ字の打鍵で、MuseLoid用のバリエーション番号がセットされます。処理効 率のため部分的に変則的なローマ字セットになっています。具体的な組合わせは、 “(10) サウンドフォントの活用”の ≪ MuseLoid配列 ≫ を参照してください。 なお、この配列範囲のバリエーションが選ばれている時は、スクロールバー右肩 に、該当の発声文字が表示されます。 ■ドラムの試聴 ・下辺に並んでいる選択ボタンで、ドラムセットを選ぶことができます。ボタン名 称に黒丸●が付く場合は、Standardセットと異なる音色であることを示します。 Classic や Ethnic、Asia、SFXのドラムセットは、ボタン名称自体が切替ります。 (注)MIDI音源によっては、Ethnic や Asiaなどのドラム音色が使用できない機種 があります。この場合、直前に選んでいたドラムセットが維持され、結果と してボタンフェースと異なる音になります。また、o1列やo6列の一部のドラ ム音が鳴らない音源もあります。 ・音名表示欄の上にノート番号が表示されます。10進表記に加え、鍵括弧で16進表 記も示されます。DATAコマンドを使用する場合にご活用ください。なおスクロー ルバーでピッチを変化させ、その音を確認することもできます。ピッチを標準の U0 に復帰したい場合は、ピッチ値が表示されているボタンを押下してください。 ■波形加工 ・各ダイアログ右下の[波形加工⇒]ボタン押下で、波形加工ダイアログが出現しま す。波形加工のパラメータにより、音色がどの様に変化するか確認できます。各 特性パラメータをスクロールバーで調整すると、波形のイメージ図が変化しその 傾向を目視で確認できます。 ・スクロールバーを移動すると、その都度、新しい特性値での発音が起こります。 ダイアログ下部にある残響(R)、揺らぎ(W)、コーラス(Q)、および強弱(v)のスラ イダーにて、これらのエフェクトによる音質変化確認も可能です。 ・最下端に並んでいる“初期化”[R][W][Q]の各ボタンは、各特性やエフェクトを 初期状態に戻す機能を持っています。また、[COPY]ボタンを押下すると、その時 点の特性指定を、クリップボードに一括出力します。 ■演奏会場ダイアログとの連動 ・試聴系ダイアログと共に、演奏会場ダイアログも表示させ、そこの[SEND]で会場 設定を送信すると、その特性が「楽器の試聴」や「ドラムの試聴」での発音にも 反映します。これにより、調整した演奏会場で各楽器やドラムがどの様に響くか を確認することができます。
( 6) メンバー情報の確認
「機能(G)」→「メンバー情報(M)」の選択で、鍵盤上に表示される各メンバーの色 を確認できます。データがロードされている状態であれば、その演奏に参加してい るメンバーに◆印が付き、そのメンバーの使用楽器が表示されます。演奏途中で楽 器の持替えが起ると、リアルタイムに表示が切替わります。更に、バリエーション 指定されている楽器には“/数字”という形式で、楽器名にバリエーション番号が 添えられます。 ■演奏メンバーの制御 ・左端に◆印の付いているメンバーをマウス左クリックすると、印が◇に変り、そ のメンバの演奏だけを止めさせることができます。再度クリックすると◆に戻り 演奏を再開します。また、マウスの右クリックで、すべての◆印を一斉に切替え ることができます。 ・この機能は、Museデータ作成過程において各メンバーを分離してデバッグしたり、 楽器の音色を微調するのに便利です。また、主旋律を止めて伴奏だけにすれば、 カラオケソフトとしても活用できます。 (注)メンバー毎のON/OFF状態は、譜面モニタやエクスポート(MIDI,WAVE,PDF)に も反映します。 ・メンバー毎のON/OFF機構はキーボードからも行えます。それぞれのメンバーID (A-O,Z)の押下でOFFになり、[SHIFT]キーの併用でONに復帰します。すべて の音を消す場合は[x]を、すべての音を出す場合は[SHIFT]を併用して[x] を押下 してください。
( 7) フィンガー情報の確認
「機能(G)」→「フィンガー情報(F)」の選択で、現在ロードされているデータの最 終的な属性値がフィンガー単位で表示されるウィンドウが出現します。ウィンドウ は、ヘッダー部、リスト部、フッター部で構成されています。 ■ヘッダー部 左上に表示されている分数は、分母が「総フィンガー数」を、分子が「ON状態 のフィンガー数」を表します。また、右側には曲尾におけるテンポ値(%)や、表示 メンバー属性を切り替えるためのコンボボックスがあります。 ■リスト部 各フィンガーの音名タイプ、音部記号、オクターブ、アクセント値、強弱値など 曲尾の段階で保持されている値を確認できます。また微妙な演奏の位置ずれミス は、譜面モニタ上の音符矩形でも見つけにくい場合があるため、4分音符(i960) よりも小さな音長ずれを検出し、フィンガー毎に音長端数(i0~i959)が表示され る様になっています。 ■フッター部 リスト上で選択されているフィンガーの出音・止音のタイミング“pq”や、その フィンガーが属するメンバーの波形加工値(R= W= Q=)に加え、調性や移調に関す る情報(\ T y)も表示されます。また、フッターを右クリックすることで、現在 のデータをリロードさせることもできます。 ■フィンガー単位の演奏制御 ・1つのメンバーに複数のフィンガーが存在する場合、特定のフィンガーだけを取 り出したい場合があります。それを可能にするのが、フィンガー毎のON/OFF機構 です。リスト行頭の“#”を左クリックすることでその行のフィンガーがON/OFF します。OFFになると“#”記号が非表示となります。 ・全フィンガーを一気にON/OFFしたい場合は、リストを右クリックします。なお、 リストの右側エリア(メンバー属性表示領域)を右クリックした場合は、その位置 のメンバーに属するフィンガーのみが一括してON/OFFされます。 (注)フィンガー毎のON/OFF状態は、譜面モニタやエクスポート(MIDI,WAVE,PDF)に も反映します。ただし、フィンガーをOFFにしても、そのフィンガーに対する メンバー属性は、ON状態が維持されます。メンバー属性もOFF状態にしたい場 合は、メンバー情報のON/OFF機構を利用してください。 ・フィンガー毎のON/OFF機構はキーボードからも行えます。[x]を押下すると、リス ト上の選択行フィンガーのON/OFFが切り替わります。また、[SHIFT]キーを併用し て[x]キーを押下すると、該当フィンガーが属するメンバーのすべてのフィンガー がON/OFFします。[CTRL]を併用すると、全フィンガーが一気にON/OFFします。 ■キーによるフィンガー選択 メンバーIDとして[A]~[O],[Z]のキーを押下すると、該当行にジャンプします。 連続入力で同一メンバー内をトグルシフトします。また、[SHIFT]キーの併用でト グルの方向を逆にできます。また属性を表す文字(V,R,W,Q,Y,S,U)を押下すると、 表示対象のメンバー属性が切替わります。 ■ウィンドウサイズの切替え ウィンドウのヘッダーやフッターをマウスでダブルクリックすると、リスト上に あるフィンガー行をすべて表示させる状態と、最小サイズ状態を交互に切替える 事ができます。ヘッダーのダブルクリックで下方に、フッターのダブルクリック で上方にストレッチします。
( 8) 譜面モニタの使い方
「機能(G)」→「譜面モニタ(S)」の選択で、擬似的な譜面表現によるデータの確認 ができます。また、演奏を開始すると“指揮棒カーソル”が表示され、演奏に追従 して移動します。ただし、本譜面モニタはあくまで“モニタ”であり、データ入力 や編集はできません。現在のデータ状態を監視するのみです。 ■モニタの内容 ・音符はメンバー色の付いた矩形で表示され、長さで音長を表します。各色の表示 は、メンバー情報やフィンガー情報のON/OFFに従います。シャープ・フラットは 音符矩形から上下に伸びる矢印で表され、ダブルシャープやダブルフラットの場 合は、矢じりが二重になります。高音域および低音域に引かれた水平の点線は、 メインウィンドウの鍵盤範囲を表現しています。この範囲外の音程は鍵盤表示は されませんが、演奏は行います。 ・調性のシャープ・フラットは五線譜冒頭には表示されず、すべて各音符に展開し 付加されます。また、音符矩形の音程は鍵盤での演奏音程と同一であり、移調属 性(T)等を処理した後の実音で表示されます。この点において移調楽器の場合は、 実際の譜面と譜面モニタとは音程が一致しませんのでご注意ください。どうして も譜面との比較をダイレクトに行いたい場合は、データ側を一時的にT0に変更す るなど工夫して対応してください。 ・文字列表示タイプのコマンド(HEAD,TEXT,STOP,MARK)の内容は、それぞれの対応 色でウィンドウ上部に表示されます。更にWAVEコマンドも深緑色で表示します。 また、ウィンドウ上部の文字列表示部分をクリックすると、HEAD以外をON/OFF することができます。 (注)この文字表示には、FONTコマンドの効果は与えられません。 ■表示領域の移動 ・マウスによるグリップスクロールも可能です。マウスカーソルがノーマルになっ ている領域で、マウスを押下したまま左右にスライドします。マウスの移動に従 い横スクロールを行うので、微妙な位置決めができます。一方、水平スクロール バーの左右の黒三角ボタンでは、1小節単位のスクロールとなります。キーボー ドの左右矢印キー[←][→]や、マウスホイールでもスクロールが可能です。 ・上下矢印キー[↑][↓]で、五線エリアの表示位置を上下に調整できます。縦方向 にウィンドウサイズを変更すると、自動的に上下方向のセンタリング位置に復帰 します。また、ウィンドウタイトルをダブルクリックすると、ウィンドウサイズ が鍵盤範囲(灰色の点線間)にフィッティングし、再度ダブルクリックすると最大 化します。 ■拍子の調整 ・拍子の付近でマウスクリックすると、分母の値を変えられます。マウスボタンの 左と右で変化方向が変ります。分子の値は[SHIFT]キーを併用したマウスボタン、 あるいはマウスホイールでも変えられます。 ・小節の途中から曲がはじまる弱起タイプの楽曲(アウフタクト)で小節線を合せる には、マウスを小節線上の下部に位置決めします。マウスカーソルの形状が左右 矢印になっている状態で小節線をつまみ、横方向にドラッキングしてください。 この機構は変拍子などの楽曲に対し、局所的に小節線を合わせて拍ズレを確認す る場合にも活用できます。弱起調整をすると、小節番号はゼロから始まる表示に なります。 ・マウスカーソルが左右矢印となっている位置(弱起調整位置)でマウスで右クリッ クすると、その位置を小節番号1とするオフセットが掛かります。再び小節番号 1の小節線をマウスで右クリックするとオフセットが解除されます。 (注)拍子を切替えると弱起や小節番号のオフセットはクリアされます。 なお、拍子付近でホイールボタンを押下すると、変更した拍子や弱起や小節 番号が一括でリセットされます。 ・ウィンドウ下部の小節番号表示部分をクリックすると、小節番号および小節線を ON/OFFすることができます。 (注)Museには小節の概念がないため、譜面モニタの小節線は音符位置を把握する ための補助線と考えてください。いわばグラフ用紙の方眼線の様なものです。 ■五線譜音域の調整 ・音部記号の付近をクリックすると、ト音・ヘ音の大譜表をハ音記号の五線譜に切 替えられます。マウスボタンの左と右で変化方向が変ります。また、[CTRL]キー を併用した上下矢印キー[↑][↓]やマウスホイールでも切替えることができます。 ・音部記号付近でホイールボタンを押下すると、変更した音部記号がリセットされ、 大譜表に復帰します。 ・ウィンドウ左部の上下隅にあるオクターブ記号(8va)を左クリックすると、五線 譜が1オクターブシフトし、右クリックすると2オクターブシフト(15ma)します。 再度クリックするかホイールボタン押下により標準の位置に戻ります。これらの オクターブ操作は[SHIFT]キーを併用した上下矢印キー[↑][↓]でも可能です。 ■演奏の制御 ・マウスカーソルがノーマルになっている領域でマウスを右クリックすると、その 場でデータのロードを行い、更にクリック位置の付近から演奏を開始します。こ の「リロード&ラン」の機能は、データ作成時に最も多く繰り返す作業を、ワン クリックで行えるため、大幅な作業効率を実現できます。 (注)終止符よりも右側をクリックすると、ロードのみ実施し曲尾に移動します。 ・ウィンドウの左下隅にある[P][M][A]のボタンは各々以下の機能を提供します。 [P] 現在表示されている譜面先頭から演奏を開始します(Play) [ENTER]キーの押下でも機能します。 [M] 指揮棒カーソル位置が譜面先頭になるよう譜めくりをします(Manual) [TAB]キーあるいはホイールボタンの押下でも機能します。 [A] 譜めくりを自動で行います(Auto) [@]キーの押下でも機能します。 (注)音符を手掛りに位置決めするため、位置決めには多少の誤差が生じます。 特に、長い休符が続く無音の領域では誤差が顕著になります。 ■属性の表示 ・音部記号の上方に表示されている<>記号を左クリックするとデータ中の属性を譜 面上部に表示する事ができます。表示属性は、<>部分の右クリックによるポップ アップメニューから選択することができます。選択できる属性は以下の通りです。 - 全体制御 :テンポ(%) - メンバー系 :音量(V),ペダル(Y),ピッチベンド(U) - フィンガー系 :強弱(v,w),出音グルーヴ(p),止音グルーヴ(q) (注)属性を表示すると、譜面モニタ下部(小節番号付近)に“タイミング合せ%” の位置も、行番号を伴って表示されます。表示形式は“(行番号)”です。 ・表示させるメンバーやフィンガーの切替は、<>付近でマウスホイールを回して行 います。また、キーボードからのID入力でダイレクトな切り替えも可能です。 [A]~[O],[Z]のキー押下でそのメンバーIDに切り替わります。フィンガー属性 を表示している場合は、同一IDの連続入力でそのメンバー内のフィンガーが切 り替わります。[SHIFT]キーの併用でトグルの方向を逆にできます。また、属性 を表す文字(V,U,Yなど)を押下すると表示属性自体を切り替えることもできます。 なお、[X]キー押下で<>自体の開閉も可能です。 (注)<>内に表示される数値は、その時点の譜面モニタ先頭位置の値です。 ただし、メンバー系の遅延指定は、遅延終了時点の最終値が表示されます。 なお、グルーヴ属性(p,q)のパラメータが長い場合、後半部の表示はカット され、末尾の閉じ括弧(>)が感嘆符(!)に変わります。 ■行番号サーチ ・[CTRL]キーを押下するとカーソルが虫眼鏡に変化し、その状態で任意の音符矩形 を左クリックすると、譜面モニタのウィンドウタイトルにテキストデータ上の行 番号をサーチしそれを表示します。また、虫眼鏡状態で右クリックするか、音符 矩形が存在しないエリアをクリックすると、サーチ結果はクリアされます。サー チ結果の表示形式は以下の通りです。
( #A3 : 16 ← $123 ) ↑ ↑ ↑ │ │ └── ③発音実体の行番号(マクロや再現表記などの場合) │ └── ②発音位置の行番号 └─ ①フィンガー宣言
(注)マクロや再現表記ではない通常の音符は、③の行番号は表示されません。 行を跨いだ連結(&)の場合は②に音尾が、③に音頭の行番号が表示されます。 なお、②と③が同一行番号の場合は、③は表示されません。 ・マウスクリック時点で、検索された行番号がクリップボードにコピーされるので、 テキストエディタ側でペーストする事が可能です。マクロや再現表記の場合は② の発音位置の行番号がコピー対象ですが、[SHIFT]キーを併用することで③の発音 実体側をコピーすることができます。 ・音符矩形が重なっている場合は、最上位で描画露出している音符がコピー対象と なります。下位の音符を検索したい場合は、メンバー情報で対象としたい音符矩 形を露出してください。 (注)虫眼鏡サーチが成功した場合、属性表示のメンバーIDやフィンガーIDも 連動して切り替わります。
( 9) 音源の選択
「音源(V)」の選択でPCに搭載されている音源一覧が、プルダウンメニューで現 れます。現在、Museに割付けられている音源には黒丸マークが付いています。 これを切替えることで、使用デバイスを選択できます。さしずめ、演奏楽団を変更 するといった所です。 (注)初期化ファイル(muse.ini)の“#DN指定”で、表示音源名を別名にしたり、 非表示にすることが可能です。詳細は“(19) 初期化ファイルによる指定” を参照してください。 [CTRL]キーを併用してアプリケーションキーを押下するか、音源メニューがプル ダウンした状態でマウスの右ボタンを押下すると、すべてのデバイスがクローズさ れ、どの音源も選択されていない状態になります。一時的に他の音楽ソフトとの音 源競合を回避したい場合や、クローズしないと設定できない音源パラメータ指定作 業等で利用してください。音源が未選択になると、演奏は開始されず試聴では無音 となります。未選択状態ではメニュー右端“Presented by ...”の先頭に●マーク が表示されます。なおMuse起動時に前回終了時の音源を自動選択するようになって いますが、起動引数 *n を使うと未選択状態で起動させることもできます。 (注)高度なエクスクルーシブを駆使したデータは、その音源設定が残存し、後に 続く別のデータ演奏に影響を与えてしまう場合があります。この影響を回避 するため、Museは新規データロード時にGSリセットを音源へ送信しています。 もしこの送信を抑止したい場合は、muse.iniのGSR設定を変更してください。 なおリロードの際は、設定の有無に拠らずGSリセット送信は行いません。 Museは、サウンドフォントやVSTiプラグインを利用して音源を増強できます。 それぞれのセッティング方法は、以下の節を参照してください。 →“(10) サウンドフォントの活用” →“(11) VSTiプラグインの活用” セッティングすると通常音源と同様に音源メニューからの選択が可能となります。 また、これらの音源からは、WAVEファイルやMP3ファイルへのエクスポートも可能 となります。エクスポートの詳細に関しては、“(16) WAVEやMP3ファイルへの出力” を参照してください。
(10) サウンドフォントの活用
Museは、ネット上に数多く公開されているサウンドフォント(*.sf2)を利用して、 仮想的なMIDI音源を実現することで、多彩な音色を楽しむ機構を提供しています。 また、楽団編成ファイル(*.sfm)を定義すれば、(*.sfz)の利用も可能となります。 (注)本機能は、同梱のBASSライブラリ群(DLL)が、muse.exeと同じフォルダに 存在していることを前提とします。 ■サウンドフォントのセッティング方法 ①サウンドフォント格納フォルダを作る(自由な名前で作成してください) ⇒ ここでは説明のために“My_SoundFont”とします。 ②初期化ファイル(muse.ini #SF)にサウンドフォント格納パスを書き込む。 ⇒“SoundFont”階層メニューが選択可能になります。 (記述例) #SF = D:\xxx\yyy\My_SoundFont\ ③上記の格納パスにサウンドフォントを配置する。(下図参照) ⇒ 階層メニューにサウンドフォントが展開されます。
My_SoundFont → #SF(muse.ini)に指定したフォルダ ┃ ┣━ hoge.sf2 ┃ ┣━ piyo.sf2 ┃ ┣━ foobar.sf2 ┃ ・ ・
(注)演奏時に雑音が乗る場合は、muse.iniの“VLF値”を増やしてください。 演奏遅延は増加しますが、大きいほど音の乱れや歪みが抑えられます。 逆に、MIDIキーボードの発音反応を速くしたい場合は減らしてください。 サウンドフォント選択時の待ち時間を短縮したい場合は、muse.iniの“SFL指定” で先行ロードを抑止してください。先行ロードを抑止すると、演奏時に必要最小 限のサウンドフォントをリアルタイムでロードするため、メモリの節約にもつな がります。ただし、演奏時のCPU負荷が高まるため、雑音が入ったり演奏モタレが 発生する場合があります。これらの症状は“VLF値”を調整することで、緩和でき る可能性があります。 ■複数のサウンドフォントを組合わせて演奏する方法 例えば、あるサウンドフォントのフルートの音色と、別のサウンドフォントのピ アノの音色を利用したい場合、その編成を定義した“楽団編成ファイル”を準備 します。楽団編成ファイルは、拡張子が (.sfm) のテキストファイルです。ファ イル名は自由に付与できるため、様々な楽団編成ファイルを準備しておけます。 これらのファイルを、#SFで設定した“サウンドフォント格納フォルダ”に配置す ると、音源メニューSoundFontに※印の付いた楽団編成ファイル名が表示されます。 楽団編成ファイルの内容は、行単位にサウンドフォント(*.sf2)を指定する形式で す。末尾に半角縦棒(|)と楽器番号を与えます。楽器番号にスラッシュ(/)を添え てバリエーション番号を指定することもできます。楽器番号のみ指定した場合は、 標準バリエーション(/0)を指定したことになります。どちらも指定しない場合は、 全楽器の全バリエーションを指定したことになります。 なお、アスタリスク(*)を記述すると、そこから行末までをコメント化できます。 以下に、記述例を示します。
* 楽団編成ファイルの記述例 ───────────────────────────────── a340.sf2 | 1 * ピアノ(標準) a340.sf2 | 22 /8 * アコーディオン(バリエーション8) a340.sf2 | 41 * バイオリン(標準) FluidR3 GM.sf2 | 20 * 教会オルガン(標準) FluidR3 GM.sf2 | 26 /16 * スチールギター(バリエーション16) SGM-V2.01.sf2 * 残りすべての楽器とバリエーション ─────────────────────────────────
採用される楽器(音色)は、先に記述した行の指定が優先されます。 最初の行のサウンドフォントがまずロードされ、楽器の音色に抜けがある場合に、 次の行のサウンドフォントの楽器音色が採用されます。以降、抜けている楽器や バリエーションを埋めるように、順次ロードされていきます。 (注)楽器番号やバリエーション番号の指定記述をしたにもかかわらず、その番号 の音色がサウンドフォントに存在しない場合は、ロードエラーとなります。 楽団編成ファイルには、sfz形式のサウンドフォントも指定できます。この際、 指定する楽器番号とバリエーション番号は、sfz音色の割付先として機能します。 バリエーション番号を省略すると標準バリエーション(/0)に割付けられます。 楽器番号も省略すると(P1/0)に割付けられます。
* sfzの記述例(sf2との混在も可能) ───────────────────────────────── Violin.sfz | 41 * バイオリンに割付 Violin2.sfz | 41 /1 * 別の音色をバリエーション1に割付 Cello.sfz | 43 * チェロに割付 Steinway Piano.sf2 * ピアノのサウンドフォント Airfont380final.sf2 * 残りすべての楽器とバリエーション ─────────────────────────────────
楽団編成ファイル内の(sf2)や(sfz)のファイル名記述には、絶対パス/相対パス が使用できます。相対パスの場合は、#SF設定の“サウンドフォント格納フォルダ” が基点となります。 (注)sfzの文字コードは「UTF-8」を使用してください。(BOMの有無は問いません) 他の文字コードでは、2バイト文字を正しく認識しない場合があります。 sfzの内容に2バイト文字が存在しない場合は「S-JIS」でも構いませんが、 トラブルを避けるためにも「UTF-8」の使用をお勧めします。 <ドラムの扱い> サウンドフォントのドラムは、バリエーション番号128が割当てられています。 個々の音色は音程で制御するため、楽団編成ファイルで個別に指定することはで きません。しかしドラムセットは楽器番号で指定できるため、ドラムセット単位 でロード制御することは可能です。なおsfzを利用する場合は、sfz自体が単純な テキストファイルなので、そのパラメータを書き換えることで、音程割付も含め てきめ細かく指定できます。
FluidR3 GM.sf2 | 49/128 ← Classicドラム(49)を割付
<番号の付替え> サウンドフォントによっては、楽器番号やバリエーション番号が標準的な音源と 異なる場合があります。そのような場合に、番号を付替えながらロードすること が可能です。書式は、小なり記号(<)を挟んで、割付先と採用音色を指定します。
(割付先) (サウンドフォント側の採用音色) ↓ ↓ FluidR3 GM.sf2 | 22/16 < 73/8
割付先と採用音色が一致している記述は、割付先のみの記述と等価です。
FluidR3 GM.sf2 | 22/16 < 22/16 ─┐等価 FluidR3 GM.sf2 | 22/16 ←┘
(注)楽団編成ファイルは、Muse起動中でも編集が可能です。変更内容は対象音源 を選び直すことで反映します。Museを再起動する必要はありません。ただし、 新規に楽団編成ファイルを立ち上げた場合は、音源メニューに反映させるた めにMuseの再起動が必要です。 ■MuseLoid音源の割付方法 sfz形式のMuseLoid音源を利用する場合も、楽団編成ファイルを介して行います。 パス指定部に、拡張子(.sf2や.sfz)の無いフォルダパスを記述すると、Museは、 それがMuseLoid音源のsfzフォルダであると解釈します。パスの記述に続けて、 縦棒(|)で割付先の楽器番号を添えます。sfzパスは、絶対パス/相対パスのどち らでも使用できます。相対パスの基点は、#SF設定フォルダです。
D:\MuseLoid\Orpheus\sfz | 53 ← P53に割付(この例は絶対パスで記述)
(注)MuseLoidのsfzファイルは、基本的に2バイト文字を含むため、基本的に 「UTF-8」を使用してください。(BOMの有無は問いません) 歌唱を含むMuseデータを通常音源で演奏させた場合でも、違和感のない演奏とす るために、ここで割り付ける楽器は、できるだけ歌声に近い音色を選択してくだ さい。例えば、以下のような楽器番号が候補となります。
≪ 割付候補 ≫ ≪ 割付指針 ≫ ──────────────────── P53:合唱アー 男声合唱 P54:独唱オー 男声独唱 P55:シンセボーカル 女声合唱 P86:ソロボーカル 女声独唱 P92:スペースボイス (予備) ────────────────────
(注)MuseLoidを利用したデータの作成に関しては、 “(4- 9) MuseLoid対応データの作成要領”を参照してください。 バリエーション番号は、以下のMuseLoid配列の全てが自動展開されます。なお、 sfzファイル不在のバリエーションは未割付となるため、0番バリエーションの 音色が代替音として発音されます。
≪ MuseLoid配列 ≫ [ ]内は「楽器の試聴」での発声キー ──────────────────────────────── [A] [I] [U] [E] [O] 50: あ 51: い 52: う 53: え 54: お [K] 55: か 56: き 57: く 58: け 59: こ [S] 60: さ 61: し 62: す 63: せ 64: そ [T] 65: た 66: ち 67: つ 68: て 69: と [N] 70: な 71: に 72: ぬ 73: ね 74: の [H] 75: は 76: ひ 77: ふ 78: へ 79: ほ [M] 80: ま 81: み 82: む 83: め 84: も [Y] 85: や 86: ヰ 87: ゆ 88: ヱ 89: よ [R] 90: ら 91: り 92: る 93: れ 94: ろ [W] 95: わ 96: ゐ 97: ん 98: ゑ 99: を [G] 100: が 101: ぎ 102: ぐ 103: げ 104: ご [Z] 105: ざ 106: じ 107: ず 108: ぜ 109: ぞ [D] 110: だ 111: ぢ 112: づ 113: で 114: ど [B] 115: ば 116: び 117: ぶ 118: べ 119: ぼ [P] 120: ぱ 121: ぴ 122: ぷ 123: ぺ 124: ぽ ・[D]行の[ぢ][づ]は『ディ』『ドゥ』と発声します。 ・[ヰ][ヱ][ゐ][ヱ]は未定義。音源毎に自由な発声を割付可能です。 ────────────────────────────────
(11) VSTiプラグインの活用
MuseはVSTiホストの機構を内蔵しており、様々なVSTiをダイレクトに活用すること ができます。VSTiプラグインとは、拡張子がdllのファイルです。このファイル、 および付随するファイル群を、以下に示す様なフォルダ構成で配置しておくことで、 Museの音源メニューから起動できるようになります。 (注)接続可能なVSTiプラグインは、VSTi2.4規格の32bitバージョンです。 ■VSTiのセッティング方法 ①VSTi格納フォルダを作る(自由な名前で作成してください) ⇒ ここでは説明のために“My_VSTi”とします。 ②初期化ファイル(muse.ini #ST)に、VSTi格納パスを書き込む。 ⇒“VSTi”階層メニューが選択可能になります。 (記述例) #ST = D:\xxx\yyy\My_VSTi\ ③上記の格納パスにDLLファイル名と同名のフォルダを作成して、 そこにDLLファイルを配置する。(下図参照) ⇒ 階層メニューにVSTiプラグインが展開されます。
My_VSTi → #ST(muse.ini)に指定したフォルダ ┃ ┣━ hoge → ★フォルダ名はDLLファイルと同名にする ┃ ┃ │ ┃ ┣━ hoge.dll ←───┘ ┃ ┃ ┃ ┣━ データやヘルプなどのファイルやフォルダ群 ┃ ・ ┃ ・ ┃ ┣━ piyo → ★フォルダ名はDLLファイルと同名にする ┃ ┃ │ ┃ ┣━ piyo.dll ←───┘ ┃ ┃ ┃ ┣━ データやヘルプなどのファイルやフォルダ群 ┃ ・ ・
(注)演奏時に雑音が乗る場合は、muse.iniの“VLT値”を増やしてください。 演奏遅延は増加しますが、大きいほど音の乱れや歪みが抑えられます。 逆に、MIDIキーボードの発音反応を速くしたい場合は減らしてください。 ■VSTi操作パネル VSTiを音源メニューから選択すると、その操作パネルがPCスクリーン右上に表 示されます。ウィンドウタイトル部をダブルクリックすると、操作パネルをコン パクト化できます。再度、ダブルクリックすると元に戻ります。操作パネルが表 示される初期位置は、muse.iniの“PAL指定”で他の四隅に変更することができ ます。操作パネル自体を非表示にすることも可能です。 (注)閉じるボタン[X]を押下すると、音源未選択状態に移行します。 ■VSTi起動時の初期パラメータを変更する方法 VSTi音源を選択すると、基本的にその音源固有の標準パラメータで起動します。 それに対して、操作パネルでツマミ調整をした状態を次回以降も利用したい場合 があります。その場合は操作パネルのウィンドウタイトルを右クリックし、表示 されるポップアップで「★ パラメータ記録」を選択してください。対象のVSTi フォルダに muse.prm という記録ファイルが生成され、その時点のパラメータが 記録されます。この記録を消去し標準状態に戻したい場合は「☆ 記録のクリア」 を選択し、音源を起動し直してください。なお、ウィンドウタイトルの音源名末 尾に表示される ★や☆ は、記録ファイルの有無を表現しています。 (注)VSTiによっては、パラメータ記録ができないものがあります。その場合は、 ウィンドウタイトルの音源名末尾に ★や☆ が付加されず、ポップアップ にも記録関係のメニューは表示されません。 ■容量の大きなVSTiデータを共有する方法 VSTiによっては、1つの音源データを複数のDLLが共有して駆動する場合がありま す。それらのDLLを同名フォルダ構造で組もうとすると、同じ音源データをそれぞ れのフォルダにコピーすることになります。もしデータ容量が大きい場合、これ ではディスクの無駄遣いとなってしまいます。 この様な場合はショートカットを利用することで、実体のデータを一箇所に集約 させ、他のDLLからそれを共有参照させる方法があります。
My_VSTiフォルダ ┃ ┣━ hoge1 ┃ ┣━ hoge1.dll ┃ ┗━ DATAフォルダ ←──┐ ┃ ┣━ データ実体 │ ┃ ┣━ ・ │ ショートカット名は ┃ ・ │ 同名にしておく ┣━ hoge2 │ ┃ ┣━ hoge2.dll │ ┃ ┗━ DATAフォルダへのショートカット ┃ (ここにはデータ実体は無い)
(注)VSTiによっては、この方法がうまくいかない場合もあります。
(12) 演奏会場の確認
「機能(G)」→「演奏会場の確認(A)」の選択で、データ再生時の音場空間を確認す ることができます。調整は“残響設定”と“コーラス設定”の2系統のパラメータ を組合せることで行います。残響パラメータは6つ、コーラスパラメータは7つあ り、水平レバーを使用してその値を決めます。 (注)各々のパラメータの意味は【第2章】コーディングの手引きの “(3-13) 演奏会場を設定する”を参照してください。 これらのパラメータの組合せには標準的なものが用意されており、それらはダイア ログの左側に縦に並ぶ選択ボタンにより行います。残響・コーラスそれぞれに8個 ずつの選択肢があります。自分なりの演奏会場を設定する際、まずこれらの標準パ ターンの組合せを選んだ後、水平レバーで微調していくのが簡便です。なお“残響 設定”と“コーラス設定”は、それぞれメンバー属性のエフェクトである、残響Rと コーラスQと強い相関があり、RやQの値がゼロのデータでは音場空間の調整効果を出 すことはできません。 以下、ダイアログ上部にある機能ボタンの内容について説明します。 ■[ PASTE ] ボタン ・ROOMコマンドが記述されているMuseデータをロードした場合、そのパラメータを 取得し、ダイアログに反映することができます。 ■[ COPY ] ボタン ・現在のダイアログパラメータが、ROOMコマンド書式でクリップボードにコピーさ れます。これをエディタに貼り付けると簡便にデータ入力が可能です。 ・演奏会場の設定に関する効果は、使用される音源によってかなり差異があります ので、その時点の音源名称をコメントとして付帯させる様になっています。あく までもコメントですから削除しても構いません。 ■[ SEND ] ボタン ・その時点のダイアログの設定を音源に送信します。演奏中に送信すると、その音 場を変化させます。また、「楽器の試聴」や「ドラムの試聴」にも送信できます。 なお、この変化は一過的なものであり、演奏を停止したり、試聴ウィンドウを閉 じたりすると、通常の状態に戻ります。 ・送信すると、ダイアログのタイトルに(●送信済)と表示されます。また、送信後 にダイアログのパラメータを変更すると(▼変更有)に変化して、送信済みのパラ メータとダイアログ上のパラメータに、不一致が生じていることが示されます。 一致させるためには、再度[ SEND ]ボタンを押下してください。 (注)ラジオボタンで(無指定)を選択すると、新しいパラメータを送信しないため、 直前の送信結果が保持されます。デフォルト状態を確認したい場合は、一度 演奏を止めてから再度演奏を開始し、送信し直してください。
(13) フォントの確認
「機能(G)」→「フォントの確認(J)」の選択で、利用可能なフォントを確認するこ とができます。ダイアログの上部にはMuseのテキスト表示領域での表示イメージが 描画されます。確認したい文字列はダイアログの2段目の欄で変更できます。コマ ンド色(HEAD・TEXT・MARK・STOP)や、修飾(太字・斜体)も変更することができます。 ■フォントリスト ・フォント名/文字セット/プロポーショナルの3つの情報が表示されます。 ・英文フォントが[ENG]、和文フォントが[JPN]、といった形式で文字セットが表示 されます。またプロポーショナルフォントの場合は“P”の文字が添えられます。 ■リスト表示順 ・ボタン[N][S][P]の押下で、表示項目の順番を変更することができます。 ・[N]でフォント名、[S]で文字セット、[P]でプロポーショナルの項目が先頭に配置 され、その先頭項目を優先したソーティングとなります。 (注)フォント選択の際には、リストボックスにフォーカスを与え、キーボードの 上下矢印[↑][↓]キーで次々とフォントを切り換えていくと便利です。
(14) 配色マップの活用
「機能(G)」→「配色マップ(K)」の選択で、メンバーの配色を検討するためのダイ アログが起動します。中央に「色相ゲージ」と「彩輝トライアングル」が表示され ており、それらを合せて「配色マップ」と呼びます。この配色マップから好みの色 を選択し、それをメンバーパレットの各セルに配色することで、*COLRコマンドの 書式をクリップボードに出力させることができます。
≪ダイアログ各部の名称≫ ①メンバーパレット ②色相ゲージ ③彩輝トライアングル ④採色セル ⑤固定エリア ⑥調整エリア ⑦RGB入力欄 ⑧RGBスクロールバー ⑨連動スイッチ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ A┌─┐ ┌─②─────────────────┐ ┃ ┃ B├─┤ └───────────────────┘ ┃ ┃ C├─┤ □ ┃ ┃ D├─┤ □□□ ┃ ┃ E├─┤ □□□□□ ┃ ┃ F├─┤① □□□ □□□ ┃ ┃ G├─┤ □□□ ③ □□□ ┃ ┃ H├─┤ □□□□□ □□□□□ ┃ ┃ I├─┤ □□□□□□□□□□□□□ ┃ ┃ J├─┤ ┃ ┃ K├─┤ ④ ⑦ ⑧ ⑨ ┃ ┃ L├─┤ ┏━┯━┓ [200] c8 <=====> □┌ ┐ ┃ ┃ M├─┤ ┃⑤│⑥┃ [200] c8 <=====> □│C│ ┃ ┃ N├─┤ ┗━┷━┛ [200] c8 <=====> □└ ┘ ┃ ┃ O├─┤ ┃ ┃ Z└─┘ [INIT] [PASTE] [COPY] [SEARCH] [ 14 ] ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
■配色マップの構造と操作 ・「色相ゲージ」には明度の高い色が色相順に並んでおり、6つの原色セル上には ドットの印が付いています。色相ゲージは、“ホイール”や“左右矢印キー”で 循環スライドし、ゲージ中央の色が「彩輝トライアングル」の頂点色として採用 されます。頂点色は、色相ゲージ上の色をクリックして選択することもできます。 ・「彩輝トライアングル」は下に向かって次第に彩度を落とし、底辺でモノトーン となる三角形のマップです。左から右に向かっては、輝度が増していきます。 ・ダイアログ右下にある数字ボタン( 初期値[14] )をクリックすると、背景の輝度 が16段階で変化します。マウス左ボタンで輝度が下がり、右ボタンで上がります。 ■メンバーパレットへの色セット ・「配色マップ」の任意のセル上でマウス左ボタンを押下すると、カーソルが黒丸 に変化します。押下したままマウスをメンバーパレットに移動しボタンを離すと、 その色がメンバーパレットにセットされます。 (注)メンバーパレット同士のコピーや、採色セルへの色セットも可能です。 採色セルは左右のエリアに分かれており、各々独立に色をやり取りできます。 ・任意のメンバーパレット間で、その2色を線形補間したグラデーションを生成す ることができます。グラデーションの始色とするセル上で、マウスの右ボタンを 押下し、そのままマウスを終色のセルに移動してボタンを離します。この操作の 際は、カーソルが白丸になっています。 (注)始色と終色を同色にしてグラデーション操作をすると、その間のセルを一気 に同色にできます。 ■採色セルの利用 ・本ダイアログが“アクティブになっている状態”でスペースキーを押下すると、 マウス位置の色が「採色セル」にセットされます。この機構は本ダイアログ内だ けでなく、PCスクリーン上のあらゆる位置で利用できます。Muse以外のアプリ ケーションからも採色できるため、色のスポイトツールとして利用可能です。 (注)[SHIFT]キーを併用してスペースキーを押下すると、採色セル全体ではなく 調整エリアのみに色がセットされます。 ・「RGBスクロールバー」を動かすと、採色セルの右半分(調整エリア)のRGB値が変 化します。上下矢印キーで対象スクロールバーを切替え、左右矢印キーで微調整 するといった使い方もできます。採色セルの左半分(固定エリア)の色は変化しな いため、色の調整度合いを比較確認することができます。 (注)採色セルでマウスを右クリックをすると、固定エリアと調整エリアの色を 入替えることができます。 ・「連動スイッチ」にチェックを入れると、チェックされているRGB値は連動して スクロールします。チェックには黒色と灰色の2種類があり、連動する値の増減 を逆向きにすることができます。なお、連動スイッチの右横にある[C]ボタンで、 すべてのチェックを一括してクリアできます。 ・「RGB入力欄」での数値指定も可能です。この際、[TAB]キーによる入力欄切替え を使用すれば、キーボードのみで連続入力できます。入力欄の右には、16進数 RGB値が表示されています。[ENTER]キーを押下すると、この値がカラーコード形 式(#rrggbb)でクリップボードに出力されるので、HTML作成などに利用できます。 (注)入力欄やスクロールバーにキーボードフォーカスがある場合、[ENTER]キー 押下で、クリップボード出力と共にフォーカスも解除されます。 ■メンバーパレットのコピー&ペースト ・[COPY]ボタンを押下すると、その時点のメンバーパレットの色情報が、COLRコマ ンドの書式でクリップボードに出力されます。 ・COLRコマンドが記述されているMuseデータをロードした場合、[PASTE]ボタンで その定義色をメンバーパレットに反映することができます。[INIT]ボタンを押下 すると、Museのデフォルト色に復帰します。 ■色のサーチ ・[SEARCH]ボタンの押下で“調整エリアの色”が、配色マップ上のどのセルに該当 するかを検索します。マウスカーソルは、検出した近似色のセルに移動します。
(15) MIDIファイルの保存
「ファイル(F)」→「エクスポート(E)」→「MIDIファイル(E)」にて、現在読込まれ ているMuseデータを、MIDIファイルとして保存することができます。メンバー情報 やフィンガー情報によるON/OFF状態を反映した出力を行うため、ターゲットを絞っ たMIDIファイルを作成することも可能です。 ■保存されるMIDIファイルの諸元は以下の通りです。 - 形式 :SMFフォーマット0 - 初期化コマンド :GSリセット - 拍子メタイベント :4/4 - TPQN :120 - セットアップ小節テンポ :800 - ソングボディテンポ :125 - Lyric符号方式 :SHIFT-JIS ( または UTF-8 ) 初期化はGSリセットですが、ほとんどのXG音源においてTG300Bモードが存在す るため、現在この仕様が最も汎用力の高い初期化方式です。ドラムマップやバン クセレクト、波形加工の指定なども、多くの音源で再現させることができます。 (注)*DATA""の記述があるデータは、GSリセットを出力しません。 ■テキスト系コマンドも以下の様に対応するMIDIコマンドに出力されます。その際、 ダイアログ最下段のチェックボックス“テキスト系データの抑止”を選択すると、 これらのコマンドを出力しないコンパクトなMIDIファイルになります。(ただし、 HEADコマンドだけはチェックの有無に左右されません) ・HEAD → Sequence/Track Name ・TEXT → Lyric ・MARK → Lyric ・STOP → Lyric ・WAVE → Cue Point ■ダイアログ最下段のチェックボックス“文字列のユニコード出力”を選択すると、 HEAD,TEXT,MARK,STOP,WAVEのパラメータは、UTF-8 の符号方式で出力されます。 その際、MIDIファイルには"UTF-8"というマーキング名のMarkerメタイベントが 1つ出力され、それ以降に出現するイベントの文字列パラメータがユニコードで あることを示します。 (注)“テキスト系データの抑止”や“文字列のユニコード出力”は、起動引数の *t や *u でも指定できます。 ■Museには小節の概念がないため、拍子のメタイベントは固定です。また、テンポ を定値出力し、デルタタイム数値演算で高精度の演奏速度制御を行います。Muse の音量指定“V”はエクスプレッションに反映し、対してマスタボリュームはデ フォルト値を保持します。ランニングステータスは使用しません。 (注)Instrument_Name メタイベントに“Generated by MUSE”と刻印させていた だきました。ただし楽曲の著作権はその作曲者が保有し、歌詞の著作権はそ の作詞者が保有します。そしてMIDIデータを作った皆さんは、演奏表現の創 出者として著作隣接権が与えられます。道具(Muse)を開発した私(加藤)には、 制作されたMIDIデータにおける如何なる著作権利も与えられません(苦笑)。
(16) WAVEやMP3ファイルへの出力
サウンドフォントやVSTi音源を選択している場合、現在読込まれているMuseデータ を、WAVEファイルやMP3ファイルに出力することができます。 ■サウンドフォントやVSTiのセッティングを行うと、WAVEエクスポートが可能とな ります。更に以下の手順でエンコードソフトLAMEを導入することで、MP3エクス ポートも可能となります。 ①LAMEをインストールする。 ②初期化ファイル(muse.ini)の #LM にインストール先のパスを書き込む。 →“(19) 初期化ファイルによる指定”を参照してください。 (注)3時間を越える演奏の場合、MP3エクスポートが失敗する場合があります。 ただし、その場合でも3時間までの演奏はMP3ファイルとして出力されます。 ■WAVEエクスポートを行うには、「ファイル(F)」→「エクスポート(E)」メニュー 配下の「WAVEファイル(W)」を選択します。表示されるダイアログの最下段には、 予想される出力ファイルの容量が表示されます。 出力されるWAVEファイル特性は以下の通りです。 - データ形式 :非圧縮リニアPCM - サンプリング周波数 :48,000(Hz) - 量子化ビット数 :16(bit) - チャネル数 :2ch(ステレオ) ■MP3エクスポートを行うには、「ファイル(F)」→「エクスポート(E)」メニュー 配下の「MP3ファイル(B)」を選択します。表示されるダイアログの最下段には、 LAMEのエンコードオプションを確認できる欄があります。もし、ロードしている Museデータに*LAMEコマンドが存在する場合、この欄にその内容が表示されます。 エンコードは、このオプションに従って実施されます。ただし本欄はあくまでも 確認欄であり、内容の編集はできません。オプションを変更したい場合は、直接 Museデータの*LAMEコマンドを修正してください。 (注)*LAMEコマンドにの詳細に関しては、【第2章】コーディングの手引きの “(3-23) MP3エクスポートのオプション”を参照してください。 ■基本的にメンバー情報やフィンガー情報のON/OFF状態や、VSTi操作パネルによる 音質特性の変更状態など、その時点の演奏と同じ内容を出力することができます。 ただし、*WAVEコマンドによる発音は出力されません。 (注)エクスポート中はMuse鍵盤が灰色に変化し、処理経過が確認できます。 ■コマンドラインによるバッチでの出力も可能です。 WAVEエクスポートは *w を、MP3エクスポートは *b を指定します。 対象とする音源は、直前の通常起動であらかじめ選択しておいてください。 (注)VSTi音源の特定のパラメータ状態をバッチ出力に反映させたい場合は、あら かじめ muse.prm にその状態を記録させておいてください。muse.prm の利 用方法に関しては“(11) VSTiプラグインの活用”を参照してください。
(17) 楽譜の印刷
フリーソフト“LilyPond”をインストールする事で、現在読込んでいるMuseデータ を、楽譜(PDFファイル)に出力することができます。この機能を活用するためには、 以下の2つの準備作業を実施してください。 ①LilyPondをインストールする。 ②初期化ファイル(muse.ini)の #LP にインストール先のパスを書き込む。 (通常は、#LP = C:\Program Files\LilyPond\ です。 ただし、64bitマシンの場合は Program Files (x86) になります。) ■上記作業の後、Museデータを読込むと「ファイル(F)」→「エクスポート(E)」→ 「PDFファイル出力(C)」が選択できる様になります。その際、ダイアログ最下段 にあるスイッチで、用紙のサイズと印刷の向きを選択できます。 デフォルトはA3縦置きですが、起動引数に *y や *0~*4 を指定すると、この デフォルト値を変更して起動する事ができます。 (注)“ファイルの種類(T:)”欄のプルダウンで“LYファイル(*.ly)”を選択する とLilyPondへの入力ファイルを出力できます。(楽譜PDF変換は実施しません) ■楽譜への記譜内容は、Museデータを基にできるだけ忠実に自動生成していますが、 楽譜の構成や微妙なニュアンスなどで意図に反する場合があります。それらを解 消するために、楽譜制御用のMuse文法が準備されています。 記述詳細は【第2章】コーディングの手引きの“(3-24) 楽譜の体裁を整える” を参照してください。 (注)楽譜出力には少々処理時間がかかります。処理中、メインウィンドウのタイ トル部に (応答なし) の表示が出る場合がありますが、これは異常ではあり ません。“楽譜生成中”の文字が消えるまで数分お待ちください。 “♪ → 数値”は楽譜の規模を表します。待ち時間の目安にしてください。 ■どのメンバーやフィンガーをどのような順番で記譜するかを指定する楽譜構成コ マンドが用意されていますが、このコマンドを指定していないデータでも、楽譜 出力は可能であり、すべてのメンバー・フィンガーが記譜対象となります。その 際、最大16本の五線譜に収まる様に楽譜の自動構成処理が働きます。そのため、 部分的に複数フィンガーが1つの五線譜に集約される場合があります。集約した 五線譜の楽器名はメンバーIDとなり、集約数が括弧で添えられます。集約しな かった場合の名称はフィンガーIDとなります。 (注)ドラムメンバーが集約される場合は“ヘ音記号の五線譜”となり、集約され ない場合は“リズム譜”として記譜されます。ただし、これらの記譜スタイ ルは楽譜構成コマンドで自由に変更できます。 ■PDFエクスポートの際、その時点のメンバー情報やフィンガー情報によるON/OFF 状態に従い、記譜フィンガーがマスクされます。このマスクは楽譜構成コマンド が存在しても機能しますので、データを修正することなくパート譜を個別に出力 することができます。 (注)LilyPond出力対象のデータは、必ずどこかのフィンガーに属する形で存在し ます。この原則は、音量(V)やテンポ(%)などのメンバー属性や全域指定であ っても貫かれます。従って例えば、#F2にテンポ(%)が記述されている場合、 FメンバーをOFFにしたり、F2フィンガーをOFFにすると、そのテンポ表記は 記譜されなくなります。
(18) MIDIキーボードの接続
「ファイル(F)」→「インポート(I)」には、その時点で接続可能なMIDIキーボード やMIDIパッド、仮想ケーブルソフトなどの入力ポートが列挙されています。入力を 受け付けるポートをチェックすることで、Museでの発音が可能となります。例えば、 新しいMIDIキーボードをMuseと接続する場合は、以下の様な操作を行ないます。 ①MIDIキーボードをPCに接続する。 (この時、Museは起動していても、していなくても構いません) ②Museの「インポート(I)」メニューで、対象のMIDIキーボードを選択する。 (注)PC起動後の初回接続(上記①)では、PCがキーボードを認識するまで 1分程度かかる場合があります。その処理時間は、利用PCのデバイス 制御特性に依存します。 以上の作業で設定は完了し、MIDIキーボードの打鍵で発音が可能となります。 発音対象の音源は、音源メニューで切替えられます。 ・複数のポートを選択することが可能なため、複数のMIDIキーボードを同時に利用 できます。これにより、複数人でMuseと合奏することもできます。 ・選択状態はmuse.iniに自動記憶されるため、次回以降は設定操作をすることなく、 MIDIキーボードのプラグ&プレイが可能となります。逆にMuseでMIDIキーボード を発音させたくない場合は、選択チェックを外しておいてください。 (注)MIDIキーボードによっては「音源メニュー(V)」にも表示されてしまう機種 もあります。目障りな場合は、muse.iniの#DN指定で非表示にしてください。 ・MIDIキーボードは、Muse演奏中でも使えます。デフォルトはAメンバーですが、 MIDIキーボード側でメンバー(送信チャンネル)を変更できる機種もあります。 ・メンバー情報で対象メンバーをOFFにしても、MIDIキーボードでの発音は継続す るため、楽器カラオケとして演奏を楽しめます。 (注)送信対象のMIDIコマンドは、ショートメッセージのみです。 ロングメッセージ(エクスクルーシブなど)は無視されます。 ・MIDIキーボードは楽器の試聴でも利用できるため、旋律や和音を伴った音色の確 認が可能です。ドラムの試聴でも利用できるので、ちょっとしたドラマー気分が 味わえます。 ・試聴系ウィンドウでの発音メンバーは、MuseがAやZに自動変換するため、MIDI キーボード側での送信チャネル変更は不要です。 (注)試聴系のウィンドウで、音色選択ボタンを押下した際に発生する持続音は、 [■音止]ボタンに加え、マウス右ボタンや[ESC]キーでも停止できます。 これらを利用すれば、より迅速に音を止めることができます。
(19) 初期化ファイルによる指定
初期化ファイル(muse.ini)は、実行ファイル(muse.exe)と同一フォルダに自動生成 されるテキストファイルです。Muse終了時のウィンドウ状態などを記憶し、次回起 動時に再現するために存在します。このファイルは通常、ユーザが編集する必要は ありません(特に[SYS]ブロック)。しかし以下の定義行([USR]ブロック)に関しては、 明示的にユーザが追加・変更する事が可能であり、Museの動作を制御することがで きます。以下は、[USR]ブロックの記述例です。 --------[USR] #RM = C:\Windows\notepad.exe ← マニュアル表示で使用するビューア #ED = C:\Program Files\WinVi.exe ← データ編集で使用するエディタ #EP = /a /t /m ← 上記エディタの起動パラメータ #SF = D:\Data\SoundFont\ ← サウンドフォント格納フォルダ #ST = D:\Data\VSTi\ ← VSTiプラグイン格納フォルダ #LM = C:\Program Files\Lame\ ← エンコードソフトLAMEフォルダ #LP = C:\Program Files\LilyPond\ ← 楽譜ソフトLilyPondフォルダ (注)パスの設定は、絶対パス/相対パスどちらも使用できます。 相対パスの場合は、muse.exeの存在フォルダが基点となります。 TCL = e1e6f6 ← テキストエリアの背景色(16進RGBコード) LGM = 8 ← 履歴メニューのログ部における表示曲数(0~100) LGP = 1 ← 履歴曲選択時の演奏開始(1:する/0:しない) GSR = 1 ← 音源安定化用GSリセット送信(1:する/0:しない) VLF = 12 ← SoundFont演奏時の発音遅延(2~120) VLT = 12 ← VSTi演奏時の発音遅延(2~120) SFL = 1 ← SoundFont先行ロード(1:する/0:しない) PAL = 2 ← VSTiパネル(0:非表示 1:左上 2:右上 3:左下 4:右下) #DN = xxx1 > yyy1 ← 音源名xxx1を別名yyy1に変更(別名に'>'は使用不可) #DN = xxx2 > yyy2 ← 音源名xxx2を別名yyy2に変更( 〃 ) #DN = xxx3 > ← 音源名xxx3を非表示 ・ ← 以下同様に、複数記述可能 ・ ・ (注)初期化ファイルはMuseを終了させるタイミングで上書きされます。Museを起 動しながら初期化ファイルを編集すると、折角の編集作業が水泡に帰す場合 があるので、初期化ファイルの編集はMuseを起動していない状態で実施して ください。なお、指定内容は次回Muse起動時に反映します。
(20) 履歴について
履歴メニューは最新のアクセス曲を数曲分(デフォルト8曲)記憶し、次回同じ曲の アクセスを簡便にします。履歴ファイル(muse.log)は、実行ファイル(muse.exe)と 同一フォルダに自動生成されるファイルです。このファイルは通常、ユーザが編集 する必要はありませんが、単純なテキストファイルですので気軽に閲覧できます。 また、以下の書式に従えば、メモ帳などで編集も可能です。
>D:\MuseData\Sample2.mus ↑ ↑ 識別子 Museデータへのパス
(注)初期化ファイル(muse.ini)の設定で、履歴の最大保持曲数(LGM)と、履歴の 選択時に演奏を開始するか否か(LGP)を、制御することができます。 詳細は“(19) 初期化ファイルによる指定”を参照してください。 ■履歴ファイルのアルバム化 ・履歴曲は最新アクセス曲で順次更新されますが、もしお気に入りの曲があり、固 定的に記憶させておきたい場合は、直接履歴ファイルを編集する事でそれが可能 となります。“履歴”と言うよりもむしろ“アルバム”と言った方が相応しい機 構です。履歴ファイル編集は任意のエディタ(メモ帳等)で行ってください。履歴 ファイルに記述ミスがある場合はエラーは発生せず、その行は無視されます。 (注)Museデータへのパスは、絶対パス/相対パスどちらも使用できます。 相対パスの場合は、muse.exeの存在フォルダが基点となります。 ・履歴ファイルをアルバム化する方法は至って簡単です。自動的に生成された履歴 行の要所々々に、アスタリスク(*)で始る行を挿入し、そこにタイトル名を記述 するだけです。曲の順番も自由に移動できます。履歴メニューでは、タイトルを 階層フォルダとしたグループが形成され、その配下のログ曲は更新対象にならず 固定的に保持されます(曲データ行)。アスタリスク1つで無タイトルのグループ は通常の履歴ログとして扱われ、ロードする度に更新されます(ログ行)。
*ポップス ← タイトル行 >D:\MuseData\Sample01.mus ┐ >D:\MuseData\Sample02.mus │ 曲データ行 >D:\MuseData\Sample03.mus ┘ *ゲーム音楽 ← タイトル行 >D:\MuseData\Sample04.mus ┐ >D:\MuseData\Sample05.mus │ 曲データ行 >D:\MuseData\Sample06.mus ┘ *クラシック ← タイトル行 >D:\MuseData\Sample07.mus ┐ >D:\MuseData\Sample08.mus │ 曲データ行 >D:\MuseData\Sample09.mus ┘ * >D:\MuseData\Sample00.mus ┐ >D:\MuseData\Sample11.mus │ログ行 >D:\MuseData\Sample12.mus ┘ ・ ・ ・
(注)履歴ファイルはMuseを終了させるタイミングで上書きされます。履歴ファイ ルを編集する場合は、一旦Museを終了してから実施してください。 ・タイトル行をひとたび設定すれば、以降はエディタでの編集が不要となり、履歴 履歴メニュー上のマウス操作で、手軽に曲データ行をメンテナンスする事ができ るようになります。可能な操作は登録と除去の2つです。 <曲データ行を登録> タイトル部を右クリックすると、現在ロードされている曲がタイトルの 階層下に登録されます。パスの記録は絶対パスで行われます。 <曲データ行を除去> 曲データ部を右クリックすると、その曲を除去します。アルバムからの リンクを除去するだけで、データそのものを消去する訳ではありません。 ・履歴ファイルの編集で、階層を多段にすることも可能です。 例えば以下の様な階層を履歴ファイルで定義する場合について解説します。 黒丸(●)がタイトル行、二重丸(◎)が曲データ行とします。 音楽とは関係ない、お酒の例で恐縮です(笑)。
┃ ┣━━●醸造酒 ┃ ┣━━●果実系 ┃ ┃ ┣━━◎ワイン.mus ┃ ┃ ┗━━◎シードル.mus ┃ ┗━━●穀物系 ┃ ┣━━◎日本酒.mus ┃ ┗━━◎ビール.mus ┃ ┣━━●蒸留酒 ┃ ┣━━●焼酎 ┃ ┃ ┣━━◎麦焼酎.mus ┃ ┃ ┣━━◎米焼酎.mus ┃ ┃ ┗━━◎いも焼酎.mus ┃ ┣━━◎ブランデー.mus ┃ ┣━━◎ウィスキー.mus ┃ ┗━━◎泡盛.mus ┃ ┣━━●混成酒 ┃ ┣━━◎カクテル.mus ┃ ┣━━◎まむし酒.mus ┃ ┣━━◎梅酒.mus ┃ ┃ ↑ ↑ (*) (**)
上記の様な多段の階層を実現したい場合、タイトル行にアスタリスクを連ねる事 で定義します。本例では、お酒を醸造酒・蒸留酒・混成酒の3つに大分類し(*)、 更に醸造酒を、果実系と穀物系に分類しています(**)。
*醸造酒 **果実系 >D:\MuseData\ワイン.mus >D:\MuseData\シードル.mus **穀物系 >D:\MuseData\日本酒.mus >D:\MuseData\ビール.mus *蒸留酒 **焼酎 >D:\MuseData\麦焼酎.mus >D:\MuseData\米焼酎.mus >D:\MuseData\いも焼酎.mus ** >D:\MuseData\ブランデー.mus >D:\MuseData\ウィスキー.mus >D:\MuseData\泡盛.mus *混成酒 >D:\MuseData\カクテル.mus >D:\MuseData\まむし酒.mus >D:\MuseData\梅酒.mus ・ ・ ・
(注)正確には、アスタリスクの個数が階層レベル値に対応している訳ではなく、 個数の増減傾向で階層の上昇下降を決めています。例えば、*を1つ付けたタ イトル行の直下に、*を3つ付けたタイトル行を記述したとしても、階層レベ ルは1つ下がるだけです。Muse終了時に自動的に履歴ファイルセーブが起こ りますが、その際アスタリスク個数は正規化されます。
(21) 繰返し演奏
「機能(G)」→「繰返し演奏(R)」は階層メニューとなっており、3種類のリピート モードを選択できます。 - 単一曲 : 現在読込んでいる曲をリピート演奏します - アルバム登録順 : 選択したアルバム内の曲を順番に演奏します - アルバム順不同 : 選択したアルバム内の曲をシャッフル演奏します (注)「繰返し演奏」自体を解除したい場合は、●マークが付いている選択済みの メニュー項目を再度クリックしてください。 アルバム系のリピートモードを使用する際は、「履歴(H)」メニューにある任意の アルバム曲を選択してください。リピート対象はその曲が存在するアルバムとなり ます。アルバム系のリピートモードを選択しているにもかかわらず、アルバム曲が 選択されていない場合は、その時点の再生曲の単純な繰返しになります。 (注)アルバム曲が選択されているか否かは「履歴(H)」メニューのアルバム曲に ■マークが付いているか否かで確認できます。 メインウィンドウ上での[ENTER]キー押下は曲尾への移動です。繰返し演奏が指定 されていると、曲尾に到達しても演奏を継続するため、アルバム系リピートの場合 は次曲へのスキップとして働きます。 ≪データ内STOPコマンドの扱い≫ ・単一曲モード :STOPコマンド間に限定した区間での繰返しになります ・アルバム系モード:SOTPコマンドを無視して通過します (注)単一曲モードでSTOPコマンドの区間が極度に短い場合、高速な繰返しが発生 し、デッドロック状態になる場合があります。その場合は、[BS]キーの連打 で脱出できます。
(22) コマンドラインによる起動
Windowsであっても、以下の局面でコマンドラインを活用することができます。 ・ショートカットのプロパティにおける“リンク先”欄の記述 ・“アプリケーションの関連付け”による定義 ・[スタート]→[ファイル名を指定して実行]による起動 ・コマンドプロンプトからの起動 ■コマンドラインによる起動では、以下の様な引数を与えることが可能です。 データパスが指定されると、起動時にそのデータが読込まれます。 muse [データパス] [オプション] (注)データパスにスペースが含まれる場合は[データパス]全体をダブルクォート で括ってください。なお、データパスとオプションの順番は入替えても問題 ありません。 ■オプションは以下の指定を組合せることができます。 *x Museの多重起動を抑止します。 *i 最小化されたウィンドウで起動します。 *v 起動時にスクリーン内への自動押し込み配置を抑止します。 *m 起動時に「メンバー情報」を表示します。 *f 起動時に「フィンガー情報」を表示します。 *s 起動時に「譜面モニタ」を表示します。 *n 起動時に前回の音源選択を抑止します。(音源未選択で起動します) *p 起動直後に演奏を開始します。 *q 演奏が終了するとMuse自体が終了します。(*STOPは通過します) *r バッチ実行時のダイアログ表示を抑止します。(muse.repに情報出力) *e MIDIファイルを出力し演奏せずに終了します。(MMLコンパイラ相当) *t MIDIファイル出力時にテキスト系データを抑止します。 *u MIDIファイル出力時にテキスト系データをユニコードで出力します。 *w WAVEファイルを出力し演奏せずに終了します。(VSTi/SoundFont選択時) *b MP3ファイルを出力し演奏せずに終了します。(VSTi/SoundFont選択時) *c PDFファイルを出力し演奏せずに終了します。(楽譜の生成) *l LYファイルを出力し演奏せずに終了します。(LilyPondファイルの生成) *y 楽譜用紙を横置きにします。(デフォルトは縦置き) *0~*4 楽譜用紙のサイズを指定します。(デフォルトは*3のA3版です) (注)複数のオプションを列挙記述することも可能です。( 例:*c3yb ) バッチオプション(ewbc)を同時指定すると、指定対象を一括出力できます。 なお、出力ファイルは基本的にカレントディレクトリに生成されます。 従属オプションが単独指定された場合は無視されます。(例:*tu → *e) 競合するオプションの場合、優先度に従い他方が無視されます(例:*n < *p) バッチ系オプションの優先度は高く、他の指定は同時指定しても無視されます。 未定義のオプションが指定された場合は無視されます。
(23) マニュアル表示
「ファイル(F)」→「マニュアル表示(H)」の選択で、専用ビューアが起動します。 このビューアはインクリメンタルサーチの機構を備えています。そして、その検索 結果とマニュアル本文を、同一ウィンドウ上で切替えながら閲覧できるよう、以下 の2つのモードを用意しています。(括弧内はラインカーソルの色です) 通常モード : Readme.txtの本文を単純に表示する (薄水色) 検索モード : 検索に掛かった行のみを列挙表示する(若草色) ■インクリメンタルサーチ ・所望の検索文字を打鍵し始めると、即座に「検索モード」に移行します。 「検索モード」では検索された文字列が赤く強調され、マウスに追従するライン カーソルが薄水色から若草色に変化します。そして文字を打ち進めるにつれて、 リアルタイムに該当行が絞込まれていきます。 (注)行内で一番最初に出現する合致文字列のみが強調表示されます。 一行内に複数の合致があっても、2番目以降は強調されません。 ・「検索モード」で該当行をダブルクリックすると「通常モード」に復帰します。 その際、極力該当行をウィンドウ上部中段に位置付けるように展開表示します。 ・「通常モード」で再度ダブルクリックすると、直前の検索文字列で「検索モード」 に移行します。移行の際、マウスの位置も含めて可能な限り直前の検索表示状態 を再現します。 ・「検索モード」と「通常モード」がダブルクリックによって交互に切替わるため、 それを繰返すことで、検索された各内容を順次閲覧していくことができます。 ・検索文字はスペースやタブも対象になります。また、行頭に添えられた行番号も 本文と同等に扱われ検索対象になります。したがって、検索文字列に行番号を与 えれば該当行に容易に到達できます。 (注)Muse文法の特性上、大文字/小文字を同一視しません。また、あくまでも 行単位のサーチなため、途中改行された単語は検索対象から除外されます。 ■表示制御 ・マウスの右ボタン押下で「明朝体」と「ゴシック体」が切り替わります。 “1”と“l”の識別性は「明朝体」よりも「ゴシック体」の方が優れています。 ・マウスのホイールボタンを押下すると、行間がトグルで切替わります。 行間の種類は「四分アキ」「二分アキ」「二分四分アキ」の3種類です。 ・マウスホイール、あるいは[↑][↓]キーで1行単位のスクロールをします。 共に[SHIFT]キーの併用で1回のスクロール量が増えます。 ・ウィンドウタイトルのダブルクリックで、ウィンドウが縦方向に最大ストレッチ します。再度クリックすることで元のサイズに戻ります。 ・ウィンドウの横方向のストレッチで適切なフォントサイズが自動選択されます。 その際、ウィンドウ幅が最適なサイズに自動フィットします。 (注)表示サイズによっては、アンダーバー(_)が見えなくなる場合がありますが、 これは文字フォント側の制約です。サイズを切替えて対処してください。 ■ボタン操作 ・検索された文字列は、履歴として自動記録されていきます。ウィンドウの上部右 側にある[▼][▲]ボタンは、その履歴を前後にトレースするためのボタンです。 [▼]ボタンで元に戻り、[▲]ボタンで先に進みます。 ・最右端の[●]ボタンの押下で、検索履歴のリストがポップアップし、ダイレクト に検索文字列を選択できます。その時点でアクティブになっている検索文字列に は●印が付与されています。なお、Muse起動中は検索履歴を保持していますが、 終了時点ですべてクリアされます。 ・最左端の[■]ボタンの押下で、その時点の検索文字列がクリアされ、ワンタッチ で「通常モード」に復帰します。特定の検索行を展開する復帰ではなく、直前の 「通常モード」に戻りたい場合に便利です。 ■検索文字列の抽出 ・任意のカラムをマウスでスイープすると、選択された文字が検索文字列として採 用され、その場で「検索モード」に反映されます。 ・このスイープ機構は、「通常モード」「検索モード」のどちらのモードでも利用 できるため、本文中にある任意の文字列を新しい検索キーとして選択し、次々と 該当個所にジャンプしながら、Readme.txtを紐解いていくことができます。 ・スイープした行の検索文字列は背景色が赤になり、ウィンドウタイトルにその行 番号とスイープ文字列が表示されます。これにより検索結果が大量に発生した場 合、元のスイープ位置が迷子になることを防ぎます。この情報はスイープの度に 更新され、最終スイープ情報としてビューア自体が閉じられるまで保持されます。 積極的にクリアしたい場合は[ESC]キーを押下してください。 (注)初期化ファイルの設定で、使い慣れたビューアやエディタに差替え可能です。 #RM にビューアやエディタのパスを記述します。なお、記述したパスが無効 の場合は、テキストファイルに関連付けられたエディタが起動します。具体 的な指定方法は“(19) 初期化ファイルによる指定”を参照してください。
【第4章】 文法リファレンス
・スペース・タブ・改行・全角文字・半角カタカナ・半角縦棒(|)は無視される。 セミコロン以降改行までは、すべての文字を無視する。 演奏対象はASCIIコードであり、ユニコード拡張範囲は全角文字として扱われる。 ・感嘆符で囲まれた部分はコメントとなる。 感嘆符は8個までの列挙により、その数で対を成したコメント領域を指定できる。 開始側のみ感嘆符がある場合は、そこからファイル末尾までを無視する。 ・ダブルクォート内の感嘆符やセミコロンは通常の文字として扱われる。 ただし、ダブルクォート内の改行とタブは無視される。 また、ダブルクォート内のバッククォートは、ダブルクォートに変換される。 ` → " なお、ダブルクォート内の以下の2文字の組合せは、1文字に変換される。 `` → " `@ → ` ・有意文字は以下の様に分類される。
【音符記述】 (音名) ‥‥‥‥‥ d r m f s l c e g a b h _ + - = (音長) ‥‥‥‥‥ 0 1 2 4 8 16 32 64 . i ^ ~ ` (群記述) ‥‥‥‥ ( ) [ ] ' ' (補助) ‥‥‥‥‥ & , : / = 【フィンガー系】(宣言) ‥‥‥‥‥ # 0123456789 (属性) ‥‥‥‥‥ ? x o v w p q y < > 【メンバー系】 (宣言) ‥‥‥‥‥ @ ABCDEFGHIJKLMNO Z (属性) ‥‥‥‥‥ P V S R W Q U Y T X = . 【全域指定】 (繰返し) ‥‥‥‥ $ { } (曲調) ‥‥‥‥‥ % \ 【コマンド系】 (文字データ) ‥‥ * " " + - ( , ) (コメント) ‥‥‥ | ; ! *
音符記述
音符 ① ②
①音名表現 音階記号と臨時記号からなる。 音階記号は、音名タイプ(x)に従った音名英字の内の1つ。 臨時記号は、+ が♯、- が♭、= がナチュラルを表す。 また、++でダブルシャープ、--でダブルフラットを表す。 臨時記号は、常に調性“\”に優先して作用する。 また、小節の概念はないので、各音への個別指定が必要。 休符“_”も音名の一種と見なす。 ②音長表現(省略可能)
[音長値 + 付点] + [演算記号] + ... + [スタッカート] └┬─────────────────┘ └→ 演算記号で接続し数式風に記述可能
[音長値] 0,1,2,4,8,16,32,64 の8つの数値の内の1つ。 ゼロ音長は、演奏を無効化する。 ゼロ音長であっても、省略音長および再現表記の記憶が行われる。 和音記述において、ゼロ音長は占有時間ゼロを表現する。 省略時は、同フィンガーでの直前の音長値が採用される。 [付点] ピリオド“.”で表す。 複付点の場合は“..”とピリオドを2つにする。 3つ以上のピリオドは不可。 音長値を記述せずに付点のみ記述することはできない。 [微分音長] [音長値+付点]の位置に、iに添えた1~960の数値により表現。 i1 が最小分解能であり、64分音符の1/60の音長を表す。 数値はその倍率を意味し、i60 で64分音符の音長を表現する。 微分音長には付点を添えることはできない。 [演算記号] 3つの記号(^加算 ~減算 `乗算)で表す。 加減算記号の記述により[音長値+付点]をいくつでも連ねられる。 乗算記号は、加減算記号より優先して演算される。 乗算記号直後の数字は乗算倍数であり、音長ではない。 乗算倍数を乗算記号で連続記述すると、乗算倍率自体が乗算される。 [スタッカート] スタッカートやスタッカティシモにはピリオドが1つ付けられる。 音長演算式の場合、最後の音長末尾にのみ記述可能。 止音q指定よりも優先度が高い。 省略時はスタッカートなしと見なされ、止音q指定が採用される。 スタッカートも音長値と共に省略音長の記憶対象となる。 スタッカート記号とスタッカート値の2種類の指定方法があり、 スタッカート値は更に3種類の記述方法が存在する。 <スタッカート記号> スラッシュ“/”とピリオド“.”の組合せで表す。 / の列挙は最大4つまで。ピリオドは / の後に3つまで。 /= の指定で音長を維持したままスタッカートをクリアできる。 <スタッカート値> (相対指定) スラッシュ“/”に、+あるいは-に続く1~100の値を添えて表す。 /0 の指定でスタッカート調整も止音調整も行わない指定となる。 (絶対指定) スラッシュ“/”に、^あるいは~を添えて更に音長を与える。 発音に対し、その音長分の増減が起こる。 連符内に記述された場合は、その連符比率でスケーリングされる。 (固定音長) スラッシュ“/”に、^や~を添えず直接音長を記述する。 発音はその音長で固定的に実施される。 連符内に記述された場合は、その連符比率でスケーリングされる。
〔参考〕スタッカートの目安 音長短縮比 スタッカート値 /... ← ノンレガート (31/32) 約 / -3 /.. ← テヌート (15/16) 約 / -6 /. ← マルカート ( 7/ 8) 約 /-12 / ← メゾスタッカート ( 6/ 8) /-25 //. ← 長めスタッカート ( 5/ 8) 約 /-38 // ← スタッカート ( 4/ 8) /-50 ///. ← 長めスタッカティシモ ( 3/ 8) 約 /-63 /// ← スタッカティシモ ( 2/ 8) /-75 //// ← スタッカティシシモ ( 1/ 8) 約 /-88
連符 ( ① ) ②
①音符並び(省略可能) 連続して発音すべき音符を連符の数だけ列挙する。 音名表現と音長表現の形式については“音符”の欄を参照のこと。 スタッカート指定“/”も各音で独立に反映する。 各音に与えられた音長は、連符内の音長配分比率に反映する。 音符並びを省略すると、直前の連符を再現する。 連符や和音を階層的に内包できる。コードや再現表記も内包できる。 ②音長表現(省略可能) 連符全体の音長を音長表現で指定する。 音長表現の形式については“音符”の欄を参照のこと。 ここに与えられた音長内に納る様に、連符内の音長を配分する。 配分比率は、連符内の音符に与えられた音長比率で決定される。 省略時は、同フィンガーでの直前の音長値が採用される。 ゼロ音長を指定すると演奏されないが、連符再現パターンは記憶される。
和音 [ ① ] ② ③
①音符並び(省略可能) 同時発音すべき音符を列挙する。 音名表現と音長表現の形式については“音符”の欄を参照のこと。 各音の音長は同じである必要はなく、それぞれ指定の音長分鳴り続ける。 スタッカート指定“/”も各音で独立に反映する。 音符並びを省略すると、休符と同じ意味になる。 和音や連符を階層的に内包できる。コードや再現表記も内包できる。 ②占有音長(省略可能) 和音自体の占有音長を音長表現で指定する。 音長表現の形式については“音符”の欄を参照のこと。 ここに与えられた音長が経過した後、次に記述した音が発音を開始する。 省略時は、同フィンガーでの直前の音長値が採用される。 ゼロ音長を指定すると占有時間ゼロとなり、次音が即座に発音を開始する。 ③アルペジオ(省略可能) 初音から順次ずらしながら演奏する場合、 ずらす量をコロンに続けて音長表現で指定する。 音長表現の形式については“音符”の欄を参照のこと。 ゼロ音長を指定すると発音遅延は起らない。 コロンのみの記述で、②とは独立のアルペジオ省略音長が採用される。 スタッカート指定“/”は無効である。 末尾にマイナス記号を添えると、逆順となる。 連符内に記述しても、連符音長比率の影響を受けない。
コード ' ① ② ③ ④ ⑤' ⑥ ⑦
①ルート音表現 音階記号と半音記号からなる。 音階記号は、C,D,E,F,G,A,B の7英字の内の1つ。 半音記号は必要な時に限り記述する。#,b のどちらか一方。 調性“\”と音部記号“?”の影響を受けない。 ダブルシャープやダブルフラットは記述不可。 オクターブは、通常の音符と同様“o”の値が採用されるが、 F,G,A,Bの高音側が指定された場合は、1オクターブ下げて演奏される。 ②コードネーム(省略時はメジャーコード)
コードネームは以下より選択。( )内は指定可能な別名。 ───────┬───────┬─────── 三重和音 │ 四重和音 │ 五重和音 ───────┼───────┼─────── M(省略) │ 7 │ 9 m │ m7 │ m9 │ M7 │ M9 │ mM7 │ mM9 ───────┼───────┼─────── +5(aug) │ 7+5(aug7) │ 9+5 m+5 │ m7+5 │ m9+5 -5 │ 7-5 │ 9-5 m-5(dim) │ m7-5 │ m9-5 ───────┼───────┼─────── │ M7+5 │ 7+9 │ mM7+5 │ m7+9 │ M7-5 │ 7-9 │ mM7-5(dimM7)│ m7-9 ───────┼───────┼─────── │ 6 │ │ m6 │ sus2 │ add9 │ 69 │ madd9 │ m69 │ dim7 │ dim9 sus4 │ 7sus4 │ 9sus4 ───────┴───────┴─────── 〔参考〕譜面上表記の読替え例 maj → M △ → M7 ○ → dim + → aug alt → -5 on → / (分数コード)
③転回形(省略可能) < または > を列挙することで、転回の階数を指定する。 < で上昇方向に、> で下降方向に転回が起こる。 列挙できる階数は4つまでで、上昇と下降の混在はできない。 転回対象には、④のテンションや、⑤のベース音は含まれない。 ④テンション(省略可能) 以下の7つのテンション(-9,9,+9,11,+11,-13,13)を丸括弧内に指定する。 列挙の際は、カンマで区切る。 テンションの音程は転回後の最高音より低くならない様、近接される。 ⑤分数コード(省略可能) スラッシュ / に続けてベース音を指定する。 本分数コードは転回指定ではなく、単にベース音の追加として機能する。 ベース音の表記はルート音表現と同じ音階記号で指定する。 ベース音の音程は転回後の最低音より高くならない様、近接される。 ⑥音長表現(省略可能) コード自体の占有音長を音長表現で指定する。 音長表現の形式については“音符”の欄を参照のこと。 コード内のすべての音はこの音長となる。 省略した場合は、同フィンガーでの直前の音長表現が採用される。 ゼロ音長を指定すると演奏されないが、再現パターンは記憶される。 ⑦アルペジオ(省略可能) 低音部から高音部へ順次ずらしながら演奏する場合、 ずらす量をコロンに続けて音長表現で指定する。 音長表現の形式については“音符”の欄を参照のこと。 ゼロ音長を指定すると発音遅延は起らない。 コロンのみの記述で、⑥とは独立のアルペジオ省略音長が採用される。 スタッカート指定“/”は無効である。 末尾にマイナス記号を添えると、逆順となる。(高音部から低音部へ) 連符内に記述しても、連符音長比率の影響を受けない。 連符内や和音内にも記述できる。 ドラムメンバーには指定できない。
再現 , ① ②
①音長表現(省略可能) 再現音の音長を音長表現で指定する。 音長表現の形式については“音符”の欄を参照のこと。 省略した場合は、同フィンガーでの直前の音長表現が採用される。 ②アルペジオ(省略可能) 初音から順次ずらしながら演奏する場合、 ずらす量をコロンに続けて音長表現で指定する。 音長表現の形式については“音符”の欄を参照のこと。 ゼロ音長を指定すると発音遅延は起らない。 コロンのみの記述で、①とは独立のアルペジオ省略音長が採用される。 スタッカート指定“/”は無効である。 末尾にマイナス記号を添えると、逆順となる。 連符内に記述しても、連符音長比率の影響を受けない。 再現記号“,”の位置に直前に記述した和音あるいはコードが再現される。 再現対象は和音・コードであり、単音・連符は対象外である。 連符内や和音内にも記述できる。
連結 ① & ②
①②音表記 群記述を含むあらゆる音の表記(単音・連符・和音・コード・再現) 音符①と同一音程の音符②を連結し、音長を結合する。 連結は同一のフィンガー内で実施される。 和音やコード間の連結も可能であり、一致する音要素を連結する。 ただし、和音内の音符同士の連結はしない。 連符内の音符同士は連結対象となる。 また、連符の初音の前や終音の後に記述すると、連符外の音との連結を行う。 ①と②の音程が異なる場合、①での音長を短くする効果はキャンセルされる。
フィンガー系
フィンガー宣言 # ① ② 初期値 #A0
①メンバー記号 A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,Z の16の英字の内1つ。 ②フィンガー値 0 ~ 9 の値。 以降の ? x o v w p q y < > * () [] '' および、音符指定や属性指定記述が 本宣言のメンバー内フィンガーに反映する。 ドラムメンバーは音部記号“?”には反応しない。 また、ドラムメンバーはコードを使用することはできない。 自動演奏時の演奏色はメンバーにより決まる。
音名タイプ x ① 初期値 x0
①音名値 0 ~ 2 の値。
──┬────────────── │ ハ ニ ホ へ ト イ ロ 変ロ ──┼────────────── x0 │ d r m f s l c x1 │ c d e f g a b x2 │ c d e f g a h b ──┴──────────────
ドラムメンバーに関しても、本指定の音名が採用される。 再度、本指定が行われるまで同一フィンガー内でこの値が採用される。 “x2”指定において、音名“b”は調性の影響を受けない。 また音名“h”は、フラット系の調性の影響を受けない。
絶対オクターブ o ① 初期値 o4
①オクターブ値 - および 0 ~ 9 の値。 - が最低オクターブで、値が増すほど高音側を表す。 次の絶対あるいは相対オクターブ指定がなされるまで、 本指定のオクターブ値が維持される。
相対オクターブ < または >
現在のオクターブ値を相対的に上下させる。 < で高音側に、> で低音側にシフトする。 次の絶対あるいは相対オクターブ指定がなされるまで、 本指定のオクターブ値が維持される。
強弱 v ① ② 初期値 v100
①強弱値 0~127の値。0で無音、127で最強となる。 ±符号付の数値を指定すると、現在の強弱値を基準にした相対変化となる。 相対変化の結果が0~127の範囲を超える場合、限界値がセットされる。 再度、本指定が行われるまで同一フィンガー内でこの値が維持される。 v0の音も鍵盤表示されるが、MIDI出力やPDF出力の対象にはならない。 ②遅延音長(省略可能) 上記強弱値に到達するまでの時間を、コロンに続けて音長表現で指定する。 遅延は連続的に行われず、あくまでも発音時点での強弱変化である。 音長表現の形式については“音符”の欄を参照のこと。 ゼロ音長を指定すると遅延が起らず即座に作用する。 本指定で与えた音長は、省略音長の対象にはならない。 コロンのみの記述はできない。スタッカート指定“/”は使用できない。 連符内に記述された遅延音長は、その連符比率でスケーリングされる。
アクセント w ① 初期値 w0
①アクセント値(省略可能) -127 ~ +127の値。 強弱(v)への加算結果が0~127の範囲を超える場合は限界値で律則される。 再度、本指定が行われるまで同一フィンガー内でこの値が維持される。 省略した場合は、直前に指定したアクセント値が採用される。 指定直後の音名に対してのみ、アクセント値分の強弱変化が起こる。 和音やコードなどの直前に指定された場合、複数音に作用する。 休符の直前にアクセントを記述することはできるが、無効である。
音部記号 ? ① 初期値 ?0
①音部値 0 ~ 6 の値。ト音記号の音階を、指定された音部記号の音階に変換する。 ?0 ト音記号(高音部記号) ?1 ハ音記号(中音部記号)ソプラノ記号(第一線がハ)最下線 ?2 〃 メゾ・ソプラノ記号 ?3 〃 アルト記号 (第三線がハ) ?4 〃 テノール記号 ?5 〃 バリトン記号(第五線がハ)最上線 ?6 ヘ音記号(低音部記号) 記述した位置から作用を開始する。 ただし、ドラムメンバー、およびコードに対しては機能しない。 再度、本指定が行われるまで同一フィンガー内でこの値が維持される。
出音グルーヴ p ① 初期値 p0
①調整値 +あるいは-に続く1~100の値で、音長に対する調整パーセントを与える。 +の場合は音を早めに出し、-の場合は音を遅めに出す。 p0の指定で出音調整を行わない指定となる。 ^あるいは~に続く音長記述での調整もできる。 ^の場合は音を早めに出し、~の場合は音を遅めに出す。 音長の加算減算乗算による表現も可能である。 音長記述の場合、連符内に記述しても連符音長比率の影響を受けない。 記述した位置から作用を開始する。 再度、本指定が行われるまで同一フィンガー内でこの値が維持される。
止音グルーヴ q ① 初期値 q0
①調整値 +あるいは-に続く1~100の値で、音長に対する調整パーセントを与える。 +の場合は音を遅めに止め、-の場合は音を早めに止める。 q0の指定で止音調整を行わない指定となる。 ^あるいは~に続く音長記述での調整もできる。 ^の場合は音を遅めに止め、~の場合は音を早めに止める。 音長の加算減算乗算による表現も可能である。 上記符号を付けず直接音長を指定した場合は、固定の音長指定となる。 音長記述の場合、連符内に記述しても連符音長比率の影響を受けない。 記述した位置から作用を開始する。 再度、本指定が行われるまで同一フィンガー内でこの値が維持される。 本指定は、スタッカート指定がなされている音符には作用しない。
移調楽器 y ① ② 初期値 y/
①調号 1~7個の + あるいは - の並び。 + が♯、- が♭を表し、その並びの数が♯あるいは♭の数に対応する。 = はハ調を表現する。 省略した場合は、全域属性の調性“\”の値が採用される。 なお“x2”指定下において、音名“b”は調性の影響を受けない。 また音名“h”は、フラット系の調性の影響を受けない。 ②移調値 スラッシュに続けて 半音単位の -120 ~ 0 ~ +120 の値を指定する。 記述された音程に対し、-で低音側、+で高音側に移調する。 12の倍数を指定することでオクターブ単位の上下となる。 再度、本指定が行われるまで同一フィンガー内でこの値が維持される。 省略した場合は、メンバー属性の移調“T”の値が採用される。 なお、本指定はドラムメンバーに対しては機能しない。 主な移調楽器と移調量の関係については、移調“T”の項を参考のこと。
メンバー系
メンバー宣言 @ ① 初期値 @A
①メンバー記号(省略可能) A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,Z の16の英字の中から列挙。 省略した場合は、その時点のフィンガーが属するメンバーが採用される。 以降の P V S R W Q U Y T X R= W= Q= の効果対象メンバーを指定する。 Zはドラムメンバー専任であり、移調“T”の指定は無効となる。
音色 P ① ② 初期値 P1/0
①音色番号(省略可能) 1 ~ 128 の番号で音色を指定する。 再度、本指定が行われるまで同一メンバー内でこの値が維持される。 ドラムメンバーに対しては、ドラムセットの選択として機能する。 省略した場合は、同メンバーでの直前の音色番号が採用される。
〔参考〕上位機種におけるドラムセット ───┬──────── ───┬──────── P │ ドラムセット P │ ドラムセット ───┼──────── ───┼──────── 1 │ Standard1 30 │ TR-707 2 │ Standard2 31 │ TR-909 3 │ Standard3 33 │ Jazz 9 │ Room 41 │ Brush 10 │ Hip-Hop 49 │ Orchestra 11 │ Jungle 50 │ Ethnic 12 │ Techno 51 │ Kick & Snare 17 │ Power 53 │ Asia 25 │ Electronic 54 │ Cymbal & Claps 26 │ TR-808 57 │ SFX 27 │ Dance 58 │ Rhythm FX1 28 │ CR-78 59 │ Rhythm FX2 29 │ TR-606 128 │ CM-64/32L ───┴──────── ───┴────────
②バリエーション番号(省略可能) スラッシュに続く 0 ~ 127 の番号でバリエーションを指定する。 省略した場合は、同メンバーでの直前のバリエーション番号が維持される。 音源側で定義されていないバリエーション番号が指定された場合は、 標準バリエーションが採用される。(音源によっては無音となる) バリエーションは各楽器毎に作用する番号が異なる。 再度、本指定が行われるまで同一メンバー内でこの値が維持される。 ドラムメンバーに対しては機能しない。
音量 V ① ② 初期値 V127
①音量値 0 ~ 127 の値。0で無音、127で最大となる。 ±符号付の数値を指定すると、現音量値を基準にした相対変化となる。 相対変化の結果が 0 ~ 127 の範囲を超える場合、限界値がセットされる。 再度、本指定が行われるまで同一メンバー内でこの値が維持される。 ②遅延音長(省略可能) 上記音量に到達するまでの時間を、コロンに続けて音長表現で指定する。 音長表現の形式については“音符”の欄を参照のこと。 ゼロ音長を指定すると遅延が起らず即座に作用する。 本指定で与えた音長は、省略音長の対象にはならない。 コロンのみの記述はできない。スタッカート指定“/”は使用できない。 連符内に記述された遅延音長は、その連符比率でスケーリングされる。
ステレオ S ① ② 初期値 S0
①ステレオ値 -64 ~ 0 ~ +64 の値。 -64で左のみ、0で中央、+64で右のみが鳴る。 再度、本指定が行われるまで同一メンバー内でこの値が維持される。 ②遅延音長(省略可能) 上記ステレオ値に到達するまでの時間をコロンに続けて音長表現で指定する。 音長表現の形式については“音符”の欄を参照のこと。 ゼロ音長を指定すると遅延が起らず即座に作用する。 本指定で与えた音長は、省略音長の対象にはならない。 コロンのみの記述はできない。スタッカート指定“/”は使用できない。 連符内に記述された遅延音長は、その連符比率でスケーリングされる。 ドラムメンバーに対しても機能するが、プリセット・パンからの相対である。
残響 R ① ② 初期値 R40
①残響値 0 ~ 127 の番号で残響の強さを指定する。 再度、本指定が行われるまで同一メンバー内でこの値が維持される。 ②遅延音長(省略可能) 上記残響値に到達するまでの時間を、コロンに続けて音長表現で指定する。 音長表現の形式については“音符”の欄を参照のこと。 ゼロ音長を指定すると遅延が起らず即座に作用する。 本指定で与えた音長は、省略音長の対象にはならない。 コロンのみの記述はできない。スタッカート指定“/”は使用できない。 連符内に記述された遅延音長は、その連符比率でスケーリングされる。
揺らぎ W ① ② 初期値 W0
①揺らぎ値 0 ~ 127 の番号で揺らぎの強さを指定する。 再度、本指定が行われるまで同一メンバー内でこの値が維持される。 ②遅延音長(省略可能) 上記揺らぎ値に到達するまでの時間を、コロンに続けて音長表現で指定する。 音長表現の形式については“音符”の欄を参照のこと。 ゼロ音長を指定すると遅延が起らず即座に作用する。 本指定で与えた音長は、省略音長の対象にはならない。 コロンのみの記述はできない。スタッカート指定“/”は使用できない。 連符内に記述された遅延音長は、その連符比率でスケーリングされる。
コーラス Q ① ② 初期値 Q0
①コーラス値 0 ~ 127 の番号でコーラスの大きさを指定する。 再度、本指定が行われるまで同一メンバー内でこの値が維持される。 ②遅延音長(省略可能) 上記コーラス値に到達するまでの時間をコロンに続けて音長表現で指定する。 音長表現の形式については“音符”の欄を参照のこと。 ゼロ音長を指定すると遅延が起らず即座に作用する。 本指定で与えた音長は、省略音長の対象にはならない。 コロンのみの記述はできない。スタッカート指定“/”は使用できない。 連符内に記述された遅延音長は、その連符比率でスケーリングされる。
ピッチ U ① ② 初期値 U0
①ピッチ量 -240 ~ 0 ~ +240 の値。 0を標準ピッチとした絶対変化量。10が半音分のピッチ量。 -240で2オクターブ下、+240で2オクターブ上のピッチとなる。 0の指定でピッチを標準にする。 再度、本指定が行われるまで同一メンバー内でこの値が維持される。 ②遅延音長(省略可能) 上記ピッチに到達するまでの時間を、コロンに続けて音長表現で指定する。 音長表現の形式については“音符”の欄を参照のこと。 ゼロ音長を指定すると遅延が起らず即座に作用する。 本指定で与えた音長は、省略音長の対象にはならない。 コロンのみの記述はできない。スタッカート指定“/”は使用できない。 連符内に記述された遅延音長は、その連符比率でスケーリングされる。
ペダル Y ① ② ③ 初期値 Y0
①ペダル制御値 0 か 1 あるいは .1 ~ .126 までの値。 Y0でペダルを離し、Y1でペダルを踏む。 Y.1からY.126までの記述はハーフペダルを表し、値はその踏み込み量。 Y0以外の指定は、Y0が強制的に内部生成される。 再度、本指定が行われるまで同一メンバー内でこの値が維持される。 ②遅延音長(省略可能) コロンに続けて音長表現で指定する。 ペダル制御値①が、この音長分遅延して発行される。 音長表現の形式については“音符”の欄を参照のこと。 省略するとゼロ音長とみなされる。 ゼロ音長を指定すると記述位置で作用する。 ③先行音長(省略可能) ハイフンに続けて音長表現で指定する。 ②が省略されている場合はハイフンの前にコロンが必要である。 内部生成されるY0が、この音長分遡って発行される。 音長表現の形式については“音符”の欄を参照のこと。 省略するとゼロ音長とみなされる。 ゼロ音長を指定すると記述位置で作用する。 ペダル音長(②および③)は、スタッカート指定“/”は使用できない。 また、連符内に記述しても、連符音長比率の影響を受けない。 コロンのみの記述(②③とも省略)で、直前に指定したペダル音長が採用される。 ペダル音長はメンバー単位に記憶される。
移調 T ① 初期値 T0
①移調値 -120 ~ 0 ~ +120 の値。半音単位に移調する量を指定する。 12の倍数を指定することでオクターブ単位の上下となる。 記述された音程に対し、-で低音側、+で高音側に移調する。 再度、本指定が行われるまで同一メンバー内でこの値が維持される。 なお、本指定はドラムメンバーに対しては機能しない。
〔参考〕主な移調楽器と移調量の関係 ───┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬─── D♭│ D │E♭│ E │ F │G♭│ G │A♭│ A │B♭│ B │ C ───┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼─── T-11│T-10│T-9 │T-8 │T-7 │T-6 │T-5 │T-4 │T-3 │T-2 │T-1 │T0 T+1 │T+2 │T+3 │T+4 │T+5 │T+6 │T+7 │T+8 │T+9 │T+10│T+11│T+12 ───┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴─── ・FrenchHornは上段の移調量。ただし古典楽譜の「ヘ音表記」は下段となる。 また低音ホルンの場合は、1オクターブ高く記譜されている場合がある。 ・その他の主な移調楽器例 《D》Clarinet(+2),Trumpet(+2) 《Eb》Clarinet(+3),Trumpet(+3),AltoSax(-9),BaritoneSax(-21) 《E》Trumpet(+4) 《F》Trumpet(+5),EnglishHorn(-7) 《G》AltoFlute(-5) 《Ab》Clarinet(+8) 《A》Clarinet(-3),Trumpet(-3),Cornet(-3),Oboe d'amore(-3) 《Bb》Clarinet(-2),Trumpet(-2),Cornet(-2),SopranoSax(-2) BassClarinet(-14),TenorSax(-14) 《C》Piccolo(+12),Celesta(+12),Xylophone(+12),Glocken(+24), Contrabass(-12),ContraFagotto(-12),BassFlute(-12)
コントロール X ① = ② ③ ④
①コントロール番号 0 ~ 129 の値。0 ~ 127 は、MIDI音源のコントロール番号と等しい。 128はキープレッシャを、129は微細ピッチの指定となる。 ②コントロール値 コントロール番号が 0 ~ 128 の場合は、0 ~ 127 の範囲を持つ。 コントロール番号が 129 の場合は、-8192~+8191の範囲を持つ。 ③ノート番号(①が128の場合のみ指定可能) ピリオドに続くノート番号の記述で、ポリフォニック・キープレッシャー を指定する。ノート番号は、0 ~ 127 の範囲を持つ。60が中央のド。 省略した場合は、チャネル・プレッシャーとなる。 ④遅延音長(省略可能) ②のコントール値に到達するまでの時間を、 コロンに続けて音長表現で指定する。 ①が 0 ~ 127 の場合のみ指定可能。 本指定以前に、該当コントロールの開始値を指定しておく必要がある。 ゼロ音長を指定すると遅延が起らず即座に作用する。 本指定で与えた音長は、省略音長の対象にはならない。 コロンのみの記述はできない。スタッカート指定“/”は使用できない。 連符内に記述された遅延音長は、その連符比率でスケーリングされる。 コントロール値 128 および 129 は、遅延音長を指定できない。
出力変位特性 R = ① . ② . ③ ④ 初期値 R=64.64.64
①アタック立上がり時間(省略可能) 0 ~ 127 の値。64が標準値。 音の立上がりの速さを調節する。 値を小さくすると、鋭く立上がってアタックが強くなり、 値を大きくすると、緩やかに立上がりアタックが弱くなる。 省略すると以前の値を採用する。 ②アタック減衰時間(省略可能) 0 ~ 127の値。64が標準値。 音が立ち上ってから持続レベルになるまでの時間を調節する。 音色の特徴は、この時間内に凝縮されているため、 長くすると太くて厚い音質となる。 逆に短くすると、か細く弱々しい感じの音となる。 省略すると以前の値を採用する。 ③残響減衰時間(省略可能) 0 ~ 127の値。64が標準値。 音を止めてから音が完全に消えるまでの減衰時間を調節する。 コンサートホールの様な残響は、この減衰時間を長くすると実現する。 ただし同時発音数に影響するため、過度に長くする場合は注意が必要。 省略すると以前の値を採用する。 ④遅延音長(省略可能) 上記特性に到達するまでの時間を、コロンに続けて音長表現で指定する。 音長表現の形式については“音符”の欄を参照のこと。 ゼロ音長を指定すると遅延が起らず即座に作用する。 本指定で与えた音長は、省略音長の対象にはならない。 コロンのみの記述はできない。スタッカート指定“/”は使用できない。 連符内に記述された遅延音長は、その連符比率でスケーリングされる。
変調特性 W = ① . ② . ③ ④ 初期値 W=64.64.64
①周期(省略可能) 0 ~ 127の値。64が標準値。 ビブラートの振動周期を調節する。 値を大きくすると細かい周期になり、値を小さくすると荒い周期となる。 省略すると以前の値を採用する。 ②振幅(省略可能) 0 ~ 127の値。64が標準値。 ビブラートの揺れ幅を調節する。 値を大きくすると激しく、値を小さくすると弱くビブラートする。 省略すると以前の値を採用する。 ③開始時間(省略可能) 0 ~ 127の値。64が標準値。 音が出てから実際にビブラートがかかり始めるまでの時間を調節する。 値を大きくすると、ビブラート移行に時間が掛かり、 値を小さくすると、すぐにビブラート効果が現れる。 省略すると以前の値を採用する。 ④遅延音長(省略可能) 上記特性に到達するまでの時間を、コロンに続けて音長表現で指定する。 音長表現の形式については“音符”の欄を参照のこと。 ゼロ音長を指定すると遅延が起らず即座に作用する。 本指定で与えた音長は、省略音長の対象にはならない。 コロンのみの記述はできない。スタッカート指定“/”は使用できない。 連符内に記述された遅延音長は、その連符比率でスケーリングされる。
周波数特性 Q = ① . ② ③ 初期値 Q=64.64
①フィルター(省略可能) 0 ~ 127の値。64が標準値。 倍音成分の発生量を調節する。 値を大きくすると倍音成分を多く通し、澄んだ(硬い)音になり、 値を小さくすると倍音成分が削られ、こもった(柔らかい)音となる。 例として、弱音器の装着などは値を小さくすることで実現する。 省略すると以前の値を採用する。 ②共鳴(省略可能) 0 ~ 127の値。64が標準値。 上記フィルタリング付近の共鳴量を調節する。 この値を大きくする程、高音域の共鳴が目立つ音となる。 省略すると以前の値を採用する。 ③遅延音長(省略可能) 上記特性に到達するまでの時間を、コロンに続けて音長表現で指定する。 音長表現の形式については“音符”の欄を参照のこと。 ゼロ音長を指定すると遅延が起らず即座に作用する。 本指定で与えた音長は、省略音長の対象にはならない。 コロンのみの記述はできない。スタッカート指定“/”は使用できない。 連符内に記述された遅延音長は、その連符比率でスケーリングされる。
全域指定
繰返し { ① } ②
①繰返し内容 中括弧にて任意の指定内容を括った場合は、定義域として機能する。 内容が存在しない場合は、その位置に直前の定義域内容を展開する。 ②繰返回数(省略可能) 定義する局面でも、展開する局面でも有効。 省略した場合は1と解釈する。 ゼロを指定すると、演奏を行わない。
定義マクロ $ ① { ② } ③
①マクロ名 任意の英数記号文字で命名。その名称は展開マクロにて使用される。 ただし以下の文字はキャンセル文字として無視される。 → スペース・タブ・改行・全角文字・半角カタカナ・半角縦棒(|) なお、セミコロン(;)・感嘆符(!)はコメント指定として解釈される。 ②マクロ内容 中括弧にて任意の指定内容を括る。 ③繰返回数(省略可能) 定義マクロを繰返す回数。 省略した場合は1と解釈する。 繰返し回数は定義域に含まれず、定義内容は②の領域内となる。 ゼロを指定すると、定義のみで演奏はしない。 定義マクロ自体も演奏対象となる。
展開マクロ $ { ① } ②
①マクロ名 定義マクロにて命名した名称。 ②繰返回数(省略可能) 定義マクロを展開する回数。 省略した場合は1と解釈する。 ゼロを指定すると、展開を行わない。
テンポ % ① ② 初期値 %125
①テンポ値 1分間の四分音符回数を数値で与える。範囲は1~999。 再度、本指定が行われるまで、この値が維持される。 ②遅延音長(省略可能) 上記テンポに到達するまでの時間を、コロンに続けて音長表現で指定する。 音長表現の形式については“音符”の欄を参照のこと。 ゼロ音長を指定すると遅延が起らず即座に作用する。 本指定で与えた音長は、省略音長の対象にはならない。 コロンのみの記述はできない。スタッカート指定“/”は使用できない。 連符内に記述された遅延音長は、その連符比率でスケーリングされる。 〔参考〕速度標語の目安 %42 Grave (重々しくおそく) %46 Largo (幅広くおそく) %52 Adagio (ゆるやかに) %56 Lento (おそく) %72 Andante (歩く速さで) %80 Andantino (やや速く) %96 Moderato (中位の速さで) %108 Allegretto(やや快速に) %132 Allegro (快速に) %160 Vivace (活発に) %184 Presto (急速に) 〔参考〕四分音符以外のメトロノーム記号における変換式
今、以下の様なメトロノーム記号が譜面に書かれていたとする。 n 分音符 = m
この時、%に添える数値 α は以下の式で算出できる。 α = 4 × (1/n) × m
n が付点八分音符の場合は (1/n) の部分を以下の様に算出する。 (1/n) = 1/8 + 1/16 = 3/16 ↑ ↑ 八分音符 付点
タイミング % ①
①メンバー記号(省略可能) 指定メンバー内の全フィンガーのタイミングを強制的に揃える。 メンバー記号は列挙が可能であり、そのメンバー内で整列処理される。 整列タイミングは、対象フィンガーの中で最も先まで進んでいる音符。 テンポは以前のものが維持される。 メンバー記号が省略された場合、すなわち単独の%の場合は、 全メンバー・全フィンガーでタイミングが揃う。
調性 \ ① ② 初期値 \=
①メンバー記号(省略可能) A,B,C,D,E,F,G,H,I,J,K,L,M,N,O の15の英字の中から列挙。 ただし、ドラムメンバーは指定することができない。 ここで指定されたメンバーにのみ、②の調性が与えられる。 指定されないメンバーの調性はその時点のものが維持される。 省略した場合は、ドラムメンバーを除く全メンバーの指定と見なす。 ②調号 1~7個の + あるいは - の並び。 + が♯、- が♭を表し、その並びの数が♯あるいは♭の数に対応する。 ハ調の指定は \= と表現する。 再度、本指定が行われるまで、この調性が維持される。 記述した位置から作用を開始する。 ただし、ドラムメンバー、およびコードに対しては機能しない。 なお“x2”指定下において、音名“b”は調性の影響を受けない。 また音名“h”は、フラット系の調性の影響を受けない。
コマンド系
文字列表示 * ① " ② "
①コマンドID HEAD, TEXT, MARK, STOP のいずれかを指定する。 *HEAD 曲のタイトル表示 ( 青色 ) *TEXT 文字列表示 ( 茶色 ) *MARK 位置決め可能な文字列表示 ( 紺色 ) *STOP 一時停止と文字列表示 ( 赤色 ) ②表示文字列 スペース・全角文字・半角カタカナ・半角縦棒(|)・セミコロン(;)・ 感嘆符(!)も表示対象となる。ただし、改行とタブは無視される。 バッククォート(`)は、ダブルクォート(")に置換される。 (``)の2文字も、1文字のダブルクォート(")に置換される。 (`@)の2文字は、1文字のバッククォート(`)に置換される。 TEXTおよびMARKコマンドの際、表示文字列の存在しないパラメータ("")を 指定すると、直前の表示を消去するコマンドとして働く。 STOPコマンドの際、表示文字列の存在しないパラメータ("")を指定すると、 以降のデータは演奏対象とならない。ただし、マクロ定義部は解釈される。 HEADコマンドは、1つのMuseファイルに唯一つ記述する。 STOP"" 以降のデータも解析対象となるため、文法に従う必要がある。
文字列追記 * ① " ② "
①追記制御値(省略可能) 省略した場合 追記先の文字列末尾に、②の文字列をアペンドする。 (n)を記述した場合 n は挿入位置であり、その範囲は -127~127 である。 n がゼロの場合は、先頭に②の文字列を挿入する。 n が省略の場合は、末尾に②の文字列を挿入する。 n が正値の場合は、指定位置の直後に②の文字列を挿入する。 n が負値の場合は、指定位置の直前に②の文字列を挿入する。 (n,m)を記述した場合 m は削除字数であり、その範囲は 1~127 である。 n が正値またはゼロの場合は末尾に向けて m 文字削除する。 n が負値または省略の場合は先頭に向けて m 文字削除する。 削除処理の後、指定位置に②の文字列を挿入する。 n や m の値による算出結果が、追記先の文字列範囲を越えた場合でも、 文法エラーにならず、文字列範囲で律則されて処理が継続する。 サロゲートペアも1文字として扱う。 ②追記文字列 文字列表示コマンドと同一の仕様で記述する。 追記先のコマンドタイプは、TEXT,MARK,STOPのいずれかである。 追記後、追記先のコマンドタイプを継承する。
コメントスイッチ * ① " ② "
①制御記号 以下のいずれかを指定する。 + :対象のコメント名を持つ感嘆符を無効化し有効行として扱う - :対象のコメント名を持つ感嘆符をコメント記号として扱う ②コメント名 対象となるコメント名称を記述する。 セミコロン・感嘆符・ダブルクォートは使用できない。 スペース・タブ・改行・全角文字・半角カタカナ・半角縦棒(|)などの キャンセル文字は無視される。 本指定以降に記述されている“コメント名付き感嘆符”に作用する。
コメント名付き感嘆符 * ① !
①コメント名 コメントスイッチにより制御される識別名称を記述する。 セミコロン・感嘆符・ダブルクォートは使用できない。 スペース・タブ・改行・全角文字・半角カタカナ・半角縦棒(|)などの キャンセル文字は無視される。 本指定以前に記述されているコメントスイッチにより、 ブロックコメント機能を維持するか、その機能が無効化されるか制御される。 制御するコメントスイッチが存在しなければ、通常の感嘆符と等価になる。 通常の感嘆符と同様、感嘆符の数は最大8個まで列挙可能である。
フォント指定 *FONT" ① ② " 初期値 *FONT"Meiryo UI,1"
①フォント名(省略可能) HEAD, TEXT, MARK, STOPで利用するフォント名称を与える。 本コマンドで指定された以降の、HEAD, TEXT, MARK, STOPに作用する。 存在しないフォントが指定された場合は無視される。 省略時は、その時点の指定フォントに対して修飾状態だけが変化する。 ②フォント修飾(省略可能) ,0 ~ ,3のいずれかの数値。(省略時は ,0 指定とみなされる) ,0 ノーマル ,1 太字 ,2 斜体 ,3 太字+斜体
音声ファイル *WAVE" ① "
①音声ファイル名 相対パスおよび絶対パスの指定が可能。 相対パスの基点は、再生Museデータの存在フォルダ。 本コマンドが指定されたタイミングで音声ファイルを再生する。
メンバー色指定 *COLR" ① ( ② ) "
①メンバーID 指定したいメンバーIDを列挙し、同一色にすることが可能。 ②RGBコード 16進6桁の形式(RRGGBB)で指定する。 本コマンドは、1つのMuseファイルに唯一つ記述する。 ①②のセットを、複数列挙することが可能。
ドラム特性 *DRUM" ① ② "
①Zメンバー制御(省略可能) 以下のいずれかを指定する。 Z- Zメンバーを通常の楽器メンバーに転向させる Z0 ドラムの響きを抑える Z1 ドラムの響きを適度に与える Z2 ドラムの響きを大きくする ②ドラマー転向(省略可能) A~OのメンバーIDの内どれか1つを選び、0~2の数値を添える。 指定されたメンバーがドラマーに転向する。 添えられた数字は、①と同様のドラムの響きを意味する。 本コマンドは、1つのMuseファイルに唯一つ記述する。 ①と②の記述順を逆にすることもできる。 ①②共に、添える数字を省略できる。
演奏会場 *ROOM" R①( ② ) Q③( ④ ) "
①残響既定番号(省略可能) 0~7の数字であらかじめ準備されているパラメータの組合せを指定する。 ②の指定で省略されているパラメータは、ここでの既定値が与えられる。 本既定番号自体が省略された場合は“R4”が採用される。 ②残響パラメータ(省略可能) カンマで区切られた6つの値を列挙する。 前半2つは0~7、後半4つは0~127の範囲で与える。 各値は独立に省略可能。ある値以降を省略する場合は以降のカンマも不要。 すべて省略した場合は括弧も不要となる。 ③コーラス既定番号(省略可能) 0~7の数字であらかじめ準備されているパラメータの組合せを指定する。 ④の指定で省略されているパラメータは、ここでの既定値が与えられる。 本既定番号自体が省略された場合は“Q2”が採用される。 ④コーラスパラメータ(省略可能) カンマで区切られた7つの値を列挙する。 初めの1つは0~7、残りの6つは0~127の範囲で与える。 各値は独立に省略可能。ある値以降を省略する場合は以降のカンマも不要。 すべて省略した場合は括弧も不要となる。 本コマンドは、1つのMuseファイルに唯一つ記述する。 RとQの記述順を逆にすることもできる。
フィンガー属性 *FING" ① "
①フィンガー属性並び (? x o v w p q y)の中から任意の属性を列挙指定する。 各属性のパラメータは、それぞれの文法に従う。 各属性の記述順は自由。遅延指定は不可。 基本的に全メンバー・全フィンガーに作用する。 メンバーIDに続く括弧( )内に指定値を与えると、特定メンバーのみ セットできる。(メンバーIDは列挙が可能) 本コマンドで指定されたタイミングで、全メンバー・全フィンガーの フィンガー属性が一括してセットされる。
エクスクルーシブ *DATA " ① "
①送信データ 16進コードをカンマ区切りで列挙する。 タブや改行、半角スペースや全角スペースなどは無視される。 無駄なカンマが連続した場合、最小限のカンマに解釈される。 データの一部を括弧で括ることで、チェックサムが挿入される。 DATAコマンドで空のパラメータ""を指定すると初期化機構が抑止される。 本コマンドが指定されたタイミングで音源にデータを送信する。
プール *POOL " ① "
①保持データ 16進コードをカンマ区切りで列挙する。 タブや改行、半角スペースや全角スペースなどは無視される。 無駄なカンマが連続した場合、最小限のカンマに解釈される。 本コマンドが指定されたタイミングでMuseの内部バッファにデータが保持され、 以降のDATAコマンド発行の度に、前半にデータが付与されて音源に送出される。 なお、POOLコマンドが改めて指定されると保持内容は更新される。 POOLコマンドの効果を解除したい場合は、空のパラメータ""を指定する。
エンコードオプション *LAME " ① "
①コマンドライン引数 LAMEに渡すオプション表記をそのまま記述する。 タブと改行は無視される。 バッククォート(`)は、ダブルクォート(")に置換される。 (``)の2文字も、1文字のダブルクォート(")に置換される。 (`@)の2文字は、1文字のバッククォート(`)に置換される。 本コマンドは、1つのMuseファイルに唯一つ記述する。 また、MP3エンコード処理のみに作用する。 〔参考〕LAMEの主なID3タグオプション --tt <タイトル> --ta <アーティスト> --tl <アルバム> --ty <年> --tc <コメント>
楽譜体裁 *LILY" ① ② "
①機能区分 以下の1文字を指定することで機能の仕分けを行う。
0 : 楽譜構成の指定 1~9 : タイトルや作曲者名の指定 - : 自動記譜の抑止 + : 自動記譜の再開 _ : 最小記譜音長の指定 | : 楽譜全体のレイアウト属性 # : 五線譜毎のレイアウト属性
②パラメータ ・機能区分によってパラメータの内容が異なる。
0 → 楽譜構成書式( < > ( [ { / + * 等の文字による定義 ) 1~9 → タイトルや作曲者名の文字列 - → 抑止対象の属性文字の列挙( /wv?xVYUT\%:$' ) + → 再開対象の属性文字の列挙( 同上 ) _ → 最小記譜音長(8,16,32,64,0のいずれか) | # → LilyPond文法をダイレクトに記述
・機能区分によって指定特性が異なる。
0~9 ← 1つのMuseファイルに唯一つ記述する。 - + _ ← 何回でも記述可能(記述した箇所以降のデータに作用する) 基本的には記述フィンガーのみに作用する。 メンバーIDに続く括弧( )内に指定値を与えると、特定 メンバーのみセットできる(メンバーIDは列挙が可能) なお、メンバーID省略で全メンバーに対する指定となる。 | # ← 何回でも記述可能。 離散して記述した場合も記述順に一括して連続送信される。 どの位置に記述しても音符譜刻が開始される前に作用する。
Muse演奏やエクスポート(MIDI,WAVE)の際は無視される。 譜面モニタやメンバー情報、フィンガー情報にも反映しない。 〔参考〕特殊文字( # \ " )の扱い 特殊文字はシングルクォートで括り、 更に(\)は(\\)として、(")は(\`)として記述する。 ` # ` → # ` \\ ` → \ ` \` ` → " ダブルクォートは1つのバッククォート、 あるいは連続するバッククォートでも記述できる。 ` → " `` → " シングルクォートを表記したい場合は、(`@)として記述する。 `@ → ` ("@)と表記したい場合は、連続するバッククォートを活用する。 ``@ → "@
楽譜スルー " ① "
①スルー文字列 LilyPondに直接流し込む文字列を記入する。 Muse演奏やエクスポート(MIDI,WAVE)の際は無視される。 譜面モニタやメンバー情報、フィンガー情報にも反映しない。 バッククォート(`)は、ダブルクォート(")に置換される。 (``)の2文字は、1文字のダブルクォート(")に置換される。 (`@)の2文字は、1文字のバッククォート(`)に置換される。 〔参考〕主なLilyPondコマンド
<拍子とテンポ>------------------------------------------ "\time 4/4" 拍子(例は4/4) "\partial 2" 弱起(例は2分音符分) "\tempo 4=120" テンポ(定量表記) "\tempo `Presto`" テンポ(定性表記) <音部記号>---------------------------------------------- "\clef treble" ト音記号 "\clef alto" ハ音記号(アルト) "\clef tenor" ハ音記号(テノール) "\clef bass" ヘ音記号 <調号>-------------------------------------------------- "\key c \major" ハ長調 "\key g \major" ト長調 "\key f \minor" ヘ短調 "\key d \minor" ニ短調 "\key ees \major" 変ホ長調 "\key ais \\minor" 嬰イ短調 (注)連続した調号指定は先書き優先となる <アーティキュレーション>-------------------------------- "->" アクセント(弱) "-^" アクセント(強) "-_" メゾスタッカート "-." スタッカート "-!" スタッカーティッシモ "-+" トレモロ "-o" ハーモニクス "--" テヌート <音符に添えるもの>-------------------------------------- "^\trill" 上付きトリル(tr)記号 "_\trill" 下付きトリル(tr)記号 "~" タイ ":32" トレモロ(32は音長数字) "\turn" ターン "\mordent" モルデント "-\bendAfter #+4" 半音4度の上昇ピッチベンド "-\bendAfter #-4" 半音4度の下降ピッチベンド "^`文字列`" 上付きテキスト "_`文字列`" 下付きテキスト "\arpeggio" アルペジオ(和音に添える) "\sustainOn" ペダル(ON) "\sustainOff" ペダル(OFF) <強弱記号>---------------------------------------------- "\mp" "\p" "\pp" "\ppp" "\pppp" "\ppppp" "\mf" "\f" "\ff" "\fff" "\ffff" "\fffff" "\fp" "\sp" "\spp" "\sf" "\sff" "\sfz" "\rfz" <範囲のあるもの>---------------------------------------- "(" ~ ")" スラー "\<" ~ "\!" クレッシェンド "\>" ~ "\!" デクレッシェンド "\ottava #1" ~ 8va開始 "\ottava #-1" ~ 8vb開始 ~ "\ottava #0" 8va/8vb終了 "\startTrillSpan" ~ トリル開始 ~ "\stopTrillSpan" トリル終了 "\arpeggioArrowDown" ~ 以降のアルペジオに下矢印を付与 ~ "\arpeggioNormal" 通常のアルペジオに復帰 "\transpose d e {" ~ 移調開始(d を e に移調) ~ "}" 移調終了 <五線譜の上部に添える記号>------------------------------ "\fermata" フェルマータ "\segno" セーニョ "\coda" コーダ "\mark `文字列`" 練習記号 <小節線>------------------------------------------------ "\bar`|`" 細線 "\bar`.`" 太線 "\bar`|.`" 終止符 "\bar`||`" 二重線 "\bar`.|:`" 繰返開始 "\bar`:|.`" 繰返終了 "\bar`;`" 点線 "\bar`!`" 破線 "\break" 強制改行(小節線の位置のみ有効) <音符・休符>-------------------------------------------- "c'4" 中央ドの4分音符 "c''8" 1オクターブ上の8分音符 "dis,8" 1オクターブ下のレのシャープ "r2" 2分休符
≫≫≫ 著作権などについて ≪≪≪
Museはフリーソフトです。ただし、Museプログラム、Muse文法およびマニュアルに 関する著作権は、開発者「加藤 一郎」が保有します。 本ソフトウェアは、営利/非営利を問わず無許可で再配布、および使用が可能です。 なお、書籍などへの転載はご一報いただけると幸いです。 作品ができ上ったら、可能ならぜひ加藤宛(kato@my.zaq.jp)にご送付ください。 開発の励みにしたいと思います。お礼と言ってはなんですが、送付していただいた ら、MIDIファイルをMuseファイルに変換するソフト(mid2mus.exe)を、お贈りしよう と考えています。Museデータを添付し、「mid2mus希望」とお書添えください。 もちろん無料です。その他、ご意見・ご感想・ご質問等も謹んでお受けいたします。 同梱しているbass.dll, bassmidi.dll, bassenc.dllは、un4seen developments. が 提供している非商用に限り無料で利用、再配布が可能なライブラリです。Museから 直接サウンドフォント演奏を行ったり、エクスポートを行うために活用しています。 極めて優れたライブラリの提供に、心から感謝致します。 以下、BASSライブラリのライセンス条項を掲載しておきます。 ------------------------------------------------------------------------ BASS is free for non-commercial use. If you are a non-commercial entity (eg. an individual) and you are not making any money from your product (through sales/advertising/etc), then you can use BASS in it for free. ------------------------------------------------------------------------ なお、本Readme.txtに例示されている楽曲、および添付のサンプル曲(Sample*.mus) については、日本音楽著作権協会(JASRAC)の作品検索サービスによって、作曲に 関する著作権が消滅していることを確認しております。また、カラオケの説明部分 で使用している曲に関しては、作詞の著作者も不詳であることを確認しております。 ■収録楽曲一覧(掲載順) (1- 5) ゆめをのせて(ロシア民謡) (1- 6) ほたるの光(スコットランド民謡) (1- 7) 別れの曲(ショパン) (1- 8) 線路は続くよどこまでも(アメリカ民謡) (1- 9) 交響曲第6番「田園」(ベートーベン) (1-10) アルプス一万尺(アメリカ民謡) (1-11) アイーダ行進曲(ヴェルディ) (1-12) おお牧場はみどり(チェコスロバキア民謡) (1-13) チゴイネルワイゼン(サラサーテ) (1-14) 交響詩「我が祖国」より“モルダウ”(スメタナ) (1-15) 交響曲「未完成」(シューベルト) (1-17) 山の音楽家(ドイツ民謡) (1-20) トルコ行進曲(ベートーベン) (2- 1) 交響曲「新世界」(ドボルザーク) (2- 6) 亜麻色の髪の乙女(ドビュッシー) (2- 7) ピクニック(イギリス民謡) (2- 8) 賛美歌「きよしこの夜」(グルーバー) (2-10) シチリアーノ(フォーレ) (2-11) 一日の終り(フランス民謡) (2-12) 森のくまさん(アメリカ童謡) (2-13) 月光ソナタ(ベートーベン) (2-14) ラプソディー・イン・ブルー(ガーシュイン) (2-15) 小フーガ ト短調(バッハ) (2-17) ピーターと狼(プロコフィエフ) (2-18) 交響曲第9番「喜びの歌」(ベートーベン) (2-19) ペールギュント組曲より「朝」(グリーグ) (3- 2) 静かな湖畔(作詞作曲不詳) (3- 3) 弦楽四重奏曲第1番ニ長調(チャイコフスキー) (3- 6) 幻想即興曲(ショパン) (3- 7) クラリネットをこわしちゃった(フランス童謡) (3-19) かたつむり(作詞不詳) (Sample1) グリーンスリーブス(イングランド民謡) (Sample2) 「愛の夢」3つの夜想曲より 第3番(リスト) (Sample3) 交響詩「中央アジアの草原にて」(ボロディン) ★著作権が消滅したパブリックドメインな楽曲。それは人類共通の宝物ですね。
開発後記
《Ver1.0 開発後記》1999.03.01
◆『音楽は時間に描く絵画である』という言葉を聞いたことがあります。 今回のプログラム開発は、まさにタイミング制御との戦いでした。1000分の1秒 でタイマーコールバックが起るので、極限まで瞬間々々の処理を軽くしなければ ならなかったのです。今まで自分のソフトでマシンをハングさせたことなどなか ったのに今回は何度もリセット行為をしてしまいました。ショックでした。 ◆MIDIエクスポートの機構も苦労しました。何が辛かったかってMIDIの仕様を記し た資料が見つからないのです。書店にはMIDIシーケンサーを使った曲作りの本は 山のようにあるのに、MIDIフォーマットそのものの本は本当に僅かなのです。 そんな折、情報源で役立ったのはWEBでした。まったくインターネットって奴は、 目的を見据えた情報探索に関しては充実した結果を得ることができるものです。 ◆Muse文法の仕様は、かなりの自信作です。でも一番手が掛りました。 Readme.txtのサンプル曲を書きながら、次から次へと発想が沸いてきて、何度も 仕様を変更しました。それに伴い、Museファイルのコンパイル・アルゴリズムも、 幾度となくコーディングし直しました。でも、とってもエレガントな出来だと思 っています。自分で自分を褒めて上げたい気持です。 ◆ウィンドウのLook&Feelも、とっても気に入っています。シークバーの制御がタ イミング制御と密接に関連しているので大変神経を使いましたが、使う側にとっ ては制約の少ないGUIに仕上ったと思っています。初期の頃は一度演奏を止めな いとシークすることができなかったのですから。 マニュアルに一度書いた制約事項を消していく行為は、実に快感でした。 ◆実は音を鳴らすプログラムは、今回で4回目のトライアルです。 1回目は16年前、Beep音を機械語でON/OFFし、その周期で音階を作りました。 そして、BASICのデータファイルから曲を演奏できるようにしたものでした。 2回目は12年前、初めて個人で手に入れたパソコン“FM-7”のBASICでの音源 駆動を利用して開発しました。このプログラムは画面に五線紙が表示され、音符 を配置して曲を演奏するものでした。思いの外、データ入力が大変な作業でした。 3回目は6年前、“CanBe”でFM音源を駆動する部分をアセンブラで書き、こ のMuseの様にテキストファイルから曲を演奏させました。4つのFM音源の波形 をエディット・ミックスし音自体を作成してライブラリ化できるシンセサイザー まがいのシステムでした。MS-DOSのプログラムだったので、GUIはまったくあり ませんでしたが、Museの原型はここにあります。 ◆そして4回目の今回、ついに私が求めていたイメージの作品が完成しました。 昨今、巷にはもっと高機能かつ高性能な音楽シーケンサがあふれています。でも、 16年の遍歴を抱いたこのMuseは、私にとって非常に愛着の沸く作品なのです。
《Ver1.1 開発後記》1999.03.03
◆初版リリースからまだ3日しか達っていないのに、もうバージョンアップをして しまう自分が恥ずかしいのですが、やっぱり直ぐに最新版をお披露目したい気持 ちを押さえ切れません。今回のバージョンアップは、演奏中や試聴中でも音源の 切替えを可能にしたことと、フィンガー拍数に[偶奇]ボタンを付けたことです。 ◆もう一つ、実は内心とても不安だったCPU負荷の問題にメスを入れました。 1/1000秒の精度を1/100秒程度に落したことで動作が安定したと思われます。 しかし一体人間は、音楽を鑑賞するにあたりどの位の時間精度を必要とするので しょうか? 少なくとも、私は1/100秒で充分のようですが...。 ◆さて話は遡りますが、今回のMuseは初版リリース前に入念な試行体制を組みまし た。会社の同僚の中で音楽的な素養のある人に声をかけ、モニタを募ったのです。 特に以下の4名の方々には、実際に曲を作成していただくと共に、有益な示唆を 数多く与えてくれました。前回紹介できなかったので、改めてこの場で感謝の意 を表します。≪田中淳一郎 氏・河合右輔 氏・百元正嗣 氏・大塚剛史 氏≫
《Ver1.2 開発後記》1999.03.05
◆これがフリーソフトでなかったら大変な話なのですが、またしてもバージョンを 上げることに相成りました。少し堪えようと思ったのですが、Muse文法記述に関 わる部分なので、早くご披露しなければデータ互換が失われ、ユーザからの顰蹙 を浴びる可能性があります。 ◆変更したのは“x2”指定における音名“h”の解釈です。私自身がハイグレード な音楽通ではないもので、仕様を整理するのに大変苦労しました。前バージョン の解釈ミスを指摘してくれた河合君と、今回の仕様検討に快く応じてくれた大塚 君に心より感謝いたします。 ◆考えてみると“文法”という奴はデータフォーマットであり、あんまりコロコロ 変えられないということに気づきました。現在のMuse文法にはかなりの自信があ るのですが、それでも多少ドキドキします。もし致命的な欠陥や記述不能な譜面 が出現したらなんとしよう...。でもまあ、フリーソフトですから、仕様は予告 なく変更する場合があるのです。お気楽モードON! ◆おまけと言ってはなんですが、データ作成のための支援機能を付けました。 ドラムの試聴でボタンクリックすると、その音階文字列がクリップボードに出力 されます。テキストエディタ側でペタッと貼付ければ、楽に入力できるという算 段です。楽器の試聴ではその音色“P”指定を出力します。せっかちな私は、音 色番号を確認せずにダイアログを閉じてしまう場合がままあったので、少なくと も私自身にとっては、ヒット機能です。 ◆更にシークバーの移動時にツールチップで時刻を表示させるようにしました。 考えてみれば、これだけ付録があればバージョンアップの価値はあるでしょう。
《Ver1.3 開発後記》1999.03.11
◆音楽というものは実に多様なパラメータの組合せです。Museのような簡易ツール は、とてもそのすべてを網羅できません。しかし、満点は取れなくとも及第点は 目指しています。その意味で今まで心残りだったものは、連続的なテンポの変化 と、滑らかな強弱の変化を表現することでした。 前者の課題は時間制御の数値計算が実に難解ですが、後者の課題は頑張ればクリ アできそうでした。そして、今回はその克服バージョンという訳です。 ◆逆説的ではありますが、滑らかに音の強さを変化させるため、デジタル物量を投 入してアナログに見せかけるという処理になりました。所詮、計算機はそんなま がい物しかできないのです。特にクラシック系の曲は、クレッシェンド・デクレ ッシェンドをふんだんに使って曲想を表現します。実際の楽器を演奏する“人” の偉大さを改めて感じ入った次第です。すべてのパラメータをアナログ的に、パ ラレル・リアルタイムで処理しているのですから。 ◆ついでと言ってはなんですが、ステレオ効果に関しても同じ概念で文法化できる ので、同様の書式でサポートしてみました。今回の強化でMuseの表現力がグッと 高まったと言えましょう。それにしても、上位コンパチの書式でよかったぁ。 ◆イントラネットに“Museの殿堂”というタイトルのホームページを開設し、そこ に皆から送ってもらう作品を展示することにしました。現在は前に紹介した方々 の作品が並んでいます。これから、未知の方から作品が送られてくるようになっ て、殿堂がにぎやかになるといいなぁと祈っている今日この頃です。
《Ver1.4 開発後記》1999.03.20
◆私は根っから単純なので複雑な文法は嫌いだし、そもそも覚えるべきコマンドが 多いのも閉口します。そんな訳で本来のMIDI音源の能力を引出すエフェクト指定 を無視してきました。デフォルト固定でコーディングしていたのです。 ◆しかし開発が一段落した今、ちょっと試みにエフェクトの効果実験をしてみると これが思いの外楽しいのです。128の決められた楽器をただ受身で選ぶのではなく 何やら自分なりの音色を創作できる小気味よさが感じられます。 ◆という訳で、とうとうMIDIエフェクト命令まで実装してしまいました。と言って も、ごくごく基本的な3つのコマンドだけです。でも私にとっては充分すぎる ぐらい複雑です。なにせ私は、1・2・沢山 … という大雑把な人間なので。 ◆ちなみに今回のバージョンは必然的に「楽器の試聴」ダイアログに手を入れるこ とになり、800×600 の解像度しか持たないノートパソコンにうまく納めるとい う改良も行いました。それとツールチップ発生時のウィンドウフォーカスの問題 や、クレッシェンド指定時の対象チャネル算出部の不具合なども直しました。
《Ver1.5 開発後記》1999.04.02
◆友達から続々と素晴しい曲が届きました。そしてそれらのデータを聴いたり、見 たりしているうちに、また新たな強化の思いが湧起ったのです。1つは、多くの メンバーを用いたデータに対し、あるメンバーだけ取出して聴いてみたいという 欲求です。丁度メンバ色一覧のダイアログが表示するだけで淋しげだったので、 そこにメンバーのON/OFF機構を付けました。デバッグにも役立ちそうで、なかな かの機構だと思います。 ◆もう一つは、短い音長の連符の際、どうもテンポがもたれる様なので、割込み精 度を3倍ほど高めました。これにより確かにもたれなくなった様です。果して私 の耳は1/100秒の精度を持っていたのでしょうか? 何はともあれ、今回のバージョンからMuseは、1/250秒のタイミング精度で動作 することになりました。 ◆それと、もう1つ。同一の和音やコードのデータが続く時、なにやら入力が面倒 そうなのに気づき、それらを統括的に解消するために、再現記法という概念を導 入しました。この表記に連符も統合するか否かで1週間悩みました。結局、分離 する方が記述性が高いことに気づき、()で連符の再現をすることにしました。 ◆更に、もう一つ。ゼロ音長を和音以外にも拡大適用し、上記の再現記法と組合わ せることでリズムパターンをマクロで定義できるようにしました。 しかし、このために群記述における省略音長の採用順序を変更しなければなりま せんでした。これが一番苦労しました。そして悩みました。何故なら文法の互換 を破ることになるからです。互換性を保つ方法もあったのですが、しかし、その 奇怪な仕様では、どうしても私の審美感が許さなかったのです。
《Ver1.6 開発後記》1999.04.08
◆小さな2つの改良をしました。1つは、ナインス系のコードを増強したこと。 これにより、Museが対応するコードは29種類に増えました。先日、近所の楽器 店にふらりと寄ったら、当り前の話かも知れませんが一般の書店にはない譜面関 係の書籍がずらりと並んでいるではありませんか! Museに入力することを考え、 ワクワクしながら気に入った一冊を購入しました。その譜面に思いの外ナインス 系のコードが多かったというのが、増強の切っ掛けです。 ◆今一つの改良は、前回のメンバーON/OFF機構を、MIDIエクスポート時にも適用拡 大したことです。このアイディアは鳥谷氏がe-Mailで提供してくれました。 ユーザがある箇所で指定したパラメータが、全体に渡って統一的に作用するとい う思想は、私の好みにピッタリとフィットしました。
《Ver1.7 開発後記》1999.04.30
◆『遠いものは大きく、近いものは小さく見えるだけのこと。なあに、近づけば それ程のことはないさ』…この物理的遠近法を無視した逆説的な論法は、宮崎駿 アニメのあるシーンで語られる台詞です。私は妙にこの言葉が印象に残っており、 何かに躊躇する時不思議と思い出すのです。 ◆テンポの連続的変化の対応はとても難解で私には解けないし、解けても実装でき ないと思い込んでいました。しかし着手してみると結構楽しい思考プロセスの旅 でした。『傾きの異なる2つの半直線を滑らかに接続する放物線』というイメー ジが、リタルダンドとアッチェレランドを解く鍵だったのです。近づいてみると、 本当に大したことはありませんでした。 ◆何故かロードに時間がかかるMuseデータが送られてきました。むろんロードその ものに時間がかかるのではなくコンパイル処理に時間がかかるわけですが、一体 どこにその元凶があるのか、CPUタイムダンプのデバッグライトではどうしても 特定できません。今までこの方法で高速化をした経験が何度もあるのに。お蔭で、 プロファイラ解析の体験を初めてさせてもらいました。 ◆結局、長~い休符がある場合に、次音の挿入位置を検索する処理に時間がかかっ ていることが判明しました。そこで、異なる2つの対応策を捻出しました。一つ は、音の追加時は単純に列挙しておき、最後にバッチ的に時系列でクイックソー トする方法。今一つは、休符に関してもダミーのノートを挿入追加し、あくまで もリアルタイムに時系列整合を保っておき、最後にダミーノートを解放する方法。 ◆両方とも時間をかけて丁寧に作り込み、今までのデータで実験検証した後、結論 としてリアルタイム処理の方を採用しました。これで10倍程の高速化が得られ たはずです。著名な小説家や画家の創作プロセスに喩えるのはおこがましいです が、Museも最終プログラムに至るまで、数多くの習作を神に捧げています。 ◆繰返しモードのインターバル時点で、マウスによる演奏制御をすると最悪ハング が起るという障害にも遭遇しました。結構大手術でした。でもこの病も完治し、 今回のバージョンで、Museはかなり箔が付いたと思います。
《Ver1.8 開発後記》1999.06.01
◆初版から丁度3ヶ月が経ちました。改版インターバルも長くなり、Museもだいぶ 落着いてきたようです。今回は、大作の入力に挑戦することで得た経験をもとに、 自らデバッグに便利と思われる機能を2つ追加しました。 ◆1つは“メンバ色一覧”において★印を一斉にON/OFFする機構。 今一つは“フィンガー拍数”において最終属性値を表示する機構。 両機能とも、体験に裏付けられているので必ずや役に立つという自信があります。 ◆考えるに、モノを作るということは、モノを使うという行為により完結するのだ としみじみ思うのです。思い起せば初版を作り上げて後、自ら入力を繰返すこと で、Museはここまで進化してきました。今後もこの姿勢を崩さずに、事に臨んで いこうと思っています。
《Ver1.9 開発後記》1999.06.12
◆遅延効果の機構を実装した時期から、釈然としない部分がありました。それは、 メンバー属性の宣言“@”がフィンガー宣言“#”の配下に記述されることが間々 あるという点です。しかし記法としてはなんら矛盾していませんから、何がどう まずいのか具体的なイメージが描けない日々が続いていました。 ◆けれども先日、帰宅途中の電車の中で突然その欠点が形になりました。 マクロの中に“@”指定を施す場合、メンバー指定が定数なため、マクロの使い 回しに足枷が生じ、柔軟性がないことに気づいたのです。その明確なデメリット に思いが到達した時と、新しい記法を思いつくのがほとんど同時でした。 メンバーを省略可能とし、その際フィンガーの属するメンバーを採用する様にし さえすれば問題は解決します。プログラムの修正量はたった2行でした。 ◆フィンガー配下の“@”指定で、再度メンバーを書く必要はないし、マクロの汎 用性は高まるし、しかも文法互換は保たれるのです。今まで文法エラーではじか れていた記述が、新しい解釈で通るだけのことです。すべての側面で満足行く解 に出会うのは、然う然うあるものではありません。 ◆問題を解決するには、まずその問題の本質を厳密にイメージすることである。 これが今回、私の得た教訓でした。 ◆もう一つ、無名マクロの文法を追加しました。スコア風に入力する際、オクター ブの異なる同一旋律のメンバーを書いていくのにマクロ名の命名が実に煩わしい と感じたからです。 ◆嬉しかったのは、文法互換がここでも保たれたことです。結局、従来文法エラー と解釈する記述に対して、何らかの機能を付加する分には、上位互換が保存され るという指針を得ることができました。
《Ver2.0 開発後記》1999.06.20
◆ぜんぜん改版インターバルが短くなっていないことに気づきました。でもそれに 気づくよりも先に、新しいアイディアに気づいてしまうのですから仕方ありませ ん。まあ、考えてみればプロセスを楽しむ趣味という行為を満喫していると言え ましょう。私の信条は『仕事はアウトプット、遊びはプロセス』なのです。 ◆今回の改良は、GUI系と文法系にそれぞれ施しました。GUI系の改良は、 シークつまみの位置をダイレクトに位置決めできる様にしたことです。デバッグ を繰返す過程で、マウスによるスクロールが煩わしいことに気づいたのです。 ◆もう一つ、マウス右ボタンを導入し、一連の操作を一気に行うようにしました。 以前より、ツールバーにミニボタンを付けるなどしてリロードを簡便にできない かという要求を受けていましたが、単に専用のボタンを設けるだけでは、真の欲 求を満たさないのではないかという懸念が払拭できず、実施する気になりません でした。今回、デバッグ中に繰返す自分の操作手順を冷静に分析して、より高次 元で解決する機構が実装できたと思っています。 ◆文法系の改良は、先日実装した無名マクロにおいて、定義域の指定時でも繰返し 回数を添えられるようにしたことです。考えてみると、今までMuseには単純な回 数繰返しの指定がありませんでした。今回ようやく可能になった訳ですが、この 文法の改造は、とてつもなく大変な作業でした。告白しますが、マクロがらみの アルゴリズムは、驚愕に値する複雑さです。 ◆でもまあ、今回も文法互換が保てて本当によかった。胸をなで下ろしています。 何故って、もう私のMuseデータライブラリは100曲に迫る勢いなのですから。
《Ver2.1 開発後記》1999.06.26
◆長い、長~い、それはそれは長いバイオリンの通奏を入力する機会があり、音長 を加算記号で連ねていくのが思いの外面倒でした。無名マクロや連結記号で工夫 すれば、まあ許容できる記述量に納るのですが、こと遅延効果に至っては、そん な工夫もできないことに気づいたのです。 ◆そこで音長の加算・減算に加えて、乗算を新設することにしました。最後に1つ だけ大切に残して置いた逆シングルコーテーション文字を、とうとう使用するこ とになり、これで特殊文字はすべて使い尽してしまいました。しかし図らずも、 音長の演算子3つがすべて上付文字となり、その統一感に満足しています。 ◆初版の頃から、ちょっと手抜きかなと思っていた、複付点とダブルシャープ・ダ ブルフラットに対応しました。共にたま~にしかお目にかからないし、読替えれ ばさほど苦もなく記述できるので放置していたのですが、制約条件解除の快感を 味わいたくなって手を出しました。 ◆ダブルシャープ、ダブルフラットの対応は6行程度のif文を追加するだけででき てしまったのですが、複付点の方はちょっとやっかいでした。64分音符に複付 点を付けると、Museの持つ内部分解能を越えてしまうのです。分解能を倍にする ために、慎重にソースコードをトレースする必要がありました。また、対応つい でに従来から端数が出るので気になっていた「音長数字省略の付点のみ記述」を 文法エラーとしてガードすることにしました。 ◆一種の文法非互換となる訳ですが、今まで通っていた記述が、通らなくなるのだ から、修正個所と修正方法が明確であり、まあ問題ないでしょう。従来の文法エ ラー記述に新しい解釈を加えることが問題ないように、従来の解釈を文法エラー にするのも、ほぼ問題ないという法則が見えてきました。結局、非互換問題は文 法エラーに関連しない所で、従来と異なる解釈にすり替るときに起るようです。 ◆本格的なクラシックの音楽を入れて、強弱設定を本気でやりました。特に、クレ ッシェンド・デクレッシェンドでメンバー音量Vを振ると、今どの値になってい るのか、フィンガー音量vと相まって、訳が分らなくなってきます。 そこで、フィンガー拍数のダイアログに、メンバー音量Vも表示するようにしま した。これで、一段とデータ作りは楽になったのですが、このダイアログ、なん だかやたらに賑やかな情報ウィンドウになってしまいました。
《Ver2.2 開発後記》1999.07.07
◆最近、Museの処理がオーバーフローする程の超大作が送られてきており、ちょっ とスペックが不足気味のマシンでは、曲がもたれてどうしようもない状態が出現 しました。解析の結果、原因はスクロールバー処理と鍵盤カラー表示の重さと判 明しました。前者は、ノンウェイトのメッセージポストに変更することで解消し ましたが、後者は、ひとえに鍵盤表示のデータ構造に依存しています。 ◆Museは16名のメンバーが10本指を持っており、単純に考えると同時に160 の音が出せるように思えます。しかし、1本指でも和音が出せ、しかも文法上、 何重の和音でも記述できる訳ですから、限界は無いに等しいのです。この状況下 でカラー表示の重なりを処理するのは至難の業と言えます。 ◆実はMuseの鍵盤上に舞踏するカラー表示は、かなり難度の高い処理をしています。 3D処理と言ったら言過ぎかも知れませんが、重なった色を剥がした時、ちゃん と下の色を表出させるための機構は結構やっかいなものです。 ◆今まで、単純な線形リストで管理していたのですが、今回専用の構造体を新設し 自前でメモリ制御を行うという荒技を施しました。Windows32bitタイマーにおけ るLatency問題は残るものの、演奏のもたつきはかなり改善されたと思います。 ◆また、連続する同一のコントロールメッセージの様に、意味のないコードを削除 するクリーンアップルーチンを開発することで、よりCPUの負荷を軽減しました。 ◆開発して半年。やっとボリュームとエクスプレッションの関係が理解できました。 今まで、常識的判断で、音量調整“V”はマスタボリュームメッセージを使用し ていたのですが、MIDI界では、ソングボディ内にボリューム変化を与えてはいけ ないお作法になっていることを知りました。ボリュームは、まさに演奏時、個々 のマシン音源特性に合せたチャネル音量バランスの調整用に取っておくものとの こと。お説御尤もと納得し、改修いたしました。
《Ver2.3 開発後記》1999.08.08
◆河合氏が所有している一般公開のホームページにMuseを掲載してくれました。 恥ずかしながら、私は未だにデジタル・ホームレスでありまして、まあ居候させ てもらってる、という所でしょうか。ありがとう河合君。お世話になります。 ちょっとオーバーですが、とうとうMuseも全世界に船出したことになります。 まったく見知らぬ人がMuseを楽しんでくれると思うとワクワクします。 ◆今回の機能強化は、ピッチベンドを取込んだことです。トロンボーン奏者、大塚 氏の強っての(それは初版の頃からの)願いだったのです。お待たせしました。 例によって、MIDI仕様を理解するのに、インターネットをフル活用させてもらい ました。私も見知らぬ人からの恩恵を被っている一人な訳です。 ◆ピッチベンドは、他のコントロールとは一線を画す難度の高い制御です。また、 データ作りの上でも、活用はちょっとセンスを要します。そんなピッチベンドの 指定を、Museの記述ポリシーを崩さずに文法化できたことが、とっても誇らしい 気分です。従来の遅延効果の概念を利用することに気づいた時は、体が宙に浮く 程嬉しかったのを覚えています。 ◆この喜びに勢いを得て、ダンパーペダルの操作、すなわちホールド制御も実装し てしまいました。確かに、ピアノ曲ではその響きが違います。結局、今回の改版 は楽器特性の演奏手法に対する強化シリーズとなった訳です。 ◆更に、ピアノ曲を多メンバーで入力してみたら、@指定の強制休符調整が無意味 どころか、邪魔な機構であることに気づき、それを撤廃しました。これがあると、 多メンバーを一気に指定できる@指定の長所が生かせないのです。またしても、 数百行のプログラムを闇に葬ってしまいした。 ◆文法互換も乱れましたが、メンバー属性のタイミングをフィンガー記述で一元化 するという新しい概念のための代償です。幸いにも修正個所は少なく、その場所 も明確ですから、お許しいただきたいと思います。 ◆何はともあれ、ピッチベンドの指定とホールドの指定を取込んだことで、Museは 初級シーケンサーから中級シーケンサーへと格が上がったと言ってよいかも知れ ません。
《Ver2.4 開発後記》1999.08.15
◆Museの開発に着手する1年以上も前に、いつかMuseの様なソフトを作ろうと思い MIDIフォーマットに関する本を購入していました。その本は、比較的専門的な内 容で、いざ開発に着手しようとした際には、あまり役に立ちませんでした。 その記述は、基本的なことがすべてわかっている人に対しての説明だったのです。 ◆Muse開発がここまで来た今、改めて読返してみました。そして、そのほとんどを 理解できる自分に驚いています。忘れもしない今年の成人の日に、プロトタイプ のコーディングを開始して以来、私はMIDIに関する諸々の知識を吸収し続けてい たのだなぁと、しみじみ感じるのです。 ◆さて今回、ドラムマップに拡張音が存在することをまさにその本から知りました。 今まで純標準の47音のみのサポートでしたが、16音増強し63音にしました。 それに伴い、試聴ボタンの配列が変り、デッドスペースが発生したので、以前か ら気になっていた不足機能を強化する切っ掛けとなりました。それは、ドラムの 試聴ダイアログでの、ドラム音に対するエフェクトの確認機構です。 ◆自分の成長を自分自身で感じるという喜びを味わった、今回の改版劇でした。
《Ver2.5 開発後記》1999.08.25
◆“二大巨頭”という言葉は、両者が切磋琢磨してその対象を高めていくという、 自然の摂理が生み出す必然なのかも知れません。古今東西、数々のテーマに於て この現象が見られます。MIDIフォーマットの世界も例外ではありません。 GSとXGがそうです。前回バージョンアップしたドラム拡張音ですが、残念な がら両者で異なる配列を持っていました。私のようなアプリケーションの開発者 から言わせると、歩み寄って共通仕様を組んでくれなかったことが遺憾です。 勝負は音色そのもので行って欲しかった。音色マップのような基本仕様は一緒に して欲しかった。だって、土俵が違ったら戦にならないじゃないですか。 ◆という訳で自衛手段の発令です。GSとXGのラジオボタンを設け、ドラムマッ プ自体を内部で整合させるという設計を捻出しました。これならば、Museのコー ディングデータは共通に使用できるし、どちらの音源でも同じ演奏が再現できる 訳です。我ながら、なかなか優れた行司案だと感じてます。でも、各音源に指定 するプロパティなので毎回指定するのは面倒です。そんなこんなで、とうとう初 期化ファイル(muse.ini)を立ち上げてしまいました。 ◆もう一つ、かなり骨のある強化をしました。メンバ色一覧のダイアログに、演奏 楽器を表示させる様にしたことです。このため、横型レイアウトを縦型に変更し ました。従来のレイアウトはピアノ鍵盤の縦横比イメージに合っていて気に入っ ていたのですが、楽器名を横文字で表示するためにはしかたありません。 ◆でも、レイアウトの変更などは鼻歌混じりの作業であり、問題は表示自体の制御 でした。Museは楽器の持替えができるので、この表示はリアルタイムで行わなけ ればなりません。シークバー連動の表示制御や、最初に構える楽器の抽出など、 悪戦苦闘しました。結局、文字列表示と基本的に同一の制御であることに気づき 一気に霧が晴れたという所です。複雑だと思われる制御も、整理体系化すれば、 見通しが良くなるということを身をもって知りました。
《Ver2.6 開発後記》1999.09.22
◆今回は一種のバグFIXバージョンといった感じです。連符内に記述された遅延効 果を伴うメンバー属性において、その遅延音長が連符内配分長ではなく、実音長 になっていたことに気づき、直しました。また、和音が連符内に入っている場合 に配分音長の考慮欠落があったので、手を入れました。加えて、表示上の些細な 問題ではありますが、フィンガー拍数、テキスト表示領域、楽器の試聴のそれぞ れに改修を施しました。 ◆さて、前回のバージョンから今回に至るまで、実はMuseにとって大きなイベント がありました。前回の改版の直後の8/30に、ものは試しと、かの有名なダウンロ ードサイト「窓の杜」に公開を依頼してみたのです。そうしたら、その日の内に いともあっさりとニュースに掲載されました。その影響で、掲載後12時間で 1000件を越えるダウンロードが加わりました。 ◆この勢いに乗って翌8/31、今度は「Vector」に投稿。9/3に採用通知が届きまし た。更に9/7、今度は「フリッポ」というサイトから掲載の依頼を頂きました。 同日、(株)KKベストセラーズ「Cyber Globe」という雑誌からCD-ROM掲載の依頼 があり、続いて9/18に(株)アスキー「テックウィン別冊」からも掲載の依頼を頂 きました。 ◆今思い返すと、この一連の動きはMuseにとって、船出のようなものかも知れませ ん。海は広く、船は小さい。でもまずは沈むことなく滑り出しました。もう後に は引けません。舞上がっちゃいけない、浮足だってはいけない、と思いつつ、 やはり嬉しいというのが正直な感想です。だって、人から認められるということ が自分の存在意義の確認には最も効果的なのですから。 ◆そして、なにより楽しみなのは、未知なる人から舞込んでくるe-Mailがグッと増 えたことです。一体明日は、どんな人とコミュニケーションができるのだろう。 考えただけで、ワクワクしてくるのです。
《Ver2.7 開発後記》1999.10.04
◆思い込みや勝手な解釈は、大抵の場合間違っているものです。ドラムパートは、 その音程により音色を規定するため、ピッチ指定などできる訳がないと思い込ん でいました。もしできるとしたら、スネアからシンバルに次第に音色が移ってい く様な、音楽版モーフィングという高度技術になると勝手に想像していました。 ◆ところが実際に試してみたら、ちゃんと同一の音色でピッチが変化するではない ですか。それどころか、ドラム音色の表情をかなり変化させることができます。 ドラムRollに関しては、ロールスピードの調整といった変化さえ起ります。喜び 勇んで早速実装することにしました。これでドラムを鳴らす楽しみが増えます。 ◆改版のついでに、Museが生成するモードレスなダイアログ群に、スクリーンに対 する四隅フィット機構を付けたり、メンバ色一覧の楽器表示のちらつきを抑止し たりしました。また、エクスポートMIDIで拍数メタイベントの出力を止めました。 ◆さて、実は今回、もっともっと大きな思い込みによる過ちの修正を施しました。 それは著作権侵害の件です。多くのホームページでMIDIデータが掲載されている ことから、MP3の様な原音コピータイプでなければ著作権に抵触しないと勝手に 解釈していたのです。これがとんでもない話であることを大海の中で知りました。 船出したMuseが初めて出会う嵐と言えましょう。 ◆という訳で、Readme.txt のすべての例示楽曲と、添付している Sample*.mus を 見直し、JASRAC のホームページで著作権が消滅していることを確認しました。 嵐は去り、晴れて公開可能な状態になりました。さあ、また航海を続けましょう。
《Ver2.8 開発後記》1999.10.30
◆もし、MIDIファイルをMuseフォーマットに変換できたら、世界中に存在する膨大 なデータをMuseで鳴らすことができます。それは初版の頃から思い付いてはいた のですが、MuseはMIDIに比べて器が小さいので、各種イベントを取りこぼしてし まい、まともに変換できないだろうと思っていました。 ◆しかし当時と比べて、Museもかなり成長しました。そこで、mid2mus.exe の開発 に着手することにしました。音長に対する表現機構が全く異なるので、大変苦労 しましたが、どうにか及第点に達する段階にこぎ着けました。 このツール、始めはMuseパッケージの付録としてフリー配布しようと思っていた のですが、もっと面白いリリース形態に気づきました。 ◆それは私にMuseデータを送ってくれたら、ご所望の方へプレゼントとしてお贈り するという方法です。この方法の卓越したところは、一方向の提供形態であるフ リーソフトMuseのコミュニケーションを双方向にすることができる点にあります。 私がMuseを提供し、利用者がデータを返し、更に私がmid2musを贈るのですから、 最低でも一往復半のやり取りを起すことができます。 ◆さてMuse本体の話題に戻ります。今回、mid2mus.exeの開発に際し、保有してい るMIDIファイルでテストを繰返したのですが、2つ気付いたことがありました。 1つは、ドラムセットの切替えが、そのチャネルのプログラムチェンジで簡単に 行えるということです。そこで、Museもドラムセットの選択を可能にすることに しました。文法上はガードを外すだけで済みましたが、いろいろなダイアログに 影響を与え、結構手間がかかりました。 ◆そして、またしてもGSとXGの仕様差に悩まされました。エスニックやSFX の音がXGでは簡単には出ませんでした。両音源の互換性を維持しつつ、鳴らす 方法もあるのですが、あまり凝ると重たくなってしまうので妥協しました。 そろそろ、MuseもGSとXGの分岐点まで到達したのかもしれません。 ◆もう1つは、モジュレーション(揺らぎ)の遅延効果を使用しているデータが思い の外多いということです。確かに、市販のキーボードの左端にはピッチベンドと 並んでモジュレーションのホイールが付いている様です。 ◆という訳で、揺らぎ・残響・コーラスの3つのエフェクト指定に遅延効果を実装 することにしました。これで結局、ほとんどのメンバー属性で遅延効果が使える 様になった訳です。始めから、何も考えず機能実装してしまえば良かったのです が、私は『不要な機能は無駄なだけでなく、邪魔なものである』という思想を持 っているので、どんな些細な機能実装も充分な検討を施した後でないと実行する 気になれないのです。軽いフィーリングなのに何故か高機能というソフトを実現 するには、機能実装の決断検討にかける時間が、大きく影響すると思うのです。
《Ver2.9 開発後記》1999.11.23
◆毎回、新しいバージョンを出す度に「もうこれで完結編!」と思ってリリースす るのですが、何故か連鎖的に次々とテーマが持ち上がってしまいます。せっかく ドラムセットが各種選択できるようになったけど、ドラマーが一人では、異なる ドラムセットを重ねて同時に演奏できません。この指摘はパワーユーザの一人、 百元氏から頂きました。尤もな話です。そこで、チャレンジ! GSとXGの差 に怯えながらも、どうにか利用者に差を意識させない仕様で実装できました。 ◆実にゆっくりしたペースではありますが、MuseはMIDI仕様の進化の軌跡を忠実に トレースしながら強化しているように思えます。そうなると、次にくるのは音色 パラメータの制御NRPNです。しかし音色加工の世界に入り込むと、大変な騒ぎに なってしまう感があり、今回は開発着手を思い止まりました。 ◆演奏時間55分、全12曲。CDアルバムを丸ごと詰込んだデータが送られて来 ました。Museを開発した本人も流石に腰が抜けそうです。そのデータは、各曲を 個々のファイルで入力し、最後に束ねて1ファイルにしたとのこと。その際、単 純に連結すればよいわけでなく、曲と曲の間で、メンバー属性やフィンガー属性 の初期化を行わなければなりません。特にフィンガー属性の初期化は、だらだら と長たらしいものになっていました。 ◆今後もこの様な束ねの大作が登場することを期待したい所ですが、そうなってく ると、どうにか初期化の手間の緩和案を講じたくなります。しかし単純な初期化 コマンドを作るだけでは芸がないと感じていました。その時、半年以上も前のク レームを思い出しました。それは、音名をすべて英米系で入力する場合、いちい ちすべてのフィンガー属性にx1を指定しなければならない、というものでした。 ◆思い出した瞬間に、2つを同時に解決する*FINGコマンドの設計が完了しました。 という訳で、今回は DRUM と FING という2つのコマンド追加となったのです。
《Ver3.0 開発後記》1999.12.30
◆バージョンの桁が上がる時は、劇的変化をするのが一般的ですが、それ程派手な 機能強化ではありません。考えてみると、進化の過程で偶然人類が10本の指を 得たため10進法を採用しただけのこと。巷ではミレニアムだなんだと大騒ぎで すが、2000年も16進法だと7D0年、2進法では11111010000年で、あまりキリが 良い感じがしません。でも自然の摂理に節目がないからこそ、人工的な節目を何 らかの形で設定することが、人間にとっては大切なのかも知れませんね。 ◆さて、今回の強化は3つ。一つは、アルペジオの記法をサポートしたことです。 Museの構想を練っている段階から、自分自身で絶対欲しいと思っていながらも、 連符・和音・コードが複雑な入れ子になった場合の解釈定義の煩雑さから、半ば 断念していた機能です。小学校の頃、ギター1本でなんて素晴しい伴奏ができる のかと驚いた経験があり、ずっと後にそれがコードであることを知りました。 だからコード機能は私にとって絶対必須だったのです。でも、すべての音が一辺 に鳴るとギターらしくありません。今回のアルペジオ実装で、当初準備したToDo リストが総て消し込まれました。これは、私にとって記念すべきことです。 ◆今一つはコマンドラインの引数で、起動時のオプションを指定できるようにした ことです。この強化のトリガは、これからミューザーとしてデビューしようとし ている、同僚の 内藤義明 氏に寄ります。彼はなんとMuseファイラーの開発に 着手してくれました。複数の曲を管理できないMuseにとっては心強い限りです。 皆さんから頂いた曲をBGMにしてパソコンに向っている私にとって、アルバム 機能は大変嬉しいものです。 ◆もう一つはスペースキー等、キーボードによる演奏制御を可能にし、更にエラー メッセージをクリップボードに出力する様にしたことです。これは、名古屋南山 大学の教員の方が切っ掛けを与えてくれました。視覚障害を持つ学生に試行させ てみたいというご要求です。マウス利用が困難であり、キーボードが重要なI/F であるという事実も、改めて認識させていただきました。果して今回の強化、視 覚障害を持つ方に認めてもらえるでしょうか?そして使ってくれるでしょうか? 不安と、今までにない大きな期待の入り混じった年の瀬となりました。 ◆3つの強化とも地味なものではありますが、1つ目は自己の初心を貫徹した最後 の機能であり、後の2つはMuseが他者との新しい関わり方を開始したという意味 で、節目バージョンに相応しいと、私は思っています。
《Ver3.1 開発後記》2000.01.15
◆もし、ソフトウェアにも誕生日というものがあるなら、Museの誕生日は1/15です。 ちょうど1年前の今日、Museの最初の一行目をコーディングし始めました。 今回のバージョンアップ・テーマは“曲想表現の強化”とでも申しましょうか。 ヴェロシティ(強弱)の相対変化、微妙なタイミング制御(微分音長)、そして柔軟 なテンポ指定の3つの強化を行いました。1年が過ぎてなお、これ程の文法上の 強化をする余地があるとは! 「音」なんて、ただの空気の振動なのに、どうし て「音楽」って奴はこんなにも奥が深いのでしょう。 ◆中でも“柔軟なテンポ指定”の強化は大手術でした。手術は何日にもかけて行わ れ、一時は死ぬのではないか(私ではなくMuseがです)とさえ感じました。なにせ、 時間制御の根幹部分にまで手を入れたのですから。%部分の強制タイミング合せ に関する文法互換も崩してしまいました。お蔭で、今までのデータはコンバート しなければならないわ、mid2mus.exeも作り直しを余儀なくされるわで、大騒ぎ です。もっとも悩まされたのは、すでにMuseを利用している多くのユーザの方に この事態を把握してもらうことでした。でも、河合君がホームページに掲示板を 作ってくれたお蔭で、この困難もかなり緩和されました。心底感謝しております。 ◆満一歳を迎えたMuse。手術は成功しました。新たな曲想の表現手段を装備して、 また歩き始めます。これからもご支援の程、よろしくお願いします。
《Ver3.2 開発後記》2000.03.02
◆Muse文法は一種のプログラム言語です。だから、デバッグの容易性はとても重要 なポイントです。その意味で自分自身が欲しいと思いつつ、他のプログラム言語 にもないので、許容していた点がありました。それは、ブロックコメントの階層 記述です。そもそも!マークという開閉関係も定かでない1文字の記号を割当て いたので、それを表現するのはとても困難でした。文法互換は崩したくないし、 さりとて、もう特殊文字は残っていません。 ◆しかし先日、突然に閃きました。スタッカートや調性記号のように!の列挙記述 個数を利用すれば表現できるのです。自分でも驚いているのですが、入れ子だけ でなく互違いの関係も記述できる、ちょっと他のプログラム言語では例を見ない ブロックコメントを実現できました。 ◆以前より気になっていた、タンギング時のぼやけた印象にも手を打ちました。 ノンレガートやマルカートをスタッカートの一種として実装し、ゲートタイム 制御を統一的に扱える表記を与えました。文法互換も維持でき、納得の仕様です。 ◆複数の楽章/楽曲を含む大作が増えてきました。そこで、各楽曲の頭出しを容易 にするMARKコマンドを実装することにしました。この機能のヒントは百元君から もらいました。また、STOPやMARKがあってもダイレクトなシークポイント指定を 可能とするため、頭出しの操作仕様をスライド領域から左右の三角ボタンへと変 更しました。データ内容に寄らない、統一感のある操作仕様になったと思います。 ◆ホームページの掲示板にて頂いた2つのご要求にも対応しました。1つは、Muse のウィンドウを常に手前に表示する機構で、データ作成時の使い勝手が向上する と予想されます。もう1つは、起動時のウィンドウ位置を初期化ファイルに記憶 することです。前々から逡巡していた機能ですが、MuseFilerとの連携という根 拠を示していただき、実装する気になりました。一条さんのお蔭です。 ◆メールで頂いたご要求にもお答しました。それは強制タイミング合せのメンバー 毎の指定です。この実装により、私自身今まで歯痒い思いをしていたスコア譜と パート譜の混在が可能になりました。そして、同じ記述発想で、調性記号の指定 もメンバー単位に行えるように改良しました。これは移調楽器が混在した交響楽 の記述に絶大なる効力を発揮します。鈴木さんのお蔭です。 ◆実はもう一つあります。Windows2000への対応です。ちょっとトリッキーなこと をやっている部分があり、それが引っかかってしまいました。シークバーにおけ るマウス右ボタンのリロード&ラン機構です。どうやらWindows2000はスクロー ルバーに右ボタンによる標準的なポップアップが実装された模様です。そこで今 回、正当なフック処理を行う様に改めました。桝井さんのお蔭です。 ◆前回の大手術の後遺症がありました。無駄なMIDIイベントを多量に吐出すという 障害です。見つけにくいバグだったのですが、岡本さんの詳細な現象レポートの お蔭で完治することができました。この様にMuseを支えるミューザーの力が、 最近一段と大きくなってきました。感謝の念で心が満たされる思いです。
《Ver3.3 開発後記》2000.04.03
◆前バージョンから薄々感づいてはいたのですが、とうとうReadme.txtのファイル 容量がmuse.exeより大きくなってしまいました。あまりにも長くそして日増しに に膨らむ内容に、ミューザーの方々が閉口しているのではと心配です。でも一般 書籍に比べれば薄っぺらなものですから、ご容赦下さい。分冊も考えたのですが、 私はインストールするとファイルがごちゃごちゃ展開されるソフトが好みではあ ありません。だから、muse.exeもDLLなしの一発勝負で行くつもりです。 ◆今回のバージョンで強弱“v”にも遅延効果を記述できるようにしました。ピア ノ曲のデータを作成する際、クレッシェンドなどに音量“V”を使うことに妙な 罪悪感がありました。これからは容易に、そして積極的に“v”が使えます。そ れに“v”はフィンガー単位なので、ドラムに表情を付けやすくなります。 ◆もう一つ。DOS窓からウィンドウを起動することなく、バッチ的に、Museデータ をMIDIファイルに変換するコマンドラインオプション“*O”をサポートしました。 あまり使用局面がないかもしれませんがMMLコンパイラ風に利用できます。 実はこの機能は、私自身の開発用です。新しい文法を実装した際、過去の皆さん のデータで上位互換が保証されるかを、MIDI出力しバイナリ比較してチェックし ています。その作業がバッチ的に行えるようになって効率が上がります。 ◆初版から気になっていてたのですが「まっ。いいか」というお気楽モードで放置 していた不具合にも対処しました。再描画の時、音が出ていない鍵盤に色が付い てしまうことがよくあったのです。今回プロセスのシグナル制御のお勉強をして、 やっと手を打てました。お気楽も良いけど、立ち向えばその分賢くなるものです。 ◆最近になって、やっとコードネームの命名規則に自分なりの解釈を与えることが できました。今までは、各コードが固有名詞の如くパターンを決めていると妥協 するしかない程、その規則性を見出せなかったのです。今回見つけ出した規則性 をもとに自信を持って新たに12コードを増強し、合計41コードとすると共に テンション記述も加えました。数学的組合せとしては、完全に網羅しているとは 言えませんが、音楽的には譜面記載のほとんどのコードを書下せると思います。 ◆また、長い開発後記になってしまいました。できるだけReadme.txtの容量を増や さぬよう短くまとめようと思っていたのですが...。この辺で筆を置きます。 ちなみに私のe-Mailアドレスが変りました。よろしくお願いします。
《Ver3.4 開発後記》2000.05.10
◆よく音楽は、作曲家と演奏家が必要と言われますが、私はそれに加え第三の重要 人物“聴衆”が必要だと考えています。音楽が完成する瞬間とは、演奏された楽 曲がそれぞれの聴衆の頭の中で再構築される時なのです。それは聴き手の人生経 験という各人各様のにかわで組立て直される訳であり、同一の音楽でも聴き手の 数だけ微妙に異なる音楽が存在しているとも言えます。 ◆今回ベートーベンの交響曲をミュージングしてみて、この念を更に確信しました。 彼の創り出した響きが、200年近い時の流れを越えてMuse演奏され、私の頭の 中、いや五感で再構築されていく。そんな感じを強く受けたのです。 ◆さて本題の開発の件ですが、流石に交響曲ともなると各楽章の演奏時間が長く、 シークバー上でどこからどこまでが1つの楽章か知りたくなりました。そこで、 テキスト表示領域に表示している*MARK位置のゲージマークをON/OFFできるよう にし、*STOPも色違いのゲージマークで表示するようにしました。この機構はデ バッグの際にも便利だと思います。またよくCDジャケットに記載されている各 楽章の演奏時間も知りたくなりました。そこで、上記ゲージマークを表示してい る時に、マウスの左ボタンクリックで演奏時間がポップアップする工夫をしてみ ました。 ◆文法上のちょっとした強化も行いました。曲想表現を豊かにするため、前々回の ノンレガート表記を水平拡張し、スタッカートやスタッカティシモよりちょっと 長めの指定も可能にしました。これで八分割のゲートタイムは完全サポートです。 ◆例によって少々の改造でバージョンアップをしてしまいますが、ぜひ利用してみ てください。ソフトウェアにも“聴衆”が必要です。企画制作する人、広く世に 知らしめる人、そしてそれを使用する人の三者がそろっていなければ存在意義を 失います。皆さんに使ってもらうことで、初めてMuseは完結すると思うのです。
《Ver3.5 開発後記》2000.06.17
◆開発を始めて1年半も経ってしまいました。元来移り気な私が、これ程長期に渡 り一つのソフトウェアに取組むなんて、冷静に考えてみると気を失いそうです。 ◆今回は“コード転回”を実装しました。当初はコードネームだけで平易に伴奏が 付けられることを売りにしようと考えていたのに、気が付くと7つものパラメー タを持つ重量級の機能コマンドになってしまいました。でもコード進行は現代音 楽理論の主軸なので、しかるべき結果かも知れません。転回機構は昨年の4月頃、 百元氏や大塚氏から要求されてから、実に14ヶ月に渡って暖め続けてきた機構 です。特にベース音やテンションをどう扱うか迷い続けました。それ程大袈裟な ものではないかも知れませんが、私としてはしっかり熟成させたつもりです。ま た転回との絡みで、単独記述できた方が良いと考えたコードを2つ加えました。 ◆展開マクロ側ではできるのに、定義マクロ側で繰返し回数が指定できないという 非対称な文法も改善しました。無名マクロを実装した頃から気になってしようが なかったのですが、マクロ解析の複雑さを言訳に後回しにし続けていました。 ◆更にもう1つ。無音の音符で鍵盤アニメーションを実現するという驚くべき発想 のデータも作られるようになり、その対応策を施しました。強弱v0でも鍵盤表示 を行う様にすると共に、MIDIデータを送出せず音源負荷を与えぬようにしました。 これで、v0を使用する限り、どんな過激な鍵盤の乱舞でもモタレが生じません。 ◆皆さんから寄せられたMuseデータも何百という数に上り、10ヶ月前に不安げに 公開した頃の心境を思うと、感激で気が遠くなりそうです。そして、「使い易い」 「楽しい」「感動した」「凄い」「素晴しい」「驚いた」「夢が叶った」という 皆様からのお褒めの言葉が、気を失いかけた私の背中を押し続けるのです。
《Ver3.6 開発後記》2000.07.23
◆「音楽」という言葉を“音を楽しむ”あるいは“楽しい音”として創出した先人 たちのセンスには敬服するものがあります。皆さんから「Museは実に楽しい」と の有難いお言葉を多々頂いておりますが、多分それは音楽の本来の楽しさを阻害 する、派手なだけの機能を実装しないように心掛けた結果だと振返っています。 ◆その意味で、今回はちょっと大がかりすぎたかなと感ずる機構を実装してしまい ました。少々小難しい表現をさせてもらうと、時間に描かれた絵画である「音楽」 を平面に定着させる、と言った所でしょうか。この絵巻物の様な長い絵画を、高 速にスクロールさせる処理に結構苦労しました。しかし何より苦労したのは実装 ではなく設計です。五線譜のイメージをできるだけ残し、Museのデジタルなデー タを如何に表現するか。そのデザインを決める作業は、七転八倒の日々でした。 結局、でき上ってみれば誰でも思い付くような結果かもしれませんが、でもそれ でこそ自然で無理のない仕様の証なのだと考えています。 ◆“ピアノロール”っていうのは結構ありますが、“五線ロール”はちょっと希有 なんじゃないか、そして全メンバーが重なっているなんて見たことがないと一人 悦に入っています。メンバ色一覧のスイッチに連動させるということに気づいた 時がブレースクルーの瞬間だったと回顧しています。それにしても、想像以上に 綺麗な“音楽の絵”が展開され、自分としては大満足です。 ◆もう一つ、文法強化も行いました。名越さんに背中を押されて、音量Vも相対指 定できるようにしました。この機構は、ずっと以前に友人の田中君からも受けて いたのですが、事を複雑にするだけなのではとの気持が払拭できず、今に至って いました。でも、Vで各メンバーのバランスを取った状態で一気に全体の音量を 変化させたい、という主旨をお伺した瞬間、実装する気になりました。 ◆さてさて今回の譜面モニタ。作り始める時はやりすぎかなと思っていたのですが、 自分で実際に使ってみるとタイミングずれのデバッグに大変強力な機構であるこ とがわかりました。まさに“一目瞭然、百聞は一見にしかず”とはこのことです。 また、mid2musと併用すれば一般MIDIファイルの疑似譜面による確認ルートも開 拓できた訳であり、他のMMLコンパイラとは一線を画し、さりとて市販のシー ケンサーとも違う、実にユニークなツールに成長したと言っても許されるでしょ う。とはいうものの、“楽しい”のは「Muse」ではなく、それが対象にしている 「音楽」であるということには違いありません。
《Ver3.7 開発後記》2000.08.10
◆半年以上前にVer2.9で思い止まったNRPNの実装を、まさかやることになるとは思 ってもいませんでした。前回の“譜面モニタ”に匹敵する重量級のバージョンア ップです。しかし「もしやるとしたら…」と空想の世界で設計を継続していたの で、思いの他、実装は短期間で完了しました。綿密な設計がいかに実装を効率的 に押し進めるかを、改めて実感しました。 ◆3つの特性に含まれる8つのパラメータをどの様な文法書式で表現するか。文法 互換とMuseの基本理念を維持しつつ実現するにはどうすべきか。波形加工の確認 作業をどの様な機構により簡便に行わせるか。またそのウィンドウはどうあるべ きか。楽器群とドラム群で統一感を持たせるにはどうしたらいいか……。 3つの特性が、3つのエフェクト(RWQ)に相関があることに気づいた時、美し い文法が閃きました。苦行の混迷状態から、突然天空に舞上がる至福の瞬間です。 ◆前回のバージョンは限定リリースの形態を取り、しかも応募者の皆さんから有意 義な意見を掲示板で頂きました。それらの感想をもとにいくつもの手直しを施し ました。薄墨色の縦棒で現在の演奏箇所をリアルタイムに表示すること。演奏自 動追尾の譜めくり機構を実装すること。情報系ダイアログ3種に関して、前回の 位置と寸法を初期化ファイルに記憶し再現すること。特に自動追尾に関しては、 皆さんからの強い要望がなければとてもやる気にならない程、厄介でした。 ◆私自身のアイディアも盛込みました。譜めくり[T]ボタンの等価キーをスペース からタブキーに変更し、鍵盤ウィンドウ側のスペースキーによる演奏制御との競 合を回避しました。また、[A]ボタンを新設して自動譜めくりの楽しさと、ピン ポイント・リロードの使いやすさを両立させました。 ◆さて、話は波形加工に戻ります。これを開発する契機は、Fitさんが公開された MIDIデータです。Museで作ったMIDIデータに他のシーケンサーでリリースコント ロールを付加し、実に伸びやかな残響を与えていました。GSとXGで共通して この効果を得るためには、棚上げし続けていたNRPNに手を出す必要がありました。 できてみると、まるでMuseがシンセサイザーになったような感じです。しかし、 ピッチベンドさえうまく使いこなせない私は、この波形加工の機構はとても操れ そうにありません。ミューザーの皆様が縦横無尽に活用されることを祈るばかり であります。
《Ver3.8 開発後記》2000.09.29
◆2つの機能追加と3つの改変を行いました。機能追加の1つ目は、起動直後に主 なサブウィンドウを表示させる指定を可能としたことです。私は元来ズボラな人 間なので、終了時に次回起動のことに気を使うなんて性に合いません。散らかし たウィンドウが次回も出てくるなんて耐えられないので、初期化ファイルではな く起動引数形式にしました。これで、データ作成用と音楽観賞用のショートカッ トを別に作って管理することもできます。自動譜めくりのスイッチも付けました。 ◆機能追加の2つ目は、前回実装した波形加工を果敢に利用しようとして疑問を感 じたFitさんからのメールがトリガとなりました。波形加工の試聴で調整した音 と実際の演奏音が異なるように感じるという内容でした。よくよく調べてみると 強弱“v”で周波数特性の効果がかなり変ってくることがわかりました。そこで 波形加工のウィンドウに強弱“v”の調整レバーを付け、その効果をその場で確 認できる様にしました。ひとえにFitさんのお蔭です。ありがとうございました。 ◆改変の1つ目は、メンバ色一覧などの各種サブウィンドウにおいて、チェック済 メニューを再度選んだ際、従来それらを閉じていましたが、前面にポップする様 にしたこと。ノートパソコンなど解像度の低いモニタでは、ウィンドウ同士が重 なり、隠し合ったりしますが、その様な場合に作業効率が高まると思います。 ◆2つ目は、譜面モニタにおけるマウス右クリックのリロードの際、演奏開始位置 はモニタ表示上の最左端からでしたが、マウスクリック位置からとしたこと。 表示半ばから再演させたい時、一々譜面モニタのスクロールをせずに済みます。 ◆そして3つ目は、一見すると機能低下に思われるかもしれない改変です。「音源 の選択」メニューにおけるGS/XGの選択ラジオボタンがなくなり、ついでに 不正確な情報しか得られなかったいくつかの欄も撤廃しました。音源タイプ選択 のボタンは、両音源のドラムマップ差を吸収するためだけに存在していました。 しかしXG系音源にはTG300Bというモードがあり、それを利用することでGS互 換となることを知ったのです。DTMをやっている方にとっては常識的なことかも しれませんが、恥ずかしながら私はこんな事も知らずにMuseを開発していました。 ◆この発見の経緯は、草場さんが *DRUM(ドラム転向コマンド)がうまく効かないと いう不具合報告をしてくれたことに端を発しています。それに触発され、岡本さ んが各音源に関する調査をしてくれました。そして、前回のNRPN実装に伴って、 GS/XGの初期化をはじめたことも相まって、TG300Bモードに行き着いたという次 第です。草場さんのご協力には大変感謝しております。また、岡本さんの精緻な 調査レポートは、Museをより高い完成度にしたいという情熱のようなものが感じ られました。Museに成り代ってお礼を申し上げます。まるでお二人と共同開発し ている感覚に襲われた日々でした。自前のドラムマップ変更処理を排除したこと で、副次的に演奏モタレが軽減したし、XG音源でもSFXドラムが使用可能に なりました。本当にありがとうございました。 ◆「音源の選択」ダイアログが小さくなって、機能が減ったように見えますが、そ れは使用準備として指定しなければならない項目が減っただけのこと。利用者に とっては、音源差を気にすることなく気軽に使用できるアプリケーションになっ たと確信しております。私は常々“多機能”と“高機能”は本質的に違うと思っ ています。一般的にはバージョンアップに伴って必ずボタンや欄が増えていくの が普通ですが、それらが減るバージョンアップがあってもよいのではと思ってい ます。否、むしろそれこそが“多機能化”ではなく“高機能化”への道なのでは ないでしょうか。目的が果せるのなら“機能”は少ないほど美しいと思うのです。
《Ver3.9 開発後記》2000.10.21
◆新しいタイプの音源には、更に拡張されたドラム音が存在する事を知りました。 従来、ドラム音域にガードをかけてエラーメッセージを出していましたが、少な くともMuse鍵盤の範囲ですべて通すようにしました。これに伴い、ドラム試聴の ダイアログのボタンフェースも[No Assignment]を減らして実名化しました。 残念ながら、私の持っている音源では鳴らないのですが...。 ◆楽器側でも発音可能な音を増やしました。前回のTG300Bモード採用を踏台にして、 とうとうバンクセレクトまで食指を伸したのです。TG300Bモードがバンク制御に 関してもGS/XGを共通化させることに気づいたからです。今回のバンクセレ クト実装で、ついにMuseは音源の持つほとんどの音を鳴らすことができる様にな りました。しかし実装は大変でした。バンクは歯抜け状態で不規則に並んでおり、 しかも音源モデルによってそれがまちまちなのです。 ◆最も厄介だったのは、未定義のバンクを選ぶと通常の楽器選択さえ効果しなくな るという音源仕様でした。これでは、バンクを駆使したMIDIデータは、再生音源 を限定してしまいます。これを回避するため必要に応じてバンクゼロを送出し、 未定義バリエーションが指定されても、標準音色が鳴るようにしました。不要な バンクセレクトのイベントを極限まで除去し、しかも標準音色が出るように必要 最低限でバンクゼロを挿入するアルゴリズムはかなり神経を使うものでした。 ただし残念ながら、この標準化機構も音源によっては限界があるようですが...。 ◆多分通常のシーケンサーでは、この様なMIDI音源特性に気を使いながら、データ を打込んでいくのだと想像しています。しかし、Museはその煩わしい作業をすべ てプログラムに押込めることに成功しました。メンバー属性 Pにバリエーション 番号を添えるだけで、後はMuseがよろしくやってくれます。利用者は“MIDI”で はなく“音楽”に専念できるわけです。これこそMuseのポリシーなのです。 ◆私自身がMuseで何を実現しようとしているのか、言葉が見つかり始めています。 私は“MIDIシーケンサー”を作ろうとしているのではなく、“音楽シーケンサー” を作ろうとしていたのです。MIDIの機械語的な命令セットを隠蔽し、より抽象度 の高い文法を編み出そうと常に心掛けてきました。MuseにとってMIDIは発音機構 としての手段にすぎず、目的はあくまでも「音楽」なのです。先日、むらったさ んから素晴しいお言葉を頂きました。「私にとってMuseは最高の楽器である」と。
《Ver4.0 開発後記》2000.12.06
◆{とう}2 Museもバージョン4.0まで到達してしまいました。{ちび}2 と機能強化 をしては {しゃあ}2 と版数を上げていく自分が {少}2 恥ずかしい思いです。 そしてついに初版リリースから2年も経過してしまいました。あっという間でし たが、Museを通じ魅力的な多くの{方}2と知合いになれたのが大きな収穫でした。 これからも末永くお付合いいただけると幸いです。 ◆今回も性懲りもなく、細々とした機能強化です。音源の選択をメニュー化して簡 便に切替えられるようにしたり、それに引きずられてメニューレイアウトを見直 したり、フィンガー拍数のメンバー属性を選択できるようにしたり、それに伴っ て最終テンポも表示させたり、譜面モニタの加線をグレーにして視認性を高めた り、右ボタンリロード&ランの反応領域を拍子エリアまで拡張したり、ドラムの 響きを向上させるためにDRUMコマンドでアサインモードを指定できるようにした り、連符内の連結に関する障害を取り除いたり、波形加工データでエクスポート MIDIが間延びしてしまう障害に対応したり、出力するMIDIファイルのセットアッ プ小節を定格化したり、テンポの下限値を%1まで拡張したり、楽器の試聴で9番 バリエーションの試聴も追加したり、コントロールキーを併用したカーソルキー でMARKやSTOPの位置決め機能を付けたりしました。こうして、のんびりと成行き 任せに階段を上っていくのもフリーソフトならではです。しかも、ミューザーの 皆さんと一緒にですから、なおさら愉快な旅です。現に、上記項目の一部は、名 越さん・ぱるさん・FRANZさんたちに、障害レポートを頂いたり、開発のきっか けやアイディアを与えてもらいました。本当にありがとうございます。 ◆Museとはゼウスの9人の娘で、芸術や学術を司る女神たちの総称であり、Music の語源でもあります。もちろん、この事を意識して命名したのですが、先日ある ホームページで面白いことを知りました。実は、彼女たち自身が芸術を遂行する のではなく、人々に霊感(インスピレーション)を与える女神たちなのだそうです。 それはまさに、私のMuseが果そうとしている事にピッタリではありませんか! 更に、単人称でないところが、ミューザーの皆さんとの活動さえ象徴しています。 ◆いよいよ3年目に突入するMuse。果してこの女神たちに、今度は何が起るやら。 実のところ私自身、皆目見当がつきません。新世紀も成行き任せの旅は続きます。
《Ver4.1 開発後記》2001.03.04
◆今世紀最初のバージョンアップは、門出にふさわしく“初期化”に関する改良と なりました。Museの初期化のためのイベントは最大でも0.3秒以内に収まるの ですが、MIDIを譜面化するソフトに対応するためには、最低でも1小節を与えて、 区切りの良い出だしにする必要がありました。しかし、そのためにMIDI再生時に 2秒ほどの待ち時間が発生してしまうという代償があったのです。携帯着メロの データ作成に活用されている方や、ゲームのBGMに活用されている方から、こ の件に関するメールを頂いており、無限ループ形式のこれらのデータでは、この 2秒がとても気になるとのご指摘を頂いていました。 ◆今回、テンポメタイベントを調整用に差挟むことで、小節の区切りを崩すことな く実時間を圧縮できることに気づきました。今まで2秒あったセットアップ小節 のインターバルを約10分の1に圧縮でき、これで譜面化と出だしの空白圧縮と いう両者の要件をほぼ満たす状態に持込めたと思います。 ◆更に、偶然にも全く違う方向から初期化改良の切っ掛けとなる一報が届きました。 Namさんの新しい音源で、ドラム転向が機能しないというご報告です。mid2musに よるNamさん自身の調査の結果、音色指定Pをしないと転向が起らないという音 源固有の問題であることがわかりました。しかし、音源固有の問題であっても、 再び同様の症状がどこかのミューザーで起るとも限りません。そこで、これを回 避する初期化処理を施しました。こちらでは再現しない症状でしたが、Namさん の的確かつ速やかな調査報告のお蔭で効率よく対処できました。心よりお礼申し 上げます。またこれを期に、裏技的なGMとGSのマルチリセット方式を撤廃し、 GSリセットのみとしました。これは前述のインターバル圧縮にも貢献しました。 ◆実は、私自身はMIDIをエクスポートして活用することがほとんどなく、ましてや 未知の音源ともなれば尚のこと、上記のような症状を発見することはありません。 掲示板やメールでミューザーの皆さんとのやり取りがなければ、Museもこれらの 改良をすることなく一生を終えていたことでしょう。まさにMuseは、ミューザー の皆さんのご意見ご感想で「呼吸している」のだと感じる春の日であります。
《Ver4.2 開発後記》2001.04.16
◆プログラム開発は、各フェーズそれぞれがエキサイティングです。まだ影も形も ない時期に頭の中で次第に形にしていくフェーズ。実際にコーディングを始めて、 処理上の工夫や新しいアーキテクチャを学んでいくフェーズ。そして完成した後 に、いろいろな発想で改版していくフェーズ。更に、一般には嫌われていますが、 私にとって最も興奮するのがバグと戦うフェーズです。 ◆バグは無いに越したことはないのですが、その戦いの中で学ぶものも多いのです。 私は、障害を追いそれに対峙している時、自分が別の人物になっている様な錯覚 に陥ります。ある時は難病を治そうとしている外科医。ある時は、限られた情報 から真理を見出そうとする科学者。ある時は犯人を次第に追いつめていく刑事。 そしてある時は、すべての状況を客観的論理的に判断して、判決を下す裁判官。 所詮自分がまいた種ですから、あまり偉そうなことは言えないのですが...。 ◆今回の改版内容は、その大半がバグ対処です。一番厄介な障害は多重起動の抑止 部分で起ったものでした。起動タイミングの関係で、まれにウィンドウが半死半 生の状態になってしまうのです。*pオプションも併用すると、MIDIデバイスまで ロックすることがありました。これは致命的な障害です。しかし、私の環境では あまり起らないこともあり、原因にたどり着くまでにひどく時間がかかってしま いました。しかも原因がわかってからも大変でした。どのようにシーケンスを組 み直しても、過激な連続起動をするとゾンビのようなウィンドウが出現してしま うのです。多重起動抑止の際、今までのMuseは、既存のウィンドウを強制終了さ せて、後から起動するタスクを優先する方法を取っていたため、どうしても無理 があったのです。 ◆結局、根本的に方式を変えることにしました。素直に後から起動した方が身を引 く方法です。この方式にしたことで、かなり強靱になりました。数々のMuse関連 ソフトが *p を利用しているので、このオプションと *e だけはタスク間通信で 受け渡すようにしました。ただし、*f *m *s *a など、他のオプションはあえて 継承しないようにしました。加えて、ゲージマーク表示、譜面モニタの拍子・小 節調整などを維持するようにしました。これにより、Muse関連エディタの連携に おいて、操作性が向上すると考えています。 ◆上記以外にもいくつかの障害報告を頂き、それなりの対処をしました。現時点で ほぼ潰せていると考えています。しかし、音源固有の特性によるものや、当方で 再現性が得られないものなど、一部の方の症状は完治させることができませんで した。今後とも継続的に調査しますのでご容赦下さい。考えてみると、私の生み 出すものは、私自身を越えることはできません。そして、私自身が完璧ではあり ませんので、当然のことながらMuseも完璧ではない訳です。まあ、多少持病があ った方が長生きするとも申します。今後とも末永くお付合いください。
《Ver4.3 開発後記》2001.07.08
◆Museにしてはバージョンアップのインターバルが長かったのですが、長い割には 文法上の機能を1つ追加したに留まりました。掲示板でミューザーの方々から多 くのアイディアを頂くのに、ほとんど実現できない自分が少々不甲斐ないです。 ◆ここの所公私ともに多忙になり、楽天家の私も流石に精神的余裕がありませんで した。バージョンアップに相応しく、もう少し手を加えてからと思っていたので すが、ボヤボヤしているとまた何ヶ月も経ってしまうので、公開に踏切りました。 ◆唯一の強化機能は、コード記述時の逆アルペジオです。和音記述との関係、特に 複合記述時の整合を取るのに少々苦労しましたが、どうにかうまく行ったようで す。本件は、アルペジオ開発時に気になっていた機能ではありましたが、それ程 強い要求も無いだろうと思って実装しませんでした。今回、掲示板やメールを通 じ、実はとても欲しかったという方が思いの外多かった事を知りました。 ◆まるみぎさんのホームページに居候しているMuseですが、去る6/11についにアク セス・カウントが10万に達しました。思えば遠くに来たものです。たかみちえ さんから素敵なMuseのイラストも頂きました。ありがとうございました。 ◆今日は七夕です。七夕は雨の特異日と聞いたことがありますが、今年の梅雨は雨 が少なく本日も晴天。忙しさに追われて、最近夜空を見上げることなどありませ んでしたが、今日は綺麗な星が輝きそうです。久しぶりに天上の音楽に耳を傾け てみようと思います。
《Ver4.4 開発後記》2001.11.18
◆既にMuse文法の表現力は、音源の差異を吸収できるギリギリの所まで至っている ため、そのポリシーから言ってもはや本質的な機能アップはなく、せいぜい操作 性やモニタ機構、あるいは“音”とは直接関係のない簡易文法の強化が残される までかと思いきや、メニューを追加する程のバージョンアップを施すことになり ました。実に5ヶ月近く間をあけた今回のリリース。それは「演奏会場の設定」 のご提供です。 ◆一般に出回っているMIDIファイルを覗くとシステムエフェクトと呼ばれる設定が 日常的に活用されています。また、MIDIの解説を行っているホームページでは、 この機能説明が最終ページを飾る場合が多々あります。Museもシステムエフェク トをサポートできたら、一端のシーケンサーとして“卒業証書”を頂けるかなと 思っていました。しかし、システムエフェクトは音源による癖が強く出ます。 それが実装への意欲を殺ぎ続けてきました。 ◆ところが、ひと月ほど前にある事に気づきました。文法としてのサポートをせず プレーヤーとしてのMuseにこの調整機構を持たせればいいのではないか!? 丁度、 高級コンポがいろいろな音質特性を自分好みに調整するツマミを持っているよう に、Museにも「My音源」に対するシステムエフェクトの調整レバーを付ければ良 いのです! こうして15個もの調整パラメータを持つ「演奏会場の設定」ダイ アログが完成しました。同一のMuseデータでも石造りの教会で演奏させたり、大 ホールでのコンサートにしたりできます。しかも既存のMIDIファイルをmid2mus で変換すれば、それを「My会場」で演奏させる事さえできるのです! ◆しかしいざできてみると、15個の設定値から自分好みの組合せを見つけ出すの は大変な作業でした。そのことはすなわち、気の利いた組合せには高い付加価値 があるという事です。そうなると、見つけ出した組合せをデータ化して、ミュー ザー間でやり取りがしたくなります。少なくとも私には、そういったやり取りの 風景がとても楽しいものに想像されました。「私の自慢の設定を味わってみて!」 「こんな会場はどうでしょう?」といった案配です。この風景の魅力は音源差に 対するポリシーを乗越えるほど大きなもので、とうとう ROOM コマンドを立ち上 げてしまいました。そして、ROOMコマンドとダイアログ設定のどちらを優先する かを決める“Fixスイッチ”を設けることで、始めに考えたプレーヤイメージと、 ROOMコマンドでのデータのやり取りを両立させました。 ◆システムエフェクトのMIDIコードを、初期化インターバル0.3秒の中に押込める 事やmid2musの対応に大変苦労しましたが、どうにかやり遂げました。手前味噌 かもしれませんが、MIDIプレーヤーとしてもユニークな機構を提供できたことに 大きな喜びを感じています。さてさて、これで果してMuseは、シーケンサーとし ての“卒業証書”を頂くことができるでしょうか?
《Ver4.5 開発後記》2002.02.02
◆初版をリリースしてから丸3年が経ちました。先日、Museの機能強化項目を書き 散らした“検討リスト”を整理し優先度を付けてみました。強化項目自体がもう 数える程しかないだろうと高をくくっていたのですが、なんと100を越える項 目が列挙されているではないですか! これは“卒業”なんて言ってられません。 このまま行くと冗談抜きで“ライフワーク”になってしまうかもしれない。(笑) ◆今回の強化は、視聴覚それぞれの表現力に関するものです。聴覚に関する方の強 化は“グルーヴ感”の指定です。もうかなり前から、スタッカートに対するいく つかの要望を頂いていました。音符1つ1つに指定するのではなく、vやoのよう にそれ以降に一律効果する指定方式も欲しいとか、短くするだけでなく長くする 指定も欲しいとか、それらの値を定量的に指定したいとかです。 ◆しかし、単純にそれらの要求を個別に実装していてはMuse文法としての統一感が 崩れてしまいます。そもそもこれらの要求の背後にはもっと奥深いものがあると 感じていました。それらをまとめ上げる1つの鍵が“グルーヴ感”にあったので す。音の出だしと音の切れ目における微妙なズレを調整することで、デジタルで 正確無比な音楽を、躍動感あるものにすることができる。スタッカートという奏 法は音の切り方におけるグルーヴ感の、最も特徴的な表現の1つだったのです。 ◆こうして、pqという一対のフィンガー属性を設定することになりました。音の切 れ目だけでなく出だしに対しても対称的な扱いができるようになり、高い抽象概 念のもとにまとめ上げることができたと思っています。ただし外部仕様は統一的 でも、コンパイルアルゴリズムに要するデータ構造はpとqでは大違いでした。今 まで前方にのみ処理していた解釈がpによって初めて過去に遡るようになったの です。おかげで新しいポインタを新設しなければなりませんでした。未来と過去 では大違い。開発中、時間に関する哲学めいた気分にさえなってしまいました。 ◆更に、新しいフィンガー属性値であるpqを「フィンガー拍数」ダイアログのフッ ターに表示するようにしました。ついでに今まで表示しきれなかった波形加工の 属性値や調性の状態も添えました。でも一番苦労したのは“グルーヴ感”の概念 説明に当てる“言葉”でした。当初は「音頭」と「音尾」にしたかったのですが 「音頭」では“盆踊り”みたいになってしまいます。日本語は難しいです。(笑) 結局、「出音」「止音」という造語を作りだし、説明することにしました。 ◆視覚に訴える機能強化はフォント指定です。T.MonmaさんやMIZさんをはじめとす るミューザーの皆さんは、テキスト領域というたった一行のエリアを縦横無尽に 活用し、テキスト・アニメーションという表現技法を創出してくれました。しか し、今までMuseで使用できたのは、プロポーショナルな“MS Pゴシック”と いうフォントのみでした。この制約をどうにかしたいと常々感じていましたが、 フォント再現性の問題から今一つ実装する気になれなかったのです。でも今回、 皆さんの熱き期待に後押しされて、FONTコマンド実装に踏切りました。 ◆Windowsはそのフォントデータのインストール状態によって、フォントの再現性 が変化するアーキテクチャです。この事はMuseでデータを作成する際、再生する パソコンの状況を意識しなければならない事を意味しています。そこで、始めは 単純に非固定ピッチと固定ピッチの切替サポートだけにしようと思ったのです。 しかし、今後のことを考えるとそのレベルの表現力ではすぐに物足りなくなって しまうのではないかと考え直しました。思えば、著作権フリーのフォントデータ も出回っています。もしかしたらMuseのためにフォント自体も作成し、それを添 えて提供するパワーミューザーも現れるかもしれないと考え、フォント名指定も 可能にする仕様としました。もちろん、太字・斜体の修飾付きです。 ◆できてみると、今度はフォント自体を選び出すサービス機構が欲しくなりました。 メモ帳など他のアプリケーションでフォント確認をしてもらうという運用案も考 えたのですが、やはりMuse自身で自律的に確認できた方が格段に便利です。こう して「フォントの確認」ダイアログまで立ち上げてしまいました。 ◆さてさて、今回の2つの表現力強化。これらを活用してミューザーの皆様はどん な素晴らしい“芸術”を創出してくださるでしょうか。今から瞳を輝かせて待っ ている3歳児のMuseなのです。
《Ver4.6 開発後記》2002.09.06
◆今からおよそ2年半前、Hashiitaさんから頂いた初めてのメールを今でもはっき りと覚えています。「小学校の頃、音楽の成績は“2”以外とった事がなく(笑)、 音楽的知識がほとんど無かった自分でも充分楽しめる『Muse』は素晴らしいです」 彼は、その自嘲表現からは想像も付かない程の高品質なデータを次々と投稿して くれました。その当時、彼から受けた要望が「現在の16色より色数をもっと増 やし、各メンバーの色を指定することはできないか?」というものでした。殿堂 の登録曲がまだ数十件程度だった頃のお話です。登録曲が1000件を越えた今、 やっと2年越しのご要望に答えることができました。COLRコマンドのご提供です。 ◆始めはコマンドではなくメンバー属性とし、どのようなタイミングでも色の変化 を可能にしようと思ったのですが、譜面モニタにおける処理があまりに煩雑にな るため断念しました。まあ今回の仕様でも、Muse演奏時の曲想イメージ表現が文 字通り多彩になると考えています。ぜひ、お好みの色で演奏してください。 ◆現在のMuseの文法仕様は、遅延音長は省略音長が使用できないはずなのですが、 コンパイル処理のガードが甘く、部分的省略でコンパイルが通過してしまうとい う不具合に気づきました。今回は、きっちり文法チェックを行うよう改善しガー ドを堅くしています。それに伴い、現在までに登録されている殿堂曲の全点チェ ック作業も行いました。1000曲を越えるデータなので気が重かったのですが、 *oコマンドを利用してバッチで一括チェックすることで比較的容易に作業を終え ました。結果として17曲でエラーを検出しました。まるみぎさんに差替を依頼 済みです。ちなみに、その中の1曲はなんと私自身のものでした。(苦笑) ◆YSTKさんのご要望で微分音長の範囲拡大も施しました。従来はi60までのサポー トでしたが、i960まで拡張しました。いろいろな局面で音長比率による指定を施 す場合があり、その際の把握のし易さというのが主旨です。この手の改良は比較 的容易で、しかも効果もありそうなのでさっそく採用いたしました。YSTKさん、 ありがとうございました。 ◆Museのコンパイラは、極力音源に負荷を与えないように無駄なデータをカットす る処理を組み込んでいます。例えば、同じ音量値の属性Vが連続して何度も指定 されていた場合に、一番初めのVだけ残しあとはすべてカットするなどです。こ れらの処理は今まで完全ではありませんでした。気にはなっていたのですが、複 雑な手順を踏むため改修するのをためらっていました。今回、腹をくくって手を 入れました。久々の改版だったため、自分のソースの解読リハビリから始める必 要があり、実に辛かったです。でも、出力されるMIDIは更にシェープアップされ、 コンパイル速度も多少ですが向上したはずです。 ◆Hashiitaさんのメールの言葉を思い出す度に、どんな人でも本当は何かしら素晴 らしい才能を持っており、既成のものさしではその可能性を推し量ることができ ないのだという思いを強くします。今回のバージョンアップは前回からかなり間 が空きましたが、Museがその秘めたる才能を開花させる一助となりうる限り、開 発を継続していこうと思っています。むろん頂いた諸々の要望の実現は、今から およそ2年半後になるかもしれませんが(笑)
《Ver4.7 開発後記》2003.02.12
◆ついに、最後の大文字Xを組込む時がやってきました。残されたこの一文字を何 に使うべきか、ずいぶんと長い時間考え続けてきました。そして今回、最も汎用 的で最も相応しいと思える機能を割当てることができたと思っています。Muse文 法を考える際、MIDIの規格を勉強しないと使えないというツールにならない様に 心掛けてきましたが、今回のX指定でそれが多少崩れた感も否めません。しかし、 それを補って余りある効果を出すだろうと想像しています。 ◆私は、昔から「一石二鳥」な行為が大好きで、今回のX指定一発で三鳥ほど捕ま えたと思っています。実に気分がいいです(笑)。一羽目は、「MIDIのボリューム コントロールでバランスを取りたい」「抑揚を付けながらフェードアウトしたい」 というご要求 → X7をお使いください。二羽目は、Y指定のようなON/OFFではな く「ハーフペダルを使いたい」というご要求 → X64をお使いください。そして 三羽目は、MuseのU指定よりも細かい「1セントレベルの微分音程を指定したい」 というご要求 → X129をお使いください。 ◆どちらかというとMIDI規格に傾倒したX指定ですが、X128とX129はMuseらしい工 夫を施したと思っています。またX指定は、私もまだ知り尽していない音源機能 の駆動を可能とするので、未来の鳥も打ち落せるかもしれませんね(笑)。 ◆岡林さんから、*COLRコマンドの複数メンバー指定をする文法記述のアイディア を頂きました。Muse文法の統一感を崩さない美しい案です。早速採用させていた だきました。YSTKさんからは q指定に関する新しいアイディア、固定音長指定を 頂きました。対称性を考えて p指定にも与えるか否かかなり悩んだのですが、両 方同時に指定すると解釈不能になる場合がある事に気づき q指定のみとしました。 ◆草場さんからWindows2000におけるハング報告を頂きました。その回避策も、今 回施しています。また一つMuseの品質が高まったと思っています。ありがとうご ざいました。私自身はWindows98ユーザなので、かなり想像力を必要とする対 処でした。(ちなみに、あと1週間ほどで私もXPユーザになります) ◆今まで、再生側パソコンに存在しないフォント名がFONTコマンドで指定されると、 不愉快な文字化けを起していましたが、コンパイル時に再生パソコンのフォント を調査し、不在の場合はデフォルトフォントを採用するようにしました。コンパ イル速度が低下するのを恐れましたが、充分な処理速度で対応できたようです。 はじめはデフォルトフォントではなく「フォントの確認」ダイアログで指定され たフォントを採用するようにしようと思い、コーディングを開始したのですが、 半角系のフォントを指定された場合、別の理由で起る文字化けが解消しないこと に気づき、泣く泣く(本当は苦笑しながら)修正コードを廃棄しました。 ◆最後にもう一つ。mid2musのX指定対応を行いました。久々の改版であったとい うこともありますが、実はこのプログラミングが最も厄介でした。 皆さん、「mid2mus希望」とメールに書き添えるのをお忘れなく(笑)。
《Ver4.8 開発後記》2003.05.25
◆二年以上前、私は「MIDIの機械語的な命令セットを隠蔽し、より抽象度の高い文 法を編み出そうと常に心掛けてきました。」と、この開発後記にて語りました。 その言に嘘は無いのですが、今度のバージョンでは、そのポリシーを覆すような コマンドを実装してしまいました。前回X指定を実装した段階で既にその兆候は あったのですが、今回は16進コードの列挙という実に機械語的なパラメータで、 どうにも言い訳の仕様がありません。 ◆しかし、皆さんから高価なMIDI音源の話を聞いたり、インサーションなどの凝っ たエフェクトに対する要望を受けるたびに、Museが音源や、ミューザーの皆さん 自身の能力を最大限に引き出せていないことを思い、情けなさを感じ続けていま した。特に、Museというソフトを切っ掛けにして、高価な音源を購入していただ いた場合は尚更です。音源メーカーから販売促進料を頂きたいくらいです(笑)。 ◆今回実装したDATAコマンドは、当初はあらゆるイベントを出力させようと考えて いました。しかし、リアルタイムメッセージはMIDIファイルに埋め込むべきでは ないし、メタイベントでTPQNやセットアップテンポを記述されると全体の制御構 造が崩れ大幅な改造を要するため、エクスクルーシブのみの対応にしました。 ◆ここまでくると私も使い込みに自信がありません。自分であまり使わない機能は、 品質上の目が行き届かないものです。そこで、β版の評価モニタを募りました。 Imaharaさん・くさばさん・岡林さん・鳳凰蝶さんが手を上げてくれ次々とテス トを実施してくれました。くさばさんは Readme.txt のわかりにくい部分を、岡 林さんは文法に関するエラーチェックの漏れを、鳳凰蝶さんはOSの差異に関す るレポートを、そしてImaharaさんは寝不足と闘いながら途中再生における完全 性の検査を何度もしてくれました。これらのレポートが無ければ、リリースの後 にMuseのバグ対処バージョンが炸裂していたことでしょう。皆さん、本当にあり がとうございました。 ◆16進を直に書く機構ではありますが、工夫した点もあります。POOLコマンドは 全体の記述量をかなり軽減し、見通しを良くすると思います。また、今まで出力 していた演奏開始時点の自動送出メッセージを抑止するDATA""の機構がなければ、 今回のエクスクルーシブ機構も恩恵が半減してしまうことでしょう。数値群を括 弧でくくると、チェックサムを自動計算し、その結果をデータに添える機構も実 装しました。面倒な16進演算が不要になっています。 ◆エクスクルーシブ対応の他にも、3つほど改善を施しました。1つは、マウスホ イールによる譜面モニタの横スクロールを可能にしたことです。かなり快適な操 作性を提供できたと感じています。もう一つは、WAVEコマンドを強化して、マル チメディア系のほとんどの音声ファイルを再生できるようにしたことです。これ でMuseは、mp3だって再生できるようになりました。本当はもっと早くやりたか ったのですが、自分のパソコンを新しくしないと開発環境が整わなかったのです。 ◆最後の1つは、MIDIエクスポートの際の「Generated by MUSE」の刻印を、著作 権メタイベントからInstrumentメタイベントへ移行したことです。著作権の項に ツールの刻印をするのは出過ぎた真似だよなぁ~、と前々から思っていました。 Instrumentは楽器名の項ですから、刻印として打って付けの記録場所ですよね。 そうそう、あと1つ変更点がありました。添付のWAVEファイル名を“拍手.wav” から“applause.wav”に変えました。将来、Museが国際的になる日に備えて(笑) ◆さて、今回のバージョンで、Museは音源の能力を確実に引き出せるシーケンサー となりました。おまけに音声ファイル系の再生能力も高まり“音”を出すソフト としては、とうとう登り詰めたかなと思っています。ミューザーの皆さんの強い ご支援がなければ、決してこの頂を踏めなかったでしょう。それを思うと、心が 感謝の気持ちでいっぱいに膨らみます。皆さんとの出会いに、乾杯です。
《Ver4.9 開発後記》2006.05.12
◆非常に長い間メジャーなバージョンアップを怠っており、改めて指折り数えてみ たら丸三年も経ってました。自分でもビックリしていますが、バージョンアップ をしなくてもMuseの活動が粛々と維持されているという事実に、ミューザーの皆 さんへの感謝の念を改めて強く感じました。本当にありがとうございます。 ◆極たまに実施するMuseのイベントのために、特別版Museの開発はしていましたが、 本格的バージョンアップとなると、三年のブランクを前に緊張感が走りました。 この開発後記を書くことさえ戸惑っているというのが正直なところです(苦笑)。 少々リハビリが必要だと感じ、今回はコンパイルエンジンや演奏機構に直接触れ ず、ユーザインタフェース部分に対してコソッと改版することにしました。 ◆2点あります。1つはテキスト表示部の背景色を、個々に設定しているWindows プロパティのメニュー背景色と同色にしたことです。デザイン配色の観点から以 前より手を入れたいと思っていたのですが、テキスト文字が固定色なため無条件 でメニュー背景色にしてしまうと文字自体が目立たなくなってしまいます。 ◆この課題をクリアするために、メニュー背景色の明度を検出し、暗い色の場合は デフォルト色に移行するという制御を思い付きました。しかし技術的には、存外 に苦労しました。何とWindowsというOSは、従来のWindowsスタイルと新しいXPス タイルでは、メニュー背景色のシステム変数が異なるのです。例によって開発者 泣かせのマイクロソフト仕様です。微妙に上位互換を崩しているこの設計思想に 激しい虚脱感を感じつつ、まあどうにか裏技で両スタイルに対応したつもりです。 もし何か不具合があったらお知らせください。 ◆もう1つは自分がMusingしていてぜひ欲しいなぁ~と感じた機能。譜面モニタ・ メンバー色一覧・フィンガー拍数の3つのウィンドウを、一発でON/OFFする機能 です。従来のMuseは最大化ボタンだけがグレーアウト状態だったので、ここに割 り当てる事にしました。通常のWindowsインタフェースから逸脱してしまいますが 大目に見てください。各種ウィンドウが、スクリーン上にパッと展開される感じ は「最大化」として拡大解釈できないこともないでしょう(苦笑)。
《Ver5.0 開発後記》2007.05.18
◆Museのバージョンも5.0となり、初版から8年もの歳月が経過しました。初版開 発当時の自分が何を考え、何をしていたか顧みるとその長い年月を強く感じます。 今回のバージョンアップ項目は結果的に盛り沢山となりました。当初はそれ程欲 張るつもりはなかったのですが、久々にMuseのプログラムコードを目の前にし、 強化を着手してみると、その先に利用者であるミューザーの皆さんの顔が浮かん できて、あれもこれもと手を付けてしまいました。(昨年の9月にMuseオフ会が あり、生まれて初めてオフ会になるものに参加しました。実に楽しかった・・・。 という訳で、ミューザーの皆さんの顔がリアルに浮かぶようになりました)笑 ◆まずは桁上がりバージョンに相応しく新メニューを加えました。履歴機構です。 既に私の手元には5,800曲を越えるMuseデータが存在します。一応体系的にデー タ管理はしているのですが、ロードまでの手数がどうしても掛かります。そこで 巷のアプリケーションの様に、履歴を覚えていくことにしました。実装を終え、 しばらく試験運用していると、一過的な履歴だけでなくそれをパーマネントに記 憶するアルバム機構も欲しくなってしまいました。しかし必要以上に煩雑な機能 構造にはしたくありません。通常は履歴機構だけが見え、アルバム機構が欲しく なった人が何かをすると初めてそれを享受できる。そんな思想で組み込みたいと 考えました。アルバムの編集に関して、はじめは手の込んだダイアログを開発し ようとも思っていたのですが、Muse利用者のミューザーたちはテキスト編集はお 手のもののはず。ここはミュージストらしく、ダイレクトに履歴ファイルを編集 してもらう方針で行こうと決めました。お蔭で、実にすっきりとした機能仕様に なったと思います。ミューザーの皆さんが開発されたMuse支援ツールのように高 度なアルバムの編集や再生の機構は持っていませんが、簡易版としては充分使用 に耐える出来だと思っています。ぜひ試してみてください。 ◆圧縮解凍ソフトやメールの添付から直接Museデータを立ち上げる場合、Windows のテンポラリフォルダからデータがロードされますが、その際Museのメインウィ ンドウタイトルが長くなりすぎて演奏時間が表示されないという不満が、少なく とも私自身には強くありました。私にはそのシチュエーションがとても多いので す。そこでちょっとした改善ではありますが、テンポラリフォルダは@マークに 集約して表示することにしました。更に今回新設した履歴も更新しないようにし てあります。次回アクセス時に「ありません」とエラーになるだけなのでテンポ ラリフォルダのデータを覚えても仕方ありません。こういった配慮はソフト設計 でとても大切だと思うのですが、Microsoftの製品でも記憶してしまうようです。 ◆かねてより要望のあった「常に手前(T)」と「繰返し演奏(R)」を、起動引数にて ONにするという機構を実現しました。更に、これもまた以前より要望の高かっ た、「データ編集(D)」におけるテキストエディタの任意指定も可能にしました。 この指定は、直接初期化ファイル(muse.ini)に登録してもらうことにしています。 ついでに履歴機構に対するいくつかの制御も、この初期化ファイルで行える様に しました。こうなってくると将来、この初期化ファイルにいろいろなユーザ指定 を背負わせる可能性があります。そこで、今回初期化ファイルの書式を大幅に見 直し、ユーザ指定領域[USR]とシステム管理領域[SYS]を明確に可読できるように しておきました。フォーマットが変わったので、新バージョンを立ち上げた時、 初回はウィンドウの位置や選択音源がデフォルトに戻りますが、次回起動時から 通常どおり運行しますのでご安心ください。また、Museの初期化ファイルは読込 み時の解釈を広く取っていますので、編集したことで立ち上がらなくなるといっ た悲劇が起こりにくいようにしたつもりです。過去の話ではありますが悪名高い win.ini のようなことはありませんので、果敢にお試しください。 ◆Zメンバーをメロディパートに転向させるエクスクルーシブの存在を、草場さん から教えてもらったので、これを *DRUM コマンドとして実装しました。加えて、 ソフト音源VSCは、このエクスクルーシブを単純送信するとブルースクリーンに なって固まってしまうという不具合の存在と、それを回避する方法も教えてもら いました。Museコンパイラには、もちろんそのノウハウを埋め込んでおきました。 こういう最適化があってはじめて、単なる“ファイル変換”ではなく“コンパイ ラ”であると胸を張って言えるのだと常々思っています。Museを使っている限り、 文字通りブルーにならず音楽に没頭できますので、安心してお使いください。 ◆フィンガー拍数の左肩にあった[偶奇]ボタン。単に4/4拍子と3/4拍子を切 り替えるだけの影の薄い存在でしたが、今回このボタンを撤廃し譜面モニタの拍 子切り替えと連動する様にしました。これで表示できる拍子のバリエーションが 一気に広がりました。なぜ今までこの連動デザインに気づかなかったのだろう! これで、譜面モニタ・メンバー色一覧・フィンガー拍数が有機的に結びつく状態 となりました。とても美しい構成です。もう一つフィンガー拍数に関して改修を 行いました。あまりフィンガー毎に肌理細かく指定しない“x”指定をフッター 部に移動し、リスト部を(ほんのちょっとですが)スリムにし可読性を高めました。 本当は邪道な“?”指定こそフッターに降ろせ! という声が聞こえてきそうです が、私自身が多用しているため、残留をお許しください(苦笑) ◆Museの特徴の一つに、鍵盤上部エリアへのテキスト表示があります。これを活用 したテキストアニメーションなど、Museによる表現の一大ジャンルになっている ぐらいです。このTEXT系コマンドのデータは、MIDIファイルへのエクスポートの 際、Lyricイベントで出力されますが、巷のMIDIプレーヤーではそれらデータの 価値を発揮できず、単なる容量増にしかなりません。そこで今回、エクスポート における保存のコモンダイアログを拡張カスタマイズして、最下部に“テキスト 系コマンドのデータを出力しない”というチェックボックスを加え、オプション 選択ができるようにしました。結果として期待したほどファイル容量は小さくな りませんでしたが、まあMIDI音源の負担を少なくする効果はあると思います。 ◆長い時間放置したプログラムをまたメンテナンスし始めると、自分の開発したソ フトであっても客観的な視点で検証することになりますし、またテスト段階でも、 当時想定していなかったオペレーションをしたりして、新たな不具合を見つけ出 すといった効能もある様です。今回もそんな不具合に遭遇しました。譜面モニタ をスクリーンいっぱいに横に広げた際に、その状態が初期化ファイルに記憶され ないという不具合を見つけました。「ゲッ!いろいろ手を加えたので改悪してし まったか・・・」と一瞬思ったのですが、なんと過去バージョンでも再現する現 象でした。ウィンドウをスクリーンの四隅にフィットさせる機構との絡みがあり、 この修正は結構難解だったのですが、どうにか手直しできました。 ◆もう一つ。これも不具合改善の範疇だと思います。今回の履歴機構の導入で次々 と曲をチョイスしていけるようになったのですが、直前の曲の残響が激しい場合 に、そのコントロール効果が次曲に影響し、とんでもない演奏になってしまう症 状を見つけました。この現象は、曲の切り替えをスピーディに行えば従来のバー ジョンでも出る症状なのですが、それが出にくかったのです。試みに症状の出る データ群をエクスポートし、それらMIDIファイルを使ってWindows Media Player に連続ドロップする実験をした所、全く同じ現象が起こりました。つまり、MIDI 音源のコントロールの本質的な部分に関わる制御なわけです。オール・ノートオ フやオール・サウンドオフ、リセット・オール・コントローラなど、かたっぱし から送信を試みましたが事態は改善しません。MIDI仕様のマニュアルをよくよく 読んでみると「NRPNで設定されたバリューはリセット・オール・コントローラを 受信してもリセットされません」とか「プログラムチェンジ、バンクセレクト、 ボリューム、リバーブ、コーラスなどはリセットしません」と書いてある始末。 これじゃあ“オール”じゃないじゃん。リセット・チョット・コントローラとで も名前を変えて欲しいです(笑)。冗談はともかく、こうして大変な試行錯誤を繰 返している内にある方法を思い付き、結果として解決に至りました。この対策の 効果は素晴らしく、Muse上で演奏を停止すると残響も含めてスパッと止まります。 まるで竹を割ったかのような心地好さ。少々大袈裟かもしれませんが、Museのプ レーヤー性能は、Windows Media Playerを凌駕したのかもしれません。とにかく、 これで自信を持ってVer5.0を皆さんにリリースできるというものです。 ◆ううっ、今回の開発後記は今までの最長記録かもしれない(苦笑)。最近、改版頻 度は低下気味ではありますが、これからも魂を込めて開発を続けていく所存です ので、ミューザーの皆様今後ともよろしくお願いいたします。8年経っても未だ 開発項目の残リストは山のようにあるんです。
《Ver5.1 開発後記》2007.06.30
◆今回は近年まれに見る短いスパンのバージョンアップになりました。前回新設の アルバム機構。自分でも早速活用し始めたのですが、皆さんから頂いた演奏デー タは珠玉の作品ばかりで、あれもこれもとお気に入りに追加してしまい、気づい てみたら総計600曲にもなってしまいました。まあ母数が6千曲近くあるので すから高々1割のピックアップをしたとしても膨れ上がるのは無理もありません。 ◆そうなってくると1階層だけのアルバムでは整理が付きません。そこでアルバム の多段階層化に臨むことにしました。どうせなら階層段数に制約のない構造に挑 みたくなります。当然の事ながら再帰呼出しプログラミングになる訳で、しかも タイトル行とアルバム行、ログ行が混在する実に難解な制御です。まあマクロ解 釈のシーケンス程ではありませんでしたが、それでもアルバム機構のデータ構造 を大幅に見直すことになり、久々にエキサイティングな開発でした。開発期間中 は頭が冴え渡っていたような気がします。ボケ防止のために一生プログラミング を続けよう、なんて思ってしまいました。そんな訳でとても苦労したのですが、 出来上がってみれば前回のバージョンよりもプログラムが構造的で、そこに数学 的な美しい規則性さえ見出せる結果となりました。こういう結果を得る時にこそ 「完成した!」という実感を味わうものです。一般的にその製品やスペックの美 しさに翳りのある状態とは、まだ過渡的で未完の状態なのかも知れません。 ◆本格的な階層が組み立てられるアルバムとなったので、タイトル部と登録曲とが 入り乱れた状態になることも考えられます。そこで、タイトル部と登録曲の視認 性を高めるため、登録曲の先頭にグレーの三角形マークを添えることにしました。 プログラム内部のデータ構造のみならず見栄えもなかなか美しいのでは、と自負 しております。 ◆既にリリースしてしまった履歴ファイル形式ですので、当然ですが上位互換を意 識しなければなりません。多分、ミューザーの皆さんの中には苦労して履歴ファ イルを編集された方もいることでしょう。その人たちに「もう一回作り直してく ださい」と言い放つ事はとてもできません。上位互換を保って無限多段の階層を 表現するにはどうしたら良いのかいろいろ考えました。結果として、*の個数で 階層レベルを表現するという極めて単純な書式に辿り着きました。後で気づいた のですが、Wikiのセクション記述文法と類似しています。誰が築いた文法か知り ませんが、まだ見ぬその人と妙な親近感を感じてしまいました。 ◆基本的に、アルバム機構の編集はエディタにて外側で行ってもらう方針でしたが、 やはり登録・除去という基本機能ぐらいはMuse起動上から実施したいと、利用者 である私が感じ始めました。さりとて専用のダイアログが出てきたり、操作の手 数がやたらと増えるような形式にしたくありません。最低限のストロークで望み の機能が実効する洗練されたユーザインタフェースにしたいと思いました。初め は、履歴メニュー上でマウスを右クリックすると編集用のメニューが出てきて、 そこで機能指定するといったタイプにしようと思いました。ところがメニュー上 でポップアップさせる方法がどうしてもわかりません。メニューがキャプチャを グリップしている間、ウィンドウメッセージをどうしても取得できないのです。 この技術的な限界に直面し、別の切り口の操作仕様に思考を向けたとたん、閃き が起こりました。右クリックしたメニュー上の場所がタイトル部なのか演奏曲部 なのかで、利用者が登録と除去のどちらを望んでいるのかを一意に決められるこ とに気づいたのです。まさに「必要は発明の母、障壁は閃きの父」とでも申しま しょうか。結局、1クリックだけで登録も除去もできる快適な機能となりました。 ◆アルバム登録時、それが登録済みの曲の場合は二重登録しないように考慮しまし た。しかし、この二重登録ガードに引っかかる場合、マウス右ボタン押下に対し てまったくの無反応となります。利用者の指示に対してコンピュータ側が何もエ コーバックしてこないのは、挨拶しても憮然としている愛想の悪い人に出会った ようで実に不愉快です。さりとて、いちいち「登録致しました」というメッセー ジを出すのでは、意味もなく礼儀にこだわる執事に追い回されている様な堅苦し い気分になります。そこで対象曲のグレー三角マークを黒く強調するエコーバッ クを思い付きました。控えめでありながら手応えのある反応です。他ではあまり 見かけない、ユニークなマンマシンインタフェースを実現できたと思っています。 この開発で苦労したのは、その黒く強調したマークを元に戻すタイミングでした。 Windows が管理している制御メッセージを解析し、独自ステータス管理でこっそ り戻すという綱渡りをしています。 ◆今回のアルバム登録・除去の機能提供に伴い、前回muse.iniのパラメータで提供 したLGS(アルバムからの選択時に履歴を更新する/しない)の機構を撤廃しました。 曲の履歴が残ることで、誤った除去オペレーションをしてもすぐに登録し直せる ことに気づいたからです。履歴が、一種のUNDOバッファとしての役割も発揮する という訳です。一方で、そもそもアルバム中心で履歴エリアは不要と考える方の ために、履歴メニューにおける表示曲数(LGM)にゼロを指定できるようにもしま した。加えて、muse.logのセーブタイミングをMuse終了時のみに変更し、データ ロード時やアルバムの登録・除去時の負荷を低減することにしました。 ◆アルバム機構の強化が中心の今回のバージョンアップでしたが、あと2つ小さな 強化を加えています。前回、テンポラリフォルダに展開されたロード曲は、ウィ ンドウタイトルを@で縮退表示させるようにしましたが、hiroさんから所詮Muse データを格納管理しているフォルダパスが長いと意味を成さず、演奏時間が確認 できないことを指摘されました。当然と言えば当然なのですが、今まで誰からも 指摘がなかったので、まあなんとか大丈夫なのだろうと高をくくっていたのです。 やはり付け焼刃では駄目ですね。対応をいろいろ考えた末、初期化ファイルにパ ラメータ(DWT)を新設することにしました。このパラメータ設定で、ウィンドウタ イトルにフォルダ自体を表示しないようにすることができます。 ◆もう一つは、アクセントという指定を追加したことです。これは長年実装したい と考えていて延び々々になっていた文法強化です。アクセント値には負値も指定 できるようにしたので、いわば逆アクセントといった面白い演奏表現も可能です。 開発上苦労したのは、和音やコードそして再現表記などとの組み合せ問題です。 表面上の機能は単に一過的に音を強くするだけなのですが、複数の音が鳴る場合、 元の強弱値に復帰するタイミングを制御するのは結構大変でした。仕様としては、 アクセント量をフィンガー単位に保持し、省略記法も提供することで、今までの Muse記法コンセプトに従った統一感のあるものにできたと思っています。完成し たアクセント指定。特にパーカッションのメリハリに効果があるのではないかと 私は期待しています。この新文法が、皆さんのMusingのお役に立てれば幸いです。
《Ver5.2 開発後記》2007.10.10
◆ついにMIDIの発音域をすべてフォローする日がやって来ました。4年前、DATAコ マンドをサポートした際「Museは音源能力を確実に引き出せるシーケンサーにな った」と開発後記で豪語したのですが、まだこの極めて本質的な課題を積み残し ていました(苦笑)。初版の開発時点で、Museは自らが考える音楽表現ツールとし て設計したこともあり、オーケストラの音域がすべて入るピアノの幅で充分と判 断していました。しかし、特にMIDIのドラムパートに関しては、Museサポート外 の音域で鳴る多彩な音が存在することを多くの方から指摘され、また一端のシー ケンサーとしての地位確立のためにも、いつかサポートしなければなるまいと心 に決めていました。 ◆とはいうものの、全音域サポートの実装がここまで長引いてしまったのは、Muse らしいやり方でこの課題に対処することへの拘りがあったからです。単純に全音 域にするとMuse鍵盤をかなり横長にする必要があります。しかし、現在のMuseは サブウィンドウも含めて800×600に収まるように設計されており、そのポリシー を崩したくなかったのです。鍵盤表示はしないまでも、発音だけでも可能にする という案もありましたが、コーディングした文字列を視覚的に確認できる機構が ないとMuseらしくありません。そんなジレンマの中で、長い期間あれこれ考え続 けていたのです。今回鍵盤はそのままにして、譜面モニタのみ対応することで開 発に踏み切りました。譜面モニタならばウィンドウ寸法が可変ですから、ユーザ 環境に合せて大きさを調整できます。加えて譜面モニタ上に鍵盤の音域を示す点 線を表示する工夫も施しました。 ◆実はこの開発が佳境に入った時、鍵盤ウィンドウの方も一鍵々々の寸法を一回り 小さくすれば、600×800に収まることに気づきました。しばし手を止めて熟慮し ましたが、結局鍵盤ウィンドウに関しては、今の音域でのサポートが適切である と結論付けました。ほとんどの楽曲はピアノ音域を持つMuse鍵盤に収まります。 にもかかわらず必要以上に鍵盤を左右に広げると、演奏時に色付く鍵盤が中央に 偏り、鍵盤の両端はほとんど発色しないといった実に間の抜けた演奏状態になっ てしまうことに気付いたからです。それは美しくありません。 ◆音域拡張のプログラミング作業は思いの外難航しました。着手時点では単に音域 ガードのif文を外すだけだろうと安易に考えていたのですが、今までの音域を前 提にした処理が様々な箇所に点在していたのです。結果として、上位互換性に不 安を感じるほど多岐に渡る改修となったため、本格的な互換テストを実施するこ とにしました。今までに皆さんから頂いた6千曲のMuseデータに対し、強化前と 強化後のMuseでそれぞれMIDI変換を行い、バイナリレベルで一致を確認したので す。結果として、本件での上位互換を確認しましたのでご安心ください。 ◆テキストアニメ作成では右に出る者はいない、と言われている大御所MIZさんか らの提言でフォント処理にも改善を加えました。指定フォントがPC上に存在し ない場合、今まではデフォルトのMS Pゴシックで表示していましたが、直前 で有効となったフォントを維持するという仕様に変更しました。本件は、残念な がら上位互換性を崩しますが、まあテキストフォントの表示体裁に留まりますの で、お許し下さい。 ◆実は、初めてFONTコマンドをサポートした当時、フォントが存在しない時のこの 挙動をどちらの仕様にすべきか悩み、結局、選定理由の決定打が無いままにプロ グラミングが容易な方を選んでしまったという記憶があります。今回のMIZさん の提案には「Musingの際、表示フォントの優先順を組み込むことを可能にする」 という明確な根拠が存在します。思想に裏付けされた仕様は、美しいものです。 また一つ、気骨のある意志がMuseに注入されました。MIZさんに感謝いたします。 ◆その昔、takaさんから左利き用のマウスカーソルも備えて欲しいと言われたこと がありました。過去のメールを紐解いたら2001年、つまり6年も前のことでした。 ずいぶんとお待たせしてしまいましたが、やっとご提供することができました。 初めは左右対称のマウスカーソルをリソースに埋め込み、何らかの指定で切り替 えられるようにしようと思ったのですが、いっそのこと初期化ファイルでマウス カーソルのファイルを記述してもらい、如何様なカーソルでも指定できるように しようと思い立ちました。「左利き対応」が汎化され「カーソル指定」機構に昇 華しました。アニメーションカーソルも指定可能ですので、お試しください。 ◆もう一つ積年の課題をクリアしました。スタッカートやq指定の音符に連結&を 効果させる件です。これはMuseコンパイルエンジンにメスを入れる改良なので、 大変神経を使いました。しかも、今までの制約を逆手に取ったデータに関しては、 微妙に互換性が崩れます。しかし、それを補って余りあるMusing効率を生み出す と考え、今回実装を決断しました。更に、これもまた互換性を多少崩してしまう のですが、和音内の&記述に関する仕様も少々変えました。今までは、音尾部分 の音長を調整することで和音内の連結を一音毎に制御することができたのですが、 今回の改訂でそれができなくなったためです。何にしても今回の強化項目群は、 古き棚に積まれていた荷物を整理したような気持ちにさせるものばかりでした。 久々に本Readme.txtから制約事項の行を削除する快感を得ることができました。 ◆最後にご報告です。先月(9/6)にかの有名なダウンロードサイトVectorに、Muse の専用カテゴリが新設されました。これもひとえに、ミューザーの皆さんの支え があってこそです。本当にありがとうございました。これからも皆さんに「豊穣 な時」を与えることができるソフトを目指し、Museの強化を続けていきます。
《Ver5.3 開発後記》2008.02.06
◆初版から継続してきたダイアログ名称「メンバ色一覧」と「フィンガー拍数」を、 それぞれ「メンバー情報」と「フィンガー情報」に変更する事にしました。初版 の頃は単一機能であったため「名が体を表して」いたのですが、その後多くの機 能が付加され、違和感を感じるようになったためです。考えてみるともっと早く 実施すべきだったかもしれません。 ◆その「メンバ色一覧」改め「メンバー情報」に対して2つの強化を行いました。 一つ目は、楽器名にバリエーション番号を添えて表示するようにしたことです。 これはバリエーションをサポートした頃から実現したかったテーマでしたが、バ ンク切替と楽器選択とが微妙に絡んだ処理ですし、シークバーを動かした時もき ちんと追従させなければなりません。その複雑さに今まで二の足を踏んでいたの です。しかし今回無事対応することができ、リアルタイムにバリエーションも表 示されるようになりました。また、バリエーション番号の表示域を確保しつつ、 従来のウィンドウサイズを維持するため、フォントサイズを一段落としました。 副次的に以前より引き締まった印象となり悦に入っています。 ◆「メンバー情報」の二つ目の強化は、キーボードでメンバー毎のミュートを可能 にしたことです。昨年は視覚障害を持つ優れたミューザーの方々とお近づきにな る事ができました。特に横田さんはオフ会にも参加してくれました。ハンディキ ャップをものともせず、明るく前向きで活動的なその姿にとても感激しました。 キーボードからの発音ON/OFF制御は、以前から実現を計画していたのですが、ダ イアログからのキーイベントが取得できないという根本的な部分で挫折し続けて いました。今回横田さんにお会いし、この構想のお話しをすると「それは便利そ うです。ぜひ欲しいですねぇ~」と微笑みました。その微笑が再度挑戦する気持 ちに火を付けたのです。今度の挑戦で、フックを仕掛ける方式で成功することが わかり、とうとう実装に漕ぎ着けました。これでマウスという入力デバイスを扱 えない方々も、メンバー毎の音の確認が簡便にできるようになるはずです。 ◆初めこのキーによるON/OFF制御の仕様は、マウスクリックと同様に「トグル」で 切り替えることを考えていました。しかし★/☆の表示が確認できないユーザに とってこの「トグル」方式は、その時点のON/OFF状況が掴みにくく、迷子になり やすい仕様であることに気づきました。そこで、大文字ならON、小文字ならOFFと 「一意」な操作仕様にすることにしました。その他にも、Spaceや矢印キーによる 演奏やリロードの制御を「メンバー情報」ダイアログから可能にしたり、不用意 にウィンドウフォーカスを移動させない様にするなど、数々の配慮を施しました。 皆さんのMusing効率が高まれば幸いです。 ◆「メンバー情報」以外にも大きな強化を実施しました。今まで何度もトライして は挫折し続けていたマクロの繰返し数ゼロ指定です。これが完成すると *STOP"" を記述して、それ以降に定義マクロを連ねるという構成上の制約から解放され、 定義マクロをどんな場所でも自由に記述することができる様になります。しかも Muse文法としての審美感が高まる点も大きな魅力です。その事は何年も前から気 づいてはいたのですが、定義マクロであってもデフォルトでまずは展開するとい うMuseの根本的なコンパイル・アーキテクチャが横たわっており、改造に着手し ては失敗を繰り返していました。“0”と“1”では大違い。そこには論理処理 としての大きな溝が存在しているのです。人類が自然数から脱皮し、ゼロを数学 上の論理記号として活用するのに長い時間を要したのがわかる気がします。 ◆今回、一度展開した中間解析リストを部分的に離脱するというアイディアが閃き、 処理速度やメモリ効率の低下を起こすことなく、実装することに成功しました。 その品質テストは、マクロの階層記述や、展開マクロ・定義マクロが入り組んだ 複雑なパターンがあるので眩暈がするほど大変な作業でしたが、思いつく限りの 検証をして完成させたつもりです。後は皆さんに駆使していただけたらと願わず には居られません。 ◆MIZさん、お待たせいたしました。波形加工遅延機構のご提供です。オフ会の折、 「皆さん、どんな機能強化をお望みですか?」という私からの問い掛けに、いの 一番にこの機構を挙げたMIZさんの、控えめな声が忘れられません。そこには、 実際のMusing局面でこの機構を何度となく必要とした経験が強く感じられました。 しかし、波形加工は単独出力であってもNRPNとDataEntryを組み合す大変神経を 使う処理です。そのため今までは、遅延による連続変化の実装になかなか踏み込 めないでいました。Museが複数の特性パラメータを一気に指定する文法なため、 ますます難度の高いものになっていたのです。出来上がってみると、ある波形特 性から別の波形特性に向かって、複数のパラメータを並列して変化させるという 他のシーケンサーには見られない連続変化を容易に記述できる使用となりました。 ◆現在譜面モニタには、[G][T][A]の3つのボタンが存在します。その内[G][T]は 既にショートカットキーが割り当てられているのに対し、[A]だけはありません。 常日頃から気になっていたのですが、それ程優先度も高くないため放置してきま した。今回はキーボード処理をいろいろと探索したので、ついでに本件も対応し [@]キーを割り当てる事にしました。[G]エンター、[T]タブ、[A]アットと、比較 的直感的なアサインとなり、なかなか気に入っています。(エンターは、Go!とい うイメージです。突っ込まないでください)苦笑 ◆今回の強化テーマ群は、謀らずも永年挫折や放置を繰り返した内容で占められる ことになりました。普段の私なら、ちょっと試してみてまたすぐ諦めてしまった かもしれません。しかし今回は違いました。その気概を与えてくれたのは、他な らぬミューザーの皆さんの声や笑顔である事は疑う余地がありません。私一人が 閉じた世界で開発を続けていたらある所で妥協し、決してこれだけの粘りは出せ なかったことでしょう。皆さん、これからもよろしくお願いします。
《Ver5.4 開発後記》2008.07.11
◆今から2年前、2006年の夏にクールジョーさんが主催してくれたMuseコンテスト。 先日ネットサーフィンをしていたら、そのサイトに辿り着きました。とても懐か しい思いで眺めていると、金賞を受賞したratiltさんの受賞者アンケートに目が 止まりました。クールジョーさんが用意した「Museに期待する機能は?」の問い に対し、「譜面モニタ上で音符をクリックすると、テキストデータ上からその部 分を探し出してくれる機能」と回答が認めてありました。 ◆2年前もすべてに目を通したはずだったのですが、その時点では“ミューザーの 自由選択に任された各々のテキストエディタと連携するなんて不可能に近い”と 感じていたのです。しかし今読み返してみると、直接連携をしなくとも、行番号 の表示だけで充分にMusing効率が向上するだろうと気づいたのです。これはとて も便利そうです。自分自身が「心から欲しい」と思う気持ち。それは「魂を込め た開発」の必要条件です。その条件を手に入れた私は、早速開発に着手しました。 ◆譜面モニタは極めて簡素な様相をしています。市販の音楽シーケンサーの様にボ タンやスイッチ群が盛り沢山に陳列されていません。このあっさりとした表情の 中に、秘めやかに気の利いた機能が実装されている姿が、私はとても気に入って います。今回もそのフィールを失わないように慎重に設計しました。算出結果は あくまでさり気なく、ウィンドウタイトル部に表示されます。検索モードへの移 行オペレーションも、安易なボタンの追加をせず、SHIFTキー併用としました。 本機能のために新しく立ち上げたマウスカーソルも、シンプルなデザインであり ながら、クリック時のエコーバック感をしっかりと味わえるように工夫しました。 ◆実装は結構重労働でした。SHIFTキーとの併用は従来機能との競合が起こらない ように細心の注意が必要でしたし、フィンガー宣言や行番号を表示するために、 内部の音符メモリ構造を強化する必要に迫られました。各音のデータ量を増やす ことになり少々抵抗感はありましたが、しかし今回の機能は、MML型のシーケン サーにとって、それを補って余りある有効性があると確信しています。ちょっと 気になった演奏ニュアンスを修正したいと感じた時、譜面モニタ上からテキスト データ側の記述位置を簡便に特定できることは、新しいタイプの情報流です。今 までのMuseは、エラーメッセージを除き、基本的にテキストデータからMuseに向 かう流ればかりでした。 ◆先日、るうさんから試聴系ダイアログのタブキーや方向キー押下時の動きに一貫 性がないというご指摘を受けました。恥ずかしながらこの点に関しては、少々無 頓着に開発しておりました。Muse開発に臨む姿勢は、こういった肌理の細かい配 慮を大切にしたいと常々考えていましたので、今回のるうさんのご指摘には大変 感謝しております。そしてこの指摘は、単純な美感や統一感だけの話ではなく、 視覚障害を持つ方にとって大変重要な操作仕様であることにも気づきました。今 まで配慮が欠けていたこと、ご容赦下さい。今回、楽器およびドラムの試聴にて、 統一感のある仕様を組み立て直しました。タブキーにてオクターブや楽器グルー プ毎に移動し、方向キーでそのグループ内の移動をするという仕様です。諸熊さ んに査閲していただき及第点をもらえたので、自信を持ってリリースできます。 この様に、すぐにレビューに参画してもらえる仲間がいるということはとても恵 まれた開発環境だと思います。諸熊さんに心からの謝辞をお送りいたします。 ◆ドラム試聴の改修が掲示板で話題になったため、空かさずMIZさんから、予てか らのご要望「ドラム試聴にてノート番号を表示して欲しい」の督促を再度受けま した(笑)。むろん検討リストに記載しており、いつか実施しようと考えていたの ですが、音名切替に連動するという仕様イメージから脱却できず、綺麗な設計が できずに今に至っていたのです。しかし今回、音名切替とは独立に表示させれば よいのだと気づいた途端、あっという間に設計が完了しました。何故にこれ程ま で単純な事を今まで思い付かなかったのか、赤面の至りです(苦笑)。 ◆毎度のことではありますが、新バージョンをリリースすると、直ぐに様々な不具 合をミューザーの皆様に発見してもらい、ご報告を受けます。複数の目で検証さ れることの大切さ。そして、それにきちんと対応していく事で、Museの品質が次 第に高まっていく事を実感する今日この頃です。前バージョンも多くのご報告を 頂きました。hiroさん、sanaさん、木下さん、MIZさん、BnKayakさん、楠本さん、 Pascalさん、fiveさん、浅川さん、H.N.WPKIDSさん、ひまじん925さん・・・。 すべての方をここにご紹介できないのがもどかしい思いです。本Readme.txtの誤 植指摘も含め、Museが美しくあって欲しいという皆さんの期待を強く感じます。 今後ともよろしくお願いいたします。 ◆草場さんが立ち上げてくれたMuseWikiもかなり充実してきました。草場さん、あ りがとうございます。お蔭様で、不具合対応のバージョン履歴管理がしっかりで きるようになりました。そこで今回のバージョンから、小数点第二位のマイナー バージョン番号もMuseメニュー部に明示することにしました。管理がより厳密に なるので、少々緊張している私がいます(苦笑)。
《Ver5.5 開発後記》2010.01.09
◆今回の強化は外部仕様として目立った変化はないため、メジャーなバージョンア ップの扱いをすべきか否か悩みましたが、Museの中核を成すコンパイル・エンジ ンに手を入れたのでメジャーアップに踏み切りました。 ◆7年程前から多重ノートONの話題が断続的に出ていましたが、要因はひとえに 音源性能の問題であると認識し、Muse自体での対応は範疇外であると決め付けて いたのです。しかし今回、るうさんから同時刻内に限ってノートOFFを前方に シフトさせれば多重ノートONの状態を抑制できるという提案を受けました。 ◆言われてみれば、何故7年間もそれに気付かなかったのか不思議なほどシンプル で美しく、そして効果的なアイディアです。多分音源の処理負荷に対しても望ま しい結果を与えるだろう事が予想できます。るうさんに心から感謝いたします。 今回の件で、一つの大切なことを学んだ気がします。人は何らかの不都合な事象 に出合った時、その原因を他者のせいにした途端に新たな閃きの機会を失ってし まうという事です。少なくともそれを解消しようとする精神は希薄になります。 ◆今回の改良は単にノートOFFを前方にシフトするだけでなく、中盤にコントロ ールチェンジ等の制御系コマンドを配し、最後にノートONを配置するという仕 様にしました。アルゴリズムは複雑になりますが、これにより発音前に制御コマ ンドが音源に送信され、演奏シーケンスとして単に多重ノートONを抑制する以 上の効果があると推測しています。 ◆また、シフト処理は演奏データ全域で探索する必要があるため、一音ずつ実行さ せるとコンパイル速度の低下が懸念されます。そこで、連続するノートOFFや ノートONをグループ化して一気にシフトするという方式を取りました。これは これで、大変神経を使うデータ処理アルゴリズムとなりました。 ◆これらの処理をメモリ効率に配慮しながら1パスで完了させるという目標を立て て改良に臨みました。もちろん、Muserの記述した演奏順番を極力尊重するとい う条件も付加しています。久々の心臓部への改訂だったため、開発は苦労の連続 でしたが、すべての設定目標を満足させる出来になったと思います。 ◆今回のバージョンアップでは、楠本さんが発見してくれたバグにも対応しました。 中身の無いマクロをある条件で記述すると確実にMuseがハングするという不具合 です。楠本さん、ご報告本当にありがとうございました。 ◆マクロ処理は再帰呼出しや処理ポインタのリワインドなど、かなり複雑なシーケ ンス部分です。アルゴリズムを細部に渡るまでチェックし、マクロ解析用の作業 メモリを解放する際、範囲を記憶するポインタの制御に不備があり、管理外の領 域をアクセスする可能性を見つけ出しました。 ◆この致命的な障害は、マクロ機構提供当初より抱えていた事になります。プログ ラマとしてとても恥ずかしいミスだと反省しています。こんな私ですが、これか らもMuseに愛を込めて育てて参りますので、皆さんよろしくお願いします。
《Ver5.6 開発後記》2010.02.17
◆Museに譜面モニタを実装して10年近くが経とうとしています。MMLコーディ ング作業は音符タイミングずれのミスが発生しやすく、その確認もままなりませ ん。譜面モニタが実装される前は、そのデバッグ効率を考えて各フィンガーに記 述されている拍数をカウントし、タイミングずれのフィンガーを検出しやすくす るためのダイアログを作りました。それが現在のフィンガー情報ウィンドウです。 ◆しかし譜面モニタができてから、全くと言っていい程Musingの際にそれを参照し ていない自分に気づきました。気づくのに10年も掛かってしまった(笑)。そう いう目で改めて眺めてみると、この情報エリアは闇雲に作業スクリーンを圧迫し ているにすぎません。当時、かなりの時間を掛けて音符のビットマップを作った り、音長の演算構成の工夫もいろいろと仕込んだりして、愛着がある機能なので すが、無駄なものは邪魔なもの。思い切って取り払うことにしました。まるで機 能ダウンのようですが、こういうバージョンアップがあってもよいと個人的には 思っています。これでウィンドウ配置が楽になります。一種のエコですね(苦笑)。 ◆ついでに、フィンガー表示のフッターやヘッダー部をダブルクリックすると、リ スト上に存在しているフィンガーをピッタリとストレッチ状態にする機構も実装 してしまいました。もう一回ダブルクリックするとコンパクトになります。加え てメンバーIDのキー入力で該当行がフォーカスするようにし、参照したいメン バーをスピーディに見つけることができるようにしました。 ◆メンバー情報ダイアログも、ちょっとした変更を行いました。視認性を高めるた め、行頭の★マークを◆マークに変更しました。全体のデザインがシャープにな った気がします。 ◆さてもう一つ、最後にご紹介する強化は、譜面モニタに関する新しい機構です。 実は、この強化が他を圧倒して数倍も苦労してます。その操作性、デザイン、フ ォント視認性から、内部のデータ構造、高速処理を維持するためのアルゴリズム まで検討は多岐に及び、そしてMuseプログラムのかなりの部分に手を入れること になりました。何度も習作を作り上げ、そして陶芸家のように釜から出した作品 を叩き割ることを繰り返しました。 ◆こうして出来上がったのがテンポ属性の譜面重ね表示です。以前より、譜面モニ タ上にメンバー属性やフィンガー属性を表示して欲しいという要望が多数あり、 私もそれを実現できないか考え続けていました。当然、初めに思い付くのはグラ フ表示です。他のDTMソフトでもそういったデザインが多いですから。しかし、 グラフは見栄えは良いのですが表示エリアをかなり取り、ましてや属性に変化が ない場合単なる水平線が延々と続くだけで、そのためにMusing作業のスクリーン エリアが圧迫されることに納得できず、開発する気になれずにいました。 ◆今回閃いたのは、属性表記をそのまま描いてしまうデザインです。まさにMML ソフトウェアならではの発想だと自負しております。出来上がってみると、グラ フよりもMuseデータとの対応付けが容易で、格段に優れている事がわかりました。 短い間隔で長めの属性表記があると文字が重なってしまうので、上下二段にして 回避する工夫も施しました。むろん回避しきれない場合もありますが、頻度的に 問題ないでしょう。図らずも人間味を感じる配置となり気に入っています。 ◆しかし肌理細かいテンポ指定が無い場合には、音符上部の表示だけでは現在のテ ンポがどうなっているのかわからない状態になってしまいます。そこで音部記号 エリアに、直前で指定されたテンポの最終値を表示する配慮も行いました。実は この処理の高速化が大変でした。このテンポ表示自体のON/OFF機構も加え ました。OFFにしてしまえば、従来通りのスッキリとした譜面モニタのフィー ルをほぼ継承する事ができます。起動直後は敢えてスッキリ状態にしてあります ので、テンポ変化のある曲でぜひ音部エリアの < > 部分をクリックしてみてく ださい。 ◆今回対応したのはテンポ属性のみですが、これだけでもテンポ変化の激しいクラ シックなどのMusingには絶大な威力を発揮すると確信しています。そして、今回 の開発を通じて、属性値を譜面モニタに描画する方向性が見えてきました。今後 は音量などに代表されるメンバー属性、フィンガー属性をどう扱うかを継続的に 検討していきたいと思っています。全体属性のテンポと異なり、メンバーやフィ ンガーの表示仕分けや指定方法の考察が必要になってくるので難度は増しますが、 実に挑戦し甲斐のあるテーマです。布石としてフィンガー情報選択行を目立つよ うにしておきました。もうすぐ10周年を迎える譜面モニタ。新しい開発展開へ の道が開けた事にワクワクしています。クラフトマンシップ、万歳!
《Ver5.7 開発後記》2010.04.09
◆譜面モニタに関する機能強化を2つと内部処理の改善を2つ、そして文法解釈の 変更を1つ行いました。譜面モニタ強化の1つ目は前回予告したテンポ表示の拡 張です。数ある属性の中から、譜面モニタ表示でMusingが効率的になるもの、す なわち曲中指定の可能性が高いものを厳選し、それをポップアップで選択できる ようにしてあります。前回の開発を通して表示スタイルやフィンガー情報ダイア ログとの連動等、その完成イメージの骨格は固まっていたのですが、開発は難航 を極めました。全体属性であるテンポ、メンバー属性である音量、フィンガー属 性である強弱指定など、それぞれが値の範囲や±記号に対する記法定義に微妙な 差異を持ちます。それらに対応し統一感のある機能としてご提供するには、内部 データの持ち方やフラグの意味をも改修していく必要がありました。改造はMIDI エクスポートまで波及しプログラムを大幅に見直す事になりました。 ◆そんな苦難の改良でしたが様々な工夫を盛り込みました。前回は単純に2行間を 交互に表示するロジックでしたが、テンポ以外の属性表示をしてみるとその仕様 では重なって判読できなくなる状態が頻発。しかし機械的なシフトで闇雲に行数 を増やすのは私の美感が許しません。そこで各文字列長を算出し余裕のある場合 は1行目を優先しつつ、混み合う際には複数の行に分散していくといったインテ リジェンスな処理を導入しました。その際、行数限界の妥当性検証に皆さんの優 れたMuseデータが大いに役に立ちました。充実したMuseデータが蓄積されている ということは、そこから得られる音楽の楽しさだけでなく、開発自体に直接貢献 しています。皆さん本当にありがとうございます。 ◆前回のテンポ表示と同様、同じ時刻の属性を1つにまとめて表示する様にしまし たが、この集約処理は遅延系属性に対してのみ効果的で遅延の無い属性はむしろ 可読性を損なう事に気づきました。そこでグルーヴ属性やペダル属性、そしてア クセントは敢えて同時刻でも複数行に展開する様にしています。 ◆遅延指定がある場合、音部記号エリアの数値は基本的にその最終値を表していま すが、強弱属性は各ノートが担う情報であることから例外的な扱いにしています。 また強弱は(v)だけでなくアクセント(w)も同格に扱う工夫も施しています。一方 グルーヴ属性(pq)は表示すべき値が音長となるため、レイアウトの都合上、音部 エリアの表示は断念しました。ご容赦下さい。 ◆操作機構上の工夫も施しました。表示対象となるメンバーやフィンガーは、フィ ンガー情報ダイアログの選択行と連動させるだけでなく、譜面モニタでメンバー IDのキーを入力すると切替えられる様にしてあります。サクサクと切替えられる ので重宝すると思います。 ◆さて、2つ目の譜面モニタに対する強化は、WAVEコマンドも表示するようにした 事です。WAVEコマンドにはレイテンシー(もたつき)が付き物ですが、そのタイミ ング調整が格段にし易くなったと思います。そして内部処理の改善は、実はこの WAVEコマンド表示の開発過程から派生しました。この開発の最中、WAVEレイテン シーが以前のバージョンと比べて悪化していることに気づいたのです。よくよく 調べてみると、なんと前々回の改版で実施した同時刻発音ノートの順序最適化処 理に絡んでいました。実験の結果、WAVEコマンドは同時刻内の最後尾に配置する とレイテンシーが緩和されることが判明。多分、その次の音源コマンドとのイン ターバル確保がしやすくなるためだと分析しています。早速、最適な順序処理を する様に改善しました。ちなみに今回から、添付のオーディオファイル(拍手)を mp3化してみました。 ◆もう一つの内部処理の改善は、曲尾の判定を占有音長だけでなく実際の発音音長 も加味し、より長い方を採用するようにしたことです。実はこの改善も積極的な ものではなく、後述する文法解釈の変更に伴い必要に迫られて実施しました。以 前、掲示板の書き込みでhimajin925さんから、曲の最後に和音を記述した際の曲 尾処理に関し疑問を投げかけられたことがあったのですが、今回の改善によって、 違和感のない自然な仕様になったと思います。 ◆さて肝心の文法解釈変更の内容ですが『スタッカートなどで音長が短くなってい る音符に連結&を添えると、たとえ次にくる音符の音程が同一でない場合であっ ても、規定音長まで伸ばす』というものです。同一音程で接続される場合がタイ とすれば、今回の仕様によってスラーも追加されたと言えます。実は2年半前の V5.2において連結&の文法解釈を変更した際に一気にやってしまいたかったので すが、プログラムがあまりに複雑に絡み合い、どうしてもまともな動作するコン パイルエンジンに仕立て上げる事ができませんでした。今回譜面モニタ強化に伴 い大域的に構造を見直す機会があったので再度チャレンジし、無事完成に漕ぎ着 けることができました。無論、データの互換性が少々崩れますが、今回の解釈変 更に関してはむしろ意図的にスラーとして記述していた過去データの方が多いだ ろうと楽観しています。また、それを補って余りある効能があると判断しました。 例えば、スタッカートで演奏している一連の旋律の中で、一部だけスラーにした い場合、今までは音長を明に記述して音を規定音長として指定し、更にその次の 音符で再びスタッカート指定をしなければなりませんでした。これからはスラー にしたい音符に&を付けるだけで済みます。あたかもアクセント指定の様に一時 的指定として機能します。コーディングの可読性も格段に増すと思われます。 ◆今回の開発後記、少々長くなってしまいました。しかし実際いっぱい開発したの ですから仕方がないですよね(苦笑)。苦労して開発したこれらの機能、ぜひ有効 に活用していただきたいと切に願っています。
《Ver5.8 開発後記》2010.04.24
◆その昔譜面モニタが無い頃、昨日まで打ち込み終わった箇所からMusingを再開す る際に、それまでの各メンバーの音量値や各フィンガーの強弱、オクターブ値な どを確認するために、フィンガー情報を活用していました。譜面モニタができて もそのMusingスタイルは変わらず、曲尾の値がハッキリしないと不安な私です。 そんな私にとっては、フィンガー情報は必須のダイアログなのですが、皆さんか らは、今一つ利用頻度が低いという声が挙がっていました。しかし今回のバージ ョンアップは、そのフィンガー情報の利用頻度を確実に高めるであろう強化です。 ◆従来より、メンバー単位の演奏ON/OFFはメンバー情報にて可能でしたが、 今回、フィンガー情報による特定フィンガーのフォーカス機構を追加しました。 すべてのフィンガーを個別にON/OFFするという機構ではなく、あるフィン ガーに焦点を当てる(フォーカスする)というイメージの機構です。フォーカスさ れたフィンガーが属するメンバー内で、他のフィンガーが全てOFFになります。 この機構は同一メンバー内にフィンガーが複数あるドラムパートなどで、特に威 力を発揮すると予想しています。今まで、逐一他のフィンガーをコメント化して 確認していましたが、その手間が省けます。 ◆このフォーカス機構はメンバー情報のON/OFFよりも優先して機能し、かつ メンバー情報のON/OFF機構と併用可能ですので、全てのメンバーをOFF にしておき、上下のカーソルキーでフィンガー情報のリストを高速移動させると、 譜面モニタに次々と当該フィンガーのみが表示されていきます。前回サポートし た譜面モニタ属性表示機構と組み合せるととても便利だと思います。余談ですが、 各フィンガーでコマを作っておけばパラパラ漫画に使えるかもしれません。 無論各コマ単色になりますが、最大160コマ作れます(笑)。 ◆地味ではありますがもう一つ、譜面モニタの自動譜めくり強化を行いました。以 前から譜めくりの際にマージンが全くないのが気になっていました。指揮棒カー ソルがウィンドウの右端に完全に到達した段階で譜めくりするため、ある程度先 を確認しながら聴く場合、譜めくり直前はフラストレーションが溜まります。し かしどの程度のマージンが最適かは、曲のテンポや音長の細かさ、音価の密度な どで変化しますので一概に決められません。そうなると、マージン量をiniファ イルで設定してもらうか、専用のGUIを立ち上げて都度調整してもらうといっ た仕様になりますが、私は指定しなければならないパラメータがゴチャゴチャと 存在するソフトが大嫌いなのです。パラメータが多いほどユーザが好みに合せて 調整できるので優れたソフトである、という考え方もあることは認めますが、専 用のメニューや機能が無くとも、極自然に手に馴染むような調整が好みです。 ◆そんな訳でなかなか踏み切れなかった譜めくりマージンの改良なのですが、今回 譜面モニタの小節線に着眼すれば、私好みの仕様が実現する事に気づきました。 Muse文法には小節の概念はありませんが、譜面モニタはガイド線としての役割で 小節線が存在しています。現在見えている最後の小節線に到達した時、譜めくり するようにすれば、譜面モニタのウィンドウサイズ調整でマージンを設定できま す。譜めくりが小節線上で起こるため、必然的に譜めくり後の状態は描画先頭位 置に小節線がきっちりと合った状態になります。実に心地好い仕様です。 ◆譜面モニタの拍子はかなり柔軟な値を設定できるようになっているため、拍子の 取り方次第では非常に長い小節となり、譜面モニタのウィドウに1小節が収まら ない状況にすることもできます。こうなると譜めくりタイミングの小節線が存在 しない局面が出現し上記処理は破綻します。そこで、この様な状況下では従来ど おりの動作をするという例外処理も組み込みました。ちなみに再び余談ですが、 この譜めくりの正規化により、もしかしたらこれまた譜面モニタのパラパラ漫画 が作り易くなったかもしれません。先程のフォーカス機構と異なりこちらのコマ は、横方向(時間方向)に並べていくので、16色表示が可能です。(笑) という訳で、今回は図らずもパラパラ漫画に応用できる2つの強化となりました。 ◆そうそう、もう一つありました。譜面モニタの左下に並んでいる、[G][T][A]の ボタン。その内の[G]と[T]はGive&Takeの頭文字から採ったのですが、思えば実 にわかり難い命名です。良い機会なので新しい名称に変更しました。再生開始の 意であるPlayと、手動譜めくりの意であるManualです。それぞれの頭文字を採り [P][M]にしてあります。少しは把握し易くなったでしょうか。 ◆前回の改版から半月足らずでメジャーアップをするという、近年稀に見る早さの バージョンアップとなりました。実に気まぐれですが、フリーソフトであるが故 の所業とお許し下さい。まあ、直ぐに不具合が見つかり、例によって即マイナー アップをするかもしれないので、今に始まった事ではないんですけど(苦笑)。
《Ver5.9 開発後記》2011.04.23
◆一年ぶりのバージョンアップとなりました。今回は6つの開発テーマをピックア ップしてみました。何年も頭の中で煮詰めていたものから、開発直前に思い付い たもの、ミューザーの皆さんから頂いた要望への対応など、取り上げたテーマは 様々です。久々の開発でしたが、着手してみると次々と当初想定していなかった 部分にも手を付けたくなり、ボリュームとしても結構盛りだくさんとなりました。 ◆1つ目は、新たなフィンガー属性指定の追加です。その名も……“移調楽器 y”。 大編成のオーケストラやブラスバンドの音楽をMusingする際、異なる移調楽器を 1メンバー内の各フィンガーに割り付ける記述法に、従来からもどかしさを感じ ていました。調性(\)と移調(T)がフィンガー属性でないため、次のフィンガーに 移る度に指定し直さなければならないからです。そこでこれらのフィンガー属性 を新設する検討を以前から行っていました。しかし単に夫々のフィンガー属性を 立ち上げる対応は、対処療法的で気が乗りません。納得感が得られないと実装に 踏み切れないのが私の性向なのです(苦笑)。そしてやっと先日、お風呂の中で閃 きました。課題は移調楽器の指定なのであるから、調性と移調を一括してセット できる機能こそ、目的にストレートに向かって美しいと。こうして完成したのが “移調楽器 y”です。もっと早く欲しかったです。自分自身が(笑)。 ◆2つ目は、小西さんからご要望を頂いた件です。V5.6の改版でフィンガー拍数の カウント表示を撤廃したのですが、微分音長を活用したデータの場合は譜面モニ タでもタイミングのずれを確認できないため、せめて微分音長だけでも定量的な 表示を復活させてくれないか、というリクエストでした。小西さんはどの局面で この事態に陥るかを具体的な例で示し、しかも極めて謙虚な態度でご依頼してく れました。利用局面の明快なイメージが沸いたため採用させていただきました。 有意義なご提案、ありがとうございました。この要請の真意を汲み取ると、その 表示は一覧形式が相応しいと考え、音名指定xをフッターの方に移して対応しま した。ついでにフッターの行数を増やし、今回新開発した“移調楽器 y”の状態 も表示させました。フッターの下膨れ感が否めませんが(笑)、このエリアの右ク リックによるリロードがしやすくなったことでもあるし、まあ許容範囲でしょう。 ◆3つ目は、多くの方から要望を頂いていたテーマです。ボリューム(X7)の遅延指 定。X指定は実に8年前に実装したのですが、当時から断続的に遅延対応のご要 望を頂いており、積年の課題となっておりました。本当は、この機会にX7に限ら ず、全てのX指定の遅延に対応しようとも思ったのですが、いくつか複合的な課 題があったのです。ご存知のように、Museの遅延指定は到達値だけを指定するポ リシーなため、データの冒頭でいきなり遅延を記述した場合、開始値として音源 の初期値を採用する必要があります。ところがいくらサイト等で調べても、代表 的なコントロールの初期値しか判らないのです(苦笑)。また仮に判ったとしても、 128個のXタイプのすべての値を記憶するのみならず、キープレシャーに於いては 128メンバー×128音程の計16384個の値を管理しなければならい。更にはそもそ も遅延という機構には相応しくないスイッチ系のコントロール制御も多く、また VやRなどMuseが独自に予約語化したメンバー属性と併用されてしまった場合の開 始値の扱いをどうすべきか等々、課題山積でなかなか美しい指針を得られません でした。結局、実質的に最も使用頻度が高く、実効力のあるコントロールのみを サポートしようと考えました。そして、上記の課題を全てクリアするコントロー ルは、X7を置いて他にないと判断した訳です。この実装は思いの外プログラミン グ量が多く、muse.exeの容量が一気に増えてしまいました。と言っても、まだこ のReadme.txtより小さいのですが(笑)。何はともあれ、これでVで抑揚を付けな がらX7で全体をクレッシェンドするといった演奏表現が可能となりました。 ◆4つ目は、Ayakongさんの掲示板の書き込みに端を発した改善です。V5.8でのマ イナーバージョンアップにて、メンバー情報でキーボード操作をした際、フォー カスをメインウィンドウに強制移動させる処理を施しました。メインウィンドウ はすべてのメニュー操作ができるハブ的なウィンドウなので、基本的にフォーカ スはそこにある方が視覚にハンディを持たれた方のMusingが楽になるだろうと考 えたからです。しかしこれは実に浅はかな憶測でした。読み上げソフトはアプリ ケーションによるフォーカス移動を知らせてくれないため、利用者が迷子になる という事実を諸熊さんから教えてもらいました。「小さな親切大きなお世話」の 典型ですね(苦笑)。私はちょっと独善的な面があるので、気を付けなければいけ ません。今回、強制的にフォーカスを移動する処理を全廃することにしました。 Ayakongさん、諸熊さん、ありがとうございました。 ◆5つ目は、アクセントwの文法解釈の微調整です。和音のカッコの直前にwを添え ると和音内のすべての音がアクセント対象となるのですが、連符はカッコ直前に wを添えてもアクセントが効くのは次に出現する一音だけ、というのが今までの 仕様でした。連符は和音と異なり一音づつ奏でられていくので、この仕様の方が 自然だと当初は考えていたのです。しかし先日、修飾音を連符で記述しその修飾 音全体を一時的に強くしたいという局面に出くわしました。考えてみると、カッ コの外側から指定するか、内側の音符に添えるかで効果スコープを制御できる方 が明らかに優れた文法です。という訳で連符も、和音と同じ仕様にしました。和 音内連符とか連符内和音、連符内コードなどがあるため、プログラム制御が結構 複雑で苦労しましたが、綺麗に仕上がったと思います。少々データの互換性が崩 れますが、Museの美しい進化のためにどうかご容赦下さい。 ◆6つ目は、何年も前から多くの方からご依頼を受けていたテーマです。Museは、 文法エラーを検出すると、各種ウィンドウ状態を初期化します。そして、その文 法エラーを直した後リロードしても、直前状態には復帰しません。演奏位置は曲 頭に巻き戻されてしまいますし、オフにしていたメンバーも全てオンになってし まいます。ですからMusing中に文法エラーが出ると、エラーを直すよりも直前状 態に指定し直す事の方が面倒で、私自身もエラーが出る度に舌打ちしていました (苦笑)。実はMuseは、従来からリロード時に直前状態を極力維持するようにして ありました。無論の事、リロード後のデータが直前状態を維持できない内容に変 更されていても、破綻が起きない様にリカバリする処理も組み込んでいます。例 えば先程までいたメンバーがいなくなったり、直前状態の演奏位置よりも演奏時 間が短くなったりした場合です。これらの対応を万全にしていたので、論理的に エラー時からの復帰もその派生にすぎず、結構簡単に対応できるはずだと頭では 考えていました。しかし何と申しましょうか、何やら嫌な予感がして手を付けら れずにいたのです。そして、今回改良に着手しその予感が当たっていることに気 づきました。結局今回の6つの開発テーマの内、このテーマが一番苦労しました。 厄介だったのは、エラーが起きてからリロードをするまでの間はデータが何も読 み込まれていない状態にしなればならないということです。この状態にしておか ないと内部状態と外部状況に乖離が起こり、論理的に収拾が付かなくなります。 にもかかわらず、リロードでまた直前状態に復帰させなければなりません。この 様に、状態クリアと状況維持という背反律を満たさなければなりませんでした。 とても神経を使う改良でしたし、動作テストもバリエーションが多くて大変でし た。何か気になる挙動があったら、どうぞお知らせ下さい。 ◆他にもいくつかの改善を試みました。初期起動時の音源応答遅延により鍵盤表示 と発音がズレる傾向を抑止するために起動直後にMIDI音源をダミーでOpen/Close させたり、フォントのロードによる文字列描画のモタレを軽減するために同時刻 イベントでの文字列描画タイミングを後方に移動させたり、バッチ処理モードで は必要ないウィンドウ制御などを排除して高速化を図ったり、譜面モニタがアク ティブになっていなくてもSHIFTキー押下で虫眼鏡カーソルに変化させる、とい った諸々の改善を施しました。(非アクティブウィンドウのキー押下イベントは 検知できないため、マウスを少し動かさないと虫眼鏡になってくれないのですが) という訳で、久々の本格的な開発であったにもかかわらず、どうやらプログラミ ングの勘は鈍っていない模様で、以上の改修すべてを2週間程で終えることがで きました。でも、現段階で偉そうな事を言ってはいけませんね。皆さんからバグ 報告がビシバシ飛んでくる様でしたら、やっぱり勘は鈍ってます。ていうか、そ れは今に始まったことではありませんね(苦笑)。
《Ver6.0 開発後記》2011.07.06
◆整数部が桁上げされる節目のバージョンアップですので、もう少し派手な更新内 容をと当初は考えていたのですが、残された検討テーマや課題は難しいものばか りで、結局ギブアップしてしまいました。ごめんなさい(苦笑)。 ◆1つは前回リリースしたXコマンドの遅延機構を拡大したことです。X遅延は多く の方が待ち望んでいたようでリリース後反響が大きかったのですが、X7に限定し た仕様に対して再考の要請が起こりました。るうさん、諸熊さん、H.N.WPKIDSさ ん、MIZさん、PT2Kさん、浅川さん達の掲示板によるご意見を参考に、今回の改 訂でX0~X127の範囲で遅延を可能にしました。Muse予約コマンドとXコマンドと のエイリアス化というアイディアも頂きましたが今回は見送りました。また、そ もそも遅延処理に意味のないコントロールもありますが、本機構を活用するのは スーパーミューザー諸氏であると楽観し、その利用節度を委ねようと思います。 ◆今1つは、FINGコマンドでメンバー単位にセット対象フィンガーを指定できるよ うにしたことです。このアイディアはH.N.WPKIDSさんが掲示板で展開してくれま した。それは表面上の仕様設計に留まらない、互換性や整合性にまで言及した完 璧な提言でした。ほぼそのまま採用しております。ご提案ありがとうございまし た。なお本開発を通じて、譜面モニタへの表示属性データで不要なものが残存し ている箇所を見つけ、対処することができました。重ねて感謝致します。 ◆以上、結果として今回の改版は機能強化レベルの2つとなりました。残された山 は登頂困難なものが多いですが、体力、知力、そして気力が続く限り、Muse開発 を継続する所存ですので、今後ともお付き合いの程お願い致します。
《Ver6.1 開発後記》2012.06.03
◆かなり長い間使い込んだパソコンを昨年秋に新調し、私もWidows7ユーザとなり ました。買い替えになかなか踏み切れなかったのは、ひとえにMIDI音源の継承性 に不安があったからです。私が愛用する音源は、ソフト音源のRoland VSCです。 その動作保証はWinXPまでで、VistaもWin7も保証されていません。巷の噂では、 32bit版のOSであれば動作するが64bit版は無理との事。なんとも緊張の機種選 択です。結果として、無事インストールも動作もできて事無きを得たのですが、 次第に先細りになっていくMIDI音源環境に不安を覚える事頻りでした。前提とす るMIDI環境が衰退し、Muse自体が楽しめなくなる日が来るかもしれない・・・。 ◆そこで注目したのが、静かな広がりを見せているサウンドフォントです。様々な サイトで数多くのサウンドフォントが公開されており、その中にはとてもハイレ ベルな音質を実現しているものもあります。しかも、その多くが無料で手に入る。 気に入ったサウンドフォントを楽器毎に組み合せる事さえできるらしいのです。 ◆しかし、サウンドフォントをMuseで鳴らすため、演奏の都度いろいろなインター フェースのアプリを起動したり、ポート接続の設定したりするのは閉口します。 「Musingに必須なのはエディタとMuseだけ!」というシンプルな必要条件が私の 信条です。サウンドフォント(*.sf2)をゲットしたら、それを任意フォルダに放 り込みさえすればMuseに新たな音源ラインナップが加わる。後はいつものMusing と何ら変わりはない。そういった単純明快、簡素清貧な姿を実現したいのです。 ◆当初は、コンフィグ仕様がある程度公開されていて、その指定パラメータも多彩 なTimidity++をターゲットに考えていました。しかしサウンドフォントを切替え た際、直前にロードしたサウンドフォントのデータを、どうやっても完全にクリ アできません。これでは、私が想定しているイメージを組み立てられないのです。 一時は挫折し掛かってしまいました。そんな折、MuseWorldの掲示板で諸熊さん が紹介してくれたCoolSoftというサイトで公開されている「VirtualMIDISynth」 の存在を知りました。このソフトは軽量でメモリ効率も高く、サウンドフォント の切替えにも完全性があります。これならばMuseと親和性がありそうでした。 ◆更に深く掘り下げて調査したところ、実はVirtualMIDISynthはBASSライブラリと いう他者開発のDLLを利用しており、BASS側でも「BassMIDIdrv」というほぼ同機 能のフリーソフトをリリースしていました。つまりこちらが元祖であり本家な訳 です。しかるに両者を比べると、どうもVirtualMIDISynthの方が肌触りがいい。 何より、そのReadme.txtに書かれたソフトウェアに対する姿勢に共感を覚えます。 という訳で、本家ではなく分家の方のドライバを採用する事にしました。 ◆Muse側の設定は「初期化ファイル(muse.ini)にサウンドフォントの所在フォルダ を一度記述するのみ」という極限まで手間の掛からない設計にしました。どこか のサイトでサウンドフォントのファイルを手に入れたら、それこそ文字フォント を追加する如く音源メニューに追加できる仕様です。現時点のVirtualMIDISynth は、Timidity++に比べるとコンフィグで指定できる音源制御のパラメータが貧弱 (というか皆無?)なのですが、このソフトはまだ歴史も浅く現在も改版が頻繁に 行われているため、今後の強化に期待してコンフィグファイル(*.conf)にも対応 することにしました。サウンドフォントと同一のフォルダに、任意のファイル名 を付与し作成したコンフィグを放り込んでおけば、それらコンフィグ群も音源メ ニューに出現するようになります。 ◆こうして、ひとたびVirtualMIDISynthをインストールしてしまえば、Museだけで サウンドフォントを追加したり切替えたりできる、すなわちVirtualMIDISynthの アプリ起動操作さえ不要であるMusing環境を実現する事ができました。サウンド フォント対応のメリットは、多彩なフリー音源を容易に活用できるのみならず、 MIDIの弱点である再現性の問題も、ある程度克服できる点にあります。Museデー タの作り手側がターゲットとしたサウンドフォントを明示し、聴き手側がそのサ ウンドフォントを入手すれば、音楽演奏の再現性がほぼ一致します。 ◆確かに、他のソフトウェアとの依存関係を作ってしまうことは、今後のMuse開発 の自由度を低下させる恐れがあります。がしかし、考えてみれば従前からMuseは MIDIという規格にべったりと依存しており、更に言えばWindowsという機構のAPI で組立てられている訳ですから、それほど劇的なパラダイムシフトではないと捉 えています。そもそもサウンドフォントが不要な利用者はVirtualMIDISynthのイ ンストールが必須ではないのですから、それほど強い依存関係でもないでしょう。 ◆今回の開発は、他のソフトとの協調動作という初の技術要素を含んでいたため、 リリース前にΑφροδιτηさんに動作検証をお願いしました。厚く御礼申し 上げます。しかも検証を通じて不具合を検出していただきました。TiMidity++を、 MIDI Mapperを介して駆動すると演奏開始時点で必ずハングするというものです。 ◆実はこのバグは、今回のサウンドフォント対応と直接関係がなく、V5.87で同種 の不具合(内容は微妙に異なる)に対処した時点から潜在し続けていました。原因 は、MIDI MapperとTiMidity++を組合せた場合のみ、何故かドライバがエクスク ルーシブ処理の完了フラグをセットしてくれない事にありました。私のプログラ ミングに至らない部分があるのかもしれませんが、どうしても対処できません。 この際・・・、という気持ちが頭をもたげました。そもそも、MIDI Mapperの存 在意義は、メンバー毎に異なる音源を割り当てられる事にあります。でも実際は、 各音源のレイテンシーが異なるため実用レベルに至ったとは言い難い状況です。 一方時代は、その役割をサウンドフォントに取って代わらせようとしているよう に感じました。しかもWindowsは、Vistaから利用者が標準的手段でMIDI Mapper を切替える事ができなくなってしまいました。こういった様々な状況を勘案し、 ついにMuseもMIDI Mapperを撤廃することを決断しました! 無論、今回のバグは VistaやWin7のせいではありません。よってこの撤廃は「Windwos7 対応」とは胸 を張って言えないのも事実です。強いて言うならば「Windows7 便乗」です(笑)。 ◆さて話題は逸れますが、今回のバージョンでは他にも手を入れた部分が4つ程あ ります。まず音源メニューの版数表示。今まで正規のWindowsのAPI仕様に基づい て各音源のバージョン情報を取得していたのですが、所定の受渡し変数に正確な 情報をセットしていない音源ドライバがありまくりでした(苦笑)。信憑性のない 情報を表示し続けるのは精神衛生上宜しくないので、この機会に撤廃しました。 ◆次に、Museメインウィンドウ右上の版権表示。実はこの表示は、演奏を開始する とグレーアウトし、演奏中である事を視認できるよう工夫しています。(演奏中、 不用意に濁声が聞こえて、興醒めしないようにする機能も兼ねています) ~ 笑。 しかし、Windows7ではグレーアウトのそのものが平面的で目立たなくなり、通常 表示と区別が付き難くなってしまいました。そこで演奏を開始したら、版権の頭 に♪を表示する様にしました。つまりWindows7対応です(大袈裟ですか?) ~ 笑。 ◆更に、テキストエリア背景色。従来はシステムのメニュー背景色に自動的に合わ せる仕様だったのですが、Windows7ではメニュー背景が3D型表示になった事も あり、デフォルトのシステム色はとても惨めな色合いになっていました。しかも、 ユーザがこの色を変更するのは、実に分かり難い操作が必要となっていました。 そこで私なりにデフォルト色を設定し、加えて初期化ファイルでユーザが自由に 色を変更可能としました。つまりWindows7対応です(大袈裟ですか?) ~ 大笑。 ◆最後に変更を施したのは、このReadme.txt自体の章立てです。ご存知の通り、本 Readme.txtは大変長い(苦笑)。特に問題は、本書の肝である「Muse文法」に辿り 着くまでに、かなりの行数を読破しなければならないという点です。そこでアプ リケーション概説の章を、最低限の解説とその他に分離し、後者をMuse文法解説 の後に移動することにしました。アプリケーション概説が2つに分離した事で、 章立てが3章から4章に変更となった次第です。さしずめ、協奏曲を交響曲に組 み直した、といった所でしょうか(笑)。このReadme.txtを素晴らしく美麗なPDF ファイルに仕立て上げてくれているPT2Kさんには、またしても新たな対応作業の 負荷を与えてしまい恐縮ですが、どうか御容赦下さい。 ◆閑話休題。Muse初版開発の頃、私はMIDI規格を勉強しながら、このデジタル技術 を駆使すれば個々の楽器の音色をバラ売りできるはずだと気づきました。実世界 で各種楽器を購入するようにMIDI楽器が単独購入できて、それらを組み合せて、 自分好みのトータル音源を組み上げられたら実に愉快です。1楽器500円ぐらい なら買ってしまいそうです。しかしドラムも合せて256個の楽器を揃えたら、総額 10万円を裕に越えてしまうし、しかも稀に1つ1万円とかいう高価な楽器を思わ ず買っちゃったりして(苦笑)。でもリアルな楽器に比べたら格段に安いし、少し ずつ揃えて行くとしたら心理的な購入障壁は低くなることでしょう。ということ は、逆にメーカー側からすれば充分成立しそうなビジネスモデルですよね。 ◆しかし残念ながら世の中はそのようには進まなかった。需要は、完成された音楽 を購入する方向に進んでしまいました。手間を掛けて自ら音楽を創る、という市 場はどんどん小さくなっています。侘しくも寂しい想い一入です。でもいつの日 か「創る悦びへの回帰」が起こると、私は信じています。長い歳月に渡りMuseを 支持してくれているミューザーの皆さんの存在がこの種の「悦び」が極めて普遍 的であることを物語っているのだ、と強く感じるからです。心から感謝致します。 ◆私にとってMuseとは、私自身のミームの一部を伝承するトランスポーターであり、 私が他界した後も、Museを通じて人々に感動を与え続ける、否、たとえ細々とし た状況でも、感動するための道具としてMuseが存在し続けることが、私のささや かな望みです。今回のサウンドフォント対応は結局、VirtualMIDISynthという偉 大なるドライバソフトを、単に使いやすくラップしただけの強化かもしれません。 がしかし。「優れた楽器奏者をそれぞれ招聘し、一つの楽団を編成する」そんな 私の夢に、一歩近づくことができた強化なのではないかと感じています。
《Ver6.2 開発後記》2012.08.16
◆Museメニューの「エクスポート」が、何故「MIDIファイル出力」ではなかったの かというと、それは開発当初からいつか実装したいと思っていた機構があって、 それをこのメニューの階層下に入れたかったからです。でも、その実現の可能性 は全く見えず、もどかしい思いを抱きつつ今に至っておりました。 ◆しかし、前回のサウンドフォント対応で他ソフトとの連携という世界に足を踏み 入れたことから「ならば一丁試してみるか」というノリで実験プログラムを書き 始めました。相手は楽譜作成フリーソフトのLilyPondです。Museと同様のテキス トインタフェース。オープンソースで世界中にユーザがいます。伴侶としてこれ 程頼りになるソフトはありません。サイトもとても端麗に作り込まれています。 ◆まず、mid2musの様に都度Museデータから変換する方式にするか、それともMuse コンパイル処理と一体化するかの方針決定が必要でした。初めは前者を考えてい ました。しかし80%以上がMuseコンパイルと同様の処理であることに気づき、後 者に方針変更しました。後者の方式は、楽譜出力元の情報とMuseファイルの一致 を保証できる事、メンバーON/OFF状態などにも連動した楽譜が作れる事等メリッ トが多いのです。しかし譜刻もしないのに、楽譜を記譜するための情報をMusing の際中抱え続けるのはメモリ効率が劣悪です。そこで極限まで情報を圧縮して保 持しておき、PDFエクスポート時にそれを展開処理するという方式を採りました。 ◆方針としては間違っていなかったと思うのですが、これが地獄のように大変なプ ログラミングになりました。コンパイル時間も結構掛かるようになってしまいま した。しかも不思議な事に構築時よりもリロード時(それもメモリ解放)に酷く時 間が掛かるのです。基本関数のfree()が原因ですから、プログラムの見直しでは 速度アップは図れそうにありませんでした。更に不思議なのが、WinXPだと速度 があまり低下しないのです。これはOSのアーキテクチャとの絡みかもしません。 そこでVC++6.0を卒業し、VS2008にステップアップしてみました。(といっても 相も変わらずコマンドラインで生のC言語のみ利用なんですが・・・) ◆すると、なんとも呆気なく速くなったのです! 実際、楽譜機構を備えていない 今までのMuseより倍以上速いです。まるで、大リーグボール養成ギプスを外した ような気分です。Muse(V3.6)で実装した譜面モニタが、大リーグボール1号だと すれば、今回の楽譜PDFへの出力は大リーグボール2号かもしれません。VS2008 にしたことでmuse.exeの容量が一気に増えましたが、それでもなおReadme.txtよ り小さいです(笑)。VS2010だと更にほんの少し高速になったのですが、WAVEコマ ンドが不安定になるという副作用があったので今回は見送りました。 ◆極力今まで蓄積したMuseデータに手を加えることなく、それなりの楽譜が出るよ うにするのが当面の目標でしたが、デジタルなMuseデータをアナログな楽譜に変 換するのは至難の業でした。演奏情報であるMuseデータの方が楽譜データよりも 格段に情報量が多いため、そこから適切な情報を選別し、かつ適度な情報量に押 さえ込まなければ、人が見て自然な楽譜になりません。譜刻の体裁はLilyPondが よろしくやってくれるのですが、その内容をセットするのはこちらの責任です。 構成する音符の音長がバラバラな和音、和音の中の連符や連符の中の和音、そし てその中のコード記述、微妙な修飾音の判断と少し短い音長の組み合せ・・・。 頭の中でLilyPondの文法とMuse文法が交錯します。楽譜上のタイミングがズレな い様に音長を貯金したり借金したりしながら、様々な状況に対応しなればなりま せんでした。もう、しばらく楽譜なんて見るのもイヤです・・・(ウソです)。 ◆こうして苦労の末にかなりの自動化を果たしたつもりですが、楽譜構成や全体の 体裁等はやはり追加情報として与える必要があります。出し過ぎてしまう自動記 譜を抑止したり再開したりする制御も必要です。それに、LilyPondの多様な機能 を満喫してもらうためにパススルー命令も欲しい所です。これらを従来のMuse文 法と一貫性を保ってまとめ上げなければなりません。いくつもの習作を重ねた結 果、LILYコマンドとスルー指定の2つの表記を追加するだけのシンプルで美しい 文法が完成しました。まあ、機能区分で逃げている感もありますが(苦笑)。 ◆とはいえ、どうしても限界があります。例えば和音要素が複雑な場合、長い音長 は全音符にカットされてしまいます。和音内のいろいろな属性や、連符内コード ネームも記譜されません。細かい音長のトレモロはそのまま出てしまうので大抵 の場合用紙からはみ出て見えなくなります。1つの五線譜に複数フィンガーを集 約し記譜する場合等も、はみ出して見えなくなる傾向にあります。この様に結構 “消え”ます。なんせ大リーグボール2号ですから(笑)。ちなみに、LilyPondの 処理はかなり時間が掛かります。処理中は、Muse自体が(応答なし)になりますが、 ウィンドウタイトルの「楽譜生成中...♪」が消えるまで気長にお待ちください。 って、これもしかして大リーグボール3号なのぉ~?。 ◆それと交響曲などの大作はLilyPondが悲鳴を上げて落ちます。別プロセスで起動 させているのでMuseは継続できますが、長編作品は投入しない方が無難でしょう。 マクロは繰返し記号ではなく全部展開してしまいます。なのでヴェクサシオンは、 確実に落ちます。3名の方がヴェクサシオンを作ってますが、全滅でした。(笑) あと譜面モニタ絵画も危ないので、v0はオミットすることにしました。v0を休符 で記譜する仕様も試しましたが、絵画が素晴らしい程ハングするので止めました。 ◆私の様に楽譜参照でMusingしているミューザーにとって、打ち終わったデータを 楽譜出力するなんて一体何の意味があるのでしょうか。絶壁の様に立ちはだかる プログラミング課題を目の前に「こんなに苦労して果たしてこの機構を提供する 意義はあるのだろうか?」と自問の日々でした。しかしこの機構は新しくも素晴 らしいMusingの世界を切り開いてくれるという予感を感じたのも事実です。確か にいくつか実用的な局面は思い付きます。(1)Museで作曲した楽曲を他者に楽譜 で渡せる。(2)耳コピした結果を楽譜として残せる。(3)例えばピアノ譜を弦楽四 重奏曲に編曲するといった場合も楽譜化は有効。(4)単純な楽譜打込みであって も楽譜同士を比較する事でデバッグに役立つ。とまあ、こんな所でしょうか。 ◆今回のバージョンアップに伴い、コマンドライン引数の文字アサインを見直しま した。引数付きのショートカットで起動している皆様、お手数ですが手直しをお 願いします。そして、関連ソフト開発者の皆様、仕様を変更してごめんなさい。 それと、LILYコマンドで必要に迫られたためシングルクォートをダブルクォート に読替える仕様を立ち上げ、その仕様を従来のTEXT系コマンドにも適用しました。 これでテキストエリアにもダブルクォートを表示できるようになりました。でも、 この対応でいくつかの作品に互換性の破れが(単に、テキストエリアの表示上の 問題ではありますが)見られました。申し訳ありません。 ◆今回の開発の総合テストでは、皆さんから頂いた手元の保有データを大いに活用 させてもらいました。譜刻パターンは実に多彩で、とても一人の頭の中で網羅し きれません。その意味で、現有8,000曲を越える様々なデータ群は最強のテスト シナリオです。感謝の気持ちを胸に抱きながら、バグと格闘し続けました(苦笑)。 さぁてと、綺麗な譜刻ができる様、久々のmid2mus改版をしようかなぁ~。でも、 その前に一息つきたい。皆さんの今までの演奏を堪能し英気を養わせて下さい。 ここ2ヶ月の間、ただただ楽譜を眺めるばかりで、肝心の“音楽”をほとんど耳 にしていない私なのです。
《Ver6.3 開発後記》2013.01.08
◆前回、前々回とかなり大掛かりな改版が続いたので、今回は息抜きバージョンと させていただき、まずは各種ダイアログのフォントを見直して“MS UI Gothic” を積極的に利用するようにしました。今までのMuse対応OSでは、このフォントが 存在しないものもあり、不用意に採用するとダイアログのレイアウトが崩れる懸 念がありました。今般ビルド環境をVS2005にしたことで、Museの対応OSはWin98 以上となり、これで晴れて“MS UI Gothic”が解禁となった訳です。このフォン トはひらがなとカタカナのスペース効率が高いし、何より濁音と半濁音の判読が しやすいので昔から好みだったのです。やっと使うことができました\(^o^)/ ◆譜面モニタ上部のテキスト表示は、最新の“Meiryo UI”を採用してみました。 この部分は、旧OSでフォントの挿げ替えが起こってもレイアウトダメージが起こ らないので安心です。一方、新OSでMuseを利用する場合は、ClearTypeの高品位 な見栄えを享受できます。まさに“明瞭”です。なお、演奏会場の設定ダイアロ グは英字中心なのでTahomaにしてみました。 ◆これらのフォント変更作業に触発されて、楽器の試聴、ドラムの試聴、波形の加 工のダイアログ構成も見直しました。試聴のダイアログからR,Q,Wのエフェクト 調整を取り払い、それらは波形加工のダイアログに集約しました。各ダイアログ の位置づけがより明快になったと思いますが、いかがでしょうか。 ◆他にも、フォントの確認ダイアログをコンパクトにしたり、演奏会場のダイアロ グに目盛り付きのスライダーを一部採用したり、MARK間の時間チップや譜面モニ タ属性選択ポップアップメニューの出現位置を微調したり、楽器の試聴における 選択バリエーションを6種類から19種類に大幅アップしたり、ドラムの試聴に おいて[o6m]のボタンを追加したり、譜面モニタ左肩の属性値の表示のちらつき を防止する処理を加えたり、奇を衒っていた半透明の鍵盤カーソルを廃止してカ ラフルな鍵盤上でも視認性の高いデザインに変更したりしました。 ◆内部処理にも多少手を入れています。中核となる構造体にビットフィールドを適 用することで、アライメントを改善。Museデータ展開におけるメモリ効率が10% 以上向上したはずです。またプログラム上の無駄な処理も何点か発見し、それら を改修しました。これまでの60回を越えるバージョンアップにより、思ってい た以上に残骸が溜まってました。今回の版でそれらの垢をかなり洗い流せたので はないかと思います。 ◆こうして書き連ねてみると、それぞれが地味ではありますが、息抜きバージョン とはいえ結構やってますね(苦笑)。そうそう、ささやかではありますが機能強化 もやりました。譜面モニタの8va機構を拡張し、15maにも対応しました。これで 極端に高かったり低かったりする音程の確認も、少しは楽になると思います。 ◆ちなみに、前回のバージョンは何度もバグ改修を繰り返しました。みなさんとの 共同作業で行ったその活動に対し、先日タカハシさんから感動的なメールを頂き ました。まさに私の気持ちを代弁する内容です。『最近、MUSEに潜む些細なバグ が改正され、頻繁にバージョンアップされていらっしゃいますよね。掲示板では ユーザの皆さんが各々の検証結果を報告し、様々な意見交換が活発になされてい ます。皆さん如何にMUSEを大切に思っているか、MUSEを通じて如何に団結してい る事か!本当に素晴らしい事だと思います。』 ◆また掲示板ではASAJIさんからとても素敵な言葉を頂きました。『Museという我ら の宝物に見つかった微かなほころびを、創る人使う人が一体となり見事なチーム ワークで無事繕えました事、お祝い申し上げます。お疲れ様でした。』ご協力い ただいた方々のお名前を、感謝を込めて掲載させていただきます(順不同ご容赦)。 himajin925さん、Elekenさん、そなさん、楠本さん、ねこしんさん、木下さん、 Αφροδιτηさん、浅川さん、H.N.WPKIDSさん。ありがとうございました。 ◆皆さんとMuseを共有できることを心から幸せに感じています。これからも末永く お付き合いいただき、このささやかな創造の場を共にできればと祈念しています。
《Ver6.4 開発後記》2013.04.25
◆Muse開発の残課題を書き溜めた検討リストの中で私が最も実現したいと思い、に もかかわらず10年以上、手付かずのままになっており、そして技術的に最高レ ベルで困難を極めるだろうと考えていたテーマ。その開発は今までのMuseコンパ イル処理と内部データ構造を一から見直す必要があるものであり、作業量として も膨大な規模になると予想していたテーマ。それは、・・・「連符内連符」です。 ◆正直言って、時間がたっぷりできる定年後の老後の楽しみでやるしかないだろう と考えていたぐらいです。既にマクロが再帰的な階層構造で実装されており、し かも繰返し表記や連符、和音、コードなどの再現表記までが交錯する状態で、そ の和音や連符を、連符内の音長比率を継承して無限の階層に仕立て上げるなんて、 本当に自分にその力量があるのかさえ疑うほどの高い壁でした。 ◆2ヶ月ほど前に、とりあえず老後の備えとしてコンパイルの1パス目、分析関数 を整備しておこうと考えたのが切っ掛けでした。無限階層の連符や和音を処理す るには括弧記述に対するスタック構造が必要です。2パス目でこの構造の構築も やってみたくなりました。こうして徐々に深みに嵌まっていったのです。いや、 高みに昇っていった、と言ったほうがいいのかな。その先にLilyPondの対応やら アルペジオやらアクセントやらゼロ音長やら、多くのトラップが待ち構えている ことは薄々勘付いていたのですが、まあ行けるとこまで行ってみよう。収拾がつ かなくなったらいつでも引き返せばいいんだ、という気持ちで突き進みました。 ◆開発を進めながら気づいた課題をメモっておき、それを順次潰していくのが私の 開発スタイルなのですが、一時は1つの課題を潰すと5つの課題が見つかるとい った凄まじい事態になりました。少しずつ山頂を目指して登っていくのですが、 峰を越えるたびに新しい本当の山頂が現れるといった具合です。データ互換も確 保しなければならないので、現存する8,300強のデータを逐一MIDIバイナリで出 力し差異が無いか確認しながら慎重に進めました。開発トライアルリビジョンは なんと100を越えました。更に、これまた骨のある改造だと感じていた和音の 逆アルペジオにまで食指を伸ばしてしまい、いわば地獄の階層構造です(苦笑)。 「もう登頂は断念して引き返えそう」そんな悪魔の声がいつも聞こえてました。 ◆新しい文法は従来の記述を無理なく拡張しているので記法としては何の問題も無 いのですが、プログラム自体のデータ構造と解析シーケンスは大きく異なります。 今まで連符と和音で1階層の括りしか許していなかったため、厳密な定義をして いなかった部分があり、それを明確にする過程で、どうしてもデリケートな部分 の互換を崩さざるを得ないことになりました。アルペジオの連符内スケーリング に関する仕様は、この機会に積極的に変更させてもらいました。微妙な差異です が、8千曲中、数百のデータに非互換を与えてしまうことになり、本当に申し訳 ありません。Museの理想的姿への脱皮のためとご理解いただき、ご容赦下さい。 ◆開発の後半戦は、LilyPondへの対応でした。これまた凄まじい作業となりました。 当時、LilyPondの文法や制約もよく判っていなかった頃に四苦八苦しながら作り 込んだ部分なので、後付感満載のプログラム状態だったのです。今回コツを充分 理解していたので、ここもデータ構造も含めて一から作り直すことにしました。 こんなことならLilyPond対応をする前に、連符内連符をやっつけておけば良かっ た(苦笑)。でも、ものは考えようで、お蔭ですっかり垢が落ちました。トリルや トレモロの記譜能力も高まり、出力を断念するデータもかなり減ったと思います。 ◆下手な制約条件の上に例外だらけのプログラムを組むより、制約を取り払い一段 高いレベルのデータ構造とシンプルなルールで処理を組んだ方が、格段に優れた ソフトウェアが完成することがよくわかりました。確かに抽象度が一段上がるの でデータ構造の設計には苦労しますが「練りぬかれた設計思想こそ、美しい作品 を生み出す」という、常日頃考えているこの教訓を再認した次第です。複雑な和 音や連符、アクセントやアルペジオの階層定義、そしてゼロ音長や修飾音の扱い 等、苦労の連続でしたが、結果として処理性能を向上させ、更にメモリ効率も高 めた形で登頂することができました。そして驚くべきことに、文法表現能力が向 上しているにもかかわらず、実行モジュールはむしろ小さくなっているのです! Readme.txtは相変わらずですが(笑)。 ◆前回バージョンアップでは外装であるUI系を刷新しました。今回は内部のエン ジンをオーバーホールし、そのほとんどを作り変えました。Museはこうして少し ずつ入れ替わり、多分一昔前のMuseは既に存在しなくなっていると思います。ま るで新陳代謝を繰返している生命体のようです。もしかしたらこれこそ、Museが 「生きている」証しなのかもしれません。そしてその原動力は、皆さんから頂く 助言やデータ、障害対応などの数々のご支援であることは疑う余地がありません。
《Ver6.5 開発後記》2013.06.23
◆同じテーマで語り合い、その中で多くを学び、共感し、閃き、互いの課題を解決 していく。そんな同好会のようなコミュニティーが、Museというソフトを拠り所 にして出来上がってる事が何より嬉しいです。今回は、掲示板での楠本さんのつ ぶやきに端を発し、Αφροδιτηさん、takaさん、浅川さん、るうさん、そ してElekenさんによって話題が膨らみました。そして、様々な着眼点と煌くよう な考察の果てに、遅延指定の出力タイミング仕様の改善手法に達しました。 ◆従前のMuseは「終了値の反映が1ステップ届かない」という課題を抱えていたま まになっていたのですが、この同好会の議論と検討によって、実にエレガントな 解決策を導く事ができたのです。階段状に出力しているその階段全体を半ステッ プ曲頭側に移動するだけ。厳密に言うとこの対処で互換性が崩れますが、常人の 耳では聴き取れないと断言できる程、演奏への影響は皆無に等しいのでご安心下 さい。って、じゃあ何故やるんだ、という突っ込みは無しでお願します。(笑) ◆なお、今回は実装を見送りましたが、属性の連結や加算、遅延音長の省略やその 再現記法など、実に興味深い話題が目白押しでした。こういった有意義な思索を 共有できる友がいるという事は、なんと幸せなことでしょうか! 残課題を蓄積 記録している検討リストに、この成果をしっかりと書き留めておこうと思います。 ◆さて今回、その検討リストに2年前に書いた課題を1つ解消しました。X指定の 遅延をサポートした頃、既存の指定(RやV)とX指定の関係について、PT2Kさん、 るうさん、MIZさん、浅川さん、ホドナールさん、諸熊さん、H.N.WPKIDSさん達 と議論したのです。その時は対応を保留しましたが、今回部分的ではあるものの 共有化を実現しました。既存の指定がX指定よりも器が小さい場合、X指定で与え られた情報をフィンガー情報等で表現することが不可能となるため、設計は結構 大変でした。結果、今回はVRWQSの5指定のみを共有化させました。但しエイリア ス方式ではないため、譜面モニター属性には表示されません(汗)。相対指定など 既存の記述の方が表現力が豊かな場合があり、単純にエイリアスできないんです。 ◆その他にも2つの小さな機能追加をしました。一つ目は譜面モニタ属性表示のマ ウスホイール対応です。音部領域の属性表示部分でホイールを回すとフィンガー IDが切り替わります。ちょっとした機能ですがフィンガー情報ウィンドウとも 連携してますし、メンバー属性ならメンバー単位に切り替わるよう工夫しました。 ◆二つ目は、メインウィンドウのタイトルにフォルダパスも表示するか否かの指定 に関する工夫です。従来は、初期化ファイル(muse.ini)で指定する仕様でした。 それをタイトルのダブルクリックで表示が切り替わるようにしました。これに伴 い初期化ファイル指定は撤廃しました。そもそも初期化ファイルがあまり好きで ない私は、1つでも指定要素が減ることが嬉しいです。 ◆今回の強化は機能としては以上ですが、ソースのあちこち手を入れて磨きを掛け ました。メモリやリソース効率、そしてCPU負荷も一段と改善したはずです。 それが証拠に、以前のバージョンよりも実行モジュールが小さくなっています。 なんと、2ヶ月で8キロのダイエットに成功です。今後も『10年経っても、軽快 コンパクト!』を目指します。(ただし、Readme.txtと自分は除く)笑
《Ver6.6 開発後記》2013.11.10
◆プログラム全域に渡る大改造課題がまだ残っていました。しかし今までの私には、 そのための技術力や知識そして経験が不足しており、実施できずにいたのです。 今般別のソフト強化にて技術研鑽の機会を得たので、早速Museにその経験を生か すことにしました。それはユニコードへの対応です。今までのMuseはSHIFT-JIS のファイルしか読めませんでしたが、本バージョンからUTF-8やUTF-16もロード できます。ビッグエンディアンやサロゲートペアにも対応しました。これでテキ ストエリアにアクセントやウムラウトなどの修飾文字も表示可能になりました。 ◆このウムラウト表示に関しては、最近ではtakaさんにご要求を頂きましたが、実 はかなり以前より多くの方が希望されていました。2011年にNovicesさん、2010 年にΑφροδιτηさん、2005年にHATANAKAさん、2004年に今井さん。そして 真理子さんには2009年と2011年に2度に渡り依頼を受けています。更に岡林さん に至っては2001年に切望されている記録があります。なんとまあ10年以上もお 待たせしてしまいました。こんなに長く待たせるソフトって一体・・・(苦笑)。 タイムフリーソフトと呼んでください。 ◆やるからには徹底的にやるのが好きなので内部構造はもとより、初期化ファイル (muse.ini)や履歴ファイル(muse.log)もUTF-16になっています。SHIFT-JISのま まではロードもセーブもしませんので、お手数ですがメモ帳などで変換を掛けて おいてください。変換作業はバージョンアップ直後に1回だけ行えば結構です。 ◆内部処理はUTF-16、LilyPondはUTF-8、MIDIエクスポートはS-JIS、Museデータや VirtualMIDISynthのコンフィグは何でもアリと、もうお祭り騒ぎとなりましたが、 心配していたほど実行モジュールも大きくならず、処理速度の低下も見られない、 と言うかもしかしたら速くなったかもしれません。何せWindows自体がUTF-16で 処理してますから。Museデータのファイル名にユニコードを使っても大丈夫です。 これでMuseも、やっとこさ21世紀のソフトに仲間入りできたかな(笑)。 ◆もう一つ、文法の強化も行いました。ねこしんさんからご要望のあったハーフペ ダルへの対応です。X指定を活用すれば今までも演奏できないことはなかったの ですが、譜面モニタに属性表示が出ないのでMusingがしにくいのも事実でした。 文法は、ペダル遅延も含めてY指定を拡張しサポートすることにしました。従来 の0/1型ペダルの中間値ということで小数点表現とし、如何にもハーフペダル っぽい仕上がりになった、と悦に入っています。127進法ですが(笑) ◆ねこしんさんは、前々回サポートした連符内連符をものの見事に使い込んで驚愕 のMuseデータを作成されました。要望された方がその機能を即座に活用して演奏 してくれると、楽器職人としてはモチベーションが上がりまくります。Museはフ リーソフトですが、実はバーチャルな貨幣が存在していて、Museデータの投稿に よって機能実現のチケット、あるいはポイントを取得できるといったところでし ょうか。今後ともポイントゲットの程、よろしくお願いいたします。
《Ver6.7 開発後記》2014.02.25
◆前回のバージョンでユニコード対応した折、耳無芳一よろしくドラムの試聴の対 応漏れがあり、そのバグ報告を掲示板で受けました。その際、以前から草場さん にご要求いただいていた“音源選択メニューにおける音源名称の別名表示機構” が話題に上りました。一昨年あたりからハードな内容の機能強化が続いたので、 この辺でちょっと骨休めも兼ね、この改善項目を実施してみることにしました。 ◆まあ骨休めといっても、Museの音源メニューはサウンドフォントの絡みがあるし、 試聴系ウィンドウのタイトル部や演奏会場のクリップボード出力など、影響する 部分があちこちに存在していて、思いの外神経を使いました。更に、別名表示の 機構だけでなく、音源名そのものをメニューに表示しない機構も与えたので、極 端な話、全音源を非表示にできます。当然この状態では演奏や試聴はできないの ですが、それでもベートーベンやスメタナの如くMusingを強行できる様にしたか ったので、各所の音源送出処理にガードを掛ける必要がありました。これまた骨 の折れる作業で・・・って、ぜんぜん骨休めになってないじゃん(苦笑)。 ◆ドラムの試聴にバグがあったことを切っ掛けに、把握しにくさナンバーワンであ ろうClassicセットのティンパニ表示が話題になりました。いろいろな観点で検 討しましたが、結論として、SFXなどと同様に全面書き換え方式に変更しました。 ◆昨年の6月、V6.51のマイナーアップで譜面モニタから縦スクロールバーを取り払 ったことで、譜面モニタにおける上下矢印キーに割り当てられている機能が無く なりました。今回そこに音部記号や8vaの表示切替をアサインする事にしました。 ◆LilyPondでの楽譜出力を視野に入れてMuseデータを作成する際、スルー指定に感 嘆符を使うクレッシェンドを記述すると、ブロックコメントを活用し難くなると いう事実を、こういちさんが掲示板で提示してくれました。私も従前仕様に疑義 を感じていたので、この際仕様を変更することにしました。結果として「ダブル コーテーション内の感嘆符はコメント記号ではなく、単なる文字として扱う」と いう実に単純明快な仕様となりました。ご示唆を頂き心から感謝しております。 ただし互換性が崩れたため、殿堂登録曲の6データに手直しが必要になりました。 お手数をお掛けして申し訳ありません。m__m ◆もう1つ気になっていた所に手を入れました。サウンドフォント利用の際に、演 奏開始に時間が掛かったり、演奏中に特定メンバーの音が鳴り続けたりしてしま う現象の抑止です。VirtualMIDISynthのコンフィグに関連しそうなオプションが あったのでチューニングしてみました。明らかに状況は改善したように思えます。 これで、サウンドフォントでMusingしている皆様が少しでも楽になれば幸いです。 今後とも、何かお気づきの点がありましたら、お気軽にご指摘下さい。
《Ver6.8 開発後記》2015.01.10
◆今回の機能強化は、MuseWrold掲示板の書込みが契機となりました。楠本さんが 発した演奏会場設定に関する質問が音源問題に波及し、更にマルチ音源対応デー タ作成のための条件分岐要請へと話題が広がりました。特にElekenさんは、現在 のMuse文法ではマクロのスイッチが難しいことに以前より気づいておられ、それ を可能とする何らかの手段、例えば条件分岐などの機構を要請してくれました。 ◆この件に関して、掲示板で素案を提示したところ、皆様から様々な視点のご意見 を頂き、更に議論と検討が深まりました。るうさんから従来の感嘆符を区切り記 号にするアイディアを頂いて、結果として名付き感嘆符とコメントスイッチとい うコンビネーション記法に落ち着き、その後コメントスイッチのON/OFF機 構という発想を楠本さんから頂くに至っては、まさにスイッチの名に相応しい文 法に昇華したと思います。 ◆従来のブロックコメント記法からの自然な拡張になったことに大いなる満足感が ありますが、それにも増して様々な方の創意が結晶化した仕様であることが何よ り嬉しいです。 ◆もう一つとても些細な変更ですが、記述数値の上限桁チェックを8桁から6桁に 絞りました。特に大きな意味はありませんが、うっかり巨大な数値を書いた場合、 メモリが枯渇して確保エラーとなるミスの抑止に一役買うと思います。 ◆えっーと、今回の開発後記は短いけど、Readme.txtの肥大化を少しでも緩和する ためこの辺で筆を置きます。って、いまさら遅いですよねぇ~(笑)。
《Ver6.9 開発後記》2015.05.05
◆今から5年前に、特定フィンガーだけをONにする「フォーカス機構」を提供しま した。フィンガー情報ダイアログで制御するこの機構は、私自身もそれなりに活 用していたのですが、なんだか使いにくいなぁ~と思いつつ、はや5年(苦笑)。 で、何が使いにくかというと、やはり1つのフィンガーだけしかフォーカスでき ないこと。そして、微妙にメンバー情報のON/OFF機構と絡んでいて、操作が煩雑 になること。この2点が弱点だと考察しました。そこで今回「フォーカス」とい う概念を撤廃し、複数フィンガーの個別ON/OFFを可能にすべく改造に挑戦しまし た。「フォーカス」といった回りくどい概念ではないので、メンバーのON/OFFと は独立した機構にでき、状態把握力だけではなく操作性の向上も期待できます。 ◆当初はリスト各行の先頭にチェックボックスを付ければいいだろうと思ったので すが、これが結構厄介な実装作業で、ひどくコード量が増えそうです。それにリ スト行頭にずらりと並ぶチェック欄は、情報提示が主な役目のフィンガー情報の 主旨からすると相応しくない気もします。そこでもっとエレガントな方法はない かを探求してみました。要は、ONとOFFの2値を表現できればいいのです。フィ ンガー情報ダイアログのレイアウトを凝視すること小一時間。行頭の“#”を非 表示にすることを思い付きました。この方式なら、ON/OFFの視認性も高そうです。 ◆ON/OFFの操作はフィンガーID付近の左クリックとしました。また右クリックで、 全フィンガーをON/OFFする機能もサポートしました。全フィンガーのON/OFFは、 飛び々々のフィンガーがOFFになっている状態を一気に全ONにできるし、全フィ ンガーを一気にOFFにしてから、やおら確認が必要なフィンガーをONにしていく といった利用方法も可能です。そして確認が終わったら、再度右クリックすれば 一発で全ONに復帰でき実に有効です。 ◆実装作業は、Windows標準のリストボックス処理と整合を保ってシーケンスを組 むのにとても気を使いました。選択行の制御やリストに表示される先頭行の保持、 そしてフッター部の描画タイミングなど厄介な問題がいっぱいあるのです。実は この技術的な課題をクリアするのが面倒で、今までフォーカスなどというまわり くどい概念で逃げていたというのが本音です。今回メンバー情報におけるON/OFF と同じ操作感でフィンガーをON/OFFできるようになり、その一貫性にとっても満 足しています。メンバーのON/OFF操作を手が覚えてしまっている私も、まったく 違和感無くフィンガーのON/OFFができ、実に快適になりました。開発者の私が苦 労した分、ミューザーの私が楽をしているといった感じです(笑)。 ◆さて、多くのフィンガーを使っている場合、特定メンバー内のフィンガーだけを 一括してON/OFFしてしまいたい場合が起こるはずです。その状態はメンバー情報 のON/OFFでも実現可能ですが、一旦全OFFにした後でいくつかのフィンガーだけ をONにしたいという局面では使えません。そこで、フィンガー情報の右側エリア で右クリックされた場合は、全フィンガーではなくメンバー内のフィンガーだけ がON/OFFするという仕様にしました。右側エリアはメンバー属性を表現している ので合理性も感じられます。 ◆キーボード操作に関する配慮も重要です。今回、チェックボックス方式を放棄し たので、Windowsの標準コントロールがよろしくやってくれるキーボード処理に お任せすることができません(苦笑)。処理対象フィンガーは、リスト選択行とす れば良さそうですが、問題はトリガキーを何にするかです。既に機能を割り当て ているメンバーIDとメンバー属性の文字は当然使えません。そして更に候補から 外さなければならないキーがあるのです。実はWindowsのリストボックスには標 準の便利機能があり、押下した1文字とマッチングする行頭にジャンプしてくれ るのです。これがなかなか便利な機能で、今回の「#非表示方式」でもうまく活 用することができます。例えば、スペースの押下でOFFのフィンガーに次々とジ ャンプしてくれます。行頭チェックボックス方式にしていたらこの恩恵が受けら れなかった訳で、その意味でも今回の設計は正解だったと思います。閑話休題。 という訳でON/OFFトリガキーには、スペースと#もアサインできないことになり ます。考えあぐねた結果、メンバー情報でも全ON/全OFFのキーとして採用した “x”をアサインすることにしました。欧米ではチェックにレ点ではなく、×を 書き込む場合がありますが、このイメージにも呼応していて良い塩梅だと思いま す。メンバー内の全フィンガーをON/OFFにするには、SHIFTキーを併用して“x” を押下することにしました。 ◆もう一つ心配だったのは、ON/OFF機構を利用した後、いくつかのフィンガーをON に戻し忘れてしまう局面です。「#非表示方式」の視認性は確かに高いのですが、 スクロールバーが出る程の多量フィンガーが使われている場合、OFFフィンガー の存在を常に意識するのは流石に神経を使います。前述の1文字マッチングジャ ンプ機構を使い、都度スペース押下をすれば確認できるのも確かですが、何の操 作も行わずに一目でその状態を確認できる方が快適です。都合の良いことに、今 回フォーカス機構撤廃でFOCUSのチェックボックスが不要になりました。そこで、 その位置に全フィンガー数とONフィンガー数を分数で表記することにしました。 分母分子が一致してれば、すべてON状態であることが一瞥で確認できます。Muse データのフィンガー数をカウントしてくれる機能としても使えます。更に、この 表示部分をボタンにしてしまい全フィンガーの一括ON/OFF機能を割り当てました。 標準のボタンコントロールですから、キーボード操作も可能です。 ◆さて話は変わり、これも2年程前の話になりますが、私自身の美観から譜面モニ タから縦方向のスクロールバーを取り払いました。その決断は間違えていなかっ たと今でも思っているのですが、先日MuseWorldの掲示板で、キーボードによる スクロール手段の復活要望をPascalさんから頂きました。2年経っても尚、本件 の要望を出されたということ自体に、何やら胸を突かれるような感動を覚えまし た。私が半ば強引に撤廃した縦スクロール。2年の間、その状況に耐え忍びなが ら使い込んだ末の発露と推察しております。既に上下矢印キーは、オッターバや 音部記号の切り替えにアサインしていましたが、それらを[SHIFT]や[CTRL]の併 用に追いやり、矢印キーによる縦方向スクロール機能として復活させました。縦 スクロールバーを取り払った際、それにまつわるデータ構造もすべて撤去してい たので、少々不安だったのですが、案ずるより産むが易し。思いの外手早く対応 できました。 ◆更に話は変わり、楽譜出力の機能強化も行いました。PDF出力の保存ダイアログ で指定できる用紙出力オプションは“横置き”だけでしたが、用紙サイズ“A3” の指定も可能としました。これに伴い、関連するコマンドラインの引数も変更し ています。今まで用紙からはみ出してしまいがちな複雑な楽曲の譜刻も、A3用 紙を指定することで、綺麗に納まる可能性が上がったと思います。話を戻すよう ですが、フィンガーの個別ON/OFF状態は楽譜の譜刻フィンガーとして反映します。 今までのフォーカス機構も譜刻に反映していましたが、任意の複数フィンガーが 選別できるようになったことで、譜刻の柔軟性は格段に向上したと思います。 ◆先日、久々のMuseのオフ会が開催されました。幹事の草場さん、ご苦労様でした。 そして開催場所のご提供、ありがとうございました。昼食にお鍋まで用意してく れて、とっても嬉しかったです。オフ会では、Museにまつわる様々な話題が出た のですが、その中で「楽器の試聴」におけるキーボードでの音止めが手間である、 という話題が出ました。タブキーで音止ボタンまで移動しなければならず、その 間音が鳴り続けていることになります。そのことを諸熊さんに指摘され、初めて 気づきました。もっともっと感性を研ぎ澄まさなければいけませんね。メッセー ジループにフックを掛けてエスケープキーによる音止めの機能を追加しました。 この機構は、楽器の試聴だけでなくドラムの試聴や波形加工にも共通して利用で きますし、フォーカスがダイアログ内のどのコントロールにあっても機能します。 ◆さて今回はそれほど大掛かりな機能強化をした訳ではないのですが、その割には 存外開発後記が長くなってしまいました(苦笑)。まあ、陰に隠れた開発の努力と 拘りが、いっぱい詰まっているという事で、どうかお許し下さい。
《Ver7.0 開発後記》2015.07.01
◆『Museの桁上がりバージョンは大きな機能強化が実施されない』というジンクス を払拭すべく、今回はUI仕様改良から始まり、文法強化、エクスポートの改造、 内部処理の効率化、そしてバグ修正などかなり奮発しました。シェープアップも 並行実施し、実行モジュールのサイズ増加を抑えてあります。という訳で今回の 開発後記は言及箇所が多量にあるため、淡々とクールに(笑)語りたいと思います。 ◆まずUI関係です。初版の頃から16年間変わることがなかった鍵盤イメージ。 いわばMuseの顔なのですが、この黒鍵を疑似的な立体表示にしてみました。皮肉 にも昨今、対応OSのWindowsは平面化傾向にありますが(苦笑)。実は立体化のた めにやった事は、結果としてたった2つの図形を追加しただけでした。でもこの 追加図形に辿り着くまでが大変でした。色合いも含め数々の試作を繰返しました。 苦労したので受け入れて欲しいのですが、この手の変化に違和感を持たれる方の ために、初期化ファイルで平面タイプに戻せる様にしておきました。なお、お気 付きかもしれませんが、10ドットほど高さ方向にサイズが大きくなっています。 これはリアルなピアノ鍵盤のアスペクト比を忠実に再現するためです。加えて、 これも見栄えの話ですが、譜面モニタ音部記号の画像品質を向上させました。 ◆テキストエリアのデフォルトフォントを“MS Pゴシック”から“Meiryo UI” の太字に変更しました。フォント幅が変化したので、FONT指定の無いデータでは 少々互換が崩れますがご容赦下さい。デフォルト背景色の決定処理も簡素化しま した。色が変わって気になる方は、iniファイルで好みの色に変更してください。 ◆メンバー情報や試聴系ダイアログの楽器名フォントも Meiryo UI に変えました。 ギザの無い文字で綺麗になったし、楽器番号も見やすくなったと思います。試聴 系ダイアログはレイアウトも多少変えています。ドラム試聴のピッチ値表示欄と、 ピッチの中央U0復帰ボタンを共用化して、配置面積を稼ぎました。 ◆フォント確認ダイアログは一回り大きくしました。最大31文字のフォント名がリ ストからはみ出してしまう可能性を減らすためです。また、確認用文字列の位置 精度を高めると共に、背景色をダークグレーにして確認欄を際立たせました。 ◆従来、演奏停止の状態でシークバー上に時刻チップを表示させる方法は、[CTRL] か[SHIFT]の押下で行いましたが、これを[SHIFT]のみに変更しました。関連して、 譜面モニタの行番号検索(虫眼鏡)のキーを[SHIFT]から[CTRL]に変更しました。 譜面モニタで虫眼鏡を出そうとすると、メインウィンドウに時刻チップが表示さ れてしまうという、なんとも不愉快な仕様が以前から気になっていたのです。 ◆譜面モニタで虫眼鏡サーチをした際、属性表示のIDも連動して切り替わる様に しました。今まで、譜面モニタの属性切替え操作は、フィンガー情報やキー入力、 そしてマウスホイールなど、手を変え品を変え提供してきたのですが、どうも決 定打が無かった。でも今回は手応えがあります。今まで行番号の検出のためだけ に存在してた虫眼鏡君に、ヒーローインタビューしたい気分です。 ◆TEXTやMARKコマンドで127文字越えの記述をした場合、その文字数を文法エラー のダイアログに表示するようにしました。これで、一体あと何文字減らせば収ま るのかが定量的に把握でき、文字数の調整がしやすくなったと思います。 ◆MIDIやPDFをバッチでエクスポートする際、そのオプションをコマンドラインの 引数で指定することができますが、これを保存ダイアログでのチェックボックス 状態の初期値としても扱うことにしました。この引数は従来、バッチ処理でのみ 利用することを想定していたですが、通常利用時でも意味を持たせることができ ました。しかも共用化によりプログラムの変数や条件判断も簡素化できました。 内外両面でメリットがあるこういった改良は、とても心地好いです。 ◆文法エラーなどのメッセージボックスのダイアログアイコンに、Museアイコンを 設定しました。今までは<Muse>と文字で表示していたのですが、やっぱりアイコ ンの方が格好が良いですよね。モーダルダイアログのアイコンを変える技術は、 どのサイトにも掲載されておらず、かなり苦労しました。以上がUI関係です。 ◆次に文法関係。スラッシュ(/)とドット(.)の記号で記述する従来のスタッカート に、数値指定をするタイプを新設しました。従前の方式を「スタッカート記号」、 今回追加した方式を「スタッカート値」と呼ぶことにします。スタッカート値は ゼロ指定もできます。これは止音指定(q)をその場で抑止し、局所的にスラー表 現にする際に便利です。しかも省略音長対象なので、連結(&)の様にすべての音 符間に書く必要はありません。また、同一音程でも連結することなく音を延ばせ ます。更にスタッカートをクリアする(/=)という記法もサポートしました。その 時点の省略音長の音長を保持しつつ、スタッカートの記憶だけを除去できます。 実は、この(/0)と(/=)が欲しくて開発に着手しました。「スタッカート値」は派 生的にできた機能なんですが、なかなか使い勝手が良さそうです。ここぞという 聴かせ所で、アーティキュレーションの効いた演奏に活用していただければ幸い です。 ◆メンバー宣言(@)とタイミング合せ(%)で否定型のメンバー指定ができる様にしま した。例えばZ以外のメンバーを指定したい場合、従来は@ABCDEFGHIJKLMNO と書 かなければなりませんでしたが、今後は@~Z と書けば済みます。一部のパートを 除いて他の全てのメンバー属性を変えたい時や、歌詞パートだけタイミングを合 せたくない時などで使うと、記述量を削減できます。文法は以上2点です。 ◆次はエクスポート系。従来のMIDIファイル出力は、WAVEで指定したファイルパス や、FONTで指定したフォント名もエクスポートしていました。しかしこの情報は 多分、ほとんど活用されておらず、むしろ無駄にMIDIサイズを大きくしているだ けです。そこで「テキスト系データの抑止」オプションのON/OFFに関わりなく、 WAVEとFONTは常にエクスポートしない様にしました。TEXTやMARKは従来通りです。 ◆移調(T)指定のあるデータをLilyPondで楽譜出力する場合、従来は実音ではなく データに記載された音程をそのままエクスポートしていました。この仕様はクラ シックの移調楽器のスコアを意識して設計しました。しかるに、『移調(T)を抑 止する指定(*LILY"-T")』で移調し、『移調(T)を復帰する指定(*LILY"+T")』で 移調しない、という定義は常識的な感覚からすると明らかに逆です。そこで今回、 素直に仕様を反転させました。以上がエクスポート関係の改造です。 ◆他にも内部処理をいろいろ改善しました。ペンやブラシのリソースを整理したり、 一部エラーメッセージを詳細化したり、譜面モニタ描画を高速化したりです。中 でも利用者メリットが一番大きいと思われるのが、特にパソコン起動直後の初回 Muse演奏で顕著になる「テキスト表示によるモタレ」への対処です。本件は4年 以上前にΑφροδιτηさんからご指摘を受け、その後2ヶ月近く原因分析に お付き合いいただきました。しかし当時は「固定的な文字列の先行ロード」とい う対処に留まり、効果も完全ではありませんでした。今回は、最大限のフォント 集約処理と、事前にフォントハンドルを確保し、テーブル制御で演奏時の負荷を 低減するシーケンスに組み直しました。加えて、データ上にある全ての表示文字 列を演奏前にステルス描画してしまうという抜本策も施しました。これでキャッ シュヒット率は格段に向上したと思います。実際、モタレはほぼ解消しました。 ただその代償として、テキストが多いとほんの僅かですがロードが遅くなります。 そこで本処理はロード時のみとし、リロード時は実行しない工夫も施しました。 ◆一方、コンパイルでノートを時系列に構築していく処理に新しい工夫を盛り込み、 ロード速度の向上を図りました。特に遅延指定が多く長い音長が頻発するデータ でロードが遅い場合があったのですが、この手のデータで劇的な改善が得られま した。マクロ名のマッチング探索も、ソート手法を組込んで高速化を実現してい ます。シーク処理もチューンアップしたので、サクサク感が増したと思います。 ◆開発中に、潜在バグも多々見つかりました。一つは、「フォント確認ダイログ」 にて & が表示されない不具合。今一つは、終了時の「常に手前」状態を次回起 動時に正しく再現できないという不具合。更に、譜面モニタスクロール時の小節 番号の描画欠落。そしてタイ接続(&)の処理で、メモリ管理に致命的なミスがあ りました。また、マクロ二重定義などのエラーでコンパイルが中断する際、メモ リ解放に関する不備もありました。もちろん、すべて治しておきました。 ◆他にも細かい所にいろいろ手を入れているんですが、主な変更内容は以上です。 う~ん、淡々と語ったつもりですが、やっぱり長くなっちゃいました。しかも、 『大きな機能強化』とか豪語したけど結局変更箇所が多いだけかも。これじゃあ クールどころか、暑苦しいだけだよぉ~orz とまあこんな私ですが、これからも お友だちでいてください。
《Ver7.1 開発後記》2016.01.03
◆MuseWikiのQ&Aコーナーを眺めていたら、6年前のMuseWorld掲示板でのダンパー ペダルに関するやり取りを見つけ、懐かしく読み直しました。2年前にハーフペ ダルの開発をした際、ペダルの遅延音長もサポートしました。しかし、この掲示 板の議論を読み返すと、どう考えても遅延音長より、踏み替え音長の方が利用頻 度が高そうです。実装が楽だったこともあり、熟慮せずにペダル遅延をサポート したことを反省しつつ、改めてペダル踏み替えの開発に臨みました。 ◆今回は入念な検討を重ね、Y0とY1を一括して微調整できる「ペダル音長」という 新概念を導入しています。譜面モニタ属性表示やLilyPond楽譜出力への影響も慎 重に検証し、クリアできました。問題は大きく崩れる互換性の問題。手元にある 8,850曲のデータでチェックしたら唯1曲、それも2ヶ所だけ非互換が検出され ました。ねこしんさん、済みません。Xコマンド遅延で代替記述をお願いします。 English Country Tunes(I'll give my love a garland)の221行目と223行目です。 ◆先日、久々にMusingを始めたのですが、その曲は8分の9拍子。1小節の音長表 現は、8`9 となります。この状況下で、4小節の遅延を掛けてクレッシェンドを したい局面がありました。遅延音長の指定を 8`9`4 としたい所です。ところが、 従前のMuseは連続した乗算記号をサポートしていません。だから 8`36 と、掛算 の計算結果を書くしかない。4小節の休符表現も _8`9`4 と書けず、{_8`9}4 等 にするしかありません。これはエレガントではないなぁ~、と思い乗算記号の連 続記述を可能にしました。文法は乗算優先ルールで完全上位互換を維持できます。 音長演算処理の複雑化を懸念しましたが、結果は if文 を while文 にしただけ。 自分でもびっくりするぐらい簡単な改造で実現してしまいました。 ◆もう一つ気になる部分がありました。次の楽章は8分の12拍子だったのですが、 譜面モニタで特に分子側の拍子をセットするのにマウスボタンの押下数が多くな るという点です。考えてみると分母の方は、1,2,4,8,16の5パターンですが、分 子の方は1~16が1刻みに切替るので分母の3倍もあります。もっと楽に所望の 数値にセットできないものか検討してみました。思い付いたのはマウスホイール の活用です。当時、ホイールはオプション機構でしたが、今ではWindowsの標準 的な機構となりました。ですからホイールを前提とした操作仕様でも構わないだ ろうと判断しました。実際に作り込んでみると実にスピーディに分子を切替えら れます。分母はマウスボタン、分子はホイールと操作定義も明快になりました。 分母分子へのマウス位置決めも不要になるため、今まで分母と分子で異なってい たカーソル形状も1つに集約しました。集約したカーソルは、拍子の変化が見や すいように半透明にしてあります。なお、ノートPCなどホイール操作が厄介な 場合に備え、[SHIFT]キー併用のマウスボタンでも操作可能としておきました。 ◆今回のMusingは、実験的に一つのトライをしてみました。今までは、譜面モニタ で確認しやすいように *MARKコマンドを適宜埋め込みながらMusingしていたので すが、今回はそれを一切行わず、虫眼鏡サーチだけで勝負してみようと考えたの です。すると、すぐに苛々が始まってしまいました。修正箇所の行番号は虫眼鏡 サーチで判りますが、データ上でその行に目をやっても、カラム位置までは判ら ないのです。私のMusingスタイルは一行を長めにする傾向にあるので、余計に苛 立ってしまいます。 ◆素直に虫眼鏡サーチでカラム数も表示するようにすれば良いのかもしれませんが、 カラムは、プロポーショナルフォントを使っている場合当てにならないし、タブ が入るとその扱いで破綻しそうです。使用するテキストエディタによっては、所 望カラムへの位置決め自体が難しいかもしれません。Museコーディングの場合、 行内の位置を示す方法は、“カラム”という文字単位ではなく、むしろ“小節” という粒度で把握できた方が良いと考えました。 ◆この課題をクリアするにはどんな手段があるか、実はここに書き切れない程の試 行錯誤を繰り返しました。結果として、譜面モニタの属性表示にて、強制タイミ ング合せ(%)の位置を表示する方法に落ち着きました。いつも位置確認のために 記述していた *MARKコマンドは、ほとんどの場合、強制タイミング合せ(%)と同 じ位置であることに気づいたのです。譜面モニタ上でこの位置が判れば、そこを 起点にして小節数をカウントできるという寸法です。譜面モニタの下部エリアが 空いているので、そこに“(行番号)”として表示することにしました。自分で言 うのもなんですが、この表示のお蔭で「譜面モニタ」「Museデータ」「楽譜」の 3者を行き来するMusing作業が、とても快適になりました。 ◆「演奏会場の確認」ダイアログも強化しました。ロードされているデータにROOM コマンドがある場合、そのパラメータをこのダイアログに反映できる機能です。 この機能の提案および要望は、以前MIZさんから頂いたものです。どの位前だっ たかというと・・・2008年8月って、7年半も前かよぉっ! すんませんMIZさん、 お待たせいたしやんした。なお今回の強化に伴い、初期化ファイルでの演奏会場 パラメータ記憶を廃止しました。起動時は、潔く正しくデフォルトになります。 ◆もう一つtakaさんのご要望にお応えする機能強化も行いました。従前のMuseは、 ウィンドウの左上がスクリーン内に必ず表示されるよう、起動時に自動再配置を 行っています。理由は、広いディスプレイを持つPCから、狭いPCにmuse.ini ごとコピーした際、前回ウィンドウ位置でそのまま起動してスクリーンから完全 に外れてしまう事のないようにするためです。しかしマルチディスプレイ利用の 際、この機構が災いし、メインディスプレイに押し込まれてウィンドウが重なっ てしまいます。これを改善するためには、この機構をOFFにするオプションを設 けるだけで充分だ、という示唆をtakaさんから頂き、起動引数*vを新設しました。 ◆前回のバージョンで立体化した黒鍵表示ですが、hiroさんから頂いたメールに、 「白鍵も同じようにしたらくどいのかしら」というつぶやきがあり、「そりゃあ、 くどいでしょう」と心の中で返答しながらも、試してもいないのに断言するのは 科学者じゃないと反省し、早速試作してみました。そしたら思いの外いいではな いですか。あまりくどくならない様に、1ドットの薄い影に止めましたが、白鍵 もそれとなく押した感じが出るようになりました。hiroさんに心から感謝です。 ◆今回の機能強化の際、前バージョンでデグレードさせてしまったバグも見つけて 改修しました。強弱(v)に遅延指定をした際、譜面モニタ属性で遅延音長の表示 が欠落してしまうというものです。また波形加工に関するシークのバグもあり、 治しておきました。私の悪い癖で、バグfix用のマイナーバージョンであっても、 バグとは直接関係のない部分までいじくり回してしまうので、デグレードしがち なんです。バグの方はすぐ治せるのですが、この私の悪癖(一種の性格バグ?) の方は、なかなか治りそうにありません(苦笑)。 ◆バグと言えば、昨年11月にWindows10のUpdateで、2つのバグが解消しました。 1つはコモンダイアログが小さくリサイズできないという症状。対処療法として muse.iniにリサイズをOFFにするスイッチを設けていましたが、今回綺麗さっぱ り削除できました。もう1つは、Windows標準添付のMSGS音源が二回目のオープ ンに失敗するという症状。こちらはバグではなく、そういう仕様になったのだと 思い込み、前回のバージョンですべての音源をオープンしっぱなしにするという 大改造をMuseに施しました。しかし、やっぱりWindowsのバグだった模様。私の 青春を返して欲しいです(笑)。ということで、音源の切替え時にはクローズし、 オープンしている音源は常に1つだけという多少穏やかな仕様に変更しました。 でも基本的に音源のオープン維持機構は残留させています。だって、そのお蔭で、 以前に比べて、サウンドフォントの演奏再開が格段に快適になったんだもぉ~ん。 思えばこれもWindows10のバグのお蔭です。私の青春は決して無駄ではなかった。 一句、できました。「人を憎まず、己を悔まず、災を乗り越え、其れを楽しむ」 お粗末さまでした。
《Ver7.2 開発後記》2016.01.30
◆前回のリリースから一ヶ月も経っていませんが、久々にテキスト表示に関する新 しい文法を立ち上げたので早々に公開したいと思います。TEXTやMARKで表示した テキストに、文字列を追加していく機構です。この機構の要望は過去、何度か掲 示板で話題にのぼり、その度に様々なアイディアが出たのですが、なかなか開発 に踏み切れませんでした。やるからには、単機能のアペンドコマンドを開発する のではなく、挿入や置換など考えうるすべての文字列変形を統一的に扱える文法 にしたい、と考えていたためです。 ◆そして今般、一休さんの様に座禅を組んで精神統一した結果(ウソです)、統合的 な記法が完成しました。追加・削除・挿入・置換と処理が多様なので「追記」と いう言葉で総称することにしました。早速「追記コマンド」を立ち上げ、そのID も決めて開発を進めていたのですが、開発最終盤に至ってコマンドIDを打ち込む ことすら省力化できることに気づき、急遽コマンドIDの無い書式に変更しました。 その結果、打ち込み容易性だけでなく、一行に書き連ねた際の可読性も格段に向 上するという副次効果もありました。「追記コマンド」改め「追記指定」です。 ◆設計の初期段階は、本当に悶々としていました。追加/削除/挿入/置換を1つの コマンドに押し込んだら、それこそ雑居ビルみたいになってしまうかもしれない。 そもそも、そんな雲を掴む様な設計ができるのだろうか。でも、一休さんは閃き ました(ウソです)。まず“置換”という一番複雑な処理があり、置き換えられる 文字列が無くなる極限において“挿入”になります。更に、挿入位置が末尾とい う極限において“追加”になります。まるで、一般相対性理論と特殊相対性理論 とニュートン力学の様な関係に気づいたことで、設計が一気に進みました。 ◆押さえるべき情報は、修正対象の“開始点と文字数”という2つの数値です。こ の2つの情報を、従来のMuse文法との統一感を維持しつつ、コマンド書式に組み 入れる必要がありました。ブレークスルーは、アスタリスクと開始ダブルクォー トの間にこの情報を記述する書式を思い付いた瞬間だと思います。コンパイラー の文脈解析としては必須ではなかったのですが、開始点の負値指定と、コメント スイッチの解除指定との識別性を高めるため、括弧で括る書式にしました。 ◆開始点の負値指定は、皆さんから頂いたデータの多彩なテキストの動きを検証し た結果、生み出されました。開始点は先頭からの文字位置だけでなく、末尾から 先頭に向けての指定も有益であることに気づいたのです。更にその場合は、置換 文字数のカウント方向も逆にした方が指定しやすいことが判りました。オーバー ランしてしまう文字数を与えても自動律則させる仕様と組み合わせることで、記 述の柔軟性が増します。例えば、末尾の3文字を残して、前方を全部消す、なん ていう指定もお茶の子さいさいです。 ◆書式は末尾方向と先頭方向で美しく対称に設計できたのですが、この実装はなか なか大変でした。メモリ内の文字列は一方向に配列で格納されているため、プロ グラム自体は綺麗に対称化できないのです。更に輪を掛けてプログラムを汚くす る要因がサロゲートペアでした。一気に2キロも太っちゃったよぉ~。でも、こ れらの内部事情をミューザーに意識させることのない、綺麗な文法に仕上がって いるな、と一休さんは言いました(ウソです)。 ◆当初、今回の実装は局所的な改造で済むと考えていたのですが然に非ず。Museの コンパイル処理は、記述順に解釈していくタイプと、演奏時の時刻タイミングを 意識して処理していくタイプとがあります。前者に比べ後者はプログラムの手間 も処理時間もかかりますが、今回は後者で組む必要がありました。そうしなけれ ば、繰返し記述やマクロが使えなくなってしまい、新記法の価値が半減してしま うのです。そこで、コンパイル前半で仮生成しておき、最終局面で本生成すると いう二段構えの大域的な改造となりました。でも処理速度は堅持したと思います。 ◆先日、仕事と作業の違いを知りました。ユーザの顔を見て(あるいは想定して)行 うのが仕事、そうでないのが作業だそうです。ネット越しなのでリアルな顔は見 えませんが、想像で皆さんの顔を思い浮かべつつ、開発しています。その意味で、 Muse開発は作業ではなく仕事であると断言できます。今回の追記指定も、どうす れば皆さんが心地良く使えるかを最優先にして開発しました。そう胸を張ったら、 「えっー!? Muse開発は“仕事”じゃなくて“趣味”でしょ!」と、一休さんに ツッコミを入れられてしまいました(ウソです)。
《Ver7.3 開発後記》2016.02.29
◆再び一ヶ月でバージョンアップ。既に17年が経過しているソフトにもかかわら ず、この頻度でバージョンを上げられることに自分でも驚いています。しかも今 回は新メニューのご提供。メンバーの配色検討を支援をする「配色マップ」の登 場です。“音楽”ソフトからはちょっぴり脱線していますが、まあ「メンバー色」 に関する機能ですから、Museならではと言えますよね。機能ウィンドウの新設は、 14年前の「フォントの確認」ダイアログ以来です。 ◆実は、WindowsのAPIにはコモンダイアログという便利なライブラリが用意されて いて、その中の1つに「色選択ダイアログ」があります。しかし、こいつは色の 配置に論理性が感じられないし、お世辞にも使いやすいとは言えません。確かに、 これを一発コールすれば何の苦も無く実装できるのですが、そもそも、Museは自 己実現のために創っているのであって、開発効率を追求することが目的ではあり ません。たとえ開発生産性が悪くとも、自分が納得するものを産み出したい。 ◆私事で恐縮ですが、「フォントの確認」ダイアログは、Musing以外にもフォント を確認したい時に単独で利用しています。今回の「配色マップ」も、純粋に色を 確認するという用途でも使用に耐えるようにしたつもりです。実は過去、色に関 する小さなツールをいくつか作ってきました。ColCubeやColHexなどです。それ らの開発で培った技術や色に関する知見を投入し、集大成を目指しました。 ◆自分で言うのもなんですが、色相ゲージと彩輝トライアングルの組合わせで、色 の構造が把握しやすいレイアウトになったし、兎にも角にも、実に使いやすい。 多分、今までの「色選択ツール」と比べても最高ランクの操作感ではないかと自 負しています。ホイールで色相ゲージをスライドさせると、中央の色から彩度と 輝度が変化しながら、あたかも滝の如く色彩が流れ落ちていく。背景の輝度を落 として左右矢印キーを押しっぱなしにすれば、まるでイルミネーションを眺めて いるような気分になります。 ◆1,677万色のトゥルーカラー全てを配色マップに展開するのではなく、隣り合う セルの色に識別性が感じられる粒度にするという指針を立てました。その上で、 RGB値が把握しやすくなるよう羃刻みを考慮した結果、3千色程度の色数に落ち着 きました。もちろん、色要素の各輝度を精緻に調整したい方を失望させぬよう、 RGBの数値入力やスクロールバーでの微調整もサポートしています。 ◆グラデーション生成や色スポイト機能、そして近似色検索もサポートしています から、このダイアログ1つで、独立したソフトとして成立するだけのボリューム を持っています。加えて、MuseのCOLRコマンドのペーストや、クリップボードへ のCOLRコマンド出力も実装し、Museの機能メニューとしても成り立たせました。 ◆少々心残りなのは、これまでの思索で得た、色に関する心理的な輝度補正を盛り 込めなかったことです。具体的には、色相ゲージ中間色の輝度比率を上げる処理 と、近似色サーチで輝度の低い色空間距離を短くするという処理です。実は、こ れらも九割方実装してみたのですが、実数演算が多量に使われることで、実行モ ジュールサイズが一気に35KBも増えてしまうし、ヒューリスティックなパラメー タが混入することで、爆発的にプログラムが複雑化してしまうので、今回は見合 わせました。 ◆対して、今回採用した正規化された双六角錘モデルであれば、総当たりで色空間 距離を計算する必要はなく、近似色相が数式で導けます。RGBの3輝度を小さい 順に並べさえすれば、双六角錘の軸方向の射影が可能となり、そこから最大輝度 の辺に対する等倍比によって色相を決定できるのです。この数式を発見した時は、 正直狂喜しました。どうしてもこの数式を活かしたかった、というのが本音かも しれません。一種の開発者のロマン・・・ いや、単なる自己満足かな(苦笑)。
《Ver7.4 開発後記》2016.05.03
◆初めからこんなに技術的課題が多いとわかっていたら決して手を染めなかったの ですが、知らぬが仏とはこのことです。地獄の2週間でした。しかし、せっかく 登り始めた山ですから、あともう一歩踏み出してみようを繰り返し、青息吐息で 山頂に辿り着きました。山頂では、あまりの嬉しさに雄叫びを上げました(苦笑)。 ◆2008年の秋、Museのオフ会が草津温泉での合宿という形で開催され、楽しい宴が 明けた翌日の朝食の場で話題になったのを覚えています。それは当時流行り始め たVSTiへの対応です。8年前の私は、本件にあまり興味を感じなかったのですが、 それからMIDI音源事情がどんどん変化していき、昨年末ついにRolandから筋の良 いVSTi音源が発売されました。もしかしたらこの路線が今後の主流かもしれない と直感し、無謀感を抱きつつも開発に挑むことにしたのです。 ◆確かに、MIDIYokeやVSTHostなどのフリーソフトを組み合せて使用すれば、現在 のMuseでもVSTiの利用は可能なのですが、これ程の込み入った手間を、Musingの 度にMuserへ強要するのはMuse思想に反します。理想は、今のサウンドフォント 対応の様に、音源メニューから一発でVSTiの起動や切替えができるイメージです。 そのためには、VSTホストの機構をMuseに取り込んでしまう必要がありました。 ◆当初は、MuseからMIDIコマンドをVSTiプラグインに投げ込めば、あとは発音に至 るまでプラグインがよろしくやってくれるものと思い込んでいました。そんな生 易しいものではないことは後で知ることになるのですが、逆に知らない内に歩き 始めて良かったです。もし知っていたら絶対開発に着手しなかったことでしょう。 ◆実はDLLインポートも初めての経験なので、これが登山口でした。どうにかイン ポート技術を習得したものの、VSTiプラグインにMIDIコマンドを流し込む方法が わからない。日本語サイトの範疇では実に情報が少ないのです。VSTiプラグイン 自体を作る側のサイトは結構あるのですが、ホスト側の情報が乏しい。そこで、 海外サイトを漁る様に検索しまくりました。MIDIの知識が皆無の中、Muse初版を 作り始めた17年前の気概を思い出そうとしたのですが、今回の技術的難度はその 比ではありませんでした。 ◆様々なタイマーやスレッドが1/1000秒のスケールで入り組んでおり、クリティカ ルセクションをうまく設計しないとすぐにデッドロックになったりハングしたり、 演奏で音が飛んだり鳴り止まなくなったりしました。これはまったくの余談です が、VirtualMIDISynthで稀に音が鳴り続けてしまう症状は、多分共通アクセスす るメモリへのクリティカルセクション設計のどこかに綻びがあるためと、技術者 としての私の勘が申しております。 ◆さて、どうにかVSTiプラグインにMIDIを渡せる目処が付いた頃、嫌な予感が的中 しました。実はVSTiプラグインがやってくれるのは、受け取ったMIDIから音の波 形を作り、実数配列で返すまでで、それを実際に発音させるのはホスト側の仕事 だったのです。なんだよそれ、ホストの仕事多すぎだろう。まあ、MIDIを波形化 するプラグイン側の処理も大仕事ですから、あまり贅沢は言えないか・・・。 ◆すでに未踏の技術をいろいろマスターし、五合目まで来ているので、引き返すの も億劫です。で「♪若者はまたぁ~、歩き始めるぅ~」若者じゃないけど(苦笑)。 WAVEデバイスまわりも初体験。細切れでVSTiプラグインが返却してくる波形を、 音が途切れないようにマルチバッファリングする技術も必要でした。バッファも 1個や2個ではとてもMuse演奏に耐えられません。演奏に合せて次々とMIDIコマ ンドをVSTiプラグインに送り付け、あるタイミングで波形にしてもらい、それを 受け取ったらすぐにWAVEデバイスに渡す。という一連の作業を、それぞれ別立て のスレッドにして組み立てなければなりませんでした。更に、VSTiプラグインは 大抵操作パネルを持っていて、その表示を正しく行わせる工夫も必要でした。 ◆途中で、絶対登れないと感じる壁にぶつかること数知れず。でも、結果として、 こうして開発後記を書く日が来たんだと思うと、感慨も一入です。今回は課題が 多かった分、多くの技術が身に付きました。WAVEデバイスまで踏み込んだので、 mp3エクスポートとか、マルチ音源を実現する*VSTIコマンドの提供なども、少し 視野に入ってきたかもしれません。次に目指す山脈は、また更に遠く高いかもし れないけど、「♪ほら前を見てごらん~ あれがあなたの未来ぃ~」ですよね。
《Ver7.5 開発後記》2016.09.10
◆前回のVSTi対応で、Muse自身がウェーブ波形を扱う必要に迫られ、それを取り込 んだことで波形ファイル出力への道が開けました。本当はmp3エクスポートこそ 求められる所だとは思いますが、私は未だエンコード技術を習得していないので、 今回はとりあえず汎用的なWAVEファイル出力を実装してみることにしました。 ◆もう波形情報は手中にあるので、今回の開発は楽チンだろうなぁ~、と思ってい たのですが、思わぬ所に難所がありました。VSTi演奏直後にWAVEファイル出力へ 移行すると、冒頭に残響が記録されてしまうのです。しかし、VSTi波形をリセッ トするAPIがどうしても見つかりません。本来なら、MIDIの音源リセット命令が それに当るのですが、そもそもエクスクルーシブを受け付けないVSTiさえあるの です。そこで、一旦VSTiプラグインを解除してロードし直す方式にしてみました。 これならばさすがに雑音は乗りません。しかしこの方法だと、操作パネルでセッ トした同時発音数やOutputレベル、エフェクトなどの各種パラメータまでクリア され、初期状態でセーブされてしまいます。この制約は仕様として致命的なので、 この方法は却下となりました。 ◆仕方が無い。利用者には申し訳ないが、演奏停止後、残響がクリアされる頃合い を見計らってWAVEファイル出力してもらおうか・・・。さりとて、ジャミングが クリアになる瞬間を把握しようと、利用者がMuseに聞き耳を立てている姿なんて 想像したくありません。そこで思い付いたのが、残響が無くなるまで待つという 行為を、利用者にやらせるのではなくMuseにやらせるという発想でした。しかも タイムシフト処理で1分以上先まで瞬時に到達できるので、待ち時間もほとんど ありません。結果は大成功でした。 ◆エクスポートの処理速度はかなり高速に仕上がったと自負していますが、流石に 交響曲クラスになるとある程度の待ち時間が必要で、プログレスバーが欲しくな ります。そこでちょっと茶目っ気を出し、Muse鍵盤をゲージに見立ててみました。 なかなかユニークなゲージで気に入っています。待つのが楽しくなるぐらい(笑)。 ◆他のエクスポートと同様に、バッチ処理も可能にしました。ただ、コマンド投入 の際、ターゲットとするVSTiの名称を引数で与えるのが煩わしいと感じたので、 音源メニューで直前に選択されていたVSTiを採用する仕様にしました。課題は、 パラメータの指定です。一時はデフォルトのみの制約にしてしまおうと思ったの ですが、逃げているようでどうにも気分が悪い。そこで、初期起動時にオーバー ライドするパラメータファイル、muse.prmを新設することにしました。UIは極限 までシンプル化し、操作パネルタイトルの右クリックでポップアップメニューを 出し、そこでmuse.prmの記録/クリアを選択する、という簡潔仕様にしました。 これで、バッチもバッチリです(笑)。 ◆今回の機能追加で、MuseのエクスポートはMIDI/PDF/WAVEと3つに増えました。 以前から階層下に2つしか選択肢がない階層メニューなんて意味無いよなぁ~、 と思っていたのです。やっと、階層メニューとしての体裁が付いたかな(苦笑)。 お気に入りのMuseデータを、お気に入りのVSTi音色でサクサクとWAVE化できる のが、実に嬉しいです。後はまとめてmp3化すれば、皆さんの素晴らしい演奏を 外に持ち出せます! ◆さて、もう一つの機能追加の話です。先日、音取り用にMIDIキーボードなるもの を初めて購入しました。私は今の今まで、中学の授業で使っていた縦笛で音取り してました(笑)。しかしこのMIDIキーボード、音を出すためにはホストが要るん ですねぇ~。その点、縦笛はいいなぁ~。電源さえ要りません(爆)。 ◆Musingで音取りしたくなった時、いちいち他のホストプログラムを立ち上げるの は面倒だし邪魔です。そこで、Museでその役目を担う姿をイメージしてみました。 『Muse演奏中でも楽器やドラムの試聴中でも、キーボードによる演奏ができる』 『プラグ&プレイが可能で、muse.ini設定をしなくても前回の状態を再現する』 『複数キーボードの接続も出来て、音源メニューのようにキーボードが選べる』 これらの要請を実現するために、新たなメニューを立ち上げることにしました。 その名も「インポート(I)」。エクスポートと並び、美しい均整が得られました。 ◆技術的に苦労したのは、発音レイテンシー問題でした。音取り用に購入したのは 2オクターブのMIDIキーボードではありますが、実際音が鳴り始めるとMuse演奏 と一緒に弾いて遊びたくなります。そうなると打鍵の発音遅延が致命的なのです。 その点、縦笛はいいなぁ~(爆)。という訳で、VSTiのWAVEデバイスバッファ量を 再度調整し直しました。WASAPIやASIO等を利用しない環境下で、極限のレイテン シーまで追い込めたと思います。 ◆実は以前から、楽器の試聴でパソコンのキーボードを鍵盤に見立てて、旋律や和 音の音色を確認したいという要請を受けていました。しかしパソコンのキーは、 ハードウェア制約で3キー同時押しを認識しない場合があり、4キー同時では絶 望的という事実を知り、一気に開発モチベーションが低下していました。でも、 MIDIキーボードなら大丈夫。昨今は廉価になっていますし、何と言っても音楽用 のキーボードですから、断然扱いやすいです。縦笛より格段にいいです(笑)。 ◆MIDIキーボードを使って楽器の試聴でしばらく遊んでいると、バリエーション番 号の切替え操作が今ひとつ不便なことが気になり始めました。この点は3年前に 掲示板でも話題になり、高速移動用のスピンボタンをもう1つ並べるなどの案も 出たのですが、そのままになっていたのです。その時は思い付かなかったのです が、今回は突如として会心の一撃が閃きました。今まではスピンボタンにフォー カスされていないとホイールが効かなかったのですが、どこにフォーカスがあっ てもそれが効く様にすれば良いのです。ついでに、ホイールボタンの押下で標準 バリエーション、つまり/0 にリセットする機能も追加しておきました。 ◆特に狙ったわけではありませんが、今回のバージョンアップは、WAVEファイルへ の出力とMIDIキーボードからの入力という、入出力がテーマとなりました。音楽 ソフトとして一段と活用の幅が広がった感じですが、多機能化に走らないよう気 を引き締めます。その一環として利用頻度が少ないと思われる「マニュアル演奏」 と「サイト表示」のメニューを撤廃しました。Museらしいシンプルさを堅持する ためには、機能削除も厭いません。 ◆機能削除といえば、今回VirtualMIDISynthとの連携機能をバッサリ削除しました。 VirtualMIDISynthがメジャーアップして、外部からのサウンドフォント切替えを 受け付けなくなってしまった、というのが最大の理由です。むろん普通の音源と してVirtualMIDISynthを継続利用できるので、サウンドフォント自体が使用不能 になった訳ではありません。単にサウンドフォントの管理をVirtualMIDISynthに 委ねただけとお考えください。その際管理しやすいように、音源メニューでマウ スを右クリックすると、音源を全クローズする機構を提供しておきました。 ◆2年半前にユニコード対応をした際、ビルド環境をVS2010にアップしたのですが、 古いVSTiモジュールとの相性が悪くクラッシュする場合があるので、VS2008にグ レードダウンしました。技術的にはVS2015などの新しい道具で開発したい所です が、利用局面最優先! 今後も、この姿勢で開発を続けていこうと思っています。
《Ver7.6 開発後記》2016.10.15
◆(祝)サウンドフォント復活!というわけで、前回VirtualMIDISynthとの連携を廃 止したMuseですが、今回BASSライブラリを直接コールし、従前よりもエレガント な形態で、サウンドフォント利用環境を提供できるようになりました。なんと、 VirtualMIDISynthのインストールは不要なんです。すなわち、VirtualMIDISynth あるいはBASSMIDIdriverの役割をMuseに取り込んでしまった・・・という訳です。 ◆自分で言うのもなんですが、音源メニューからサウンドフォントをサクサクと切 り替えられるこの手軽さは、やはり捨て難いです。考えてみると、単一楽器が目 立つVSTiよりも、全楽器がそろっているサウンドフォントの方が、Museとの相性 が良いかもしれませんね。BASSライブラリのDLLを同梱する事にはなりましたが、 それを補って余りある爽快感だと思います。ちょっと面倒だったのですが、DLL は明示的リンクで組み上げて、もしDLLが無くても今までの機能はちゃんと動作 するよう配慮しました。 ◆Musingにおいて、演奏が途切れたり音が鳴り続けたりすると、ミューザーの創作 意欲に水を差します。サウンドフォントは結構その症状が出がちなので、今回は 音源選択時にサウンドフォントを事前ロードしてしまう方式を採用してみました。 選択時に多少待つことになりますが、その後は音源を切り替えない限り、データ のリロードでの待ち時間は無く、流れるようにMusingが可能です。それに2回目 以降の選択ではファイルキャッシュが効くためか、待ち時間も短くなるようです。 ◆WAVEエクスポートにも挑戦してみました。出力アーキテクチャがVSTiとまったく 異なるので苦労しましたが、操作仕様は統一したので、内部処理の差異など微塵 も感じずに使用できるはずです。そして、BASSライブラリはエンコード用ソフト LAMEを利用してMP3エクスポートができることを発見。知ってしまったら試さず には居られません。気がついたら実装してました。更に、その実装を進めている 内に、開発済みのVSTホスト機構とBASSライブラリ、そしてLAMEを組み合わせて、 VSTiからもMP3を直接エクスポートできる可能性を察知。思い立ったら試さずに は居られません。で、これも気がついたら実装し終わってました。\(^o^)/ ◆という訳で、VSTiもサウンドフォントも、共にWAVEとMP3のエクスポートができ るという隙の無い仕様に仕上げることができました。思えば、WindowsのMIDI環 境劣化という逆境から、サウンドフォントやVSTi対応へと導かれ、遂にここまで 到達しました。まさにピンチの後にチャンスあり、ってとこでしょうか。実際に 自分で使用してみると、MP3エクスポートは巨大なWAVEファイルを介さずにMP3を 生成できるので、想像以上に使い勝手が良かったです。特にMP3プレーヤーを直 接出力先に指定すると「変換している」というよりも「転送している」かのよう な軽妙な操作感です。なにせ皆様から頂いた貴重なMuseデータは、既に9,000曲。 これでお気に入りの曲を、思い立った時に直ぐにMP3プレーヤーに転送できます! ◆自分で言うのもなんですが(またかよ~笑)、VSTiやサウンドフォントをここまで 気軽に扱えるソフトも珍しいのではないだろうか…。って自画自賛が過ぎますね。 今回の開発着手に向けて背中を押し、α版のテストまでしてくれた諸熊さんと、 メールのやり取りから半ば強制的にβ版試行に巻き込んでしまったタカハシさん、 そしてタイミング良くID3タグの話題を提供してくれたΑφροδιτηさんに 感謝しつつ、この辺で筆を置きたいと思います。
《Ver7.7 開発後記》2017.01.27
◆2年前の初夏に実施したオフ会で『サウンドフォントを利用したら、Museに歌わ せることができるのでは』というアイディアが飛び出しました。以来、この構想 をずっと暖めていたのですが、昨年の暮れ、突如実現に向けてのモチベーション が上がり、企画書をしたためてみました。その名も、ミューズロイド(MuseLoid)。 早速、サウンドフォントに精通している諸熊さんに、その企画書をメールした所、 すぐに試作のサウンドフォントを送り返してくれました。実は、諸熊さんもあの オフ会以来、実現に向けて実験を繰り返していたとのことでした。何度か二人で やりとりをしながら開発を進め、遂にインストーラー版に同梱できるレベルの歌 声音源が完成しました。もちろん、MuseLoidの規格も緻密に設計されています。 ◆歌声用のwavファイル調整作業は、何もかも初めての経験で大変でした。調整の 確認に「楽器の試聴」を使ったのですが、毎回バリエーション50まで移動するの が厄介です。そこで、ローマ字打鍵でミューズロイド配列の発声バリエーション にジャンプする機能を追加しました。“歌う”というか“喋る”Museみたいで遊 べます(笑)。整合を取るのが難しかったので、バリエーション番号上限指定SPN は撤廃しました。バリエーションの上限が固定化されたので、スピンボタンから スクロールバーに変更。物凄く使いやすくなりました。もうマウスホイールによ る変更機能なんて使いそうもありません。いつもの癖で、潔く全廃してしまいま した(苦笑)。その代わり、数字キーによる10刻みのダイレクト選択をサポートし ました。また、MuseLoid配列番号が選ばれた時、スクロールバーの右上に、該当 する五十音文字を表示するようにしました。文字と番号の対応確認にも使えます。 ◆ミューズロイド試作版がだいぶまともに歌唱できるようになった頃、諸熊さんが、 使い勝手の良いMuseLoidマクロの開発や、検証用のサンプルMusingを並行実施。 その過程で、Muse文法の楽器指定に省略記法を導入するとマクロの汎用性が高ま ると示唆してくれました。諸熊さん、本当にありがとうございました! ◆当初はsf2形式での提供を考えていたのですが、ループポイントの精度問題でsfz に計画変更しました。sfzはテキストファイルで、wavファイルもむき出しです。 よって特殊なソフトを用いることなく、新たな音源開発が容易に行えるという、 歓迎すべきオマケが付きました。また発生音が単純なwavファイルなため、これ を差替えればどんな音でも楽器にできます。例えば、子猫の鳴き声で子犬のワル ツを演奏することだってできます。つまり世に云う「サンプラー」として、生音 の利用が可能な訳です。今までMuseというツールは、音楽を奏でるための「楽器」 だったのですが、これからは「楽器工房」としての役割も果せるかもしれません。 ◆ミューズロイドは、Museの機能で実現するものではなく、あくまでサウンドフォ ント側で実現するものなのですが、一つそれに伴って、Muse側でも強化しておく べき点があることに気付きました。それは複数のサウンドフォントを組合わせて 演奏させる機構です。この機構があれば、歌唱と伴奏を1つのMuseデータで完結 できるという寸法です。更に、歌声の異なる二人のミューズロイドにデュエット させることも可能となるでしょう。 ◆この機構を実現させるため、新たに「楽団編成ファイル」拡張子(.sfm)という設 定ファイルを立ち上げました。楽器番号やバリエーション番号の差替えも可能に してあります。しかしsfz方式はバリエーション毎に割付定義をする必要があり、 ミューズロイドを使うには、sfmファイルに五十音定義を70行以上書き並べなけ ればなりません。これでは歌手を二人三人と増やした際に、記述が爆発してしま います。そこでミューズロイド配列を、Museに組み込んでしまいました。これに より、ミューズロイドの歌手が、たった1行の記述でアサイン可能になりました。 ◆この楽団編成ファイルは、当初想定していなかった副次効果が2つありました。 一つは、サウンドフォントの格納フォルダが散在していても、楽団編成ファイル でパスを指定すれば間接参照ができること。今一つは、必要最低限の音色のみ記 述すれば、音源起動が高速化され、使用メモリも節約できることです。例えば、 巨大なサウンドフォントから、ピアノの音色だけを取り出すこともできるのです。 ◆そもそもの開発目的は、ミューズロイド歌唱に伴奏を付けるために、複数サウン ドフォントを併用させることでしたが、開発を進めるうちに個々のサウンドフォ ントからお気に入りの楽器を集めて、自分なりの楽団を作っていくイメージに近 づいていると感じ始めました。ミューズロイドのアサインは、まさにボーカリス トをフィーチャーするといった印象です。 ◆実は開発途上では「楽団編成ファイル」ではなく「sf設定ファイル」と呼んでい ました。しかし楽団編成ファイルという呼称の方が、組み上げた1つ1つの定義 ファイルに愛着が涌きます。楽団編成のファイル名を付ける行為は、まさにその 楽団のオーナーになって、楽団名を決めるような気分です。今後、Museデータを 公開する際は、この楽団編成ファイルもセットにした方がいいかもしれません。 制作音源の開示という意義もありますが、演奏楽団のご紹介といった雰囲気です。 良く出来た楽団の場合、他のミューザーがそのまま利用する可能性さえあります。 ◆思えば5年前の初夏。初めてサウンドフォント対応をしたバージョンの開発後記 で「優れた楽器奏者をそれぞれ招聘し、一つの楽団を編成する」という夢を語り ました。それが今回の機能強化で達成できたみたいです。たとえ歩みは鈍くとも、 前に進んでさえいれば、知らない間に辿り着いてたりするんですねぇ~。
《Ver7.8 開発後記》2018.08.18
◆久々の文法強化になりました。3年前にサポートしたスタッカート値の拡張です。 切っ掛けはIppeiさんに頂きました。以前よりIppeiさんは、私のMuseデータを聴 き込んで、数多くのミスを指摘してくれていました。それは今も続いています。 彼はオーケストラ経験者で、その指摘たるやまるでマエストロの様。複数パート が鳴り響く中、手元に楽譜がなくても音程のミスを的確に指摘してくるのです。 そんなメールのやり取りの最中、Muse強化のアイディアをいつくも頂きました。 その中で私の琴線に触れたのがスタッカート値の拡張でした。 ◆3年前の開発時に音長比率による相対指定だけサポートし、その時点で自分でも これは少々中途半端だなぁ~とは感じてました。しかし、絶対指定まで組込むと、 プログラムが極度に複雑になる予感がしたので開発を控えていたのです。相対指 定は-100から+100までの値で制御できるので、従来のスタッカート記号の派生形 として扱えますが、絶対指定は可能な音長範囲を記憶する新たな機構が必要とな ります。でも今回Ippeiさんに背中を押してもらい、この面倒なプログラミング に挑むことにしました。 ◆いざ開発に着手すると当時の私の直感の正しさが、すぐに証明されました(苦笑)。 想像通り多岐に渡る改造と、音長算出モジュールの作り直しに迫られたのです。 このモジュールはMuseコンパイルでは頻繁にコールされる重要な処理なので、改 造には細心の注意が必要です。演奏非互換を発生させぬよう、少し手を入れては 9,200曲を越える手元データでのチェックを繰り返しました。連符内連符の多階 層スタックや連符内の音長スケーリング、LilyPond出力にも影響する恐れがある ので実にハラハラしましたが、データ構造とモジュール構成の骨格がまとまった あたりで峠を越え、その後は比較的スムーズに開発を進めることができました。 ◆Readme.txt改版の筆を進めながら、今回の文法強化が止音指定(q)と美しく整合 していることに気づきました。そして仕様が美しいだけでなく、この文法は自分 自身の今後のMusingでも大活躍するだろうという手ごたえがあります。特に何小 節にも渡る長い音長の末尾をほんのちょっと削りたいときなど、今までは結構面 倒なコーディングに迫られていました。新しい文法なら /~32 とするだけで実現 できます。私のやる気に火を付けてくれたIppeiさんに、心から感謝いたします。 さて、この新しい文法。今度はこれが私のMusingのやる気に火を付けたようです。 さっそく楽しいMusingをはじめます。そう、MuseはMusingのためにこそ開発して いるのですから!
《Ver7.9 開発後記》2019.08.17
◆実は当初より文法の上位互換性を確認するために、LilyPond入力ファイル(*.ly) のみ出力し、PDFは出力しない機能を実装していました。PDF出力は時間が掛かる し差分確認も面倒なため、テキストのlyファイルで比べた方が確実で効率的だか らです。この仕掛けは、その後のLilyPond対応強化時にも大変役に立ちました。 ◆しかしこの仕掛けは、今まで敢えて隠しコマンドにしていました。エクスポート したlyファイルに手を加え、一方で元のMuseデータに別件の変更を加えてしまう と、利用者のデータ管理が煩雑になります。そこで、lyファイルを内部ファイル と位置づけて隠蔽してしまえば、その状況を回避できると考えたのです。 ◆でも、今回のバージョンでこれを正式機能として公開することにしました。公開 に踏み切った最大の理由は、LilyPond変換に失敗した際、隠蔽方式ではエラーの 付帯情報を一切提供できないという弱点の克服です。この課題は初期段階から認 識していたのですが、そもそもLilyPondから出力される付帯情報が、lyファイル 上の位置として示されるので、そのlyファイル自体が隠蔽されていたらトレース することすらできません。 ◆という訳で、lyファイル出力の機構を正式リリースすることにしました。まあ、 データ管理上の混乱や一元化Museデータの瓦解という懸念は、私の老婆心が過ぎ るだけかもしれません(苦笑)。それよりも、変換に失敗した時の理由が明示され る方が、何倍も付加価値が高いと思い直しました。今回ご提供する機能の操作は、 従来のPDFファイルエクスポートのダイアログで、ファイル種類をPDFからLYに切 り替えるだけという簡潔さです。処理はMIDIファイルのエクスポート並みに一瞬 で終わります。コマンドラインのオプション(*l)もサポートしておきました。 ◆LilyPond関係は他にも、連符内の音符がすべて省略音長で構成されていた場合に 適切な要素音長を自動計算する処理や、楽譜全体や五線譜毎のレイアウトを指定 する機構もサポートしました。これはIppeiさんから頂いた数多くのご要望の中 のほんの一握りに過ぎません。とりあえず使用イメージが明確で、技術的な実現 性も高いと判断したものから着手しました。この2つだけでも結構時間が掛かり ましたが、もしクラシックの楽譜に造詣の深いIppeiさんのご協力がなかったら、 いくら時間を掛けても実現しなかったと思います。感謝の言葉が見つかりません。 ◆今回のバージョンはもう1つ別の改変があります。履歴ファイルのフォーマット を簡素化しました。立ち上げ当初、いつか使うかもしれないと考えタイムスタン プやカウンタを記録するよう作り込んだのですが、あれから12年たった今でも、 一度も利用していません。そこでこれらの情報記録を撤廃することにしました。 従前の履歴ファイルの読み込みも可能なので、ユーザーは何の移行作業も必要あ りません。自動的に新しいフォーマットに移行されます。 ◆それにしても、一旦作り込んだものを矛盾なくシームレスに削り取るのって結構 手間が掛かり、神経も使います。今回もデータ構造はもとより、ダイアログ表示 などにも波及しました。特にカウンタの制御はかなり複雑だったので、他に影響 が出ないか確認するのに苦労しました。これほどの手間を掛けても、利用者から すれば機能ダウンという印象しか得られないのですから、世の中のソフトウェア が肥大化する一方なのがわかる気がします。 ◆しかしこのシェープアップで、ログファイル容量は一気に半分になったし、そも そも無駄なものを抱え込んでいることが耐えられない性分なので実に気分がいい です。必要なもの以外一切所有していない質素簡潔な状態。剣術の達人がギリギ リの見切りで相手の刃を避けたり、宇宙船の開発で不要なものを極限まで削ぎ落 とす、あの感覚が好きなんです。根っからの貧乏人なのかもしれません(苦笑)。 しかるに、それでもなお残ったものはより一層輝きを増す、と感じるのは私の単 なる思い過ごしでしょうか。
《Ver8.0 開発後記》2020.02.28
◆桁上がりメジャーバージョン。ついにMuseはV8.0となりました。今回の機能強化 は文法や音楽演奏とは関係のない脇道ではありますが、結構大きなプログラム開 発になりました。実行モジュールのサイズが一気に13KBも増えてしまった(苦笑)。 初期バージョン以来、単にテキストファイルに関連付けられたエディタを起動し ていただけのメニュー「マニュアル表示」。今回はそこに手を掛けてみました。 Readme.txt「専用ビューア」のご提供です。 ◆前々から開発してみようと思っていたのですが、日本語に対応したWindows標準 の等幅フォントは長年、MSゴシックとMS明朝だけであり、そのレトロな外観を見 るたびに開発意欲が萎えていました。今般、Win10でようやく美しい等幅フォン トが標準搭載されたので、俄然やる気になった次第です。 ◆既に1万行を越えるReadme.txtですから、とても頭から「通読」するタイプのド キュメントではなくなっていると自認しています。そうなると、フリーワードに よって所望の記載箇所に到達できる「検索」タイプのドキュメントということに なります。今回開発した専用ビューアは、その点に力を入れてみました。 ◆実は実装した検索インターフェースは、かねてより自作エディタWinViに搭載し ており、プログラム開発時に絶大な威力を発揮しています。もちろんMuseの開発 にも活用してきました。この専用ビューアの外観は極めてシンプルなのですが、 実行モジュール増大に見合う機能とスマートな操作性を盛り込んだつもりです。 特にマウススイープとインクリメンタルサーチの組合せによって、本文すべての 文字列に、アンカーリンクが自動付与されている、といったイメージを新開発し ました。今まで存在しなかったオリジナルなインターフェースを創出し発露する、 というのが私の信条なので、例えそれが不評に終わっても(自己)満足です。(笑) ◆しかしあれですな。この専用ビューアの使い方の解説そのものが、1万行もある Readme.txtの中に埋もれている訳で、その解説を読むまで、外観がシンプルであ るが故に自身の機能を活用できないというジレンマ。なんだかとっても心配です。 ◆もう1つ気がかりなのは、マウスの使用を前提とした操作仕様であるため、視覚 にハンディのある方の利用が困難になるかもしれないということです。解決策を いろいろと模索してみたのですが、なかなかうまい手が見つからない。そんな訳 で、とりあえず初期化ファイルにビューアの差替え指定を立ち上げました。ある 意味「逃げ」かもしれませんが、でもまあ今まで指定できなかったReadme.txtの 閲覧アプリを、明示的に指定できるようになったのですから、考えようによって は、一つの「前進」とも言えるかもしれません。 ◆こういった課題群を抱えてはいるものの、Museの大きな特徴でもあるReadme.txt、 その専用ビューアを組込めた事は、桁上がりバージョン記念として相応しい機能 開発であったと思います。ふと疑問を感じたキーワードを入力し、あちらこちら の用語に興味を馳せながら、Readme.txtの海原を回遊して頂くことを願います。
《Ver8.1 開発後記》2021.02.26
◆ミューザーの皆さんは履歴メニューのアルバム機構を利用しているでしょうか? 実は私はこの機構をフル活用しており、自分なりのカテゴライズでアルバム階層 を作り、皆さんから頂いたお気に入りのMuseデータを次々と放り込んでおります。 宝物に値するデータがとても多いため、最近では宝箱が肥大化してしまい、嬉し い悲鳴を上げております(笑)。 ◆さて先日、いつものようにアルバム機構を使って皆さんの演奏を堪能していた時、 ちょっと気になる事がありました。選択した曲と同一階層の他の曲を聴きたいと 思った際、この膨らみ切った宝箱を辿っていくのがとても億劫に感じたのです。 そこでもし、パン屑リストのように履歴メニューの各階層にラジオボタンを付与 できれば、その煩わしさが多少緩和するのではないかと考えました。可能なら、 履歴メニューからの選択だけなく、通常ロードであっても合致するアルバム曲に マーキングすればもっと便利になりそうです。試みにこれらの仕様を実装してみ たところ、格段にトレースがしやすくなり迷子になることは一切なくなりました。 ◆そして、この新しい仕掛けをしばらく試用していたら、以前から実現したいと思 いつつも、すっきりとした外部仕様がなかなか決まらないために実装を見送って いた機構のイメージが、突如見えてきました。それは複数曲の連続再生機構です。 当時は、連続再生用のプレイリストを別途立ち上げるしかないと考えていたので すが、今回アルバム曲に付けたマークを眺めていたら、このアルバム自体をプレ イリストに見立ててしまえばよいのだと気づいたのです。 ◆さっそく具体的な設計を開始。初めはいろいろ欲張って、複数のアルバム階層を 指定できたり、巡回後の停止の有無を指定できたりする仕様を検討したのですが、 なんだかどんどん操作が煩雑になってくる。そこで、同一アルバム内だけの巡回 に留め、演奏も無限巡回型のみ、という潔い仕様にしました。その結果、繰返し 演奏メニュー配下に3つのモード選択肢が増えただけという、極めてシンプルな 建付けとなりました。例によって「80点でOK!」のお気楽思想です(苦笑)。 ◆80点ではあるものの、自分なりのアルバムを作る楽しみが更に増したように思 います。特に、シャッフル再生する「アルバム順不同」は最高です。このモード でお気に入りのアルバムを鑑賞していると、もう何時間でも聴いていられます。 Museを起動している時間が益々長くなってしまいそうです。まじヤバイっす(笑)。