目次

1. FPD95の概要

2. 操作説明

3. MIDI用の曲を聞き方

   サポートしているMIDIイベント

   fpd.cfgファイルの説明

4. 作曲手順について

   MML作曲が初めての方へ(MML.HLP起動)

   MMLの文法

   コンパイル時のメッセージ

   楽器音色対応表

5. 著作権

　 料金支払いについて

   サポート先

6. 再配布について

7. トラブルシューティング


FPDWINの概要
FPD95の概要

　FPD95はMIDI音源が無くてもMIDI音源の代わりをしてくれるソフトです．

　計算機内蔵のPCM音源を使って，多重和音によるリアルタイム演奏を実現し，GM/GS規格に対応したMIDIファイルを演奏することができます．また，MML記述による作曲を行うことも可能です．さらに，WindowsサウンドファイルのWAVファイルへの変換もサポートしております．

特徴

・PCMの音色データはループをとって使用します．これにより，少ないデータ量で無限長の発声が可能になっています．

・再生／録音レートは任意可変です．いろんな録音レートで作成したPCMデータをごちゃまぜにして使って，更にそれを任意のレートで再生しても，音程が狂わないように変換されます．また，この機能による速度低下もほとんどありません．そのため各人のメモリやCPUの性能に合わせて，最良の動作速度を選択することが可能になります．

・もちろんバックグランドでの処理ですので，BGMとして使用することが可能です．

・各チャンネルでステレオ再生が可能です．「微妙に左より」といった設定も可能です．

・MMLにより曲データを作成しますので，MMLに慣れた人なら手軽にPCMの曲を作ることができます．

・SMF(標準MIDIファイル)をFPD用の演奏ファイルに変換して聴くことが出来ます．MIDIで再生する場合より音質等が落ちるのは仕方がないにしても，本体内蔵のPCMだけでMIDIの曲が聴けることになります．

※また，当然の欠点として挙がるのは，処理速度が著しく低下することです．ただし，これはこのドライバの性質上やむを得ないことではあります．速度に関しては、極限まで最適化を計ったつもりです．

ディレクトリとファイルの説明

  [MUSICSAM]	サンプル曲関係のファイルが格納されます．

*.MML	MMLソースリスト

*.MID	MIDIファイル．変換のためにサンプルとして同梱

*.FM	*.MMLまたは*.MIDより変換された演奏ファイル

*.DOC	各曲の制作者ドキュメント

  [KORG]	(株)KORG提供のサンプル曲データが格納されています．

*.MID	AG-DEMO MIDIファイル

*.FM	上記を変換した演奏ファイル

*.DOC	ドキュメント

  [PCMV2]	PCM音色データ(Ver 2.0)が入っています．

便利な使い方

　FPD95にはドラッグ＆ドロップ機能が備わっています．

　ファイルマネージャーから実行中のFPD95上に，ファイル( FM,MID,WAV,MML ) をドラッグ＆ドロップすることで，演奏が開始されます．

  また，FM,MID,WAVのファイルは，アプリケーションとの関連付けで，FPD95.EXE に関連付けを行なっておくことができます。そのようにしておけば，ファイルマネージャー上でファイルをダブルクリックすれば，演奏が開始されます．

  MMLのファイルは，秀丸エディタの方に関連付けをしておき，マクロ実行でコンパイル・演奏するようにしておくといいでしょう．


ドラッグ＆ドロップ(drag-drop)

  １つまたは複数のファイルを選択し，それらをオープン中のアプリケーションまでドラッグして，そこにドロップする操作のこと．


MIDI用の曲の聞き方

  標準MIDIファイルのデータは，NIFTY-Serveでは「MIDI Data Forum」(GO FMIDIDAT)などに，PC-VANでは「MIDI Data Link」(J MIDI)などにいくと置いてあります．本来なら，MIDI楽器をお持ちでないと入ってもあまり意味がないのですが，「FPD95」をお使いでしたら，MIDI楽器を持っているも同然です(かなり誇張あり)．いろいろとダウンロードして演奏をお聞きになってみて下さい．

　現在のところ，「FPD95」を使って聞く曲は，標準MIDIファイルのものがほとんどだと思われますが，今後，FPD用演奏ファイル(拡張子 *.FM)も増えていくと思われます．どんどん，作曲にも挑戦なさってみて下さい．

　なお，標準MIDIファイルのデータは，一度，FMファイル(FPD用曲データ)に変換されてから再生されます．MIDI音源をお持ちでない場合には，FMファイルだけを保存しておけば大丈夫です．


サポートしているMIDIイベント

　サポートしているMIDIイベントをMIDIインプリメンテーション・チャート風に書いたものです．

FUNCTION	受信	備考

--------------------------------------------------------------------

BASIC CHANNEL        1～16

MODE                 OMNI OFF,POLY

NOTE NUMBER          12～107             1～11,108～127も一応可能

VELOCITY NOTE ON     ○ 9n,V=1～127

  NOTE OFF    ×

AFTER TOUCH          ×

PITCH BENDER         ○                   Default Range 2

CONTROL CHANGE 1     ○                   Pitch Modulation

               6     ○                   Data Entry (MSB) ※1

               7     ○                   VOLUME

              10     ○                   PANPOT

              11     ○                   EXPRESSION

              98     ○                   NRPN (LSB)

              99     ○                   NRPN (MSB)

             100     ○                   RPN (LSB)

             101     ○                   RPN (MSB)

PROGRAM CHANGE       ○ 0～127            Ch.10は0,25に対応

                                                 0=STANDARD Set

                                                25=ANALOG Set

EXCLUSIVE            ○                   Roland ID ※2

COMMON(SONG,TUNE)    ×

REALTIME(CLOCK,COMMAND) ×

--------------------------------------------------------------------

                                                  ○：あり

                                                  ×：なし

※1 Pitch bend sesitivity when LSB=0 and MSB=0

※2 Only GS Model is Supported in "USE FOR RHYTHM PART"


fpd.cfgファイルの説明

はじめに

　fpd.cfgは，標準MIDIファイルやMMLファイルからFPD用音楽データ(FMファイル)に変換されるときに読み込まれる設定ファイルです．fpd.cfgには，変換する際に必要な情報が記述されています．例えば，どの音色番号にどのPCM波形を対応させればいいか，とか，音色番号ごとのボリュームバランス，ビブラートの設定などです．fpd.cfgの設定次第で，様々なMIDI音源に対応したデータを変換することができるでしょう．

現在のfpd.cfgの設定は，GM/GS規格に準じています．ですから，現状のfpd.cfgを用いれば，そのままGM/GS規格に対応したMIDIファイルをFPD用音楽データに変換することができます．（ただし，バンクチェンジした場合の音色の変化には対応していません）

fpd.cfgには，fviewの実行に関する情報も記述することができます．（fviewはPC-9801上で動作するMS-DOS版のソフトです）

大まかな設定の順序

(1) 最初にPCMファイルに波形番号を付けます．

(2) MIDIファイルの各音色番号にPCMファイルの波形番号を対応させます．

(3) ドラムセットの各音階にPCMファイルの波形番号を対応させます．

(4) fviewの設定をします．

fpd.cfgのルールの簡単な説明

「*」はコマンド行であることを示します．

「;」以降行末まではコメント文として無視されます．

語と語の区切りは「:」「=」「,」SPACE，TAB，改行のうちどれでも構いません．

後は，以下の例を見て「習うより慣れろ」の精神でがんばって理解してください．

例

*pcmfile	;PCM波形ファイルの指定

000: 03piano1	; <--- 波形番号:ファイル名

001: m3harpsi

002: m3ep2

（略）

155: m3snare2 \26	; <---  ドラム波形の場合は、後ろに \n で

（略）	;	fviewで表示する鍵盤の位置を指定できます

*program	; 音色の設定　0番（GM/GSでは1番）から順に記述する

;

; 「A」,「B」,「C」,「D」,「E」,「F」 の順に書く

;

; A 波形番号（*pcmfile のところで設定した値を書く）

; B エンベロープ番号（1～4  PE.EXEで設定した値が採用される）

; C オクターブ増減値 <-- バランスを取るためのもの

; D ボリューム増減値 <-- バランスを取るためのもの

; E ビブラートの強さ（最大でも15ぐらいが良いでしょう）

; F ビブラートのディレイタイム（ステップ値  48で4分音符）

;

0,1,0,0,0,0   ;1   Acoustic Grand

0,1,0,0,0,0   ;2   Bright Acoustic

1,1,0,0,0,0   ;3   Electric Grand

0,1,0,0,0,0   ;4   Honky-Tonk

2,1,0,-3,0,0  ;5   Electric Piano 1

（略）

*drumset = 2	; ドラムセットの数

*drumsetno	; ドラムセットの音色番号

1	; standard <-- １番目のドラムセットのプログラム番号

26	; analog   <-- ２番目のドラムセットのプログラム番号

*drum	; １番目のドラムセットの設定

            ;	ノートナンバー0番から順番に記述する

            ;

            ; 波形番号（*pcmfile のところで設定した値を書く）

            ; エンベロープ番号（1～4）

            ; 音階（サンプリング時の音階で鳴らす場合は36を書く）

            ; ボリューム増減値 <-- バランスを取るためのもの

            ; パンポット（0～127　中央は64）

150,1,36,0,64	;ノートナンバー0

150,1,36,0,64	;ノートナンバー1

150,1,36,0,64	;ノートナンバー2

150,1,36,0,64	;ノートナンバー3

;  （最初の方のノートナンバーには普通音が

;    割り当てられていないので、適当な波形番号(=150)を

;    とりあえず割り当てている）

（略）

*drum	; ２番目のドラムセットの設定

150,1,36,0,64	;0

150,1,36,0,64	;1

150,1,36,0,64	;2

（略）

;================================

*view	;FVIEWに色などの情報を与える。色の指定はG,R,Bの輝度(0~15)

;

;================================

bc =  1, 1, 3	;表示窓のバックカラー（初期：青）

wc = 11,11,11	;鍵盤兼メッセージ色（初期：白）

tc = 11,11, 7	;タイトル、カーソルなどの色（初期：黄色）

dc = 11, 2, 3	;ディレクトリ名、演奏中ファイルなどの色（初期：緑）

kl =  0,15, 0	;鍵盤のマル兼エラーメッセージの色

ll =  6, 0, 0,14, 2, 2	;レベルメーター(Law)消光色、発光色

lm =  6, 6, 0,14,14, 2 	;レベルメーター(Middle)消光色、発光色

lh =  0, 6, 0, 2,14, 2	;レベルメーター(High)消光色、発光色

lp =  2	;ループ曲をループさせる回数

fp =  0	;ファイル名表示形式 0:大文字 1:先頭だけ大文字 2:小文字

fs = 16	;フェードアウトの速度

;================================

*end	;コンフィグファイルの終了

;================================


作曲手順について

●一般的な開発手順

　　開発手順に関しては、特にこれと定める必要はないのですが、参考までに一例を記しておきます。

１． PCMの音色データを用意します．

　標準添付しているPCM音色データを使えば，ほとんどの曲は作成できます．しかし，PCMの音色データを，波形サンプラ「PE」を使って作成することが可能です（注意：現在 FPD95上ではこの機能は備わっていません)．

　サンプルとして入っているものを見れば．だいたいどういったものかは判ると思います．PE内での手順は、録音→ループポイントの設定→エンベロープの設定→ディスクにセーブ，という感じです．

２． MML記述によりファイルを作成します．

　最初の内は，MMLの文法とサンプルMMLをもとに作成するといいでしょう．サンプルMMLは MUSICSAM ディレクトリの中に入っています．ファイルの拡張子は .MML にして下さい．

  秀丸エディタをお使いの場合は，マクロを用意していますので，

  下記のようにすれば，コンパイル，演奏が簡単に行えます．

  付属の「FPD95.MAC」を「HIDEMARU.EXE」と同一のディレクトリにコピーし，

  秀丸エディタを起動後，「マクロの登録」により登録して下さい．

  MMLファイルを編集中にマクロ実行を行なうことでコンパイル・演奏ができます．

  ただし，「FPD95.MAC」の内容は

save ;

run "a:\\fpd95\\fpd95.exe "+ filename ;

となっていますが，赤い部分はFPD95.EXE が置かれているディレクトリに合わせて書き直して下さい．例えば，B:\WIN32\FPD95 というディレクトリに置かれているのでしたら，

save ;

run "b:\\win32\\fpd95\\fpd95.exe "+ filename ;

と書き換えて下さい。「\」は「\\」と表記することに注意して下さい．

  秀丸エディタ以外のエディタをお使いの場合にも，同様に

  「A:\FPD95\FPD95.EXE ファイル名」 という形で起動すればＯＫです．

  FPD95.EXE が B:\WIN32\FPD95\FPD95.EXE にある場合でしたら，

  「B:\WIN32\FPD95\FPD95.EXE ファイル名」

  という形で起動できるようにして下さい．

●その他

　　FPD95では，曲を演奏中に拡張子.DOCのファイルを表示しています．

　　曲の説明を付けたい場合には，.DOCファイルに書いておくと便利です．


著作権

    藤井秀樹(Hideki FUJII)

      E-Mail：HQA03056@niftyserve.or.jp

　　黒田久泰 (Hisayasu KURODA)

      E-Mail：kuroda@pi.cc.u-tokyo.ac.jp

　　門田暁人(Akito MONDEN)

      E-Mail：akito-m@is.aist-nara.ac.jp

　　斉藤洋二(Yoji Saito)

・本ソフトウェアの著作権は，上記の人物に帰属します．

・本ソフトウェアはシェアウェアです．継続して御使用される場合は，こちらの定める金額をお支払い下さい．金額と支払方法などに関しては，支払い料金についての項目を参照してください．

・本ソフトウェアを使用したいかなる不具合についても，こちらにその責任はないものとさせていただきます．

