************************************************************************** HE386 ver.3.02 取扱説明書 **************************************************************************  HE386 はテキストファイルとして作成したMML (Music Macro Language)からス タンダードMIDIファイル形式の音楽演奏データを生成するツールです。 ※  本説明ファイルは全プラットホーム(TownsOS 版、Linux 版、Windows NT/ 95/98 コンソール版)共通になっています。 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= §1-1 HE386 の特徴 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= ・スタンダードMIDIファイルを作成  HE386 はテキストファイルして作成されたデータファイルから,スタンダード MIDIファイル形式の演奏データファイルを作成します。  MIDIがサポートする演奏情報をきめ細かく指定することができます。4分音符 の分解能は 48〜9600 まで対応しています。 ・トラック数/パート数無制限  トラックやパート,マクロ等,ほとんどの設定はメモリの許すかぎり無制限に使 用できます。 ・あらゆる数値指定に特殊効果をつけることができる  通常の設定を行う「セッタ」,設定値にオフセットを加える「オフセッタ」,局 所的に設定を変更する「ピンセッタ」の3系統の設定コマンドにより,複雑な設定 を簡単に管理しまとめることができます。  数値指定には,相対値/パーセンテージ/ランダムといった様々な指定ができま す。 ・スタンドードMIDIファイルのインポート  他のシーケンスソフトで作成した複数のスタンダードMIDIファイルを読み込むこ とができます。  この機能により複数のスタンダードMIDIファイルを1曲にまとめたり,HE386 の フィルタ機能やテーブル変換機能により演奏データを加工することができます。 ・C言語ライクなインタプリタ言語CCI を搭載  HE386 にはC言語ライクなインタプリタ言語CCI が搭載されています。  CCI を使えばユーザーが特殊命令を追加することができます。  標準でGS音源を制御する命令を組み込んでいます。オプションにヤマハTG300 , カワイGMega を制御するCCI プログラムが用意されています。 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= §1-2 動作環境 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=  HE386 は TownsOS版、Windows NT/95/98コンソール版、Linux 版の3つのプラッ トホームに対応しています。Linux 以外のUNIX環境についてはLinux 版ソースを元 にHE386 を移植・動作させることは容易なはずです。 ------------------- -------------------------------------------------- TownsOS版 OS :Towns システムソフトェア V2.1L31以上 メモリ:6Mバイト以上(8Mバイト以上推奨) 動作確認:FM TOWNS HC53M TownsOS V2.1L51 ------------------- -------------------------------------------------- Linux 版 動作確認: Slackware 3.4.0 Kernel 2.0.33 (i386) ------------------- -------------------------------------------------- Windows NT/95/98 Windows NT 3.51/4.0, Windows 95/98 コンソール版 動作確認: Windows NT 4.0 Workstation ------------------- -------------------------------------------------- -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= §1-3 ファイル構成 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= ・TownsOS 版 --------------------------- ------------------------------------------ ファイル 説明 --------------------------- ------------------------------------------ he386p.exp 本体実行ファイル cci.dll CCI 用DLL mmlist.dll 演奏データ出力用DLL --------------------------- ------------------------------------------ ・Linux 版 --------------------------- ------------------------------------------ ファイル 説明 --------------------------- ------------------------------------------ he386 本体実行ファイル --------------------------- ------------------------------------------ ・Windows NT/95/98コンソール版 --------------------------- ------------------------------------------ ファイル 説明 --------------------------- ------------------------------------------ he386 .exe 本体実行ファイル cci .dll CCI 用DLL --------------------------- ------------------------------------------ ・全プラットホーム共通 --------------------------- ------------------------------------------ ファイル 説明 --------------------------- ------------------------------------------ HE386.CCI CCI プログラム --------------------------- ------------------------------------------ HE386.TXT 説明ファイル(本ファイル) COMPILER.TXT コンパイラ仕様の説明ファイル CCIMACRO.TXT CCI マクロコマンドの説明ファイル HE386CCI.TXT C言語インタプリタCCI の説明ファイル --------------------------- ------------------------------------------ CCISRC/defs.h 以下,CCI プログラムHE386.CCI のソース CCISRC/gm.c CCISRC/gmega.c CCISRC/gs.c CCISRC/gs_cc.c CCISRC/gs_drum.c CCISRC/he386.h CCISRC/main.c CCISRC/midilib.c CCISRC/sc55disp.c CCISRC/tg300.c CCISRC/tg300ds.c CCISRC/tg300me.c CCISRC/tg300mp.c CCISRC/tg300vm.c --------------------------- ------------------------------------------ SAMPLE/SMPL2/smpl1.doc サンプル(1) の説明ファイル SAMPLE/SMPL1/smpl1.mml サンプルMML ソースファイル(1) --------------------------- ------------------------------------------ SAMPLE/SMPL2/comp09.doc サンプル(2) の説明ファイル SAMPLE/SMPL2/comp09.h 以下,サンプルMML ソースファイル(2) SAMPLE/SMPL2/comp09.mml SAMPLE/SMPL2/cp09_a.mml SAMPLE/SMPL2/cp09_b.mml SAMPLE/SMPL2/cp09_c.mml SAMPLE/SMPL2/cp09_d.mml SAMPLE/SMPL2/cp09_e.mml SAMPLE/SMPL2/cp09_ini.mml SAMPLE/SMPL2/cp09_pt.mml SAMPLE/SMPL2/defs.h SAMPLE/SMPL2/epiano.def SAMPLE/SMPL2/rymptn.h --------------------------- ------------------------------------------ -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= §1-4 使用,転載,再配付について -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=  このプログラムの著作権は作者が保持しています。  以下の条件に従って自由に使用してください。 1. 著作権表示を変更しないこと。 2. このプログラムを使用したことによって生じた損害はまったく保証し ない。 3. 作者はこのプログラムに不備があっても,それを訂正する義務を負わ ない。 4. 収録されているすべてのファイルを一括して配付すること。  感想・障害報告等,作者への連絡は, NIFTY-Serve PAH01170@nifty.ne.jp e-mail sp-taro@super.win.ne.jp まで,願いします。  電子メールでのお問い合わせは返事が遅れたり,あるいは返信のメールが行かな いこともありますので,予めご了承ください。  転載,再配付については作者の許諾を得る必要はありません。 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= §1-5 インストール -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= ●TownsOS 版  TownsOS 用のアーカイブ he302a01.lzh を解凍して、次のファイルを適当なディ レクトリに格納して he386p.exp cci.dll mmlist.dll he386.cci  HE386 を使うためには,これらのファイルが同じディレクトリに格納されている 必要があります。 ●Linux 版  Linux 版のアーカイブ he386-302a01-bin.tzg を展開して、次のファイルを適当 なディレクトリにインストールしてください。 he386 he386.cci  CCI プログラムhe386.cci はコマンドサーチパス(環境変数PATH)に指定されて いるディレクトリに格納するか、(he386 を使った演奏データを生成する)コンパ イル時のカレントディレクトリに置いてください。 ●Windows NT/95/98コンソール版の場合  Windows NT/95/98コンソール版の使う場合,次のファイルを適当なディレクトリ に格納して下さい。 he386.exe cci.dll he386.cci  HE386 を使うためには,これらのファイルが同じディレクトリに格納されている 必要があります。  コマンドサーチパス(環境変数PATH)に指定されているディレクトリに格納して おくといいでしょう。 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= §1-6 HE386 の起動と使い方 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= ●TownsOS 版の場合  HE386 はコマンドモードまたは,HEwin (ver.1.01b 以降)やEDIAから使うこと ができます。  ここではコマンドモードからは,run386.exeを使い, run386 he386p 〈MMLファイル名〉 とします。  MML ファイル名は,拡張子.mmlを持つテキストファイルとします(拡張子.mmlは 省略できます)。  たとえば,music.mml をコンパイルする場合は, run386 he386p music とします。コンパイルが成功すれば演奏データファイルmusic.mid ができているは ずです。 ●Windows NT/95/98コンソール版の場合  HE386 はWindows NT/95/98のMS-DOS プロンプトから起動して使います。  MS-DOSプロンプトから, he386 〈MMLファイル名〉 とします。  MML ファイル名は,拡張子.mmlを持つテキストファイルとします(拡張子.mmlは 省略できます)。  たとえば,music.mml をコンパイルする場合は, he386 music とします。コンパイルが成功すれば演奏データファイルmusic.mid ができているは ずです。 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= §1-7 HEwin /EDIAからHE386 を使う(TownsOS 版のみ) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=  HE386 はHEwin またはEDIAのテキストエディタから呼び出して使うこともできま す。 ● HEwin の場合  専用のインストーラを使ってHEwin とHE386 をインストールすると,自動的にHE win からHE386 を使う環境が整います。  手動で環境を整える場合は,HE386P.EXPが格納されているディレクトリを,HEwi n のDOS コンソール,[SETUP] メニュー配下の「EXP search path 」(項目/ボタ ン)で指定してください。HE386P.EXPがHEWIN.EXP と同じディレクトリに格納され ている場合は,[SETUP] メニュー配下の「EXP search path 」(項目/ボタン)は 使う必要ありません。  HEwin からコンパイルするときは,MML が書かれているテキストファイルを編集 状態にして,HEwin のテキストエディタ[MENU4]メニュー配下の「MML Compile」( 項目/ボタン)を実行し,そこから「Compile 」(項目/ボタン)を選択してくだ さい。  HE386 には編集中のファイル名が渡されるだけですので,コンパイルしたいテキ ストファイルはあらかじめファイルに保存されている必要があります。  HE386 でのコンパイルが終了し,編集中のテキストファイルのファイル名の拡張 子を.MIDに変更したファイル名と同名のファイルが存在すれば,それを演奏データ ファイルとみなして演奏します。  演奏は,コンパイルに失敗してもファイルが存在すれば行われます。 ● EDIA の場合  インストーラを使ってEDIAとHE386 をインストールすると,自動的にEDIAからHE 386 を使う環境が整います。  手動で環境を整える場合は,HE386P.EXPが格納されているディレクトリを,EDIA の[MENU4] メニュー配下の「EXP search path 」(項目/ボタン)で指定してくだ さい。HE386P.EXPがEDIA.EXPと同じディレクトリに格納されている場合は,[MENU4] メニュー配下の「EXP search path 」(項目/ボタン)で指定する必要はありませ ん。  EDIAからコンパイルするときは,MML が書かれているテキストファイルを編集状 態にして,[MENU4]配下の「MML Compile」(項目/ボタン)を実行し,そこから「 Compile 」(項目/ボタン)を選択してください。  HE386 には編集中のファイル名が渡されるだけですので,コンパイルしたいテキ ストファイルはあらかじめファイルに保存されている必要があります。  HE386 でのコンパイルが終了し,編集中のテキストファイルのファイル名の拡張 子を.MIDに変更したファイル名と同名のファイルが存在すれば,それを演奏データ ファイルとみなして演奏します。  演奏は,コンパイルに失敗してもファイルが存在すれば行われます。 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= §1-8 MML について, -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=  HE386 はテキストファイルとして作成されたMML ソースファイルを元に,スタン ダードMIDIファイル形式の演奏データを作成するツールです。  スタンダードMIDIファイルは,基本的にはMIDIメッセージ(MIDI規格の演奏情報 )に時間情報が追加された構成になっています。  HE386 を使いこなすためには,MIDIメッセージについてある程度知っておいたほ うがいいでしょう。 ●コンパイル動作概要  HE386 は次のような処理を経て演奏データファイルを作成します。 (1) ソースファイルのオープン (2) ソースファイルの読み込み (3) プリプロセッサ処理 (4) 演奏データの作成 (5) 最適化 (6) 演奏データをファイルに出力  (2) から(4) は,ソースファイルの1行単位に処理は行われます。  演奏データはいったんメモリ上に作成され,演奏データの作成が終わると無駄な 演奏データを取り除くため (5)の最適化処理が行われます。  最後に演奏データをファイルに書き出します。  (3) のプリプロセッサ処理というのは,マクロ展開や別ファイルの取り込みを行 う,入力行に対する一種の文字列変換操作です。  HE386 のプリプロセッサは,マクロ展開,#ifdef〜#else〜#endif による条件付 き範囲指定,#includeによる別ファイルの取り込み等が行えます。  特殊なプリプロセッサ処理として,正弦波や2次関数に従って数値が連続的に変 化するようなコマンドパラメータを作りだすことができます。  CCI による命令の拡張はプリプロセッサ処理の段階で行われます。 ●トラックとパートに関して,  HE386 には,パート単位に設定を行うパート系コマンド,トラック単位に設定を 行うトラック系コマンドの2系統のコマンドが用意されています。  トラックは演奏データ,つまりスタンダードMIDIファイルを構成する単位です。 トラックには(基本的には)楽器一台分の演奏情報が格納され,演奏データは複数 のトラックによって構成されます。  パートはトラックを構成するMML データの構成単位です。複数のパートを組み合 わせてトラックが構成されます。  図で表すと以下のような構成となります。 シーケンスデータ(演奏データ) | +−システムトラック | +−システムトラック用パート (1) | +−システムトラック用パート (2) | +−システムトラック用パート (3) | +− ・ | +− ・ | +− ・ | +−システムトラック用パート (n) | +−トラック1 | +−トラック1用パート (1) | +−トラック1用パート (2) | +−トラック1用パート (3) | +− ・ | +− ・ | +− ・ | +−トラック1用パート (n) | +−トラック2 | +−トラック2用パート (1) | +−トラック2用パート (2) | +−トラック2用パート (3) | +− ・ | +− ・ | +− ・ | +−トラック2用パート (n) | +−トラック3 | +−トラック3用パート (1) | +−トラック3用パート (2) | +−トラック3用パート (3) | +− ・ | +− ・ | +− ・ | +−トラック3用パート (n) | +− ・ | +− ・ | +− ・ | +− ・ | +−トラックn +−トラックn用パート (1) +−トラックn用パート (2) +−トラックn用パート (3) +− ・ +− ・ +− ・ +−トラックn用パート (n)  トラックとパートはメモリが許すかぎりいくらでも使うことが出来ます。 ●ファイル名について  HE386 はファイル名に使用するアルファベットの大文字・小文字は区別しないこ とを前提に作成されています。  アルファベットの大文字・小文字を区別するUNIX環境で、TownsOS/Windows環境 で作成されたMML ソースをコンパイルしようとするとファイルが見つからないとい ったエラーが発生することがあります。  CCI プログラムのソースやサンプルのMML ソースは、TownsOS/Windows環境で作 成されたファイルを収録しています。これらはUNIX環境のHE386 からでも利用でき ますが、ファイル名で使われているアルファベットほすべて小文字の変換しておく 必要があるかもしれません。 ●期待通りに演奏データが作れない場合は,  入力したMML の通りに演奏されない場合は,演奏データをダンプ表示して確認し てください。ダンプ表示ではトラック毎のMIDI情報をすべて確認することができま す。  HE386 起動時のオプションパラメータに,-dumpMsgを指定すると出力される演奏 データを確認することができます。  このダンプ表示をファイルに保存したい場合は,以下のオプションパラメータを 付け加えてください。 -dumpMsg -msgOut 〈ファイル名〉  Linux 版、Windows NT/95/98コンソール版の場合は,リダイリクトを使うことが できます。 he386 -dumpMsg 〈入力ファイル名〉 > 〈ファイル名〉  画面にダンプ表示を行う必要ないという場合は,以下のオプションパラメータを 付け加えてください。 -cnsMsgIgn -dumpMsg -msgOut 〈ファイル名〉  ダンプ表示は曲が長いと膨大な大きさになるので(ダンプ表示のファイルサイズ は数Mを越えるときがあります),確認したい箇所だけをコンパイルして表示する ようにしたほうがいいでしょう。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ § 参考資料 __________________________________________________________________________ [A] High-EUP Compiler 系譜 [B] HE386 ver.3.XX 変更履歴 ───────────────────────────────────── - [A] High-EUP Compiler 系譜 - ───────────────────────────────────── ┌─────┬───────┬─────────────────┐ │バージョン│実行ファルイ名│実行環境 │ ├─────┼───────┼─────────────────┤ │ver.1.01 │HE.EXE │MS-DOS汎用 │ ├─────┼───────┼─────────────────┤ │ver.1.02 │HE386.EXP │DOS-Extender汎用 │ ├─────┼───────┼─────────────────┤ │ver.2.01 │HEAT.EXP │TownsOS(HEatに内蔵) │ ├─────┼───────┼─────────────────┤ │ver.3.01 │HE386P.EXP │TownsOS用スタンドアローン │ ├─────┼───────┼─────────────────┤ │ver.3.02 │HE386P.EXP │TownsOS用スタンドアローン │ │ ├───────┼─────────────────┤ │ │he386 │Linux 用 │ │ ├───────┼─────────────────┤ │ │HE386.EXE │Windows NT/95/98コンソール用 │ └─────┴───────┴─────────────────┘  ver.1.01/1.02/1.03/2.01は,EUPHONY 形式の演奏データを作成します。ま た,MML は8ビット(FM-7/77/AV)機のHGPLAY/EDPLAY系の拡張で,富士通のF- BASIC386 やミュージカルプランのMUSIC PRO TOWNS が出力するMML と上位互換 性があります。  ver.3.01/3.02は,スタンダードMIDIファイルを作成します。ver.3.01/3.02 は従来のMML との互換性はまったくありません。 ───────────────────────────────────── - [B] HE386 ver.3.XX 変更履歴 ───────────────────────────────────── ■ ver.3.01e(ver.3.01dからの変更点) ・パート系コマンド,MIDIチャンネル変更(h )コマンドのバグフィクス ●CCI に関する変更点 ・main.cciの修正 $exGs_exChannel()が正常に動作しない障害を修正 ■ ver.3.01f (ver.3.01eからの変更点) ・スタンダードMIDIファイルの出力時にメタイベントでランニングステータスが クリアされない障害を修正。 ・行末が「\」 で終わっているときは次の行と連結するようにした。 ■ ver.3.01f #02 (ver.3.0fからの変更点) ・数値のランダム指定で大小関係の指定を修正 ■ ver.3.01f #03 (ver.3.0f#02からの変更点) ・CCI インタプリタ部をDLL にした ■ ver.3.01f #06 (ver.3.0f#03,#04からの変更点) ・@OPT()が正常に指定できない障害を修正 ・演奏データのタンプ表示をDLL にした(mmlist.dll) ■ ver.3.01f #07 (ver.3.0f#06からの変更点) ・ポリフォニックアフタータッチ,チャンネルアフタータッチの指定方法を変更 ■ ver.3.01f #08 (ver.3.0f#07からの変更点) ・内部データ処理ルーチンの改造(表面上の変更はなし) ・起動時オプションパラメータ,-heepSize/-codeSizeの指定が効かない障害を 修正 ■ ver.3.01f #09 (ver.3.0f#08からの変更点) ・DLL をHigh V1.7L20仕様に変更 ・オーバーレイ構造の変更 ■ ver.3.01f #09 (ver.3.0f#08からの変更点) ・DLL をHigh V1.7L20仕様に変更 ・オーバーレイ構造の変更 ・n コマンドが正常に動作しない障害を修正 ・s コマンドの障害を修正 ・^(natural), ^(sharp), ^(flat)コマンドを追加 ■ ver.3.02a #01 ・TownsOS版、Linux 版、Windows NT/95/98 コンソール版とソースを共通にする ため再構成 ・スタンダードMIDIファイルのインポート機能を追加 ・ノートアサインのコントロールチェンジ部分を修正 ・プログラムアサインのコントロールチェンジ部分を修正