MEASURE 3 X−BASIC用外部関数MUSICZ.FNC X68k本体付属のBASIC「X−BASIC」からZMUSICを 使う方法について述べます。 3.1. はじめに BASICからZMUSICを使うには外部関数「MUSICZ.FNC」を 組み込んだX−BASICを起動しなければならない。具体的には、 BASICディレクトリ中のBASIC.CNFの内容のうち FUNC=MUSIC の部分を FUNC=MUSICZ のように変更し、さらにこのディレクトリにMUSICZ.FNCをコピーする。そして A>basic でX−BASICを起動すればよい。しかし、各自のシステムの環境によっては 多少の食い違いもあるのでよく分からない人は「BASICマニュアル」を参照すること。 また、1990年10月号のOh!Xに発表された「ZMUSIC.FNC」とは 全く無関係である。このZMUSICシステムは「ZMUSIC.FNC」とは 全く関係ない。互換性もない。 MEASURE1で述べたようにZMUSIC.Xは一部を除いて X68k本体付属の「OPMDRV.X」と「MUSIC.FNC」との互換性を 保っている。このことからMUSICZ.FNCのコマンドの一部は MUSIC.FNCのものと仕様が同じである。そのため、ここでは 「X−BASICマニュアル」にあるコマンドも重複して説明がなされている。 しかし、MUSICZ.FNCでは仕様が拡張変更されたものもあるので 注意すること。 また、従来のMUSIC.FNCでもZMUSICは操作可能である。 その場合もちろんZMUSIC.Xの100%の性能を発揮することは出来ない。 逆にMUSICZ.FNCでOPMDRV.Xは操作出来ないので注意すること。 3.2. コマンドの使用にあたっての注意 MIDI楽器専用のコマンドは場合によっては楽器のメモリを書き換える。 よく楽器側のマニュアルを読んでから実行すること。楽器側に大切なデータが 存在する場合は、楽器のメモリをファイルに保存しておくとよい(MEASURE9参照)。 3.3. MUSICZ.FNC命令一覧 ●初期化 -------------------------------------------------------------------------------- 関数名 m_init() 機能 音源の初期化、ドライバのワークの初期化 引数 なし 戻り値 なし 備考 MIDIボード装着時MIDI楽器に対して以下のコマンドメッセージを送出する。 システムリセット($FF) リセットオールコントローラーズ($Bn,$79,$00) オムニモードオン($Bn,7D,$00) モノモードオフ($Bn,$7F,$00) ローカルオン($Bn,$7A,$7F) マスターチューン・微調整=中央($Bn,$65,$00,$Bn,$64,$01,$Bn,$06,$40,$Bn,$26,$00) マスターチューン・コース=中央($Bn,$65,$00,$Bn,$64,$02,$BN,$06,$40) -------------------------------------------------------------------------------- 関数名 m_count(n) 機能 全音符の絶対音長指定 引数 n=全音符の絶対音長(char:1≦n≦254) 戻り値 なし 備考 'm_init()'でデフォルト値である192が設定される。 通常は設定する必要無し。 ゲーム用のBGM等を作成する時など、割り込み回数を減らす目的で使うとよい。 192, 144, 128, 96といった数値が一般的。 -------------------------------------------------------------------------------- ●トラック確保/チャンネルアサイン -------------------------------------------------------------------------------- 関数名 m_alloc(tr,size) 機能 トラックバッファの確保 引数 tr:トラック番号(char:1〜80) size:バッファサイズ(int:100〜65535) 戻り値 なし -------------------------------------------------------------------------------- 関数名 m_assign(ch,tr) 機能 チャンネル番号chをトラック番号trに割り当てる 引数 ch:チャンネル番号(char:1〜32) tr:トラック番号(char:1〜80) 戻り値 なし 備考 複数のトラックを1つのチャンネルに割り当てることも出来る。 チャンネル番号は後述の'm_ch()'コマンドによって対象デバイスが変化する ただし、PCM8.X組み込み時は'm_ch()'によらずチャンネル番号26〜32が ADPCM2〜8になる。 -------------------------------------------------------------------------------- 関数名 m_assign2(ch,tr) 機能 チャンネル番号chをトラック番号trに割り当てる 引数 ch:チャンネル番号(str:"FM1〜8","MIDI1〜16","ADPCM","ADPCM1〜8") tr:トラック番号(char:1〜80) 戻り値 なし 備考 1つのチャンネルを複数のトラックに割り当てることが出来る。 例 m_assign2(1,"fm1") m_assign2(1,"midi10") "adpcm2〜8"が実用できるのはPCM8モード時のみである。 -------------------------------------------------------------------------------- 関数名 m_ch(dv) 機能 ベースチャンネルを変更する 引数 dv:デバイス名(str:"FM" or "MIDI") 戻り値 なし 備考 "FM"を設定するとチャンネル番号1〜8がFM音源, 9がADPCMチャンネル1 10〜25がMIDIになる。 "MIDI"を設定するとチャンネル番号1〜16がMIDI17〜24がFM音源, 25がADPCMチャンネル1になる また、PCM8.X組み込み時は'm_ch()'によらずチャンネル番号26〜32が ADPCM2〜8になる。 例 m_ch("midi") m_ch("fm") -------------------------------------------------------------------------------- 関数名 m_free(tr) 機能 トラックバッファのフリーエリアを得る 引数 tr=トラック番号(char:1〜80) 戻り値 int -------------------------------------------------------------------------------- ●演奏制御 -------------------------------------------------------------------------------- 関数名 m_play(tr1,tr2,…,tr10) 機能 演奏の開始 引数 tr1〜10:トラック番号(char:1〜80) 全て省略すると全トラックを演奏する 戻り値 なし -------------------------------------------------------------------------------- 関数名 m_stop(tr1,tr2,…,tr10) 機能 演奏の停止 引数 tr1〜10:トラック番号(char:1〜80) 全て省略すると全トラックの演奏を停止する 戻り値 なし -------------------------------------------------------------------------------- 関数名 m_cont(tr1,tr2,…,tr10) 機能 演奏の再開 引数 tr1〜10:トラック番号(char:1〜80) 全て省略すると全トラックの演奏を再開する 戻り値 なし -------------------------------------------------------------------------------- 関数名 m_solo(ch1,ch2,…ch10) 機能 演奏チャンネルのマスク(その1) 引数 ch1〜10=チャンネル番号(char) 戻り値 なし 備考 指定したチャンネルのみを演奏しそれ以外のチャンネル演奏を一時停止する。 演奏中に実行可能。またパラメータを省略し m_solo() とすると通常演奏に戻る。 m_ch("FM")の時はチャンネル番号1〜8がFM音源,9がADPCMチャンネル1 10〜25がMIDIに対応する。 m_ch("MIDI")の時はチャンネル番号1〜16がMIDI,17〜24がFM音源, 25がADPCMチャンネル1に対応する。 また、PCM8.X組み込み時は'm_ch()'によらずチャンネル番号26〜32が ADPCM2〜8に対応する。 演奏が停止したトラックも内部処理は続行するため、マスクを解除した時は 他のトラックに遅れを取らずに何事も無かったように演奏が再開される。 ただし、このコマンド実行時は効果音モードが正常に動作しない。 ------------------------------------------------------------------------------ 関数名 m_mute(ch1,ch2,…ch10) 機能 演奏チャンネルのマスク(その2) 引数 ch1〜10=チャンネル番号(char) 戻り値 なし 備考 指定したチャンネルの演奏を一時停止し、それ以外のチャンネルは通常に 演奏を行う。演奏中に実行可能。またパラメータを省略し m_mute() とすると通常演奏に戻る。 m_ch("FM")の時はチャンネル番号1〜8がFM音源,9がADPCMチャンネル1 10〜25がMIDIに対応する。 m_ch("MIDI")の時はチャンネル番号1〜16がMIDI,17〜24がFM音源, 25がADPCMチャンネル1に対応する また、PCM8.X組み込み時は'm_ch()'によらずチャンネル番号26〜32が ADPCM2〜8に対応する。 演奏が停止したトラックも内部処理は続行するため、マスクを解除した時は 他のトラックに遅れを取らずに何事も無かったように演奏が再開される。 ただし、このコマンド実行時は効果音モードが正常に動作しない。 -------------------------------------------------------------------------------- 関数名 m_fadeout(spd) 機能 演奏中のデータをフェードアウト/インする 引数 spd=フェードアウト/イン・スピード(int:−85〜85) 戻り値 なし 備考 spdを省略するとデフォルト値16が設定される。 spdは正値がフェードアウト、負値がフェードインの指定となる。 絶対値が大きいほど音量の増減スピードは速くなる。 -------------------------------------------------------------------------------- 関数名 m_stat(ch) 機能 演奏状態のチェック 引数 チャンネル番号(char:1〜25) (注1) 全て省略すると全チャンネルの演奏状態をチェック出来る 戻り値 int チャンネル番号を指定した場合、そのチャンネルが演奏中ならば1、 演奏中でないなら0。チャンネル番号を省略した場合は演奏中の チャンネル番号に対応したビットが1に、演奏していないチャンネル番号に 対応したビットが0になる。 m_ch("FM")の場合はビット0〜7がFMチャンネル1〜8に、ビット8が ADPCMチャンネル1に、ビット9〜24がMIDIチャンネル1〜16に 対応する。 m_ch("MIDI")の場合はビット0〜15がMIDIチャンネル1〜16に ビット16〜23がFMチャンネル1〜8に、ビット24が ADPCMチャンネル1に対応する。 また、PCM8.Xを組み込み時には'm_ch()'によらずビット25〜31が ADPCM2〜8チャンネルに対応する。 -------------------------------------------------------------------------------- ●開発補助 -------------------------------------------------------------------------------- 関数名 m_debug(sw) 機能 MMLの'[@]','[!]','[end]'コマンドの有効/無効化 引数 sw=数値(char:0=off,nz=on) 戻り値 なし -------------------------------------------------------------------------------- 関数名 m_total() 機能 各トラックにセットされたMMLの総ステップタイム数を計算し 結果を画面に出力する 引数 なし 戻り値 なし 備考 トラック番号:ループ外の総カウント数 ループ内の総カウント数 というフォーマットで出力される。 X−BASICは独自の仮想画面で画面を管理しているのに対して 本命令はむりやり表示を行っているため画面下部で本命令を実行すると 表示の一部がずれることがある。 -------------------------------------------------------------------------------- ●テンポ -------------------------------------------------------------------------------- 関数名 m_tempo(tm) 機能 テンポの設定 引数 tm=トラック番号(int:20〜300) 戻り値 tmを省略すると現在のテンポ値を返す 備考 タイマAモード(MEASURE2参照)で動作中時はテンポ77以下は強制的に77になる。 -------------------------------------------------------------------------------- ●MMLの書き込み -------------------------------------------------------------------------------- 関数名 m_trk(tr,str) 機能 MMLをトラックへ書き込む 引数 tr:トラック番号(char:1〜80) str:MMLデータ(str) 戻り値 なし 備考 MMLに関してはMEASURE5を参照のこと。 -------------------------------------------------------------------------------- 関数名 m_trk2(str,tr1,tr2,tr3,tr4,tr5,tr6,tr7,tr8) 機能 MMLを複数のトラックへ書き込む 引数 str:MMLデータ(str) tr1〜8:トラック番号(char:1〜80) 戻り値 なし 備考 tr2〜tr8は省略可能。 MMLに関してはMEASURE5を参照のこと。 -------------------------------------------------------------------------------- ●FM音源の音色設定 -------------------------------------------------------------------------------- 関数名 m_vset(vn,ary) 機能 FM音源の音色登録 引数 vn:音色番号(char:1〜200) ary:音色データ(dim char ary(4,10)) 戻り値 なし 備考   10 /*設定例 20 dim char v(4,10) 30 /* AF OM WF SYC SPD PMD AMD PMS AMS PAN 40 v={59, 15, 2, 1,200,127, 0, 0, 0, 3, 0,    50 /* AR DR SR RR SL OL KS ML DT1 DT2 AME 60 31, 8, 1, 8, 7, 20, 2, 1, 5, 3, 0, 70 31, 8, 8, 7, 5, 24, 1, 2, 1, 1, 0, 80 31, 3, 7, 8, 1, 21, 1, 1, 3, 0, 0, 90 31, 0, 0, 9, 0, 0, 2, 8, 5, 2, 0} 100 m_vset(1,v) パラメータ概説 0 1〜4(オペレータ) 0 AF(フィードバック/アルゴリズム) (0〜63) | AR(アタックレート) (0〜31) 1 OM(スロットマスク) (0〜15) | 1DR(1stディケイレート) (0〜31) 2 WF(ウェーヴフォーム) (0〜3) | 2DR(2ndディケイレート) (0〜31) 3 SYC(シンクロ) (0,1) | RR(リリースレート) (0〜15) 4 SPD(スピード) (0〜255) | 1DL(1stディケイレベル) (0〜15) 5 PMD (0〜127) | TL(トータルレベル) (0〜127) 6 AMD (0〜127) | KS(キースケーリング) (0〜3) 7 PMS (0〜7) | MUL(フェーズマルチプライ) (0〜15) 8 AMS (0〜3) | DT1(ディチューン1) (0〜7) 9 PAN (0〜3) | DT2(ディチューン2) (0〜3) 10 DUMMY | AME(AMSイネーブル) (0,1) パラメータの機能や詳しい解説は専門書や「BASICマニュアル」の M_VSET()やM_VGET()の項を参照。 -------------------------------------------------------------------------------- 関数名 m_vget(vn,ary) 機能 FM音源の音色データの取り出し 引数 vn:音色番号(char:1〜200) ary:音色バッファ(dim char ary(4,10)) 戻り値 ary(4,10)に音色データが格納される -------------------------------------------------------------------------------- 関数名 m_fmvset(vn,ary) 機能 FM音源の音色登録(AL/FB分離形式) 引数 vn:音色番号(char:1〜200) ary:音色データ(dim char ary(4,10)) 戻り値 なし 例 10 dim char v(4,10) 20 /* AR 1DR 2DR RR 1DL TL RS MUL DT1 DT2 AME 30 v={ 31, 0, 2, 0, 0, 21, 0, 1, 0, 0, 0, 40 31, 0, 0, 8, 0, 3, 0, 3, 0, 0, 0, 50 31, 0, 0, 8, 0, 3, 0, 1, 0, 0, 0, 60 31, 0, 0, 8, 0, 3, 0, 1, 0, 0, 0, 70 /* CON FBL OM PAN WF SYC SPD PMD AMD PMS AMS 80 5, 7,15, 3 0, 0, 0, 0, 0, 0, 0} 90 m_fmvset(1,v) 備考 AL/FB(CON/FB)分離形式とはFM音源のパラメータである アルゴリズム(またはコネクション)とフィードバックレベルを 従来の書式では1つにまとめていたのを分かりやすく分割して 指定できるようにしたもの。 -------------------------------------------------------------------------------- ●ADPCMコンフィギュレーション -------------------------------------------------------------------------------- 関数名 m_pcmset(nt,fn,pt,vl,mx,dl,ct,rv,fd) 機能 ノート番号ntにファイルネームfnのADPCM音をセットする 引数 nt=ノート番号(int:0〜511) fn=ファイルネーム(str) pt=ピッチシフトパラメータ(int:0〜11=ピッチダウン,12=ニュートラル,13〜24=ピッチアップ) vl=ボリュームパラメータ(int:1%〜300%) mx=ミックス対象ノート番号(int:0〜511) dl=ミックスディレイパラメータ(int:0〜65535) ct=カットパラメータ(int:0〜$ffffffff) rv=リバーススイッチ(char:0=normal/1=reverse) fd=フェード イン/アウトパラメータ(int:0〜$ffffffff) 戻り値 なし 備考 カットパラメータ=オフセット(0〜65535)×65536+カットサイズ(0〜65535) フェードイン/アウト・パラメータ=オフセット(0〜65535)×65536 +モード(−1=フェードイン,+1=フェードアウト)×256 +フェードイン/アウト・レベル(0〜127) fnがカレントより見つからない場合は環境変数'zmusic'のパスを参照する。 pt,vl,mx,dl,ct,rv,fdはそれぞれ省略可能。 pt,vl,mx,dl,ct,rv,fdのいずれかを設定した場合はADPCMデータの加工を 行うので多少の時間を要する。 また、加工には相当量のメモリを必要とするためドライバ起動時の'−W'スイッチ でワークエリアを十分に確保していないとエラーとなる。 パラメータの具体的な説明はMEASURE6を参照のこと。 例 m_pcmset(10,"snare.pcm",13,120,8,1000,&h10001000,1,&h1000ff01) -------------------------------------------------------------------------------- 関数名 m_pcmcnf(fn) 機能 ADPCMコンフィギュレーションファイルで ADPCM音をドライバに登録する 引数 fn=ファイルネーム(str) 戻り値 なし 備考 fnがカレントより見つからない場合は環境変数'zmusic'のパスを参照する。 -------------------------------------------------------------------------------- 関数名 m_adpcm_block(fn) 機能 ADPCMブロックデータを読み込む 引数 fn=ファイルネーム(str) 戻り値 なし 備考 fnがカレントより見つからない場合は環境変数'zmusic'のパスを参照する。 ADPCMバッファがブロックデータの大きさより小さい場合はエラーとなる。 -------------------------------------------------------------------------------- ●MIDIデータ出力 -------------------------------------------------------------------------------- 関数名 m_out(data1,data2,…,data10) 機能 MIDIデータを送信する 引数 data1〜10=MIDIデータ(char) 戻り値 なし 備考 data2以降は省略可,X−BASICの制約からデータは10個まで。 例 m_out(&HC0,10) -------------------------------------------------------------------------------- 関数名 m_dirout(ary,size) 機能 1次元配列に格納されたデータを送信する 引数 ary=1次元配列(dim char ary(n)) size=送信データ数(int:1〜65536) 戻り値 なし 備考 sizeを省略した場合は配列内全てのデータを送信する。 -------------------------------------------------------------------------------- 関数名 m_exc(ary,size) 機能 1次元配列に格納されたデータをエクスクルーシブデータとして送信する 引数 ary=1次元配列(dim char ary(n)) size=送信データ数(int:1〜65536) 戻り値 なし 備考 sizeを省略した場合は配列内全てのデータを送信する。 頭に$f0、後尾に$f7を自動的に付けて送信するだけで機能的には ほとんど'm_dirout()'と同じ。 -------------------------------------------------------------------------------- 関数名 m_roland(dev,mdl,ary,size) 機能 1次元配列に格納されたデータを ローランドエクスクルーシブデータと見なし送信する 引数 dev=転送先の楽器のデバイスID(char) mdl=転送先の楽器のモデルID(char) ary=1次元配列(dim char ary(n)) size=送信データ数(int:1〜65536) 戻り値 なし 備考 sizeを省略した場合は配列内全てのデータを送信する。 エクスクルーシブヘッダやチェックサムのデータは自動発信する。 -------------------------------------------------------------------------------- 関数名 m_trans(fn) 機能 MIDIダンプデータファイルをMIDI楽器へ送信する 引数 fn=ファイルネーム(str) 戻り値 なし 備考 fnがカレントより見つからない場合は環境変数'zmusic'のパスを参照する。 MEASURE9参照。 -------------------------------------------------------------------------------- ●MIDIデータ入力 -------------------------------------------------------------------------------- 関数名 m_inp(mode) 機能 MIDIデータを送信する 引数 mode=入力モード(char:0,1〜255) mode=0 入力データがない場合はエラーコードを持って帰還 mode=1〜255 データが受信されるまでmode×(1/60)秒間待つ 戻り値 0〜255:入力されたデータ -1:エラー -------------------------------------------------------------------------------- 関数名 m_rec() 機能 MIDI楽器よりデータを受信するモードにする 引数 なし 戻り値 なし 備考 MEASURE9参照。 -------------------------------------------------------------------------------- 関数名 m_rstop() 機能 MIDI楽器からのデータを受信するモードを解除する 引数 なし 戻り値 なし 備考 MEASURE9参照。 -------------------------------------------------------------------------------- 関数名 m_save(fn) 機能 m_rec()で受信したMIDIデータをセーブする 引数 fn=ファイルネーム(str) 戻り値 なし 備考 MEASURE9参照。 -------------------------------------------------------------------------------- ●SC55/SC155/CM300/CM500のGSパート専用命令 パラメータの意味などは楽器のマニュアルを参照のこと -------------------------------------------------------------------------------- 関数名 sc55_init(id) 機能 SC55の初期化を行なう 引数 id=SC55のデバイスID(char) 戻り値 なし 備考 IDは省略可能。省略すると以前設定したものが選択される。最初の使用時に 省略した場合はドライバ内のデフォルト値が選択される。 -------------------------------------------------------------------------------- 関数名 sc55_v_reserve(ary,id) 機能 SC55のボイスリザーブ 引数 ary=各パートのボイスリザーブ値(dim char ary(15)={vr1,…,vr16}) id=SC55のデバイスID(char) 戻り値 なし 備考 配列は必ず1次元、添え字は15でリザーブ値は16パート分書かなければならない。 また、合計が楽器の最大同時発生数である24以下にならなければならない。 ary(0)=パート1,ary(1)=パート2…,ary(15)=パート16というふうに対応する。 IDは省略可能。省略すると以前設定したものが選択される。最初の使用時に 省略した場合はドライバ内のデフォルト値が選択される。 -------------------------------------------------------------------------------- 関数名 sc55_reverb(ary,id) 機能 SC55のリバーブパラメータ設定 引数 ary=リバーブパラメータ(dim char ary(6)={rv1,…,rv7}) id=SC55のデバイスID(char) 戻り値 なし 備考 配列は必ず1次元、添え字は6以内で配列の内容全部がSC55へ送信される。 IDは省略可能。省略すると以前設定したものが選択される。最初の使用時に 省略した場合はドライバ内のデフォルト値が選択される ary(0):REVERB MACRO 00:Room1,01:Room2,02:Room3,03:Hall1,04:Hall2 05:Plate,06:Delay,07:Panning Delay(FB) ary(1):REVERB CHARACTER ($00〜$07) ary(2):REVERB PRE-LPF ($00〜$07) ary(3):REVERB LEVEL ($00〜$7F) ary(4):REVERB TIME ($00〜$7F) ary(5):REVERB DELAY FEEDBACK ($00〜$7F) ary(6):REVERB SEND LEVEL TO CHORUS ($00〜$7F) (SC55マニュアルp79参照) -------------------------------------------------------------------------------- 関数名 sc55_chorus(ary,id) 機能 SC55のコーラスパラメータ設定 引数 ary=コーラスパラメータ(dim char ary(7)={co1,…,co8}) id=SC55のデバイスID(char) 戻り値 なし 備考 配列は必ず1次元、添え字は7以内で配列の内容全部がSC55へ送信される。 IDは省略可能。省略すると以前設定したものが選択される。最初の使用時に 省略した場合はドライバ内のデフォルト値が選択される。 ary(0):CHORUS MACRO 00:Chorus1,01:Chorus2,02:Chorus3,03:Chorus4 04:Feedback Chorus,05:Flanger,06:Short Delay 07:Short Delay(FB) ary(1):CHORUS PRE-LPF ($00〜$07) ary(2):CHORUS LEVEL ($00〜$7F) ary(3):CHORUS FEEDBACK ($00〜$7F) ary(4):CHORUS DELAY ($00〜$7F) ary(5):CHORUS RATE ($00〜$7F) ary(6):CHORUS DEPTH ($00〜$7F) ary(7):CHORUS SEND LEVEL TO REVERB ($00〜$7F) (SC55マニュアルp79参照) -------------------------------------------------------------------------------- 関数名 sc55_part_setup(pt,ary,id) 機能 SC55のパートパラメータ設定 引数 pt=パートナンバー(char:1〜16) ary=パートパラメータ(dim char ary(118)={pp1,…,pp119}) id=SC55のデバイスID(char) 戻り値 なし 備考 配列は必ず1次元、添え字は118以内で配列の内容全部がSC55へ送信される。 IDは省略可能。省略すると以前設定したものが選択される。最初の使用時に 省略した場合はドライバ内のデフォルト値が選択される。 ary(0):Rx CHANNEL (1〜16,17=OFF) ary(1):Rx PITCH BEND (0〜1:OFF/ON) ary(2):Rx CH PRESSURE(CAf) (0〜1:OFF/ON) ary(3):Rx PROGRAM CHANGE (0〜1:OFF/ON) ary(4):Rx CONTROL CHANGE (0〜1:OFF/ON) ary(5):Rx POLY PRESSURE(PAf) (0〜1:OFF/ON) ary(6):Rx NOTE MESSAGE (0〜1:OFF/ON) ary(7):Rx RPN (0〜1:OFF/ON) ary(8):Rx NRPN (0〜1:OFF/ON) ary(9):Rx MODURATION (0〜1:OFF/ON) ary(10):Rx VOLUME (0〜1:OFF/ON) ary(11):Rx PANPOT (0〜1:OFF/ON) ary(12):Rx EXPRESSION (0〜1:OFF/ON) ary(13):Rx HOLD1 (0〜1:OFF/ON) ary(14):Rx PORTAMENTO (0〜1:OFF/ON) ary(15):Rx SOSTENUTO (0〜1:OFF/ON) ary(16):Rx SOFT (0〜1:OFF/ON) ary(17):MONO/POLY MODE (0〜1:MONO/POLY) ary(18):ASSIGN MODE (0:SINGLE,1:LIMITED-MULTI,2:FULL-MULTI) ary(19):USE FOR RHYTHM PART (0:OFF,1:MAP1,2:MAP2) ary(20):PITCH KEY SHIFT ($28〜$58:−24〜+24[semitone]) ary(21):PITCH OFFSET FINE(upper) ($08〜$F8:−12.0〜+12.0[Hz]) ary(22):PITCH OFFSET FINE(lower) 〃 ary(23):PART LEVEL (0〜127) ary(24):VELOCITY SENSE DEPTH (0〜127) ary(25):VELOCITY SENSE OFFSET (0〜127) ary(26):PART PANPOT (0:RANDOM,01(LEFT)〜64〜127(RIGHT)) ary(27):KEY RANGE LOW (0〜127:C-1〜G9) ary(28):KEY RANGE HIGH (0〜127:C-1〜G9) ary(29):CC1 CONTROL NUMBER (0〜127) ary(30):CC2 CONTROL NUMBER (0〜127) ary(31):CHORUS SEND DEPTH (0〜127) ary(32):REVERB SEND DEPTH (0〜127) ary(33):Vibrato rate ($0E〜$72:−50〜+50) ary(34):Vibrato depth ($0E〜$72:−50〜+50) ary(35):TVF cutoff freq. ($0E〜$50:−50〜+16) ary(36):TVF resonance ($0E〜$72:−50〜+50) ary(37):TVF&TVA Env.attack ($0E〜$72:−50〜+50) ary(38):TVF&TVA Env.decay ($0E〜$72:−50〜+50) ary(39):TVF&TVA Env.release ($0E〜$72:−50〜+50) ary(40):Vibrato delay ($0E〜$72:−50〜+50) ary(41):SCALE TUNING C ($00〜$7F:−64〜+63[cent]) ary(42):SCALE TUNING C# ($00〜$7F:−64〜+63[cent]) ary(43):SCALE TUNING D ($00〜$7F:−64〜+63[cent]) ary(44):SCALE TUNING D# ($00〜$7F:−64〜+63[cent]) ary(45):SCALE TUNING E ($00〜$7F:−64〜+63[cent]) ary(46):SCALE TUNING F ($00〜$7F:−64〜+63[cent]) ary(47):SCALE TUNING F# ($00〜$7F:−64〜+63[cent]) ary(48):SCALE TUNING G ($00〜$7F:−64〜+63[cent]) ary(49):SCALE TUNING G# ($00〜$7F:−64〜+63[cent]) ary(50):SCALE TUNING A ($00〜$7F:−64〜+63[cent]) ary(51):SCALE TUNING A# ($00〜$7F:−64〜+63[cent]) ary(52):SCALE TUNING B ($00〜$7F:−64〜+63[cent]) ary(53):MOD PITCH CONTROL ($28〜$58:−24〜+24[semitone]) ary(54):MOD TVF CUTOFF CONTROL ($00〜$7F:−9600〜+9600[CENT]) ary(55):MOD AMPLITUDE CONTROL ($00〜$7F:−100.0〜+100.0[%]) ary(56):MOD LFO1 RATE CONTROL ($00〜$7F:−10.0〜+10.0[Hz]) ary(57):MOD LFO1 PITCH DEPTH ($00〜$7F:0〜600[cent]) ary(58):MOD LFO1 TVF DEPTH ($00〜$7F:0〜2400[cent]) ary(59):MOD LFO1 TVA DEPTH ($00〜$7F:0〜100.0[%]) ary(60):MOD LFO2 RATE CONTROL ($00〜$7F:−10.0〜+10.0[Hz]) ary(61):MOD LFO2 PITCH DEPTH ($00〜$7F:0〜600[cent]) ary(62):MOD LFO2 TVF DEPTH ($00〜$7F:0〜2400[cent]) ary(63):MOD LFO2 TVA DEPTH ($00〜$7F:0〜100.0[%]) ary(64):BEND PITCH CONTROL ($28〜$58:−24〜+24[semitone]) ary(65):BEND TVF CUTOFF CONTROL ($00〜$7F:−9600〜+9600[CENT]) ary(66):BEND AMPLITUDE CONTROL ($00〜$7F:−100.0〜+100.0[%]) ary(67):BEND LFO1 RATE CONTROL ($00〜$7F:−10.0〜+10.0[Hz]) ary(68):BEND LFO1 PITCH DEPTH ($00〜$7F:0〜600[cent]) ary(69):BEND LFO1 TVF DEPTH ($00〜$7F:0〜2400[cent]) ary(70):BEND LFO1 TVA DEPTH ($00〜$7F:0〜100.0[%]) ary(71):BEND LFO2 RATE CONTROL ($00〜$7F:−10.0〜+10.0[Hz]) ary(72):BEND LFO2 PITCH DEPTH ($00〜$7F:0〜600[cent]) ary(73):BEND LFO2 TVF DEPTH ($00〜$7F:0〜2400[cent]) ary(74):BEND LFO2 TVA DEPTH ($00〜$7F:0〜100.0[%]) ary(75):CAf PITCH CONTROL ($28〜$58:−24〜+24[semitone]) ary(76):CAf TVF CUTOFF CONTROL ($00〜$7F:−9600〜+9600[CENT]) ary(77):CAf AMPLITUDE CONTROL ($00〜$7F:−100.0〜+100.0[%]) ary(78):CAf LFO1 RATE CONTROL ($00〜$7F:−10.0〜+10.0[Hz]) ary(79):CAf LFO1 PITCH DEPTH ($00〜$7F:0〜600[cent]) ary(80):CAf LFO1 TVF DEPTH ($00〜$7F:0〜2400[cent]) ary(81):CAf LFO1 TVA DEPTH ($00〜$7F:0〜100.0[%]) ary(82):CAf LFO2 RATE CONTROL ($00〜$7F:−10.0〜+10.0[Hz]) ary(83):CAf LFO2 PITCH DEPTH ($00〜$7F:0〜600[cent]) ary(84):CAf LFO2 TVF DEPTH ($00〜$7F:0〜2400[cent]) ary(85):CAf LFO2 TVA DEPTH ($00〜$7F:0〜100.0[%]) ary(86):PAf PITCH CONTROL ($28〜$58:−24〜+24[semitone]) ary(87):PAf TVF CUTOFF CONTROL ($00〜$7F:−9600〜+9600[CENT]) ary(88):PAf AMPLITUDE CONTROL ($00〜$7F:−100.0〜+100.0[%]) ary(89):PAf LFO1 RATE CONTROL ($00〜$7F:−10.0〜+10.0[Hz]) ary(90):PAf LFO1 PITCH DEPTH ($00〜$7F:0〜600[cent]) ary(91):PAf LFO1 TVF DEPTH ($00〜$7F:0〜2400[cent]) ary(92):PAf LFO1 TVA DEPTH ($00〜$7F:0〜100.0[%]) ary(93):PAf LFO2 RATE CONTROL ($00〜$7F:−10.0〜+10.0[Hz]) ary(94):PAf LFO2 PITCH DEPTH ($00〜$7F:0〜600[cent]) ary(95):PAf LFO2 TVF DEPTH ($00〜$7F:0〜2400[cent]) ary(96):PAf LFO2 TVA DEPTH ($00〜$7F:0〜100.0[%]) ary(97):CC1 PITCH CONTROL ($28〜$58:−24〜+24[semitone]) ary(98):CC1 TVF CUTOFF CONTROL ($00〜$7F:−9600〜+9600[CENT]) ary(99):CC1 AMPLITUDE CONTROL ($00〜$7F:−100.0〜+100.0[%]) ary(100):CC1 LFO1 RATE CONTROL ($00〜$7F:−10.0〜+10.0[Hz]) ary(101):CC1 LFO1 PITCH DEPTH ($00〜$7F:0〜600[cent]) ary(102):CC1 LFO1 TVF DEPTH ($00〜$7F:0〜2400[cent]) ary(103):CC1 LFO1 TVA DEPTH ($00〜$7F:0〜100.0[%]) ary(104):CC1 LFO2 RATE CONTROL ($00〜$7F:−10.0〜+10.0[Hz]) ary(105):CC1 LFO2 PITCH DEPTH ($00〜$7F:0〜600[cent]) ary(106):CC1 LFO2 TVF DEPTH ($00〜$7F:0〜2400[cent]) ary(107):CC1 LFO2 TVA DEPTH ($00〜$7F:0〜100.0[%]) ary(108):CC2 PITCH CONTROL ($28〜$58:−24〜+24[semitone]) ary(109):CC2 TVF CUTOFF CONTROL ($00〜$7F:−9600〜+9600[CENT]) ary(110):CC2 AMPLITUDE CONTROL ($00〜$7F:−100.0〜+100.0[%]) ary(111):CC2 LFO1 RATE CONTROL ($00〜$7F:−10.0〜+10.0[Hz]) ary(112):CC2 LFO1 PITCH DEPTH ($00〜$7F:0〜600[cent]) ary(113):CC2 LFO1 TVF DEPTH ($00〜$7F:0〜2400[cent]) ary(114):CC2 LFO1 TVA DEPTH ($00〜$7F:0〜100.0[%]) ary(115):CC2 LFO2 RATE CONTROL ($00〜$7F:−10.0〜+10.0[Hz]) ary(116):CC2 LFO2 PITCH DEPTH ($00〜$7F:0〜600[cent]) ary(117):CC2 LFO2 TVF DEPTH ($00〜$7F:0〜2400[cent]) ary(118):CC2 LFO2 TVA DEPTH ($00〜$7F:0〜100.0[%]) (SC55のマニュアルP75,P79〜P80参照) -------------------------------------------------------------------------------- 関数名 sc55_drum_setup(mp,nt,ary,id) 機能 SC55のドラムパラメータ設定 引数 mp=マップナンバー(char:0〜1) nt=ノート番号(char:0〜127) ary=ドラムパラメータ(dim char ary(7)={dr1,…,dr8}) id=SC55のデバイスID(char) 戻り値 なし 備考 配列は必ず1次元、添え字は7以内で配列の内容全部がSC55へ送信される。 IDは省略可能。省略すると以前設定したものが選択される。最初の使用時に 省略した場合はドライバ内のデフォルト値が選択される。 ary(0):PLAY KEY NUMBER (0〜127) ary(1):LEVEL (0〜127) ary(2):ASSIGN GROUP NUMBER (0:NON,1〜127) ary(3):PANPOT (0:RANDOM,01(LEFT)〜64〜127(RIGHT)) ary(4):REVERB DEPTH (0〜127:0.0〜1.0) ary(5):CHORUS DEPTH (0〜127:0.0〜1.0) ary(6):Rx NOTE OFF (0〜1:OFF/ON) ary(7):Rx NOTE ON (0〜1:OFF/ON) (SC55マニュアルp75,p82参照) -------------------------------------------------------------------------------- 関数名 sc55_print(ms,id) 機能 SC55のディスプレイに文字列を表示する 引数 ms=文字列(str:32文字以内) id=SC55のデバイスID(char) 戻り値 なし 備考 IDは省略可能。省略すると以前設定したものが選択される。最初の使用時に 省略した場合はドライバ内のデフォルト値が選択される。 -------------------------------------------------------------------------------- 関数名 sc55_display(ary,id) 機能 SC55のディスプレイにドットパターン(16×16)を表示する 引数 ary=ドットパターンデータ(dim int a(15)={dt1,…,dt16}) id=SC55のデバイスID(char) 戻り値 なし 備考 配列は必ず1次元、int型で添え字は必ず15でなければならない。 IDは省略可能。省略すると以前設定したものが選択される。最初の使用時に 省略した場合はドライバ内のデフォルト値が選択される。 例    5 /*SC55の画面に"善"を表示する    10 dim int d(a5)={ %0001000000010000,    20 %0000100000100000,    30 %0111111111111100, 40 %0000000100000000, 50 %0011111111111000, 60 %0000000100000000, 70 %0111111111111100, 80 %0001000100010000, 90 %0000100100100000, 100 %1111111111111110, 110 %0000000000000000, 120 %0011111111111000, 130 %0010000000001000, 140 %0010000000001000, 150 %0011111111111000, 160 %0010000000001000} 170 sc55_display(d,&h10) -------------------------------------------------------------------------------- ●MT32/CM32L/(CM64/CM500のLAパート)専用命令 パラメータの意味などは楽器のマニュアルを参照のこと -------------------------------------------------------------------------------- 関数名 mt32_init(id) 機能 MT32の初期化を行なう 引数 id=MT32のデバイスID(char) 戻り値 なし 備考 IDは省略可能。省略すると以前設定したものが選択される。最初の使用時に 省略した場合はドライバ内のデフォルト値が選択される。 注意 MT32用の命令はCM32L/CM64/CM500にも使用できる。以下同様。 -------------------------------------------------------------------------------- 関数名 mt32_p_reserve(ary,id) 機能 MT32のパーシャルリザーブを行う 引数 ary=各パートのパーシャルリザーブ値(dim char ary(8)={pr1,…,pr9}) id=MT32のデバイスID(char) 戻り値 なし 備考 配列は必ず1次元、char型で添え字は必ず8でなければならない。 9番目のデータ(添え字で8番目)はリズムパートに相当する。 IDは省略可能。省略すると以前設定したものが選択される。最初の使用時に 省略した場合はドライバ内のデフォルト値が選択される。 -------------------------------------------------------------------------------- 関数名 mt32_reverb(ary,id) 機能 MT32のリバーブパラメータの設定 引数 ary=リバーブパラメータ(dim char ary(2)={pr1,pr2,pr3}) id=MT32のデバイスID(char) 戻り値 なし 備考 配列は必ず1次元、添え字は2以内で配列の内容全部がMT32へ送信される。 IDは省略可能。省略すると以前設定したものが選択される。最初の使用時に 省略した場合はドライバ内のデフォルト値が選択される。 ary(0):REVERB MODE (0:Room,1:Hall,2:Plate,3:Tap Delay) ary(1):REVERB TIME (0〜7) ary(2):REVERB LEVEL (0〜7) (MT32マニュアルp35,CM64マニュアルp30参照) -------------------------------------------------------------------------------- 関数名 mt32_part_setup(ary,id) 機能 MT32の各パートのMIDIチャンネルの設定 引数 ary=各パートのMIDIチャンネル値(1〜16,17:OFF) (dim char ary(8)={pr1,…,pr9}) id=MT32のデバイスID(char) 戻り値 なし 備考 配列は必ず1次元、添え字は8以内で配列の内容全部がMT32へ送信される。 9番目のデータ(添え字で8番目)はリズムパートに相当する。 IDは省略可能。省略すると以前設定したものが選択される。最初の使用時に 省略した場合はドライバ内のデフォルト値が選択される。 -------------------------------------------------------------------------------- 関数名 mt32_drum_setup(nt,ary,id) 機能 MT32のリズムパートの設定 引数 nt=設定を変更するリズムノートナンバー(char:24〜87) ary=リズムパートのセットアップパラメータ(dim char ary(3)={pr1,…,pr4}) id=MT32のデバイスID(char) 戻り値 なし 備考 配列は必ず1次元、添え字は3以内で配列の内容全部がMT32へ送信される。 IDは省略可能。省略すると以前設定したものが選択される。最初の使用時に 省略した場合はドライバ内のデフォルト値が選択される。 ary(0):TIMBRE (0〜63:i1〜64,64〜127:r1〜64) ary(1):OUTPUT LEVEL (0〜100) ary(2):PANPOT (0〜14) ary(3):REVERB SWITCH (0〜1:OFF/ON) (MT32マニュアルp35,CM64マニュアルp30参照) -------------------------------------------------------------------------------- 関数名 mt32_common(tm,nm,ary,id) 機能 MT32のティンバーコモンパラメータの設定 引数 tm=ティンバーの番号(char:1〜64) nm=ティンバーの名前(str:10文字以内) ary=コモンパラメータ(dim char ary(3)={pr1,…,pr4}) id=MT32のデバイスID(char) 戻り値 なし 備考 配列は必ず1次元、添え字は3以内で配列の内容全部がMT32へ送信される。 IDは省略可能。省略すると以前設定したものが選択される。最初の使用時に 省略した場合はドライバ内のデフォルト値が選択される。 ary(0):Structure of Partial#1&2 (0〜12:1〜13) ary(1):Structure of Partial#3&4 (0〜12:1〜13) ary(2):PARTIAL MUTE (0〜15) ary(3):ENV MODE (0〜1:NORMAL,NO SUSTAIN) (MT32マニュアルp34,CM64マニュアルp29参照) -------------------------------------------------------------------------------- 関数名 mt32_patch(pt,ary,id) 機能 MT32のパッチパラメータの設定 引数 pt=パッチ(program)番号(char:1〜128) ary=パッチパラメータ(dim char ary(6)={pr1,…,pr7}) id=MT32のデバイスID(char) 戻り値 なし 備考 配列は必ず1次元、添え字は6以内で配列の内容全部がMT32へ送信される。 IDは省略可能。省略すると以前設定したものが選択される。最初の使用時に 省略した場合はドライバ内のデフォルト値が選択される。 ary(0):TIMBRE GROUP (0〜3:a,b,i,r) ary(1):TIMBRE NUMBER (0〜63) ary(2):KEY SHIFT (0〜48:−24〜+24) ary(3):FINE TUNE (0〜100:−50〜+50) ary(4):BENDER RANGE (0〜24) ary(5):ASSIGN MODE (0〜3:POLY1〜4) ary(6):REVERB SWITCH (0〜1:OFF/ON)     (MT32マニュアルp35,CM64マニュアルp30参照) -------------------------------------------------------------------------------- 関数名 mt32_partial(tm,pt,ary,id) 機能 MT32の音色のパーシャル・パラメータの設定 引数 tm=ティンバーの番号(char:1〜64) pt=パーシャル番号(char:1〜4) ary=パッチパラメータ(dim char ary(57)={pr1,…,pr58}) id=MT32のデバイスID(char) 戻り値 なし 備考 配列は必ず1次元、添え字は57以内で配列の内容全部がMT32へ送信される。 IDは省略可能。省略すると以前設定したものが選択される。最初の使用時に 省略した場合はドライバ内のデフォルト値が選択される。 ary(0):WG PITCH COARSE (0〜96:C1,C#1,〜,C9) ary(1):WG PITCH FINE (0〜100:−50〜+50) ary(2):WG PITCH KEYFOLLOW (0〜16:−1,−1/2,−1/4,0,1/8,1/4, 3/8,1/2,5/8,3/4,7/8,1, 5/4,3/2,2,s1,s2) ary(3):WG PITCH BENDER SW (0〜1:OFF/ON) ary(4):WG WAVEFORM/PCM BANK (0〜3:SQU1,SAW1,SQU2,SAW2) ary(5):WG PCM WAVE (0〜127:1〜128) ary(6):WG PULSE WIDTH (0〜100) ary(7):WG PW VELO SENS (0〜14:−7〜+7) ary(8):P-ENV DEPTH (0〜10) ary(9):P-ENV VELO SENS (0〜3) ary(10):P-ENV TIME KEYF (0〜4) ary(11):P-ENV TIME 1 (0〜100) ary(12):P-ENV TIME 2 (0〜100) ary(13):P-ENV TIME 3 (0〜100) ary(14):P-ENV TIME 4 (0〜100) ary(15):P-ENV LEVEL 0 (0〜100:−50〜+50) ary(16):P-ENV LEVEL 1 (0〜100:−50〜+50)) ary(17):P-ENV LEVEL 2 (0〜100:−50〜+50) ary(18):P-ENV SUSTAIN LEVEL (0〜100:−50〜+50) ary(19):END LEVEL (0〜100:−50〜+50) ary(20):P-LFO RATE (0〜100) ary(21):P-LFO DEPTH (0〜100) ary(22):P-LFO MOD SENS (0〜100) ary(23):TVF CUTOFF FREQ (0〜100) ary(24):TVF RESONANCE (0〜30) ary(25):TVF KEYFOLLOW (0〜14:−1,−1/2,−1/4,0,1/8,1/4, 3/8,1/2,5/8,3/4,7/8,1, 5/4,3/2,2) ary(26):TVF BIAS POINT/DIR (0〜127) ary(27):TVF BIAS LEVEL (0〜14:−7〜+7) ary(28):TVF ENV DEPTH (0〜100) ary(29):TVF ENV VELO SENS (0〜100) ary(30):TVF ENV DEPTH KEYF (0〜4) ary(31):TVF ENV TIME KEYF (0〜4) ary(32):TVF ENV TIME 1 (0〜100) ary(33):TVF ENV TIME 2 (0〜100) ary(34):TVF ENV TIME 3 (0〜100) ary(35):TVF ENV TIME 4 (0〜100) ary(36):TVF ENV TIME 5 (0〜100) ary(37):TVF ENV LEVEL 1 (0〜100) ary(38):TVF ENV LEVEL 2 (0〜100) ary(39):TVF ENV LEVEL 3 (0〜100) ary(40):TVF ENV SUSTAIN LEVEL (0〜100) ary(41):TVA LEVEL (0〜100) ary(42):TVA VELO SENS (0〜100:−50〜+50 ary(43):TVA BIAS POINT 1 (0〜127) ary(44):TVA BIAS LEVEL 1 (0〜12:−12〜0) ary(45):TVA BIAS POINT 2 (0〜127) ary(46):TVA BIAS LEVEL 2 (0〜12:−12〜0) ary(47):TVA ENV TIME KEYF (0〜4) ary(48):TVA ENV TIME V_FOLLOW (0〜4) ary(49):TVA ENV TIME 1 (0〜100) ary(50):TVA ENV TIME 2 (0〜100) ary(51):TVA ENV TIME 3 (0〜100) ary(52):TVA ENV TIME 4 (0〜100) ary(53):TVA ENV TIME 5 (0〜100) ary(54):TVA ENV LEVEL 1 (0〜100) ary(55):TVA ENV LEVEL 2 (0〜100) ary(56):TVA ENV LEVEL 3 (0〜100) ary(57):TVA ENV SUSTAIN LEVEL (0〜100) (MT32マニュアルp34,CM64マニュアルp29参照) -------------------------------------------------------------------------------- 関数名 mt32_print(ms,id) 機能 MT32のコンソールに文字列を表示する 引数 ms=文字列(str:20文字以内) id=MT32のデバイスID(char) 戻り値 なし 備考 IDは省略可能。省略すると以前設定したものが選択される。最初の使用時に 省略した場合はドライバ内のデフォルト値が選択される。 -------------------------------------------------------------------------------- ●U220/U20専用命令 パラメータの意味などは楽器のマニュアルを参照のこと -------------------------------------------------------------------------------- 関数名 u220_setup(ary,id) 機能 U220のセットアップパラメータの設定 引数 ary=パラメータ(dim char ary(6)={pr1,…,pr7}) id=U220のデバイスID(char) 戻り値 なし 備考 配列は必ず1次元、char型で添え字は必ず6でなければならない。 IDは省略可能。省略すると以前設定したものが選択される。最初の使用時に 省略した場合はドライバ内のデフォルト値が選択される。 ary(0):Chorus SW (0〜1:OFF/ON) ary(1):Reverb SW (0〜1:OFF/ON) ary(2):Rx Cntrl Channel (1〜17:1〜16,OFF) ary(3):Patch Change (0〜5:MAP1〜MAP4,Dir,OFF) ary(4):Timbre Change (0〜5:MAP1〜MAP4,Dir,OFF) ary(5):Rhythm Change (0〜5:MAP1〜MAP4,Dir,OFF) ary(6):R.Inst Assign (0〜5:MAP1〜MAP4,Dir,OFF)     (U220マニュアルp46,p146〜148参照) 注意 U220用の命令はU20に対しても使用できる。以下同様。 -------------------------------------------------------------------------------- 関数名 u220_part_setup(pt,ary,id) 機能 U220のテンポラリ・パート・セットアップパラメータの設定 引数 pt=パート番号(char:1〜6) ary=パラメータ(dim char ary(12)={pr1,…,pr13}) id=U220のデバイスID(char) 戻り値 なし 備考 配列は必ず1次元、char型で添え字は必ず12でなければならない。 IDは省略可能。省略すると以前設定したものが選択される。最初の使用時に 省略した場合はドライバ内のデフォルト値が選択される。 ary(0):Timbre Number (1〜128) ary(1):Voice Reserve (0〜30) ary(2):Receive Channel (1〜17:1〜16,OFF) ary(3):Key Range Low (0〜127:C-1〜G9) ary(4):Key Range High (0〜127:C-1〜G9) ary(5):Velo Level (0〜1:Above/Below) ary(6):Velo Threshold (0〜127) ary(7):Output Assign (0〜4:Dry,Rev,Cho,Dir1,Dir2) ary(8):Level (0〜127) ary(9):Pan (0〜15:L7〜M〜R7) ary(10):Rx Volume (0〜1:OFF/ON) ary(11):Rx Pan (0〜1:OFF/ON) ary(12):Rx Hold (0〜1:OFF/ON) (U220マニュアルp58,p149参照) -------------------------------------------------------------------------------- 関数名 u220_common(ary,id) 機能 U220のテンポラリパッチ・コモンパラメータの設定 引数 ary=パラメータ(dim char ary(17)={pr1,…,pr18}) id=U220のデバイスID(char) 戻り値 なし 備考 配列は必ず1次元、char型で添え字は必ず17でなければならない。 IDは省略可能。省略すると以前設定したものが選択される。最初の使用時に 省略した場合はドライバ内のデフォルト値が選択される。 ary(0):Chorus Type (0〜4:Chorus1,Chorus2,FB-Chorus, Flanger,Short Delay) ary(1):Chorus Out Mode (0〜1:Pre Rev,Post Rev) ary(2):Chorus Level (0〜31) ary(3):Chorus Delay (0〜31) ary(4):Chorus Rate (0〜31) ary(5):Chorus Depth (0〜31) ary(6):Chorus Feedback (1〜63:−31〜0〜+31) ary(7):Reverb Type (0〜7:Room1〜3,Hall1〜2,Gate Delay,CrossDelay) ary(8):Reverb Time (0〜31) ary(9):Reverb Level (0〜31) ary(10):Reverb Delay Feedback (0〜31) ary(11):Reverb Pre Delay Feedback (0〜31) ary(12):Param1 # (0〜63:0〜5,7〜31,64〜95,OFF) ary(13):Param1 Param (0:Timbre Level,1:Env Attack 2:Env Decay,3:Env Sustain 4:Env Release,5:A.Bend Depth 6:A.Bend Rate,7:Detune Depth 8:Vib Rate,9:Vib Wave Form 10:Vib Depth,11:Vib Delay 12:Vib Rise Time,13:Vib Mod Depth 14:Chorus Level,15:Chorus Rate 16:Chorus Feedback,17:Reverb Level 18:Delay Feedback) ary(14):Param2 # (Same as Param1 #) ary(15):Param2 Param (Same as Param1 Param) ary(16):Param3 # (Same as Param1 #) ary(17):Param3 Param (Same as Param1 Param) (U220マニュアルp54,p149参照) -------------------------------------------------------------------------------- 関数名 u220_timbre(tm,name,ary,id) 機能 U220のティンバーパラメータの設定 引数 tm=ティンバー番号(char:1〜128) name=ティンバーの名前(str:12文字以内) ary=パラメータ(dim char ary(25)={pr1,…,pr26}) id=U220のデバイスID(char) 戻り値 なし 備考 配列は必ず1次元、char型で添え字は必ず25でなければならない。 IDは省略可能。省略すると以前設定したものが選択される。最初の使用時に 省略した場合はドライバ内のデフォルト値が選択される。 ary(0):Tone Media (0〜31:I,1〜31) ary(1):Tone Number (1〜128) ary(2):Timbre Level (0〜127) ary(3):Velocity Sens (1〜15:−7〜+7) ary(4):Channel Press Sens (1〜15:−7〜+7) ary(5):Env Attack Rate (1〜15:−7〜+7) ary(6):Env Decay Rate (1〜15:−7〜+7) ary(7):Env Sustain Level (1〜15:−7〜+7) ary(8):Env Release Rate (1〜15:−7〜+7) ary(9):Pitch Shift Coarse (8〜56:−24〜+24) ary(10):Pitch Shift Fine (14〜114:−50〜+50) ary(11):Bend Range Lower (0〜15:−36,−24,−12〜0) ary(12):Bend Range Upper (0〜12) ary(13):Channel After Sens (0〜27:−36,−24,−12〜+12) ary(14):Poly After Sens (0〜27:−36,−24,−12〜+12) ary(15):Auto Bend Depth (0〜27:−36,−24,−12〜+12) ary(16):Auto Bend Rate (0〜15) ary(17):Detune Depth (0〜15) ary(18):Rate (0〜63) ary(19):Waveform (0〜8) ary(20):Depth (0〜15) ary(21):Delay (0〜15) ary(22):Rise Time (0〜15) ary(23):Modulation Depth (0〜15) ary(24):Ch After Sens (0〜15) ary(25):Poly After Sens (0〜15) (U220マニュアルp65,p149参照) -------------------------------------------------------------------------------- 関数名 u220_drum_setup(ary,id) 機能 U220のテンポラリ・ドラム・セットアップパラメータの設定 引数 ary=パラメータ(dim char ary(6)={pr1,…,pr7}) id=U220のデバイスID(char) 戻り値 なし 備考 配列は必ず1次元、char型で添え字は必ず6でなければならない。 IDは省略可能。省略すると以前設定したものが選択される。最初の使用時に 省略した場合はドライバ内のデフォルト値が選択される。 ary(0):Rhythm Setup # (0〜3:1〜4) ary(1):Voice Reserve (0〜30) ary(2):Receive Channel (1〜17:1〜16,OFF) ary(3):Level (0〜127) ary(4):Level Boost Sw (0〜1:OFF/ON) ary(5):Rx Volume (0〜1:OFF/ON) ary(6):Rx Hold (0〜1:OFF/ON) (U220マニュアルp63,p149参照) -------------------------------------------------------------------------------- 関数名 u220_drum_inst(nt,ary,id) 機能 U220のドラムインストパラメータの設定 引数 nt=ノートナンバー(char:35〜99) ary=パラメータ(dim char ary(19)={pr1,…,pr20}) id=U220のデバイスID(char) 戻り値 なし 備考 配列は必ず1次元、添え字は19以内で配列の内容全部がU220へ送信される。 IDは省略可能。省略すると以前設定したものが選択される。最初の使用時に 省略した場合はドライバ内のデフォルト値が選択される。 ary(0):Tone Media (0〜31:I,1〜31) ary(1):Tone Number (0〜127:1〜128) ary(2):Source Key (0〜127:C−1〜G9) ary(3):Mute Inst (34〜98:OFF,B1〜D7) ary(4):Inst Level (0〜31) ary(5):Velocity Sens (0〜15) ary(6):Env Mode (0〜1:Sustain,No Sustain) ary(7):Env Attack Rate (1〜15:−7〜+7) ary(8):Env Decay Rate (1〜15:−7〜+7) ary(9):Env Release Rate (1〜15:−7〜+7) ary(10):Pitch Shift Coarse (0〜27:−36,−24,−12〜+12) ary(11):Pitch Shift Fine (14〜114:−50〜+50) ary(12):Channel After Sens (0〜27:−36,−24,−12〜+12) ary(13):Poly After Sens (0〜27:−36,−24,−12〜+12) ary(14):Random (0〜15) ary(15):Auto Bend Depth (0〜27:−36,−24,−12〜+12) ary(16):Auto Bend Rate (0〜15) ary(17):Detune Depth (0〜15) ary(18):Output Assign (0〜3:Dry,Rev,Cho,Dir1) ary(19):Pan (0〜15:L7〜M〜R7) (U220マニュアルp72,p149) -------------------------------------------------------------------------------- 関数名 u220_print(ms,id) 機能 U220のコンソールに文字列を表示する 引数 ms=文字列(str:12文字以内) id=U220のデバイスID(char) 戻り値 なし 備考 IDは省略可能。省略すると以前設定したものが選択される。最初の使用時に 省略した場合はドライバ内のデフォルト値が選択される。 -------------------------------------------------------------------------------- ●M1/M1EX/M1R/M1REX専用命令 パラメータの意味などは楽器のマニュアルを参照のこと -------------------------------------------------------------------------------- 関数名 m1_midi_ch(ary) (注2) 機能 M1のシーケンサのSONG0の各トラックのMIDIチャンネルを設定する 引数 ary=各パートのチャンネル値(1〜16,17:OFF) (dim char ary(7)={ch1,…,ch8}) 戻り値 なし 備考 配列は必ず1次元、char型で添え字は必ず7でなければならない。 注意 M1用の命令はM1EX/M1R/M1REXに対しても使用できる。以下同様。 -------------------------------------------------------------------------------- 関数名 m1_part_setup(ary) (注2) 機能 M1のシーケンサのSONG0の各トラックのパラメータを設定する 引数 ary=各パートのパラメータ(dim char ary(39)={pr1,…,pr40}) 戻り値 なし 備考 配列は必ず1次元、char型で添え字は必ず39でなければならない。 TRACK 1 ary(0):PROGRAM NUMBER (0〜199:I00〜C99) ary(1):OUTPUT LEVEL (0〜99) ary(2):KEY TRANSPOSE ($F4〜$0C:−12〜12) ary(3):DETUNE ($CE〜$32:−50〜+50) ary(4):PAN (0〜13:10:0〜0:10,C,C+D,D) TRACK 2〜8 以下同様     (M1マニュアルp126参照) -------------------------------------------------------------------------------- 関数名 m1_effect_setup(ary) (注2) 機能 M1のシーケンサのSONG0のエフェクトパラメータを設定する 引数 ary=エフェクトパラメータ(dim char ary(24)={pr1,…,pr25}) 戻り値 なし 備考 配列は必ず1次元、char型で添え字は必ず24でなければならない。 ary(0):Effect 1 Pattern No. (0〜33:1〜32,Thru) ary(1):Effect 2 Pattern No. (0〜33:1〜32,Thru) ary(2):Effect 1 L-Ch E.Balnc (0〜100) ary(3):Effect 1 R-Ch E.Balnc (0〜100) ary(4):Effect 2 L-Ch E.Balnc (0〜100) ary(5):Effect 2 R-Ch E.Balnc (0〜100) ary(6):Output 3 Pan (0〜101:OFF,100:0〜0:100) ary(7):Output 4 Pan (0〜101:OFF,100:0〜0:100) ary(8):Effect I/O (BIT0:Effect 1 L-Ch 0=OFF/1=ON BIT1:Effect 1 R-Ch 0=OFF/1=ON BIT2:Effect 2 L-Ch 0=OFF/1=ON BIT3:Effect 2 R-Ch 0=OFF/1=ON) BIT4:Effect 2 0=PARALLEL/1=SERIAL) ary(9〜16):Effect 1 Parameter ary(17〜24):Effect 2 Parameter Structure of Effect Parameter (ofs=9 or 17) 1〜3:Hall (4,5:Room,6:Live Stage) ary(ofs+0):Reverb Time (0〜97:0.2〜9.9),(0〜48:0.2〜5.0) ary(ofs+1):Dummy 0 ary(ofs+2):High Damp (0〜99) ary(ofs+3):Pre Delay (0〜200) ary(ofs+4):E/R Level (0〜99) ary(ofs+5):Dummy 0 ary(ofs+6):EQ High ($F4〜$0C:−12〜+12) ary(ofs+7):EQ Low ($F4〜$0C:−12〜+12) 7〜9:Early Reflection 1,2,3 ary(ofs+0):E/R Time (0〜70:100〜800) ary(ofs+1):Pre Delay (0〜200) ary(ofs+2):Dummy 0 : : ary(ofs+5):Dummy 0 ary(ofs+6):EQ High ($F4〜$0C:−12〜+12) ary(ofs+7):EQ Low ($F4〜$0C:−12〜+12) 10:Stereo Delayt,11:Cross Delay ary(ofs+0):Delay Time L (L) (0〜500) ary(ofs+1):Delay Time L (H) ary(ofs+2):Feedback ($9D〜$63:−99〜99) ary(ofs+3):High Damp (0〜99) ary(ofs+4):Delay Time R (L) (0〜500) ary(ofs+5):Delay Time R (H) ary(ofs+6):EQ High ($F4〜$0C:−12〜+12) ary(ofs+7):EQ Low ($F4〜$0C:−12〜+12) 12〜13:Stereo Chorus 1〜2 (14〜15:Flanger) ary(ofs+0):Depth (0〜99) ary(ofs+1):Speed (0〜99:0.03〜3.00 0.03step 100〜199:3.1〜13.0 0.1step 200〜216:14.0〜30.0 1.0step) ary(ofs+2):LFO Status (BIT0:Waveform =0:Sin,=1:Tri BIT1:Phase =0:0.0゚,=1:180゚ BIT2:Wave Shape =0:Normal =1:for Flanger) ary(ofs+3):Feedback ($9D〜$63:−99〜+99) ary(ofs+4):Delay Time (0〜200),(0〜50) ary(ofs+5):Dummy 0 ary(ofs+6):EQ High ($F4〜$0C:−12〜+12) ary(ofs+7):EQ Low ($F4〜$0C:−12〜+12) 16〜17:Phase Shifter 1〜2 ary(ofs+0):Depth (0〜99) ary(ofs+1):Speed (0〜99:0.03〜3.00 0.03step 100〜199:3.1〜13.0 0.1step 200〜216:14.0〜30.0 1.0step) ary(ofs+2):LFO Status (BIT0:Waveform =0:Sin,=1:Tri BIT1:Phase =0:0.0゚,=1:180゚ BIT2:Wave Shape =0:Normal =1:for Flanger) ary(ofs+3):Feedback ($9D〜$63:−99〜+99) ary(ofs+4):Manual (0〜99) ary(ofs+5):Dummy 0 ary(ofs+6):Dummy 0 ary(ofs+7):Dummy 0 18〜19:Stereo Toremolo 1〜2 ary(ofs+0):Depth (0〜99) ary(ofs+1):Speed (0〜99:0.03〜3.00 0.03step 100〜199:3.1〜13.0 0.1step 200〜216:14.0〜30.0 1.0step) ary(ofs+2):LFO Status (BIT0:Waveform =0:Sin,=1:Tri BIT1:Phase =0:0.0゚,=1:180゚ BIT2:Wave Shape =0:Normal =1:for Flanger) ary(ofs+3):Shape ($9D〜$63:−99〜+99) ary(ofs+4):Dummy 0 ary(ofs+5):Dummy 0 ary(ofs+6):EQ High ($F4〜$0C:−12〜+12) ary(ofs+7):EQ Low ($F4〜$0C:−12〜+12) 20:Equalizer ary(ofs+0):Dummy 0 : : ary(ofs+3):Dummy 0 ary(ofs+4):Low fc (0〜2:0.25k,0.50k,1.00k) ary(ofs+5):High fc (0〜2:1k,2k,4k) ary(ofs+6):High Gain ($F4〜$0C:−12〜+12) ary(ofs+7):Low Gain ($F4〜$0C:−12〜+12) 21:Overdrive ary(ofs+0):Dummy 0 ary(ofs+1):Dummy 0 ary(ofs+2):Drive (0〜99) ary(ofs+3):Level (0〜99) ary(ofs+4):Dummy 0 ary(ofs+5):Dummy 0 ary(ofs+6):EQ High ($F4〜$0C:−12〜+12) ary(ofs+7):EQ Low ($F4〜$0C:−12〜+12) 22:Distortion ary(ofs+0):Dummy 0 ary(ofs+1):Dummy 0 ary(ofs+2):Distortion (0〜99) ary(ofs+3):Level (0〜99) ary(ofs+4):Dummy 0 ary(ofs+5):Dummy 0 ary(ofs+6):Dummy 0 ary(ofs+7):EQ Low Gain ($F4〜$0C:−12〜+12) 23:Exciter ary(ofs+0):Blend ($9D〜$63:−99〜+99) ary(ofs+1):Emphatic Point (0〜9:1〜10) ary(ofs+2):Dummy 0 : : ary(ofs+5):Dummy 0 ary(ofs+6):EQ High ($F4〜$0C:−12〜+12) ary(ofs+7):EQ Low ($F4〜$0C:−12〜+12) 24:Synphonic Ensamble ary(ofs+0):Depth (0〜99) ary(ofs+1):Dummy 0 : : ary(ofs+5):Dummy 0 ary(ofs+6):EQ High ($F4〜$0C:−12〜+12) ary(ofs+7):EQ Low ($F4〜$0C:−12〜+12) 25:Rotary Speaker ary(ofs+0):Depth (0〜99) ary(ofs+1):Dummy 0 ary(ofs+2):Speed Rate ($F6〜$0A:−10〜+10) ary(ofs+3):Dummy 0 : : ary(ofs+7):Dummy 0 26:Delay/Hall ary(ofs+0):Delay Time (L) (0〜500) ary(ofs+1):Delay Time (H) ary(ofs+2):Feedback ($9D〜$63:−99〜99) ary(ofs+3):High Damp (0〜99) ary(ofs+4):Reverb Time (0〜97:0.2〜9.9) ary(ofs+5):Dummy 0 ary(ofs+6):High Damp (0〜99) ary(ofs+7):Pre Delay (0〜150) 27:Delay/Room ary(ofs+0):Delay Time (L) (0〜500) ary(ofs+1):Delay Time (H) ary(ofs+2):Feedback ($9D〜$63:−99〜99) ary(ofs+3):High Damp (0〜99) ary(ofs+4):Reverb Time (0〜97:0.2〜9.9) ary(ofs+5):Dummy 0 ary(ofs+6):High Damp (0〜99) ary(ofs+7):Pre Delay (0〜150) 28:Delay/Early Reflection ary(ofs+0):Delay Time (L) (0〜500) ary(ofs+1):Delay Time (H) ary(ofs+2):Feedback ($9D〜$63:−99〜99) ary(ofs+3):High Damp (0〜99) ary(ofs+4):E/R Time (0〜30:100〜400) ary(ofs+5):Pre Delay (0〜150) ary(ofs+6):Dummy 0 ary(ofs+7):Dummy 0 29:Delay/Chorus ary(ofs+0):Delay Time L (L) (0〜500) ary(ofs+1):Delay Time L (H) ary(ofs+2):Feedback L ($9D〜$63:−99〜99) ary(ofs+3):High Damp L (0〜99) ary(ofs+4):Delay Time R (L) (0〜500) ary(ofs+5):Delay Time R (H) ary(ofs+6):Feedback R ($9D〜$63:−99〜99) ary(ofs+7):High Damp R (0〜99) 30:Delay/Chorus (31:Delay Flanger) ary(ofs+0):Delay Time (L) (0〜500) ary(ofs+1):Delay Time (H) ary(ofs+2):Feedback ($9D〜$63:−99〜99) ary(ofs+3):High Damp (0〜99) ary(ofs+4):Depth (0〜99) ary(ofs+5):Speed (0〜99:0.03〜3.00 0.03step 100〜199:3.1〜13.0 0.1step 200〜216:14.0〜30.0 1.0step) ary(ofs+6):LFO Status (BIT0:Waveform =0:Sin,=1:Tri BIT1:Phase =0:0.0゚,=1:180゚ BIT2:Wave Shape =0:Normal =1:for Flanger) ary(ofs+7):Feedback 0,($9D〜$63:−99〜99) 32:Delay/Phaser ary(ofs+0):Delay Time (L) (0〜500) ary(ofs+1):Delay Time (H) ary(ofs+2):Feedback ($9D〜$63:−99〜99) ary(ofs+3):High Damp (0〜99) ary(ofs+4):Depth (0〜99) ary(ofs+5):Speed (0〜99:0.03〜3.00 0.03step ary(ofs+6):Feedback ($9D〜$63:−99〜99) ary(ofs+7):Dummy 0 33:Delay/Tremolo ary(ofs+0):Delay Time (L) (0〜500) ary(ofs+1):Delay Time (H) ary(ofs+2):Feedback ($9D〜$63:−99〜99) ary(ofs+3):High Damp (0〜99) ary(ofs+4):Depth (0〜99) ary(ofs+5):Speed (0〜99:0.03〜3.00 0.03step ary(ofs+6):Dummy 0 ary(ofs+7):Shape ($9D〜$63:−99〜99) (M1マニュアルp127参照) -------------------------------------------------------------------------------- 関数名 m1_print(ms) (注2) 機能 M1のシーケンサのSONG0の名前を設定する 引数 ms=文字列(str:10文字以内) 戻り値 なし -------------------------------------------------------------------------------- 関数名 send_to_m1(id) (注2) 機能 'm1_midi_ch()'〜'm1_print()'までの設定値をM1へ送信する 引数 id=MIDIのデバイスID値(char:&h30〜&h3f) 戻り値 なし 備考 デバイスID=&H30+(グローバルチャンネル−1) グローバルチャンネルとはGLOBALモードのF5−1で設定出来る。 IDは省略可能。省略すると以前設定したものが選択される。最初の使用時に 省略した場合はドライバ内のデフォルト値が選択される。 必ず'm1_midi_ch()'〜'm1_print()'を設定してからこの命令を実行すること。 'm1_effect_setup'のみ省略が可能。この時はドライバのデフォルトデータが 送信される。 'm1_midi_ch()'〜'm1_print()'の間にM1関係以外のコマンドがあると正常なデータが 送信されないので注意すること。 例 10 dim char a(7)={2,1,4,3,6,5,8,7} 20 m1_midi_ch(a) 25 /*音色,音量,キートランスポーズ,デチューン,パンのフォーマット 30 dim char b(39)={ 0,99,0,0,5, /*TRACK 1 40 0,99,0,0,5, /*TRACK 2 50 0,99,0,0,5, /*TRACK 3 60 0,99,0,0,5, /*TRACK 4 70 0,99,0,0,5, /*TRACK 5 80 0,99,0,0,5, /*TRACK 6 90 0,99,0,0,5, /*TRACK 7 100 0,99,0,0,5} /*TRACK 8 110 m1_part_setup(b) 120 dim char c(24)={&H21,&H21} 130 m1_effect_setup(c) 140 m1_print("Zenji.N") 150 send_to_m1(&H30) -------------------------------------------------------------------------------- ●その他 -------------------------------------------------------------------------------- 関数名 m_wave_form(wv,lt,lp,ary) 機能 波形メモリの登録 引数 wv=登録先波形番号(char:8〜31) lt=ループタイプ(char:0〜2) lp=ループポイント(int:0〜65535) ary=波形データ(dim int ary(0〜65535)={.....}) 戻り値 なし 備考 波形番号8〜31に登録できる(波形番号0〜7はプリセット波形などが 設定されておりリザーブ)。 ループタイプとは波形を最後まで処理終えたあと、どうループさせるかを 設定するもの。 0 → ワンショット (波形を一度実行したら最後の値を継続する) 1 →→→→.... リピート (波形の終点までいったならば ループポイントに戻る) 2 →←→←.... オルタニティヴ (波形のループポイントから終点まで 交互に反復する) ループポイントは0〜65535までが有効。これは何番目のデータを ループポイントに設定するかを決めるパラメータで省略すると ループポイントは0、すなわちデータの先頭がループポイントと見なされる。 波形データは符号付き16ビット整数で構成する。 (−32768〜+32767($8000〜$7fff))データの個数は65535個まで。 それ以上は設定できない。 波形メモリの具体的な使用方法についてはMEASURE5参照。 -------------------------------------------------------------------------------- 関数名 fm_master(v) 機能 FM音源のトラックのマスターボリューム 引数 v:ボリューム値(char:0最小〜255最大) 戻り値 なし 備考 コンパイル時や中間言語変換時にのみ有効なコマンドなので演奏中に 指定しても無意味。用途としてはADPCM、MIDI楽器との 最終的な音量バランスを決定するときなど。通常は演奏データよりも先に 書くと良いだろう。'm_init()'でデフォルトとして255が設定される。 増減は線形的でなく指数関数的であるので注意のこと。 -------------------------------------------------------------------------------- 関数名 m_print(ms) 機能 単なる文字表示 引数 ms=文字列(str:96文字以内) 戻り値 なし -------------------------------------------------------------------------------- 関数名 zmd_play(fn) 機能 コンパイルされたデータの演奏 引数 fn=ファイル名(str) 戻り値 なし 備考 拡張子を省略した場合は自動的に'.ZMD'を付け足す。 fnがカレントより 見つからない場合は環境変数'zmusic'のパスを参照する。 -------------------------------------------------------------------------------- 関数名 m_pcmplay(nt,pn,fr) 機能 登録してあるノート番号ntのADPCM音を鳴らす 引数 nt=ノート番号(int:0〜511) pn=パンポット(char:0〜3) fr=再生周波数(char:0〜4) 戻り値 なし 備考 fr: 0= 3.9kHz 1= 5.2kHz 2= 7.8kHz 3=10.4kHz 4=15.6kHz 例 m_pcmplay(10,3,4) -------------------------------------------------------------------------------- 関数名 m_switch(sw,fn) 機能 ZMSファイル(OPMファイル)のジェネレートスイッチ 引数 sw=スイッチ(char:0=off,1=on) fn=ファイルネーム(str) 戻り値 なし 備考 fnを省略するとデフォルトファイルネームとして 'ZMUSIC.OPM'がカレントに作成される。 なお本命令はステートメントでなくコマンドであるため プログラム中に書くことは出来ない。書いた場合はエラーとなる。 -------------------------------------------------------------------------------- 関数名 zm_ver() 機能 ZMUSICとPCM8.Xの常駐チェック 引数 なし 戻り値: 上位16ビット=0 PCM8は常駐していない 上位16ビット=-1 PCM8が常駐している 下位16ビット=0 ZMUSICは常駐していない 下位16ビット≠0 ZMUSICが常駐している 備考 ZMUSICが常駐している場合はそのバージョンIDを返す。 上位バイト バージョン整数部, バージョン少数第1桁 下位バイト 対応バージョンコード, バージョン少数第2桁 対応バージョンコード UNIVERSAL VERSION 0 16bit VERSION 1 RS-MIDI VERSION 2 POLYPHON VERSION 3 例 ポリフォン・バージョン1.49 → バージョンID=$1439 -------------------------------------------------------------------------------- 関数名 exec_zms(zms) 機能 ZMSコマンドの実行 引数 zms=ZMSコマンド文字列(str) 戻り値 なし -------------------------------------------------------------------------------- 関数名 adpcm_to_pcm(adpcm_data_buffer,size,pcm_data_buffer) 機能 ADPCMデータを符号つき16ビットPCMデータへ変換する 引数 adpcm_data_buffer:入力ADPCMデータ格納バッファ(dim char ary(0〜65535)) size:入力ADPCMデータの個数(int:0〜65535) pcm_data_buffer:出力PCMデータ格納用バッファ(dim int ary(0〜65535)) 戻り値 なし 備考 出力PCMデータ格納用配列のサイズは入力ADPCMデータ格納配列のサイズの 2倍は必要。 -------------------------------------------------------------------------------- 関数名 pcm_to_adpcm(pcm_data_buffer,size,adpcm_data_buffer) 機能 符号つき16ビットPCMデータをADPCMデータへ変換する 引数 pcm_data_buffer:入力PCMデータ格納バッファ(dim int ary(0〜65535)) size:入力PCMデータの個数(int:0〜65535) adpcm_data_buffer:出力ADPCMデータ格納用バッファ(dim int ary(0〜65535)) 戻り値 なし 備考 出力ADPCMデータ格納用配列のサイズは入力PCMデータ格納配列のサイズの 半分以上必要。 -------------------------------------------------------------------------------- (注1)チャンネル番号は'm_ch()'コマンドで対応するデバイスが変動する。 'm_ch()'コマンドの項を参照。 (注2)M1専用命令は途中でM1関係以外の命令が入ると正常なデータが 楽器側へ送信されないので注意。