・本ソフトウェアに不具合が生じた場合でも，作者は修正の義務を負わないものとさせていただきます．致命的な不具合（全く動かないなど）がある場合は料金をお支払い頂く前にまずご相談下さい．

・本ソフトウェアに同梱されているPCM音色波形データは，株式会社KORGとの契約に基づいて作成したものです．音色波形データも重要な無形財産であります．不正流用は絶対にしないで下さい．ゲームなどで，FPD95の一部またはすべてを組み込んで利用したい場合には，できるだけ協力は惜しまないつもりですので，一度ご相談下さい．

・変換後のWAVファイルを，無償で配布することを許可します．ただし，変換元のデータに別の著作権者が存在する場合には，その方の了承を得て下さい．なお，有償を希望する場合にはご相談下さい．FM，MMLファイルについては，有償，無償にかかわらず配布は自由に行なってもらって結構です．

・「FPD95」の再配布（転載）については，別項目を参照してください．

　再配布について


料金支払いについて

　「FPD95」はシェアウェアです．

　2000円を，NIFTY、PC-VANの送金代行サービスまたは郵便局・銀行口座振り込みにてお支払い下さい．なお，図書券または郵便小為替(2000円分)を送って下さったのでも結構です．この場合にはFPDサポート先までお知らせ下さい．IDとパスワードを電子メールまたは郵送にてお送りします．

・教育目的で複数の学生がFPD95を同時使用する場合の使用料は、教育者または管理者が届け出をして下されば１人分の使用料で構いません．

NIFTYの送金代行サービス

　「GO SWREG」を入力後，「3.送金代行サービス」，「2.送金システム」，「1.シェアウェア番号指定」を続けて選択し，シェアウェア番号として2020番を指定して下さい．送金確認後，IDとパスワードを電子メールで連絡致します．

PC-VANの送金代行サービス

  「J SWSS」を入力後，「5.サービス開始」，「1.シェアウェア」，「2.シェアウェア番号指定」を続けて選択し，シェアウェア番号として209番を指定して下さい．送金確認後，IDとパスワードを電子メールで連絡致します．

郵便局口座

・記号:14550  番号:10961731  名義:藤井秀樹

銀行口座

・さくら銀行 大和王寺支店(店番772) 普通 3430488 藤井秀樹

※高校生以下の方へ

　FPD95は、高校生以下の方なら使用料を高校卒表時まで延期する制度を取り入れています。その際、学校名と連絡先をFPDサポート先までお知らせ下さい．IDとパスワードを電子メールまたは郵送にてお送りします．


サポート
サポート先

　サポートは基本的に通信で行います．会議室またはメールで受け付けますが，サポートの手間を少しでも縮小するために，なるべく要望・質問等は会議室へ書き込んで頂けるようお願いします．

　通信ができない方で，どうしても必要な場合は下記住所まで往復葉書でお願いします．

サポートを行う会議室（ボード）

　NIFTY-Serve FWINMM 3.電子会議 - 3.オンラインソフト情報広場

　PC-VAN      JMIDI  3.フォーラム - 2.ソフトウェア

　暮里研究所　30番ボード（FPDのボード）

　東京BBS     *2(同人ネット) @DFF Frostforest

メールアドレス(電子メールは以下のアドレスにお送り下さい)

  NIFTY-Serve:HQA03056

  CompuServe :101172,3203

  PC-VAN     :UAM62269

  ASCII-NET  :net44172

  DELPHI     :net44172

  東京BBS    :FF-MKR

  INTERNET   :kuroda@pi.cc.u-tokyo.ac.jp

  暮里研究所(Modem 0742-22-9131):KURE0001

サポートネットの紹介

  暮里研究所(0742-22-9131 二回線無料)というネットでFPD関係のサポートを行っております．FPDの演奏データもそこそこの数が揃ってきていますので，興味のある方は覗いてみて下さい．

連絡先住所

　〒157 東京都世田谷区南烏山４－５－２２－１０５

                                藤井秀樹


再配布について
再配布

　再配布は自由に行ってもらって構いません．

　こちらへの報告も必要ありません．

　バージョンアップの際にも，再配布して頂けるとうれしいです．


トラブルシューティング

１．「03piano1.fpvがありません」というエラーが出る．

  すでにFPD95を起動した後に、FPD95のディレクトリを変更してしまうとこのようなエラーが出ます．「設定」の「音色波形データのディレクトリ」を選び，FPVファイルのあるディレクトリを正しく設定すれば直ります．

２．MIDIファイルを演奏しようとしても何も音が出ない．

  ウィンドウ中のドキュメントをクリックし、ドキュメントビューアーを表示させてみて下さい。そこにエラーの原因が書かれています。たいていは、「ERROR! Unable to open ... fpd.cfg」というようなエラーになっていると思われますが、これは、FPD95.EXEと同じディレクトリに FPD.CFGを移せば、問題は解決します．(デスクトップにアイコンを登録する際に、種類がショートカット作成になっていないと、FPD95.EXEだけが別のディレクトリにコピーされてしまいます）

３．ボリュームの変更の仕方がわからない．

  画面の一番下にあるタスクバーの右端の方にある「黄色いスピーカー」をダブルクリックして下さい．ボリュームコントロールが起動されますが、そこで「ボリュームコントロール」または「WAVE」の部分で音量の変更が行えます．


ＭＭＬの文法

＃　ＭＭＬ表記について

　ＭＭＬ（いわゆる曲のソースリスト）の文法について説明していきます。サンプル曲のソースリストを見ながら読めば判りやすいと思います。

　まず行頭に、その行のパート名を書きます。演奏パートは「数字(0~3)＋英字(A~P)」という形式で、その他の機能を持つパートは英字のみで表記します。先頭に「0A」とあればその行は「0Aパート」、Ｔとあれば「Ｔパート」といった感じです。

　ＦＰＤでは以下のパートを使うことができます。

  0Aパート  ----  チャンネル１の演奏内容

  0Bパート  ----  チャンネル２の演奏内容

     （途中省略）

  0Pパート  ----  チャンネル16の演奏内容

  1Aパート  ----  チャンネル17の演奏内容

  1Bパート  ----  チャンネル18の演奏内容

     （途中省略）

  3Pパート  ----  チャンネル64の演奏内容

  Ｔパート  ----  全音符長と初期テンポを宣言

  Ｖパート  ----  音色ファイルの番号への割り当て

  ＄パート  ----  マクロ（文字列）の宣言

  ！パート  ----  タイトル設定

  ？パート  ----  その行を使用済みパートに割り当て

　0A~0Pパートは数字の0を省略して英字一字で表記することが出来ます。

　演奏パート（0A~3P）に限って、並べ書きができます。これは、１つの行に複数のパートを割り当てる機能です。

  例）

0A c2d4e4 >c8c8

0B c2d4e4 >c8c8

0A0B c2d4e4 >c8c8

　上の２つは、全く同じ意味をあらわします。

  例）

1C c8d8e8f8

2E c8d8e8d8

1C2E c8d8e8

1C f8

2E d8

　この２つも、全く同じ意味になります。

　また、字数を少なくする表記が幾つか用意されています。以下に凡例を示します。

1A1B1C   =　1[ABC]

1A2A     =  12A

1A2A1B2B =  12[AB]

　？パートは、「0A~0P及び、1A~3Pのうちそれ以前に使用されたことのあるパート」ということです。転調の指定や％による演奏スイッチなど、全演奏パートにかけたい命令を使う時に便利です。

例）ここまでに0A~0Lと1A,1Bパートが使われている場合

? %

ABCDEFGHIJKLMNOP1A1B %

  上の２つは同じ意味です。％の意味は、後述の命令説明を見てください。

Ｔパートの書式は、

T  テンポ,全音符の長さ

　です。つまり数字を２つ並べればいいのです。

　テンポは、曲の演奏速度です。

　全音符の長さとは、全音符（c1など）を指定した時のステップ数です。ＭＭＬ内ではこの数値の約数が音符の長さとして使えます。全音符＝９６とした時は、1,2,3,4,6,8,12,16,24,32,48,96 が使えることになります。

　この意味がよく判らない人は、とりあえず「Ｔパートの２つ目の数字は１９２」という認識でいて下さい。まず、差し支えはありません。

　Ｔパートを省略した場合は，「初期テンポ=100,全音符長=192」とみなされます。

  例）

T 107,192     テンポを107、全音符の長さを192に設定します。

　Ｖパートは、ＰＣＭファイルを音色番号に割り当てます。書式は、

V  number,Filename	[\keycode]

　です。例えば、「V  2,STRENS2」とした場合、「音色番号２番にSTRENS2というＰＣＭを割り当てる」ということです。この宣言があるＭＭＬの演奏パートで「２番の音を選択」という命令があれば、「STRENS2」というファイルに入っている音を使うことになります。Ｖパートは、１行で１つの割り当てしかできませんので、使いたい音の数だけＶパートを作って下さい。

　また、FVIEWで演奏する時に、特にドラムの場合は「この音はオクターブ３のドの箇所が光るように固定したい」ことがあります。その時は、Filenameの後、タブかスペースを入れて、\24 などのように入れて下さい。この場合の24はオクターブ３のドの番号でオクターブ１のドが0で、半音毎に１増えていきます。（FVIEWとはDOS版FPDに付属する鍵盤プレーヤーです．WINDOWS版では同等の機能はまだ開発していません．）

　宣言した音色番号は、基本的にはその演奏中のみ有効です。

　また、Ｖパートで宣言していない音色番号を使用した場合、その番号は、コンフィグファイルの*pcmfile中で設定されたＰＣＭファイルが割り当てられます。

　＄パートはマクロ（ＭＭＬ文字列）を指定します。＄の直後にマクロ名を１文字（大小英字＋数字で６２種類）入れて、その後からマクロの内容を書いていきます。宣言したマクロは演奏パート、Ａ～Ｐで使うことができます。

  例）

$t @2p-5v110 c

  行頭にこのように書けば、$tというマクロが宣言されたことになります。この状態で、Ａ～Ｐパートで $t があれば、@2p-5v110c と書かれたのと同じ意味になります。

　以上、全てのパートでは；（セミコロン）が１行注釈文として使えます。；を見つけると、その行の処理をそこで中止、次の行に処理を移します。

　！パートはタイトル設定パートです。！に続けてタイトル文字列を記入して下さい。この文字列は、FVIEWで画面上部に表示されます。また、以下の文法があります。

　・！と文字列間の半角スペース、タブは無視される。

　・文字列の最初が"の場合、それはスタートマークとみなし、タイトルに加えない。

　この他、パート宣言ではありませんが、行頭に / を見つけた時は、次に行頭に * を見つけるまでコンパイルをスキップします。

  例）

/

0A  c2 f2 e1 r4c4f4e4d4c4

0B  g2 a2 b1

*

  この時、/ と * で挟まれた２行はコンパイルされません。

　以上、説明のあった文字以外の文字が行頭にあった場合、その行は無視されます。

＃

　Ａ～Ｐでの、実際の演奏データの表記を説明します。

　ここでは、演奏を指示する音符休符と、ドライバまたはコンパイラに状態の変化等を指示するコマンドを使っていくことになります。

　音符は、ａ～ｇのアルファベット（小文字）で表します。

ｃ=ド　ｄ=レ　ｅ=ミ　ｆ=ファ　ｇ=ソ　ａ=ラ　ｂ=シ

　のように対応します。＃（シャープ、半音上げる）をつけたい時は＋、ｂ（フラット、半音下げる）をつけたい時は－を音符の直後につけて下さい。

 例）

  a+   ラの＃を表します。

  e-   ミのフラットを表します。

  e+   この場合は、ミの半音上、ファになります。

　休符はｒを使います。

　音符または休符の後には、その長さを「～分音符」という単位で指定します。

 例）

  c2   ドの２分音符

  d+8  レ＃の８分音符

　のようになります。なおここの数字は、Ｔパートの２つめで指定した「全音符の長さ」の約数のみが使えます。他の数字を使うと長さがおかしくなりますので注意して下さい。

　長さの指定は、数字以外にも使えるものがありますので、以下に使用例を列記します。

 凡例）

  2.    符点２分音符。２分音符とその半分の長さ（＝４分音符）を足した長さになります。

  4..   符点を２つつけることもできます。この場合は、４分音符とその半分の長さ（＝８分音符）と、更にその半分の長さ（＝１６分音符）を足した長さになります。

  2^16  これは２分音符と１６分音符を足した長さになります。

  2-16  これは２分音符から１６分音符を引いた長さになります。これは２つ上の 4.. と全く同じ長さを意味します。

　これらの表記は、長さ１回の中で、複数使うことができます。

 凡例）

  2.^16  符点２分音符と１６分音符を足した長さになります。

  4^1-8  ４分音符と全音符を足して、８分音符を引いた長さになります。

　音長指定の時に、必要な数字を省略した場合、省略箇所には全て基本長（ｌコマンドで指定、指定がない時は４分音符）があるものとみなします。

 凡例） ｌ（基本長）が４分音符の場合です。

  a     ラの音ですが、長さが省略されているのでｌの値が音長になります。

  a.    符点４分音符になります。

  a^16

  a16^  この２つは、両方とも４分音符と１６分音符を足した長さです。

  a^    これは基本長の倍の長さ、２分音符になります。

  a^^   これは基本長の３倍、符点２分音符です。

　単位を「～分音符」ではなくて「～ステップ」で書くことも出来ます。この時は、数字の前に ~ をつけて指定して下さい。

凡例）  Ｔパート２つめの数字（全音符の長さ）が192の場合です。

 c~192  ドの音を192ステップ、つまり c1 と全く同じ意味になります。

 c4-~1  ４分音符から１ステップ短くした長さです。

　しかし、あまり見にくい表記は間違いのもとですから、避けた方がいいでしょう。なお、音長が０以下になるような指定をするとエラーになります。

＃

　次にコマンドを、以下に列記していきます。

　なお、エフェクト制御に関するコマンドは、EFFECT.DOCの方に記載されていますので

そちらの方をご覧下さい。

=====================================================================

＃  ［　～　］ｎ  カッコ内を繰り返し演奏する

   (n:0~255)

----------------------------------------------------------------------

　いわゆるループです。ループ数は後側のカッコの後に数字で指定して下さい。ネスティング（多重ループ）は１６重まで可能です。

 例）

[ cde ]3   カッコ内を３回演奏します。つまりcdecdecdeと同じです。

　また、ループ内に：（コロン）を入れることによって、ループアウトを指定することが出来ます。これは、ループの最後の１回をその場で抜け出すもので、楽譜表記の　「１「２　を演奏させたい時などに使えます。

 例）

[ cd:ef ]3fa   これは cdef cdef cdfa と演奏します。

======================================================================

＃  Ｓ  簡易コール先頭宣言

    Ｔ  簡易コールのリターン（コール中でなければ無視）

    Ｕ  簡易コール

----------------------------------------------------------------------

　３つのコマンドでチャンネル内簡易コールを行います。Ｕコマンドにより、ＳとＴの間を演奏させることができます。ＳとＴは、Ｕの前になければなりません。

 例）

 S cdef T g4g4 U

 これは、 cdef g4g4 cdef と演奏します。

　ループとのからみに注意して下さい。ＳとＴの間でループを使うことは構いませんが、ＳとＴをループの内外にわけないようにしてください。また、Ｓ～Ｔ間でループを使って、16重ループの中でＵコマンドを使ってもエラーとなります。

 誤例）

 S [cdef T g]2 ......

======================================================================

＃  Ｌ  曲の再スタートを宣言する

----------------------------------------------------------------------

　最後まで演奏した後に、Ｌがあるところから再スタートするようになります。Ｌがない場合はそのまま演奏を終了します。

======================================================================

＃  ＆  前後の音をつなげる

----------------------------------------------------------------------

　前後の音をつなげます（タイ、スラー）。具体的にはキーオフ、キーオンを行わずに次の音に移行します。

　このコマンドは、音符の直後に入れなくてはなりません。

 例）

  a4&b4    前後の音をつなぎます

  a4)&b4   これは、音符の直後にないのでエラーです。

  a4&)b4   これはｏｋです。

======================================================================

＃  ｌｎ  基本長を変更する

   (nは音符と同じ単位)

----------------------------------------------------------------------

　音符・休符の後の音長指定を省略した場合、このｌコマンドで設定しておいた値が音長になります。初期値は４（４分音符）です。

　音符・休符の音長指定と同じく、符点をつけたり ^ や - で長さの加減ができますが長すぎると（ステップが２５５を越えると）エラーになりますので、ｌコマンドでの指定は全音符以下の音長にしておくのが無難です。

 例）

l8 ccc     これはc8c8c8と同じ演奏になります。

======================================================================

＃  ＠ｎ  音色を変更する

   (n:0~255)

----------------------------------------------------------------------

  音色をｎ番に変更します。新音色はＶパートで定義されていなければなりません。音色変更の時に、音色データ内でエンベロープが設定してあればエンベロープ変更もあわせて行います。

　演奏開始時の初期値は０に設定されています。

======================================================================

＃  ｖｎ  音量を変更する

   (n:0~135)

＃  )ｎ  音量を上げる

＃  (ｎ  音量を下げる

   (n:1~127,省略時は１)

----------------------------------------------------------------------

　音量を変更します。数値が大きい程、音は大きくなります。初期値は111です。v=135の時、最大で15ﾋﾞｯﾄの出力があります。オーバーフローの判定は行っていませんので、注意して下さい。だいたいv=100~130あたりで使うのがいいかと思われます。

 例）

   v120    音量を１２０に設定します。

   )       音量を１上げます。

   (3      音量を３下げます。

======================================================================

＃  ＿ｖｎ  以後のｖ指定をｎだけ変化させる

   (n:-127~127)

----------------------------------------------------------------------

　この命令があると、そのチャンネルのそれ以降のｖ命令は、全てｎを加えた値になります。主な使用目的は、曲が完成してから全体の音量を調節することです。ＭＭＬの最初に、

? _v2

　と入れれば、その曲全体の音量が２上がります。ただし、この指定によって135を越えるようなｖがあればエラーが出ます。

======================================================================

＃  ｏｎ  オクターブを指定する

   (n:1~8)

＃  ＞  オクターブを１上げる

＃  ＜  オクターブを１下げる

----------------------------------------------------------------------

　　オクターブを指定します。初期値は４です。

======================================================================

＃  Ｏｎ  オクターブの負方向へのずれを指定する

   (n:0~4)

----------------------------------------------------------------------

　ＦＰＤはVer1.0発表当時、オクターブ１～８までしか考慮されていなかったのですが、これだけの範囲だと不都合が生じてくることがあります。ここでこのコマンドが設定されました。

　　そのチャンネルの演奏をｎオクターブだけ下げます。転調コマンドと似たような使い方がなされますが、Ｏコマンドは音程テーブルに依存していないので、オクターブ0や-1にまで食い込むことが出来ます。

======================================================================

＃  ｐｎ  パンポットを指定する

   (n:-127~127)

＃  ｛ｎ  パンを左にずらす

＃  ｝ｎ  パンを右にずらす

   (n:1~127,省略時は１)

----------------------------------------------------------------------

　パンポットを設定します。数値は、０が中央で小さくなるほど左より、大きくなれば右よりになります。パンが音量と同じ値だけ寄った時、反対側から音が鳴らなくなります。

　なお、パンポットをかけるとほんの少し処理が重くなりますので、どっちでもいいようなチャンネルでは、ｐ０（中央）のまま使うことをお薦めします。

　初期値は０です。

 例）

    p4     パンを４に設定します。この時は音がやや右よりになります。具体的には右の音量が＋４、左の音量が－４になります。

    }2     パンを２だけ右にずらします。

    {      パンを１だけ左にずらします。

======================================================================

＃  ＿ｎ    転調を指定する

   (n:-95～95)

＃  ＿＿ｎ  転調の指定をずらす

   (n:-24～24)

----------------------------------------------------------------------

　転調命令です。＿ｎは即値、＿＿ｎは相対転調です。

　ｎの値は１が半音に相当します。例えば＿３と指定すれば、ｃの音がｅ－、ｄの音がｆ・・・というように転調します。転調はドライバが処理しますので、ループの中に使ったりすることも可能です。

 例）

 _4        転調値を４に設定します。

 [c__1]12 転調値を１づつずらしながら、12回ループします。これはcc+dd+eff+gg+aa+b と同じ演奏になります。

======================================================================

＃  ｔｎ  テンポを変更する

   (n:6~255)

----------------------------------------------------------------------

　テンポ（演奏速度）を再設定します。なお、このコマンドはドライバ仕様の都合により、Ａパートのみで有効です。他のパートでは無視されます。

 例）

  t120     テンポ120にします。これは１分間に４分音符が120回のペースです。

======================================================================

＃  Ｄｎ  デチューン（ピッチベンド）の設定

   (n:-127~+127)

----------------------------------------------------------------------

　ピッチベンドを設定し、演奏時に微妙に音程をずらす働きがあります。数値は正の方向が高音側で、負の方向が低音側になります。０に設定すると、音程　はずれなくなります。初期値は０です。

======================================================================

＃  ｑｎ１，ｎ２  ゲートタイムの設定（減算式）

   (n1:0~255,n2:1~255 n2は省略時に１)

----------------------------------------------------------------------

　音の切り方を指定します。音を、後ろからｎ１ステップのところでキーオフします。

 例）

　n1=0(def.)の時、c8d8と演奏させると、

　＋--------------------＋--------------------＋----->時間の経過

　↑　　　　　　　　　　↑　　　　　　　　　　↑

　ここでｃの音の　　　ここでｃのキーオフ、　ここでｄの

　キーオン　　　　　　同時にｄのキーオン　　キーオフ

  n1=2の時、c8d8と演奏させると、

    ＋------------------＋＋------------------＋＋----->時間の経過

    ↑　　　　  　　　　↑↑　　　　　　　　　↑↑

  ここでｃの　    　　　｜ここでｄの　　　　　｜次の音

  キーオン　　　　　　　｜キーオン。　　　　　｜

　　　　　　　　　規定時間の　　　　　　ここでｄの

　　　　　　　　　やや手前で　　　　　　キーオフ

　　　　　　　　　キーオフ。

　つまり、ゲートタイムを設定すると、音と音の間があくようになって、音の歯切れがよくなります。n1が大きくなるほど間隔は広くなります。

　n2はn1とは逆に、「前から最低これだけのステップはキーオンしておく」という数値です。n2はn1に優先します。n2の設定は省略しても構いません。

======================================================================

＃  Ｑｎ  ゲートタイムの設定（乗算式）

   (n:1~32)

----------------------------------------------------------------------

　音の切り方を指定します。上のｑによるゲートタイム設定は「後ろから指定値だけ引く」方法でキーオフのタイミングを決定しましたが、こちらのＱによる設定は、「長さにn/32を掛けた値」のところでキーオフします。

　ｎの初期値は32です。また、２種類のゲートタイムを同時に使うことも可能で、その場合は、こちらを先に計算します。

======================================================================

＃  Ｍｈ，ｓ，ｄ，ｖ  ビブラートをかける。

   (h:1~255,s:1~255,d:0~255,v:+32767~-32767)

    Ｍ０  ビブラートをオフにする。

----------------------------------------------------------------------

　ビブラート（周波数に対するゆさぶり）をかけるようにします。

　各数値の意味を説明します。

h   振幅を表します。具体的には後述の「ｖ」での移動が何回あれば反対　　　向きになるか、ということです。

s   何ステップに一回の処理を行うか、を表します。

d   ディレイを表します。キーオンからｄステップの間は、ビブラートは　　　かかりません。

v   一回の処理での移動量を表します。また、正負の指定で最初の移動方　　　向を表します。

この命令は、タイで繋いでかけることは出来ません。発行された次のキーオンから有効になります。

======================================================================

＃  Ｐｈ，ｌ  ポルタメントＬＦＯの設定

   (h:-95~95,l:1~255)

    Ｐ０  ポルタメントＬＦＯの解除

----------------------------------------------------------------------

　ポルタメントＬＦＯを設定します。この命令を使用すれば「音と音をなめらかに繋ぐことができます。hは、移動量と向きで、1が半音を表します。正なら上、負なら下方向になります。lは移動にかける長さで、音符と同じ単位になります。

　この命令は「どのくらいの時間をかけてどのくらい移動するか」を設定するだけのものです。音符やその後の解除は発行しないので注意して下さい。

 例）

 c4&P7,4c4&P0g2

  これは、ｃ（ド）を４分音符発音して、その後４分音符だけかけてなめらかにｇ（ソ）まで移動、そしてｇを２分音符発音します。ｃから半音７つ上に上げるとｇになるので、Ｐの第一パラメータは７になります。また、使用後はすぐにオフにして下さい。

　「４分音符」で移動すると指定したのに、４分音符を越えた発音を行なうと、通常のビブラートと同じく逆方向に揺れます。これをうまく使うことも考えられないではありません。

======================================================================

＃  Ｉｈ，ｓ，ｄ，ｖ	第３ビブラートをかける

   (h:1~255,s:1~255,d:0~255,v:+32767~-32767)

＃  I０  第３ビブラートをオフにする

----------------------------------------------------------------------

　第３ビブラートを指定します。文法は第１ビブラート（Ｍコマンド）と全く同じですので、そちらを参照して下さい。

======================================================================

＃  Ｅ  エンベロープ形状を設定する。

   （文法は下欄で説明）

----------------------------------------------------------------------

　エンベロープ設定命令です。

　エンベロープとは、時間による音量の変化です。指定はかなりややこしくなっていますので、よくわからない方はとりあえずこの命令はパスして下さい。ＭＭＬに慣れていないうちは、このコマンドは使わなくてもそう不自由は感じないはずです。

　まず、基本文法は、

      E AL,AR,DR,SL,DRB,SLB,SR,RR,TL,MR

　として、Ｅの後に10個の数字を並べます。この数字によってエンベロープ形状が決まります。このうち、AR,DR,SL,SR,RR の５つはＦＭ音源等で使われていた意味と全く同じです。その５つを含めて１つずつ解説します。

  AL (Attack Level)  0~127

　音が鳴り始める時の、最初の音量です。ＦＭ音源では常に０でしたが、このドライバで０から上げていくと、立ち上がりがやたら遅く感じてしまうのでこの数値をつけました。音の立ち上がりをゆっくりにしたい時は７０～９０ぐらいに設定して下さい。

　なお、AL=127とした場合、アタック部は無視されます。この時は次のＡＲの

値は全く意味を持ちません。

  AR (Attack Rate)   0~95

  音が鳴り始めてから、音量が頂点に達するまでのスピードです。95が最速で	すが、このドライバのエンベロープはあまり移行速度が高くないので、ARはだ

いたい95か、遅くても92~93あたりで使った方がいいと思います。頂点は通常127になりますが、後述のTLを設定した場合、その数値が頂点になります。

  DR (Decay Rate 1)  0~95

  SL (Sustain Level 1)  -127~127

　これもＦＭ音源のDR,SLと全く同じです。音量が頂点に達してからの減衰量をSL,その減衰速度をDRで指定します。この数値を負にする場合、TLを127+SLの値に設定してアタックを制限する必要があります。例えばSL=-4の時はTL=123以下でなくてはなりません。

  DRB (Decay Rate 2)    0~95

  SLB (Sustain Level 2) -127~+127

　この２つはＦＰＤ特有の指定です。これはDR,SLがもう一組あると思って下さい。SLBを負に設定した場合、一度減衰した音が再び上向きになります。　また、SLB=0とした場合は、エンベロープ処理はＳＲ部に移行せずに、キーオまでそのまま（平行移動）になります。

  SR (Sustain Rate )    0~95

  上の３段階の移行が終わった後、音量は０に向かって減衰していきますが、	そのスピードを指定します。SR=0としても平行にはなりません。

  RR (Release Rate)     0~95

  キーオフしてからの減衰のスピードです。注意点として、音符→コマンド→休符の順に並んでいた場合、減衰音はコマンドの箇所で消えてしまい、次の休符までいかないという仕様があります。何とか音符→休符→コマンドと並ぶようにしてください。

  TL (Total Level)      0~127

  これは、アタック部が終了する音量で、今までＡコマンドで指定していた数値と同じ意味です。通常「アタックは音量が127になるまで続く」という仕様ですが、TLを指定すれば、その音量になった時点でアタック部は終了し次の部分（ディケイ部）に移行します。この数値は、次のディケイ部で更に音量を上げたい場合に指定します。いわゆる２段アタックのような感じが表現出来ます。

  MR (Moving Rate)      0~12

  DR,DRB,SRによる移動時間を、長くします。MR=0の場合は、今までと同じですが、MR=1なら今までの２倍、MR=2なら今までの４倍・・・というふうに移動時間が長くなっていきます。また、今まではSLB=0の時には音は延び続けましたが、MR>0の場合はDRBとSLBが共に0でないと延びつづけないので、注意して下さい。本来なら、DR,DRB,SRの指定範囲と単位を変えれば解決するのですが、互換の問題を考えて、このような方式になりました。文法的には少々みにくい部分がありますが、御容赦下さい。

  なお、AR,DR,DRB,SR,RRの＊＊レートとつくものは、数値が大きいほど移行は速くなります。(いずれも最大値が95でこの時が最速になります）

  TL,MRは、Ver2.1で追加されたパラメータです。音色ファイル内にはこの２つのパラメータは登録されていません。＠命令で音色を変更した場合、この２つは初期化されます。(TL=127,MR=0)

 例）

 E127,95,80,4,40,2,20,85,127,0

 E110,93,40,2,1,0,0,85,127,0

これは２つとも、すべての数値を設定する例です。

  どの数値も、省略が可能です。省略すればその数値は変更しません。また数字を10つ並べずに、途中で終わることも可能です。

 例）

E127,,,,0,,70  AL=127,SLB=0,RR=70 に設定、それ以外は変更せず。

E110,20        AL=110,AR=20 に設定します。

  途中から数値設定を行うこともできます。

 例）

EDR40,4    DR=40,SL=4 に設定します。

ESR0       SR=0 に設定します。

======================================================================

＃  ＥＮｎ  音色別エンベロープ形状番号を指定

   (n:0~3,省略時はデフォルトを意味)

----------------------------------------------------------------------

  このドライバでは、音色データ毎に最高４種類のエンベロープが設定してあります。この命令によって、エンベロープのうちどれかを選んで設定することが出来ます。完全に思い通りの形状はなくても、上のＥ命令よりははるかに簡単に使えます。

  なお、音色によっては２～３種類しか準備していないことがあります。未設定の番号が指定された時は、エンベロープの変更を行いません。

  ｎを省略した場合は、０～３のうち、デフォルト番号（音色変更の時に選ばれる）を指定したことになります。

======================================================================

＃  Ｆmode,iv,l1,v1,l2,v2,･･,ln,vn,･･　（l8,v8まで指定可能）　音量推移を設定

   (mode:1~3,iv:-63~63,ln:音長指定と同じ,vn:-63~+63)

＃  Ｆ０	音量推移を停止

----------------------------------------------------------------------

　音量推移を設定します。

　これは、１つの音符内で音量を上下するための命令で、エンベロープの類似機能と解釈して貰えればいいと思います。ただ、こちらは情感を表現しやすいように作ってあります。

　命令の基本的な考え方は「ｎ分音符だけの時間をかけて音量をｖ上げ（下げ）る」という制御を連続（最大８個まで）して設定します。ポルタメントの音量版とも言えるかも知れません。

　各パラメータの意味を説明します。

mode:推移モードの設定

　・mode=1なら次の１音だけに推移がかかります。この場合はその１音がキーオフした時点で自動的に推移命令は無効になります。

　・mode=2ならキーオン毎に同じ推移パターンがかかります。この場合は、推移命令を止める時にF0で止める必要があります。

　・mode=3ならキーオフ、キーオンを無視して推移を継続します。指定された音量推移が終了すれば、次のキーオンから推移命令が無効になります。

iv:初期音量（上向きが正）

　　エンベロープと正負が逆なので注意して下さい。

ln,vn:ｎ番目の音長,移動音量

　この２つは「ｌ分音符の長さでｖだけ音量を上げる」という意味です。２つペアで１つの制御になります。（最大８回の制御が出来ます）

　lnは、音長です。音符単位で指定します。符点なども使用出来ます。vnは、lnで指定した音長間に増加する音量です。マイナスにすれば音量は減少します。

　例を示します。

　　F1,-3,2,-2,4,0,2,2

　　　　　~~~~ ~~~ ~~~

次の１音だけへの指定です。通常音量より３小さい状態でキーオンし、その後２分音符の時間をかけて音量が２下がります。その後４分音符の間音量は変化せず、その後２分音符の時間をかけて音量が２上がります。

波線でまとめてあるのが、１回の制御です。この場合は３回の制御を行なっていますが、これが最大８回まで指定出来るわけです。なお、発音中にこのコマンドによる制御が終った場合は、キーオフまでそのままの音量が続きます。

======================================================================

＃  Ａｎ  エンベロープのアタック調整

   (n:32~127)

----------------------------------------------------------------------

  エンベロープのアタック部は、通常は127まで上昇しますが、このコマンドでその上限を指定することができます。ALよりも低い数値を指定した場合は、こちらが優先となります。

  このコマンドでアタックを抑えておけば、ディケイ部で更に音量を上げることが可能です。２段アタックのような感覚で使えば便利なこともあります。

  このコマンドは、ETLとほぼ同じ意味になります。互換の問題上残しましたが、なるべくETLの方を使って頂けるよう、お願いします。

======================================================================

＃  Ｈｎ  アタック省略フラグの設定

   (n:0~1)

----------------------------------------------------------------------

　FPDで用意するＰＣＭファイルは、「アタック部＋ループ部」という構成になっていますが、曲調によってはアタックを発声せずに、ループ部の音のみを使用したい場合があります。

  このコマンドでn=1を指定すればアタックを発声せずにループ部のみを発声します。この場合プチノイズが鳴りやすくなるので、エンベロープのALを多少低めにして使って下さい。n=0と指定すればアタックを発声するようになります。

======================================================================

＃  ％ｎ  演奏スイッチの切り替え

   (n:0~1)

----------------------------------------------------------------------

  演奏スイッチの指定／切り替えを行います。

  通常は%0に設定されていますが、%1を指定すると、そのパートではそれ以降「音符」「休符」のコンパイルをスキップするようになります。%0を見つけた時点で元の設定に戻ります。また、ｎの指定を省略すると、切り替えを意味します。

  曲の開発途中に「曲を途中から鳴らしたい」ことはよくある話ですが、このコマンドは、そういう時に途中の演奏をスキップさせることが出来ます。

======================================================================

＃  ／＊  パート別注釈文開始

＃  ＊／  パート別注釈文の終了

----------------------------------------------------------------------

  これは、Ｃ言語の注釈文と全く同じで、パート別に作動します。

  /* と */ に挟まれた部分を注釈とみなします。注釈文中に改行があっても、*/ を見つけるまで注釈が続きます。 */ が最後まで見つからなければ、そのパートはそこで打ち切りますので、 /* だけを使えば、「そのパートのコンパイルを終了」という使い方も出来ます。

======================================================================

＃  ｗ  他チャンネルからの同期信号を待つ

＃  ｓ  他チャンネルに同期信号を送る

   （ｓのチャンネル指定方法は下欄で説明）

----------------------------------------------------------------------

  ｗコマンドとｓコマンドは、対にして使われます。

  まず、あるパートでｗコマンドがあると、その時点でそのパートの演奏を一時停止します。そして、他のチャンネルからｓコマンドによって合図が送られて来たなら、演奏を再開します。この機能の主な使いみちですが、例えば

A  l8 [a>a<]4 [d>d<]4 [g>g<]4 [c>c<]4 [f>f<]4 ......

B     [r1]4                           a4b8>c8c4<a8>c8....

  のような演奏をさせたいとします。これは、Ａパートが [f>f<]4 を演奏すると同時に、Ｂパートの a4b8>... を演奏させたい表記ですが、この時にＡパートの演奏が[f>f<]4 の箇所に進むまで、Ｂパートは休符を入れて待たなければなりません。この例では[r1]4 ですんでいますが、長い曲になると入れる休符の長さをかぞえるだけで面倒になってきます。

  そこで、この同期コマンドが有効になってきます。

A  l8 [a>a<]4 [d>d<]4 [g>g<]4 [c>c<]4 sB [f>f<]4 ......

B  w                                     a4b8>c8.......

  これで、上と同じ演奏になります。

  Ｂパートはｗコマンドがありますので、最初に同期待ち状態になります。Ａパートの演奏が進むと sB により同期信号がＡパートからＢパートに送られ、Ｂパートは演奏を再開します。

  ｓコマンドの文法を説明します。

 凡例)

 1) sA         従来通り、Aパートに信号を送ります。

 2) s0A        上と全く同じ意味です。

 3) s2C        2Cパートに信号を送ります。

 4) s?         A~Pパートに信号を送ります。

 5) s2?        2A~2Pパートに信号を送ります。

 6) s"1G2AF"   1G,2A,Fパートに信号を送ります。

  1.は、直後にパート名をつけて、任意の１チャンネルに信号を送ります。パート名は大文字でも小文字でも同じ意味になります。（sAとsaは同じ）

　信号を複数のパートに送りたい場合は4.以降の表記が便利です。

　誤った使い方の例を説明します。

 例１）

A  sB a4a4 ....

B  c4 w .....

  これは、ｗコマンドがｓコマンドより後ろに使われているのでエラーになります。ｗコマンドは、必ず対応するｓコマンドの前に使用して下さい。

 例２）

A  [a4a4 sB ]3 ....

B  f1 w ....

  この例のように、ループ内にｓコマンドを使うことは出来ません。ｗも同様です。

 例３）

A  ......

B  w .....

  ｗコマンドには必ず対応するｓコマンドが必要です。なければエラーとなります。逆に、ｓコマンドに対応するｗコマンドがない場合はエラーにはなりません。

  他に、ｗでの待ち時間があまりに長いと処理しきれずにエラーがでます。

======================================================================

＃  ｎｎ  音程を数値で指定する（ｎｎは１つめがコマンド、２つめが数値ということです）

   (n:0~95)

----------------------------------------------------------------------

  音程は通常、ａ～ｇとオクターブ系コマンドで指定しますが、ｎコマンドで直接指定することもできます。

  n0 なら o1c, n1ならo1c+ ････ n95 なら o8b　という対応になっています。音長を指定する場合は、, で区切って指定して下さい。

 例）

 n48,4     o4c4 と同じ意味です

 n52       o4e　と同じ意味です

======================================================================

＃  Ｋｎ  鍵盤演奏時に使用する鍵盤を指定する

   (n:0~16)

----------------------------------------------------------------------

  この命令は、演奏には全く関係がありません。

  FVIEWでの鍵盤演奏を行なう時に、この命令があると、以後そのチャンネルは指定された鍵盤を使用（つまり赤丸を表示）します。n=0なら一番上の鍵盤で、n=16で一番下の鍵盤を使用することになります。

  演奏中に変更することも可能ですが、変更は必ずキーオフ中に行なうようにして下さい。

======================================================================

＃  Ｎ  鍵盤演奏時に鍵盤右に表示される文字を設定する

----------------------------------------------------------------------

  FVIEWでの鍵盤演奏時に、鍵盤右のメモ欄に表示するメッセージを設定します。Ｎの後に続けて文字列を表記、"または改行でエンドマークとします。

  何段目のメモを設定するかは、Ｋで指定された鍵盤番号に依るので、この命令はＫ命令の後に使われる必要があり、また必ず「最初の休符または音符の前」に使用して下さい。１ステップでも演奏が行われた後は、設定しても表示されません。

  複数チャンネルで１つの鍵盤を使用する時は、どれか１つのチャンネルでメモを設定すれば事足ります。また、メモは半角17文字までしか表示できません。

======================================================================

＃  ＃ｎ  各チャンネルのエフェクトグループを指定する

   (n:0~1)

----------------------------------------------------------------------

　そのチャンネルがどのエフェクトグループ（０番と１番がある）に属するかを指定します。曲の途中での変更も可能です。

　FPDのエフェクタ系は、処理速度の関係上、チャンネル毎に違った設定をすることはできません。しかし、全チャンネル同じエフェクトをかけるのも何かと不都合が生じますので、２種類のかけ方が出来るようにしました。全てのエフェクト系命令は、対象エフェクトグループを指定するようになっています。

　初期値は０です。

======================================================================

＃  ＃Ｒ l1，l2，ｄ，ｓ  リバーブを設定する

   (l1:0~255,l2:0~255,d:0~255,s:0~1)

    ＃Ｒ０  リバーブをオフにする

----------------------------------------------------------------------

　リバーブを設定します。

　この命令を実行すると，演奏速度がやや落ちます（だいたい１チャンネル分ぐらい）．ＦＰＤ９５では，演奏設定で「エフェクトレベル」を設定しますが，リバーブはエフェクトレベル１以上で演奏した時にかかるようになります．

　この命令は、どのチャンネルで実行しても同じ結果になります。ただし現時点では、演奏中の変更は出来ません。曲の最初（ステップ０の時）に指定して下さい。

　各数値の意味を説明します。

l1  ディレイバッファからの出力を原信号に加算する時のレベルです。単位は、l1/256 になっています。この数値が大きくなると、エコーのかかり方が大きくなります．

l2  ディレイバッファの出力を再びディレイバッファに入れる時のレベルです。（いわゆるフィードバックレベル）単位は l2/256 です。この数値が大きくなると、リバーブ効果が長く続くようになります。

ｄ  遅延時間です。単位は d/1380 秒です。

ｓ  対象エフェクトグループを指定します。また、２を指定すると両方のグループにリバーブをかけます。

（アルゴリズム図）

　　　　　　　　　�ｮ�｢�｢�｢�｢�｢�｢�｢�｢�｢�｢�｢�｢�｢�｢�｢�｢�｢�｢�ｲ

　　　　　　　　　�､　　　　　　　　　　　　　　　　　　�､

　　　　　　　　　�､　　�ｮ�｢�｢�｢（ｌ２）�｢�｢�｢�ｲ　　　　�､

　　　　　　　　　�､　　�､　　　　　　　　　　�､　　　　�､

　　　　　　　　　�､　　↓�ｮ�｢�｢�｢�｢�｢�｢�｢�｢�ｲ�､　　　　↓

　　　原信号�｢�｢�｢�ﾖ�｢�｢�｢�ﾆディレイバッファ�ｾ�ﾖ（ｌ１）�｢�｢�｢→出力

　　　　　　　　　　　　　�ｶ�｢�｢�｢�｢�｢�｢�｢�｢�ｺ

　　　　　　　　　　　　　 ←�｢�｢（ｄ）�｢�｢→

 例）

A #R100,160,250,1

CDE #1

　このように曲の最初にあれば、C,D,E の３チャンネルにリバーブがかかります。

======================================================================

＃  ＃ＣB,L,AF,Lv,G,S  コーラス・ステレオを設定する。

   (B:0~1,L:,0~1,AF:-1,Lv:0~255,G:0~8,S:0~4)

----------------------------------------------------------------------

　マルチ・エフェクトのうち、コーラスとステレオを設定します。このコマンドは必ず演奏開始前に実行される位置に置いて下さい。

　この命令は，演奏設定の「エフェクトレベル」が２の時に効果があります．

 各パラメータの意味を説明します。

Ｂ  使用バッファ番号です。「エフェクタ」そのものの番号と思っても構いません。

Ｌ　「エフェクトグループ」を指定します。リバーブコマンド #R の最後のパラメータと全く同じ意味です。

AF  現バージョンでは、-1を指定して下さい。系統拡張時の予約です。

LV  エフェクト・レベルです。

Ｇ  「コーラス」による音の厚みを指定します。数値が大きくなれば、音が厚くなっていきますが、処理はそれに比例して重くなっていきます。

Ｓ　ステレオ感の強さです。数値が大きくなればステレオ感は強くなります．これはいくつを指定しても速度は殆ど変わりません。

  バッファに関しては、今は詳しくは説明しません。例えば

A  #C0,1,-1,100,4,1 #C1,1,-1,90,2,2

     ~                ~

　のようにすれば、エフェクタを２回かけることになり、より音が奇麗になります（当然処理は落ちます）．

　なお、処理速度は、Ｇの「音の厚み」の合計に深く関係があります。ですので

A  #C0,1,-1,100,4,1 #C1,1,-1,90,2,2

                ~               ~

A  #C0,1,-1,100,6,2

                ~

　この２つの掛け方では、速度はあまり変わらないわけです。実験では前者の方が音が良くなるようなので、厚みを減らして２つ使うほうがいいようです。

[EOF]


テクニカルマニュアル

　FPD95開発関係者のためこの項目を用意してあります．そのため，目次の方からこの項目へのリンクは張られていません．

1.FMの仕様


FMの仕様

　　［　.FM等のテクニカル・マニュアル  ］

file:	FPDTM1.DOC Ver1.0   (for FPD Ver2.1)

Writer:	MKR (H.Fujii)

　このドキュメントでは、演奏ファイルの仕様を主に説明していきます。作成当時はひたすら作っていたものですが、後から見てみるとなかなかややこしく、構造の説明も判りにくくなる部分は、多々あると思いますが、最後までお付き合い頂ければ幸いです。

　また、演奏データ作成ツールの参考としてFCMP.Cを同梱しておきます。

　以下の点に注意して下さい。

　・ワード、ダブルワードの格納は、全て下位から格納されます。

　・演奏ファイル内でのオフセット・セグメントは、演奏ファイルの先頭を0として書かれています。

　・数値は、特に断りがなければ10進数で、後ろに h があれば16進数とします。ただし、セグメント・オフセットとして書かれている場合は、全て16進数です。

　・音長に類するものは、全てステップ単位です。「～分音符単位」ではないので注意して下さい。

　・演奏データが格納されているセグメント名を MSeg と表記する場合があります。

＃　１．演奏ファイルの構成

　まず、演奏ファイル内に、どういったデータがあるのかを一通り説明します。

　なお、この章での説明は、格納順ではなく、判りやすいと思われる順番で行います。

　・ヘッダ部	識別ＩＤや各情報の格納場所などが入っています。

　・演奏データ部	各チャンネルの、実際の演奏データです。

　・演奏データテーブル	各チャンネルの演奏データが、それぞれどの番地から始まるかを示したテーブルです。

　・音色定義部	「音色番号，ファイル名」が１セットになって、１つのＰＣＭが定義されます。このセットが、使用音色数だけ並んでいます。

　・音色テーブル	上の音色定義部内で、どの音色定義がどこに格納されているかがテーブルになっています。

　・タイトル	曲のタイトルです。

　・鍵盤表示位置	各音色番号に関して、その音を使用している時に鍵盤の表示位置を強制するか、また強制するならどこに表示されるかを指定します。音色は0~255まで使用可能なので、鍵盤表示位置は256バイトで構成されます。

＃　２．ヘッダ部の構成

　演奏ファイルの最初の16バイトは、演奏ファイル全体の必要情報が格納されています。以下に構造を示します。

　　0 ~ 3 :	ヘッダ'FPDM'

  このファイルが、ＦＰＤ用の演奏ファイルであることを示すIDが格納されています。文字列 FPDM が最初の４バイトにあればＦＰＤはそのファイルを演奏ファイルとみなします。

　　4     :	初期基本長

  ｌコマンドで設定する「基本長」の初期値が格納されます。

　　5 ~ 6 :	初期演奏速度

  テンポを、１ステップあたりの時間に換算した、演奏速度値が格納されます。時間の単位は「n/2760秒」です。１ステップが何分音符であるかは、ＭＭＬ中の「全音符の長さ」によってのみ知ることが可能ですが、演奏ファイル中にそのデータはありません。従って演奏ファイルだけでは、演奏速度をテンポ値に換算するのは、不可能ということになります。ステップについては次章で簡単に説明してあります。

　　7 ~ 8 :	音色テーブル開始オフセット

  ＦＰＤの演奏ファイル内には、「どのファイル名のＰＣＭを、　音色番号何番に割り当ててロードするか」という情報が、使用音色数だけ格納されています。ここには、その音色情報の、先頭番地が入ります。また、音色テーブルは、必ず「各チャンネルの開始場所」の直後に置く必要があります。

　　9     :	ＰＣＭ定義数

  ＶパートによるＰＣＭ音色定義が、いくつあるかを示します。

　　A	  :	メモリタイプ

  各チャンネルの開始場所が、どういう単位で格納されているかを示します。

     0ffh = 演奏ファイルの先頭からのオフセットで格納

     80h = 演奏ファイルの先頭からのセグメントで格納

   FCMPで作成された演奏ファイルは0ffhが、MID2FMで作成された演奏ファイルは80hが入っています。（Ver2.05現在）0ffhで示されている場合、演奏ファイルは64kを越えることは出来ません。

　　B ~ C :	タイトル格納オフセット

  曲のタイトルが格納されている場所を示します。タイトルが定義されていない場合は、0ffffhが入ります。

　　D ~ E :	鍵盤表示位置格納オフセット

  ドラム用に、鍵盤表示位置を固定する機能です。ここには、各音色に応じた場所データの格納番地が入ります。場所データがない場合は、0ffffhが入ります。

　　F     :	未使用

  現在では、0ffhを入れておきます。

＃　３．演奏データテーブルの構成

　　+10hからは、各チャンネルの演奏データが格納されている場所が順次格納されます。具体的には次のようになっています。

10h~11h:	Ａチャンネルの演奏データの開始場所

12h~13h:	Ｂチャンネルの演奏データの開始場所

14h~15h:	Ｃチャンネルの演奏データの開始場所

16h~17h:	Ｄチャンネルの演奏データの開始場所

                            ・

                            ・

                            ・

　　このテーブルは、音色テーブル開始番地まで続きます。従って、音色テーブルはこの演奏データテーブルの直後になくてはなりません。

　　開始場所に-1 (=0ffffh) が格納されていた場合、それはデータがないことを表しそのチャンネルは演奏されません。

　　「開始場所」の単位ですが、この単位はメモリタイプ（ヘッダの0Ahに格納）によって異なります。ヘッダ部の説明でも書きましたが、

　　・メモリタイプ=0ffhの場合

　　　この場合は、各チャンネルの開始場所はオフセットを意味します。従って、実際のデータ開始位置は「MSeg:開始場所」となります。この場合、演奏データは64kを越えることは出来ません。FCMP.EXEで作成された演奏データは、このメモリタイプを使用しています。

　　・メモリタイプ=80hの場合

　　　この場合は、各チャンネルの開始場所はセグメントを意味します。従って、実際のデータ開始位置は「MSeg+開始位置:0」となります。この場合、各チャンネルの先頭位置はパラグラフ単位でなくてはなりません。MID2FM.EXEで作成された演奏データは、このメモリタイプを使用しています。

＃　４．音色テーブル・音色定義部の構造

　　１章でも書きましたが、複数の音色定義文が集まったものが音色定義部であり、個々の音色定義文が、それぞれ格納されている位置をテーブルにしたものが音色テーブルです。

　　まず、音色テーブルですが、前章でも説明した通り、このテーブルは演奏データテーブルの直後に置く必要があります。何故なら、音色テーブルの開始位置によって演奏データテーブルの終了位置を示しているからです。

　　具体的な構造は以下の通りです。+0とか+1とか書いてあるのは、ヘッダで指定した音色テーブル開始オフセットからの相対位置です。

+0~+1:	音色定義文0番の格納オフセット

+2~+3:	音色定義文1番の格納オフセット

+4~+5:	音色定義文2番の格納オフセット

                     ・

                     ・

                     ・

（これがＰＣＭ定義数（ヘッダで指定）だけ続く）

　　これらのテーブルは、全てオフセット単位です。従って、音色定義文は、演奏ファイルの開始位置より、64k以内の範囲に置いておく必要があります。

　　次に音色定義文ですが、これは「音色番号，ＰＣＭファイル名，0」というかたまりで表されます。上で「音色定義文0番」「･･･1番」と書いていますが、音色定義文の番号とそこで定義される音色番号は必ずしも一致しないことに注意して下さい。

　　例えば、音色番号３，４，７を定義する場合、

音色定義文0番・・・・音色番号３を定義する

音色定義文1番・・・・音色番号４を定義する

音色定義文2番・・・・音色番号７を定義する

　のようになります。

　　ＰＣＭファイル名は、ＭＭＬ等で記述したものをそのまま転送しているだけです。

　その後の0は、エンドマークです。

　　ＭＭＬとアセンブラ記述で例を説明します。

V 0,03PIANO1

V 54,03ANASTR

V 25,M3GUIT2

　　のようなＭＭＬは、

VoiceTable	dw	offset voice0

              dw	offset voice1

              dw	offset voice2

                     ･

                     ･

              （この間データ不定）

                     ･

                     ･

voice0	db	 0,'03PIANO1',0

voice1	db	54,'03ANASTR',0

voice2	db	25,'M3GUIT2',0

　　というアセンブリ記述になります。

　　データ不定とあるのは、要するに何があってもよいということです。音色テーブル（アセンブラ中のVoiceTable）は演奏データテーブルの直後と決められていますが、音色定義文（アセンブラ中のvoice0~voice2）は64k以内であればどこにあっても構いません。

　　FCMP.EXEで作成された演奏データの場合は、

・音色テーブル

・ＭＭＬで指定した音色定義文

・演奏データ

・コンフィグで指定した音色定義文

　　のように並んでいます。

＃　５．タイトル

　　曲のタイトルです。まず最初の１バイト（つまりヘッダのタイトル格納オフセットで指定された場所）に、「タイトル文字列」が入り、２バイト目からはタイトル文字列が入ります。この文字列には、エンドマークに類するものはついていないので、注意して下さい。

　　また、タイトルは必ずあるとは限りません。タイトルが定義されていないデータでは、ヘッダの「タイトル格納オフセット」に0ffffhが入っています。また、タイトルは先頭から64k以内の場所になくてはなりません。

＃　６．鍵盤表示位置

　　各音色に対して、鍵盤位置の強制を行ないます。これは、主にドラム音色のための機能です。ＭＭＬで、Ｖパートの￥記号によって指定する数値が、この場所に格納されることになります。

　　FVIEWを使用した場合、通常は発音中の音階が光りますが、ドラムなどでは常に固定した場所が光って欲しい場合があります。そのための機能です。「鍵盤表示位置」は256バイトのデータで、以下のようになっています。

       +0: 	音色0番の鍵盤表示位置

       +1: 	音色1番の鍵盤表示位置

       +2: 	音色2番の鍵盤表示位置

       +3: 	音色3番の鍵盤表示位置

       +4: 	音色4番の鍵盤表示位置

                     ・

                     ・

                     ・

    +0ffh:	音色255番の鍵盤表示位置

　　各表示位置は、0~95または0ffhが入ります。0~95の場合、その音色の鍵盤発光位置はその数字に応じた場所に固定されます。

（0=o1c,1=o1c+,･････,95=o8b）0ffhの場合

　固定はされず、その時のキーオン箇所に応じた場所が発光します。（つまり普通の状態です）

　　このデータ（鍵盤表示位置）は、必ずあるとは限りません。ない場合はヘッダの「鍵盤表示位置格納オフセット」には0ffffhが入っています。また、このデータは、先頭から64k以内の場所におく必要があります。

　　このデータに依らず、演奏データ中のコマンドで表示位置を固定することも可能です。MID2FMで作成されたデータでは、コマンドで鍵盤位置を固定していますが、ＭＭＬでは、このコマンドはサポートされていません。

＃　７．演奏データ部の構造

　　要ともいうべき、演奏データの文法を説明していきます。基本的には、ＭＭＬが単純にバイナリデータに変換されたという考えで間違いはありません。

　　演奏データは、ＦＰＤによって１バイトづつ読み込まれ、その内容に従って演奏が進められます。

　　データは、大きく分けて、音符（休符）とコマンドの２種類があります。

　・音符（休符）について・・・

　　下７ビットが00h~5Fhであれば音符、75hであれば休符を表します。音符は、00hがo1c,01hが01c+･･･となっています。

　　また、第７ビットは基本長の採用フラグで、ここが１ならばその音符の長さは、基本長に依ります。つまり音程＋長さが１バイトになります。第７ビットが0ならば、次の１バイトが音長として読み込まれます。この場合は、音程で１バイト、長さで１バイトで合計２バイトになります。

　例）	30h,18h	o5cの音を、18hの時間だけ鳴らします。

       24h,30h	o4cの音を、30hの時間だけ鳴らします。

       0a6h	o4dの音を、基本長で示される時間だけ鳴らします。

       75h,60h	休符を、60hの時間だけ続けます。

       0f5h	休符を、基本長で示される時間だけ鳴らします。

　　ここでいう時間とは、すべてステップ数です。ステップ数については、次章で説明します。

　・コマンドについて・・・

　　音符以外の数値は、一応全てがコマンドとして認識されます。但し現時点では全ての数値が使われているわけではありません。使用されていないコマンドがあった場合動作は保証されないので注意して下さい。これは、演奏データを作成するツール（FCMP.EXEやMID2FM.EXE）の方でしっかり管理する必要があります。

　　また、未定義コマンドに限らず、文法の誤りは全てハングアップに繋がります。演奏データ作成ツールに類するものを作られる方は、エラーチェックをしっかりと行なって下さい。

　　音符以外の数値とは、60h~74h,76h~7fh,0e0h~0f4h,0f6h~0ffが該当します。以下にそれぞれのコマンドの動作を説明していきます。

　　表記は、各コマンドの最初の列に「文法、ＭＭＬ表記、コマンド名」を記載し、次行に各パラメータの意味、その次にコマンドの動作説明が書かれています。ただし、パラメータの意味、コマンドの動作説明は、ＭＭＬと同じ意味のものは省略されていることもあります。また、説明があるものでも、MMLMAN.DOCで説明されていることの補足程度にしか書かれていませんので、詳しくはそちらのドキュメントを参照してください。

　　パラメータは、特に断りがない限りはバイト単位です。

　　60h,n	[	ループ

　　　n=ループ数

ループの開始です。ＭＭＬでは、ループ数は後ろ側（ループを閉じる部分）で

指定していましたが、演奏データでは処理が簡単になることから、前のループ

開始部分で指定します。

ネスティングは、ＭＭＬと同じく16重までです。

　　61h	]n	ループ終了

　　62h	:	ループアウト

　　63h	S	簡易コール先頭宣言

　　64h	T	簡易コールのリターン

　　65h	U	簡易コール

　　66h,n	_n	即値転調

　　67h,n	__n	相対転調

　　68h,n	{n,}n	パンの相対移動

　　　n=移動値	(-127~+127)

パンの相対移動ですが、ＭＭＬでは２種類の命令が演奏データでは１つになっています。パンは、左方向が負となっていますので、}n 命令はnはそのままで68h,n と生成され、{n 命令はnが正負逆転（つまり負になる）され、68h,-nと生成されます。

　　69h	未使用

　　6ah,n	ln	基本長の変更

　　6bh,n	未使用

　　6ch,n	An	エンベロープのトータルレベル設定

エンベロープの第９パラメータを単独で指定する命令です。互換性の関係上、残してあります。

　　6dh,n	vn,Vn	音量変更

　　	ＭＭＬ中のvとVは、全く同じ意味です。

　　6eh,n	)n	音量をn上げる

　　6fh,n	(n	音量をn下げる

ＭＭＬ中でnを省略した場合、演奏データのnには１が格納されます。この２つの命令は、本来１つで十分だったのですが、気が付いた時には手遅れでした。「ｎ下げる」方のｎは正の値が入ります。

　　70h,n	pn	パン指定

　　71h,w	tn	テンポ指定

　　　w（ワード）=演奏速度

演奏速度とテンポは、違うので注意して下さい。両者の関係は、次章で説明します。また、この命令はＡパートでのみ有効なので注意して下さい。他のパートでこの命令を発見しても無視します。

　　72h,n1,n2	qn1,n2	ゲートタイム指定（減算方式）

　　	ＭＭＬでn2を省略した場合は、１が格納されます。

　　73h,n	@n	音色の変更

　　74h	&	タイ・スラー

この命令は、音符の直後にある場合のみ有効です。

　　75h	r	休符（コマンドではありません）

　　76h,h,s,d,v	Mh,s,d,v	ビブラートを指定する

　　76h,0,0	M0	ビブラートをオフにする

　　　h,vはワード

ビブラートコマンドです。数値はＭＭＬからの転送ですが、ｈとｖがワードである点に気をつけて下さい。また、h=0の場合はコマンドはｈまでで打ち切りとなります。

　　77h,n	Dn	デチューン（ピッチベンド）設定

　　78h,････	E･･･	エンベロープ設定

かなりややこしいので、詳しく説明します。

まず、詳しい文法は

　78h,パラメータ開始位置,指定個数,パラメータ１,パラメータ２･･･

となっています。最初の２つの意味を説明します。

　・パラメータ開始位置

これは、ＭＭＬでEAR･･とか、ESL･･･とかいう記述で表される、

パラメータの指定開始位置を意味します。ＭＭＬの文字と演奏データ	の数値は、以下のように対応しています。

　AL(または指定なし)=0, AR=1, DR=2, SL=3

　DRB=4,SLB=5,SR=6,RR=7,TL=8,MR=9

例えば、ＭＭＬ中でEDR･･･とあるものは、演奏データでは78h,2,･･･

となり、「エンベロープをDRから指定」ということになります。

　・指定個数

これは、合計いくつのパラメータを指定するかを示しています。

そして、パラメータ１、パラメータ２･･･と、指定個数分、エンベロープの形状を設定する数値が並ぶことになります。また、パラメータの数値に80hがあれば、該当するパラメータは変更されません。（エンベロープのパラメータは、一番範囲の広いもので-127~+127なので、80hを指定したいという事態は発生しません）

　以下に例を示します。

　  ＭＭＬ記述　　　　→　　演奏データ

              E127	78h,0,1,127

              E100,95,0,4	78h,0,4,100,95,0,4

              EDR32,5,,0,0	78h,5,5,32,5,80h,0,0

              ERR90	78h,7,1,90

　　78h,n	ENn	音色別エンベロープ形状番号を指定

　　　n=10h+番号（n:10h~14h)

各音色には、あらかじめエンベロープが４種類設定されています。この命令はその４種類のうちからエンベロープを選択するものです。ＭＭＬとの対応は以下の通りです。

              EN0→78h,10h

              EN1→78h,11h

              EN2→78h,12h

              EN3→78h,13h

              EN →78h,14h

　　79h	L	再スタート位置の設定

このコマンドの後に音符・休符が全くないデータを作成すると、無限ループに入ってしまうので、注意して下さい。FCMP.EXEではそのようなケースに遭遇した場合にはこのコマンドを消します。

　　7ah,n	mn	ミュートタイムの設定

このコマンドはまず使うことはないので、説明を省略します。制作者も使用したことはないし、MMLMAN.DOCにも説明は記載されていません。

　　7bh,n	#n	エフェクトの系統指定

　　7ch,l1,l2,d,s #Rl1,l2,d,s	全体へのリバーブ

　　7ch,0	　#R0	全体へのリバーブオフ

　　　dはワード

全体リバーブです。これもほぼＭＭＬからの転送ですが、ビブラートと同じように、l1=0の時はコマンドがそこで打ち止めになるので、注意して下さい。

　　7dh	未使用

　　7eh,w	デチューン指定（16ビット）

　　　wはワード

16ビットのデチューン指定です。これはVer2.0で追加されたので、８ビットの方が互換性のために残してあります。なお、ＭＭＬでは現時点(Ver2.1)では、この命令に対応していません。

　　7f,n	On	オクターブの負補正

　　e0h,w,v	Ph,l	ポルタメントＬＦＯの設定

　　e0h,0,0	ポルタメントＬＦＯのオフ

　　　wはワード,vはダブルワード

ポルタメントＬＦＯの設定です。ｗはワード、ｖはダブルワードになります。これもビブラートと同じく、w=0の時にはコマンドがそこで終了します。なお、ＭＭＬ指定のh,lと演奏データのw,vの関係は、次章で説明します。

　　e1h,n	Qn	ゲートタイム設定（乗算方式）

　　e2h,n	Hn	アタック省略フラグの設定

　　e3h,w	ポルタメントＬＦＯのｗのみを宣言する

　　　wはワード

　　e4h,n	e3hで宣言済みのｗとこのnで、ポルタメントＬＦＯを始動コマンドe3h~e5hは、ポルタメントを第２ビブラートとして使用する、MID2FM専用のコマンドです。これらは、上のe0hと機能的に何等かわる所はなく、単に多用した場合のメモリ節約のためのものです。

e3hでは、あらかじめポルタメントのｗを設定しておきます。e4hでは、設定済みのｗとｎ（ｎはポルタメントＬＦＯのｖのBit16~23に相当、他は0で埋める）でＬＦＯを始動させます。次のe5hでＬＦＯを停止します。停止した後も、e3hで宣言したｗは有効で、再びこのe4hコマンドを発行することによってＬＦＯを指定することが出来ます。

　　e5h	ポルタメントＬＦＯを停止する

　　e6h~fbh	未使用

    e7h,mode,v,n1,y1,n2,y2,･･･,0(エンドマーク)  v1はワード,

       Fmode,v,l1,v1,l2,v2,････（l8,v8まで登録可能）　音量推移を指定

    	情感を表現しやすくするためのコマンドです。vは初期音量（増加値）

    	ln,vnは、「所要音長,移行音量（上向きが正）」です。MMLコマンドの

    	lnは音長単位,vnはその音長で変化する音量です。

    	演奏データ内では

mode:制御モード

              0:オフ

              1:次の１音だけにかかる

              2:キーオン毎に同じパターンがかかる

              3:キオーフ,キーオンがあっても推移を継続

v:初期音量

nn:移動回数（＝ステップ数）

yn:１ステップの移動量 ワードで指定,下８ビットは小数単位

　　e8h,h,s,d,v	Ih,s,d,v	第３ビブラートを指定する

　　e8h,0,0	I0	第３ビブラートをオフにする

　　　h,vはワード

第３ビブラートコマンドです。動作は第１ビブラートと全く同じです。

　　fch,n	鍵盤表示位置を指定

　　　n=鍵盤の発光位置(0~95,0ffh)

６章で「鍵盤表示位置」について説明しましたが、同じことをコマンドで行なう機能です。これは音色に対してではなくて、そのチャンネルに対して指定します。MID2FMでは、こちらの方法を使って鍵盤位置を固定しています。

このコマンドは、FPD.COM内では無視されます。完全にFVIEW用のものです。

　　fdh,n,Str	Nstr	鍵盤名を定義

　　　n=Strのバイト数、Str=鍵盤名

鍵盤名の定義です。そのチャンネルで現在指定されている（次のコマンドによる）鍵盤の名前を指定します。これもFPDでは無視され、FVIEWでのみ使用されます。また、Strはタイトルと同様エンドマークは入らないので注意して下さい。

　　feh,n	Kn	使用する鍵盤を指定

　　　n=使用する鍵盤(0~16)

どの鍵盤を使用するかを指定します。

　　ffh	終了・ループ

そのチャンネルの終了を表します。これまでにＬコマンドがあればその地点にループし、なければそのチャンネルは演奏終了します。

　コマンドは以上です。ここに挙がらないＭＭＬコマンドはコンパイラが処理してしまうものです。

＃　８．変換式・単位について

　・ステップと音長について

　　演奏データ内では、音符・休符の長さは、ＭＭＬの「～分音符」方式を

　ステップ方式に変換して使っています。

　　ステップ方式の考え方は、「192分音符が何個分あるか」という単位で音符の長さを表現するものです。アセンブラなどで音符処理を行なう場合は、「～分音符」よりこちらの方が遥かに都合がいいのです。実際には、「192分音符」を１ステップと呼び、「192分音符がｎ個分の長さ」という場合は「ｎステップ」と呼称されます。

　　この場合、例えば４分音符は、192分音符が48個分の長さですので、ステップ方式では「48」の長さとなります。（＝48ステップ）

　　ただ、「１ステップ＝192分音符」と固定してしまっては、５連符などを表現することが出来ません。このような事態に備えて、FCMP.EXEでは１ステップが何分音符かを可変にしてあります。これがＴパートの２つ目の数字です。この説明では「全音符の長さ」となっていましたが、例えば１ステップが192分音符であれば全音符は192ステップとなるので、数値としては同じことになります。

　　で、ｎ分音符をステップ数に変換するには

　　　全音符の長さ／ｎ

　　　~~~~~~~~~~~~~~~~~

　　を計算すればよいことになります。

　　ステップ数を「ｎ分音符」方式に戻すのは、演奏データからは不可能です。何故ならば、演奏データには「全音符の長さ」を記録されていないからです。万一、逆コンバータなどでこのような変換が必要な場合は、とりあえず全音符＝192ステップとして、起動オプションでこの数値を変更出来るようにするしかないでしょう。

　・テンポと演奏速度について

　　ＭＭＬでは、曲の速さを「テンポ」で指定します。テンポとは、１秒間に４分音符が何回鳴るかで曲の速さを表したものです。テンポ値が大きくなれば、曲は速くなっていきます。

　　しかし、演奏データでは、曲の速さを示す単位はテンポではありません。テンポで指定されても、処理がややこしいというのが理由です。

　　演奏データでの「演奏速度」は、「１ステップの時間」として表現されています。

　また、この時間とは「1/2760秒が何回あるか」という単位になっています。

                      ~~~~~~~~~~~~~~~~~~~~

　　テンポを演奏データに変換する理論を説明します。

　　まず、テンポがｎであったとします。この時１分にｎ回の４分音符が鳴ることになります。４分音符は、「全音符の長さ（以下ZLENと表記）／４」ステップですので、「テンポｎの時、１分間に ｎ×ZLEN／４ ステップの速度」ということになります。

　また、演奏データの「1/2760秒」は「1/(2760*60)分」ということなので、

　  演奏データ側の速度値＝　2760*60 / (n*ZLEN/4)

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

　という式が導かれます。

　　なお、演奏データからテンポを算出することは、ZLENの値が演奏データにないため、不可能です。

　・ベンドによる変化率

　　ベンド系の命令（デチューン・ビブラート）では、実際にどの程度音がずれているのか、ということですが、詳しく説明するとＦＰＤの内部アルゴリズムにまで話が及ぶにで、以下の２例だけに留めます。

・ベンド値が1000hなら、丁度１オクターブ上がる。逆に、-800hの時に丁度１オクターブ下がる。

・ベンド値が0f3hなら、丁度半音上がる。逆に、-0e6hの時に、丁度半音下がる。

　　ただし、ここで示したベンド幅は、FPD Ver2.1のベンド命令では表現出来ません。

　あくまでも変化率の目安として見て下さい。

　・ポルタメントの変換式

　　ＭＭＬのPh,lと演奏データの0e0h,w,vの関係式は以下の通りです。

w = ZLEN*2 / l

v = ( 2^(28+h/12)-10000000h ) / ( ZLEN / l )

　　ZLENは、全音符の長さです。ｖを算出する時に、小数を含むぺき乗計算が出て来ますので、Ｃ等の高級言語を使わないと難しいと思います。

　　なお、ポルタメントはFPD.COM内では実はただの第二ビブラート的な処理になっています。w=振幅,v=一回の移動量になっていて、それぞれＭコマンド（ビブラート）のh,vに相当します。（ただしポルタメントのvは単位が異なり、ビブラートのｖを16回左シフトするとポルタメントのｖになります）

　　つまり、ポルタメントは「d=0,s=1に固定のビブラート」という使い方も可能です。

　ＭＭＬではサポートしていませんが、MID2FMはこのコマンドはビブラートとして使用しています。

＃　９．最後に・・・

　　このドキュメントでは、説明を「演奏データの仕様」に留めました。特に第８章は内部アルゴリズムと深く関りのある事項ばかりなのですが、敢えてそこまで踏み込んだ説明は避けました。実際、FCMP.EXE程度のツールであれば、このドキュメントで説明されている事柄だけで作成出来ると思います。

　　内部アルゴリズムを説明しだすと、「何故演奏速度の単位が1/2760秒なのか」「エンベロープの処理」「ベンドが周波数に関与する時の式」など、極めてややこしい事項に話が及びます。

　　要望があれば、そのうち公開するかもしれません。これは秘密主義ではなくて、単にドキュメントを書くのがめんどくさいので、こういう言い方になるわけです。(^^;

　　このドキュメントを読まれて「ここは判りにくい」「こういう情報も必要だ」「ここは間違いではないか」という意見がありましたら、是非お寄せ下さい。

＃　１０．著作権・制作者・サポート

　・このドキュメント及び記載された演奏データの仕様の著作権は、私、藤井秀樹（ＭＫＲ）が保持します。

　・このドキュメントを利用して作成されたアプリケーションについては、自由に配布等を行なって構いません。また、そのアプリケーションについて私が権利を主張することは一切ありません。

　　ただし、このドキュメントを参考に作成したFPD.COMの互換ソフトを無断配布することはなるべく御遠慮下さい。

　・万一このドキュメントの記載が間違っており、それが原因でなんらかの損害が生じても、私にその責任はないものとさせて頂きます。

　・このドキュメントは、ネットにアップして頂いて構いません。ただしアーカイブの中身は変更しないで下さい。また転載の報告は商用ネット以外は不要です。大手商用ネットの場合、２重転載を避ける意味で報告をお願いします。

　・制作者

　　　　　藤井　秀樹　（ＭＫＲ）

　　　　　　　　　　　　　　　　　　暮里研究所	KURE0001

　　　　　　　　　　　　　　　　　　東京ＢＢＳ	FF-MKR

　　　　　　　　　　　　　　　　　　ZOB-Station	zob15065


コンパイル時の出力メッセージ

＃まず，実際にコンパイルした時のメッセージを以下に示します．

（スペースの都合で実際の出力と改行位置が異なっています）

------------------------------------------------------------------

FPD Music Marco Language Compiler.. (Filename)

Set $ Part .... 0 Macro is defined.

Set V part .... 6 Voice setting.

Fin. 0A Part - Step    2880 (      0)

Fin. 0B Part - Step    2884 (      0)

Fin. 0C Part - Step    2880 (      0)

Fin. 0D Part - Step    2880 (      0)

Fin. 0E Part - Step unknown,w is found.

Fin. 0F Part - Step unknown,w is found.

Fin. 0G Part - Step unknown,w is found.

Fin. 0H Part - Step unknown,w is found.

Analyze sync-command ...

Wait 0E Part - Step    2880 (      0)

Wait 0F Part - Step    2880 (      0)

Wait 0G Part - Step    2880 (      0)

Wait 0H Part - Step    2880 (      0)

Compile Completed. Object data is 924 bytes.

------------------------------------------------------------------

  それぞれの意味について，説明していきます．

>FPD Music Marco Language Compiler.. (Filename)

  この行は，オープニングメッセージ+変換ファイル名です．

>Set $ Part .... 0 Macro is defined.

　これは，$ パート，つまりマクロ定義パートの解析結果を表示しています．ここでは，0 Macro is defined. と表示されたので，マクロ定義はないという意味になります．

>Set V part .... 6 Voice setting.

　Vパート＝ＰＣＭファイル定義部のコンパイル結果です．いくつのＰＣＭファイル　が定義されたのかを表示します．ただし，ここで示される数字は，あくまでもＶパートによる設定数で，この他にもコンフィグファイルを参照してＰＣＭファイルの設定をすることがあります．

>Fin. 0A Part - Step    2880 (      0)

      ~~[1]            ~~~~~[2]  ~~~~[3]

　演奏部パート（0A～3Pまで64チャンネル）のコンパイル結果を順次表示します．

 [1]の部分では，終了したパートを表示します．

 [2]は，そのパート全体のステップ数です．

 [3]は，Ｌコマンド（曲の再スタート場所の宣言）以降のステップ数です．Ｌコマンドがない場合は０になります．

　ステップ数は，とくにチャンネル間のずれを発見するのに便利です．

>Fin. 0E Part - Step unknown,w is found.

　また，ステップ数を表示するかわりに，このようなメッセージが出ることもあります．これは，そのパートでｗ（同期信号待ち）コマンドが使われていたため，ステップ数が特定できない時に出てきます．

　このメッセージが出たパートでは，ステップ数が決まった時点で，

>Wait 0E Part - Step    2880 (      0)

　のように表示があります．

>Analyze sync-command ...

  通常コンパイルが終了し，同期コマンドの処理に入る時に表示されます．同期コマンドが使用されていない場合は，このメッセージは表示されません．

>Compile Completed. Object data is 924 bytes.

  コンパイルが完了したメッセージです．オブジェクト（演奏用）ファイルのサイズを表示して終了します．

＃　エラーメッセージについて・・

　ＭＭＬの表記ミス等，何か問題が起こると，エラーメッセージを出してコンパイルを停止します．この時，エラーの種類によっては，処理中のライン番号と文字が出ますが，必ずしもエラーの場所を指しているとは限らないので，参考程度に留めて下さい．また，Analyze config-file... のメッセージの後でエラーが出た場合は，ラインはコンフィグファイル内のラインになります．

　また，マクロ内でエラーが出た場合には，マクロの定義行ではなくて使用行の方でエラーが出ます．エラーが出たラインでマクロを使用している場合には，マクロ定義の方も確認して下さい．

　エラーメッセージと，考えられる主な原因を説明していきます．

0. Out of memory.

　　メモリが足りません．

　　このエラーは，以下のような状況に出ます．

1.  メモリの確保に失敗した

2.  確保したメモリにオブジェクトデータ（生成データ）が入らない

　このコンパイラは，起動時にＭＭＬファイルを格納するメモリと生成データを格納していくメモリとを確保しようとしますが，その時にメモリ不足で確保出来ない場合が１のケースです．

　２は確保したメモリより生成データが大きくなってしまった場合です．現バージョンでは，オブジェクト用バッファを48ｋとっています．

1. File not found.

  コンパイルしようとしたファイルまたはコンフィグファイルが見つかりません．MMLファイルは，必ず .MML の拡張子でなければならず，例えば，FCMP M1.L のように指定してコンパイルしても， M1.MML を探し，見つからなければエラーとなります．

　コンフィグファイルは，指定があればそのファイル（拡張子は.CFGに固定）を，なければ FPD.CFG を読みますが，見つからなければやはりこのエラーが出ます．なお全ての使用音色がＶパートで設定されていれば，コンフィグファイルは必要ないので，読みに行きません．

2. Syntax error.

　文法上の誤りです．主に，解析不能な文字があった場合，必要な数値等がない場合に出ます．特に後者は発見しにくいので，よく見直して下さい．

　このエラーはラインや文字を頼りにすれば，修正は容易かと思います．

3. Illegal function call.

  数値が規定の範囲を越えています．

4. Missing ? Part.

  省略不可能なパートが見つかりません．ただし，現バージョンでは必ず必要なパートはありませんので，このエラーは出ないと思います．

5. Undefined Marco.

　定義されていないマクロが使用されました．

6. Macro name error.

　使用不可能なマクロ名が使われました．マクロに使えるのは，大小英文字と数字１桁の，合計６２文字です．

7. Too many voice names.

　音色定義の数が多すぎます．

　ＦＰＤでは，同時に127個までしか音色をロードできません．従って，１つのＭＭＬ中で127個を越えた指定があればエラーとなります．

8. Out of octave.

　オクターブが１～８の範囲を越えました．このエラーが出るのは o,<,> の３つです．

9. Nesting Macro.

　マクロ中でマクロを使っています．このエラーも，マクロ使用行で出ますので注意して下さい．例えば，

$a  c4c4c4

$b  $ae8g8

A   [$b]2

　このような場合でも，Ａパートの行でエラーが出ます．

10. Too many loops.

　ループのネストが16を越えました．

　17個目の [ を確認した時点でこのエラーが出ます．ループを16重も使うことはまずないとは思いますが，このエラーが出た時はなんとかしてループを減らして下さい．STU の簡易コールを使うのも手です．

　また，簡易コール先でループを使っている場合は，そのネストもカウントされています．例えばS~Tの間で１つループを使っていて，16重ループの中でUを使うとこのエラーが出てしまいます．

11. ] Without [

　ここから13番までは，ループの対応の間違いによるエラーです．

　これは，]が[より多いと出ます．

12. : Without [

　ループ外で:コマンド（ループアウト）が使われました．

13. [ Without ]

  [に対応する] がありません．このエラーはラインや文字は全くあてにならず，発見はかなりやっかいなこともあります．

14. Easy call error.

　簡易コール STU に関する間違いがあります．具体的には，「STがないのに U を使った」「S がないのに Tを使った」「SとTがループの内外にわかれている」などです．

15. & after command,r

　&コマンド（タイ）が休符やコマンドの後ろにあります．タイコマンドは，必ず音符の直後につけて下さい．

16. w must be out of loop

17. s must be out of loop

　同期コマンドがループ中またはS~Tの間にあります．wコマンド，sコマンドは，その性質上，ループの中で使うことはできません．

18. too many w.

19. too many s.

　wまたはsが多すぎます．w,s は，それぞれ全チャンネル合わせて128個までです．

20. Send not found.

　wコマンドがあるのに，それに信号を送るsコマンドがありません．

21. w found after s.

　wコマンドが，対応するsコマンドより後ろにあります．

22. Wait step is too long.

　wコマンドによる待ちステップ数が大きすぎます．ｗコマンドによるウエイトは，現バージョンでは16581375(=255の３乗) までしか対応していません．

23. N without K

　KコマンドがないのにNコマンドが使用されました．

　Nコマンドは，使用中の鍵盤にメモを設定するコマンドなので，使用する鍵盤を指定するKコマンドの後になければなりません．


楽器音色表
楽器音色対応表

音色番号: 波形ファイル名  音色名

ピアノ系

000: 03piano1  アコースティック・ピアノ

001: m3harpsi  ハープシコード

002: m3ep2     エレクトリック・ピアノ

003: m3clav    クラビネット

ベル系

007: m3vibe    ビブラホン１

008: m3marimb  マリンバ

009: m3tblar   ベル

010: 03vibe    ビブラホン２

オルガン系

014: 03organ2  ドローバー・オルガン

015: 03peorg2  ロック・オルガン

016: m3church  チャーチ・オルガン

017: m3organ2  リード・オルガン

018: 03accord  アコーディオン

019: 03harmon  ハーモニカ

ギター系

024: m3guit1   ナイロン・ギター

025: m3guit2   スティール・ギター

026: m3jzguit  ジャズ・ギター

027: m3elguit  クリーン・ギター

028: m3mtguit  ミュート・ギター

029: 03dist    ディストーション・ギター

ベース系

034: m3rnbass  エレクトリック・ベース

035: m3abass   アコースティック・ベース

036: 03slbass  スラップ・ベース

038: m3ftless  フレットレス・ベース

039: m3sbass1  シンセ・ベース１

040: 03tcbass  シンセ・ベース２

ストリングス系

044: 03violin  バイオリン

046: 03strens  シンセ・ストリングス１

047: 03pizzic  バイオリン・ピチカート

048: 03harp    ハープ

049: 03timpan  ティンパニ

アンサンブル系

053: 03str2    シンセ・ストリングス２

054: 03anastr  シンセ・ストリングス３

055: m3str     シンセ・ストリングス４

056: 03choir   コーラス１

057: 03doovox  ボイス１

058: 03schoir  コーラス２

059: 03ohit    オーケストラヒット

ブラス系

063: 03trump1  トランペット

064: m3tr&tp   トロンボーン

065: m3mutetp  ミュート・トランペット

066: 03ftuba   チューバ

067: m3power   シンセブラス１

068: 03brass1  シンセブラス２

069: m3brass1  シンセブラス３

リード系

073: 03sopsax  ソプラノ・サックス

074: 03tensax  テノール・サックス１

075: m3tensax  テノール・サックス２

076: 03oboe    オーボエ

077: m3clari   クラリネット

パイプ系

081: 03hflute  フルート

082: m3dreed   リード

083: m3pflute  パンフルート

084: 03shaku   尺八

085: 03voice   ボイス２

シンセ・リード系

089: 03square  矩形波

090: 03saw     のこぎり波

091: 03pwm     シンセ・リード

シンセ・パッド系

095: 03ether   ベル＆コーラス

096: 03synvox  メタルボイス

シンセ・エフェクト系

100: 03ghost   シンセ・エフェクト

エスニック系

104: 03banjo   バンジョー

105: m3sitar   シタール１

106: 03shami   三味線

107: m3kalimb  カリンバ

パーカッション系

111: m3pole    ポール

112: m3sitar2  シタール２

113: m3vbhit   ウッドブロック１

114: 03taiko   太鼓

115: m3etom    エレクトリック・タム

サウンド・エフェクト系

119: 03fret    フレットノイズ

120: 0369o4g-  ブレスノイズ

121: 03stad    スタジアム

122: 03bird    鳥の鳴き声

123: 03ring    電話のベル

124: 03heli    ヘリコプター

125: m3hnoon2  ガンショット

ドラム系

150: 03d47     タム

151: 03ccym2   クラッシュ・シンバル１

152: 03d35     バスドラム１

153: 03d36     バスドラム２

154: 03d37     サイドスティック

155: m3snare2  スネアドラム１

156: 03d39     ハンドクラップ

157: 03d40     スネアドラム２

158: 03d41     フロア・タム

159: 03d42     クローズド・ハイハット１

160: 03d44     ペダル・ハイハット

161: m3ophh2   オープン・ハイハット１

162: m3asnr    アナログ・スネア

163: m3d21h3   クラッシュ・シンバル２

164: m3ahh     クローズド・ハイハット２

165: m3ride    ライド・シンバル

166: 03d51     チャイニーズ・シンバル

167: 03d53     ライド・ベル

168: 03d54     タンバリン

169: m3ophh1   オープン・ハイハット２

170: 03d56     カウベル

171: m3vibsp   ビブラスラップ

172: 03d60     ボンゴ

173: 03d62     ミュート・コンガ

174: 03d64     コンガ

175: 03d65     ティンバル

176: 03d68     アゴゴ

177: 03d69     カバサ

178: 03d70     マラカス

179: 03d71     ホイッスル（短い）

180: 03d72     ホイッスル（長い）

181: 03d73     グイロ（短い）

182: 03d74     グイロ（長い）

183: 03d75     クラベス

184: 03d76     ウッドブロック２

185: 03d78     ミュート・クイガ

186: 03d79     クイガ

187: 03d80     ミュート・トライアングル

188: 03d81     オープン・トライアングル


操作説明

メインウィンドウは「アルバムリスト」と「ファイルリスト」に区別されています．アルバムを選び、次にその中にあるファイルを選ぶという手順でご利用下さい．

また、FPD95は以下に示すファイル形式に対応しています．

　　*.FM 　　：FPDが使用する演奏ファイル

    *.MID　　：MIDI演奏ファイル(注１)

　　*.WAV　　：Windows標準のウェーブファイル

　　*.MML　　：FPD用音楽ソースファイル(注１)

　　注１：*.MIDと*.MMLは，*.FMに変換後に演奏されます．

メニュー操作

  ファイル

    ﾌｧｲﾙを開く：ファイルリストが表示されているときに有効です．

     　　	：新しく演奏ファイルを追加します．

    演奏中止：曲を演奏しているときにこのメニューが表示されます．

     　　	：演奏中の曲を中止することができます．

     終了	：FPD95を終了させます．

　変換

　　ファイル形式を変換するときに使います．

　　MML->FM

　　MID->FM

    FM->WAV

    RCP->MID

    RCP->FM

　設定

　　各種設定を行なうことができます．

　　演奏状態の設定

　　音色波形データのディレクトリ

    MIDI音源メーカーの種類

　　MIDIファイルからの変換時の設定

　　WAVファイルへの変換時の設定

　ヘルプ

　　目次

    MML初心者向けマニュアル

　　バージョン情報

アルバムリストでの操作

　選択

    アルバムを選択します．

  アルバム作成

    新しいアルバムを作成します．

  アルバム削除

    チェックされているアルバムを削除します．

  アルバム名変更

    アルバムの名前を変更します．

  最新情報

    タイムリーな情報が表示されます．

ファイルリストでの操作

  演奏

    チェックされているファイルを演奏します．

  演奏中止

    メニュー操作で説明したものと同一です．

  追加

　　ファイルリストに追加します．

　削除

　　ファイルリストから削除します．

　全削除

　　ファイルリストを空にします．

共通操作

　ドキュメント

　　演奏データに関するDOCファイルを表示するためのドキュメントビューアーが表れます．

　鍵盤

　　鍵盤を表示します．

　ヘルプ

　　メニュー上にあるヘルプの目次を選択するのと同じです．


MML->FM

  FPD用音楽ソースファイル(*.MML)をFPD用演奏ファイル(*.FM)に変換します．

　FPDは演奏時には，FPD用演奏ファイル(*.FM)を使用します．


MID->FM

　MIDI演奏ファイル(*.MID)をFPD用演奏ファイル(*.FM)に変換します．

　FPDは演奏時には，FPD用演奏ファイル(*.FM)を使用します．


FM->WAV

　FPD用演奏ファイル(*.FM)をWindows標準のウェーブファイル(*.WAV)に変換します．効果音の作成、音楽CDを作成したい場合などにご利用下さい．


演奏状態の設定

　FPD用演奏ファイルを演奏するときのパラメータの設定を行います．

再生レート

　値が大きいほど音が良くなりますが動作は重くなります．限界以上の再生レートを設定した場合は，処理が間に合わないために音飛びが起こります．CPUがi486(50MHz)で11.03KHz，i486(66MHz)で16.54KHz，i486(100MHz)またはPentiumで22.05KHzを目安にして下さい．現在のところ，33.08KHzと44.10KHzでまともに再生できるCPUは存在していません．

エフェクト処理

　「なし」「リバーブのみ」「リバーブ・コーラス」の３種類の中から選択して下さい．コーラスのみの設定は行えません．これらは，演奏ファイル(*.FM)の中で，明示的に書かれていなければ効果はありません．逆に，演奏ファイル(*.FM)内で書かれていても，ここの設定で許可がされていなければ．エフェクトの効果を無視します．エフェクトはかなり処理に時間がかかりますので，音飛びしやすい場合には，ここの設定を変更して下さい．一般にコーラスエフェクトはかなりのCPUパワーを必要とします．

パン制御

　出力をモノラルかステレオのどちらで行なうかの選択ができます．計算機本体内蔵のスピーカーから音を出すときはモノラル，外部スピーカーから音を出すときはステレオに設定するとよいでしょう．また，計算機のPHONE端子からステレオ用イヤホンでお聴きになるときにも，ステレオに設定して下さい．

ループの繰返し

　ループの繰返し回数を設定します．一部の演奏ファイルには，標準の設定では演奏が終了しないでループを繰り返すものがあります．普通は2に設定しますが、曲を次々と変えて聴きたい場合などは1に設定しておくといいでしょう．なお，標準MIDIファイル(*.MID)の曲ではループという概念がありませんので，ここでの設定は意味を持ちません．

フェードアウト

　ループ終了時におけるフェードアウトの速度を決めます．これは，演奏終了間近で音がだんだんと小さくなり始めてから演奏が終了するまでの時間の長さに相当します．ループの繰返しのある演奏ファイルの場合に適用します．ループの繰返しのない曲では意味を持ちません．

プログラム

　「なし」「１つの曲を繰り返し演奏」「連続演奏」「ランダム演奏」の中からお選び下さい．

スクリーンセーバーを起動しない

  スクリーンセーバーが起動される瞬間に、CPUの負荷が一時的に重くなり演奏が中断される場合があります．これを避けたい場合にはここにチェックを入れておいて下さい．


音色波形データのディレクトリ

音色波形データのディレクトリ

　楽器音色波形データ(*.FPV)のあるディレクトリを設定してください．

　例：A:\FPD95\PCMV2


MIDI音源メーカーの種類

  標準添付されている音色波形データは、(株)KORGの音源データです．

現在，Rolandの音源データの音色波形データも暮里研究所(MODEM 0742-22-9131)などに置かれています．これらの波形データを使い分ける場合に，ここの設定を変更して下さい．なお，Rolandの音源データの音色波形データは，FPD95のサポート対象外です．ご質問等にはお答えできない場合もありますので，予めご了承下さい．


MIDIファイルからの変換時の設定

　標準MIDIファイル(拡張子MID)からFPD用演奏ファイル(拡張子FM)へ変換するときのパラメータの設定を行います．

リバーブ

　リバーブ・エフェクトの強さを設定します．リバーブ・エフェクトは音の響きに関係します．0から255の範囲で設定して下さい．初期設定値は90です．

コーラス

　コーラス・エフェクトの強さを設定します．コーラス・エフェクトは音の厚みに関係します．0から255の範囲で設定して下さい．初期設定値は100です．

全音量

　全体の音量を相対的に変更することができます．-15から15の範囲で設定して下さい．大きくすれば，全体の音量が上がります．初期設定値は0です．

ドラム音量

　ドラムパートの音量だけを相対的に変更することができます．-15から15の範囲で設定して下さい．大きくすれば，ドラムパートの音量が上がります．初期設定値は0です．

ファイル保存

　MIDI演奏ファイル(*.MID)を鳴らすときは，一度FPD用演奏ファイル(*.FM)に変換されます．FPD用演奏ファイル(*.FM)を保存しておくと，次回の再生時に(*.FM)を選択できますので，再生開始までの時間が短縮できます．その設定をここで行なうことができます．


WAVファイルへの変換時の設定

　FMファイルからWAVファイルへの変換のときに使われるパラメータの設定を行います．リアルタイムでの演奏ができない機種をお使いの場合には，一度ここで変換しておいてからWAV再生をすることで，きちんと曲を再生することが可能です．

再生レート

　WAVファイルは再生レートに比例してサイズが大きくなります．

　11.03KHzだとやはり音質が悪くなりますので，22.05KHzがファイルサイズの面から考えても一番お薦めできる値です．

エフェクト処理

　「なし」「リバーブのみ」「リバーブ・コーラス」の３種類の中から選択して下さい．コーラスのみの設定は行えません．これらは，演奏ファイル(*.FM)の中で，明示的に書かれていなければ効果はありません．逆に，演奏ファイル(*.FM)内で書かれていても，ここの設定で許可がされていなければ．エフェクトの効果を無視します．WAVファイルに出力する際には、リアルタイム性が要求されませんので、「リバーブ・コーラス」に設定しておけばいいでしょう．

パン制御

　出力をモノラルかステレオのどちらで行なうかの選択ができます．計算機本体内蔵のスピーカーから音を出すときはモノラル，外部スピーカーから音を出すときはステレオに設定するとよいでしょう．また，計算機のPHONE端子からステレオ用イヤホンでお聴きになるときにも，ステレオに設定して下さい．なお，ステレオはモノラルの２倍のファイルサイズとなります．

ループの繰返し

　ループの繰返し回数を設定します．一部の演奏ファイルには，標準の設定では演奏が終了しないでループを繰り返すものがあります．WAVファイルへの出力は、2に設定してもループ部分で同じデータが2回繰り返されるだけなので，たいていは1で十分だと思われます．なお，標準MIDIファイル(*.MID)の曲ではループという概念がありませんので，ここでの設定は意味を持ちません．

フェードアウト

　ループ終了時におけるフェードアウトの速度を決めます．これは，演奏終了間近で音がだんだんと小さくなり始めてから演奏が終了するまでの時間の長さに相当します．ループのある演奏ファイルでループの繰返し回数を設定している場合に効いてきます．ループが設定されていない曲では意味を持ちません．

サンプリングビット数

　8ビットと16ビットの選択が可能です．16ビットでは8ビットの2倍のファイルサイズになります．FPD95では8ビットでもボリューム調整を行いますので、それなりに良い音質が得られます．そのため8ビットに設定しておけば十分でしょう．

注意

  音楽CDを作成する際には、44.10KHz、ステレオ、サンプリングビット数16に設定して下さい．