SYXPLAY SYXをMIDI入出力する

書法

SYXPLAY {TSEXPR式;}+ [param]* [options]*

SHELLMODE

@記述、!記述、^記述、#記述

詳細

TSEXPR式をバイナリとして評価し、標準出力する。式の中でSYXをMIDI入出力できる。戻り値は、式のバイナリの値を連ねたもの。

第一パラメータにはバイナリ値を返すTSPEXPR式を「;」で区切り、複数書くことが出来る。式の値を順に標準出力する。

式の結果を出力しない指定ができる(-X)。この場合は、式が返す値の型は任意である。??outへ代入による出力は有効である。

パラメータ

第二パラメータ以降にパラメータを書くことが出来る。これらは、TSEXPRのアプリケーションインタフェースを通じて式中で使用できる。

MIDIデバイスの取り扱い

デフォルトではMIDIデバイスは使用できなくなっている。MIDI入力はオプション(-I)に入力ポート名を指定することで使用できるようになる。MIDI出力はオプション(-E)に出力ポート名を指定することで使用できるようになる。

使用できるMIDIポート名は、midiport.exeで取得することができる。

アプリケーション・インタフェース

No略記変数表記説明
n@n指定位置(1~)のパラメータ
0&0??argcパラメータの数
??syx 引用するとMIDI入力からSYXを一つ読み込み、バイナリの値を返す。このとき、タイムアウトすると論理値FALSEを返す。
オプション(-Z)でタイムアウト時に長さ0のバイナリを返すようにできる。
バイナリを代入するとMIDI出力する。データはそのまま出力するので、通常は、バイナリデータの先頭に0XF0、最後に0XF7を記述する必要がある。
??msyx 引用するとMIDI入力からSYXを連続して読み込み、バイナリの値を返す。
タイムアウトするまで入力を待ち続けるのでタイムアウト時間は短めに設定すると良い。
SYXがない場合には長さ0のバイナリを返す。
??nsyx 引用するとMIDI入力からSYXを既定の個数だけ読み込み、バイナリの値を返す。
タイムアウトするまで指定個数の入力が無かった場合には、論理値 FALSE を返す。
個数は??syxcountに代入することで指定する。
??syxcount 代入して??nsyxが返すsyxの個数を指定する。
??msg バイナリ値を代入するとそれをチャンネルメッセージとして出力する。チャンネルメッセージとして過不足なく正しく記述すること。現在は、その内容を検査しないので誤った場合の動作は保証しない。
??clear 引用するとMIDI入力バッファをクリアする。論理値を返却する。
??ovf 引用するとMIDI入力のオーバーラン・フラグを論理値で返却する。
??timeout 引用すると現在のMIDI入力のタイムアウト値をmS単位で返却する。
整数値を代入すしてタイムアウト値を設定できる。
??devno 引用すると、オプション(-D)で指定したデバイスIDを返却する。
??out バイナリ値を代入するとそれを標準出力する。

OPTION

-Dnumber
デバイスIDを整数で指定する。式中でこの値を引用できる。
数値の先頭に「$」を書くと16進数で指定できる。
-E[portname]
MIDI出力するポートの名称を指定する。MIDI出力が使えるようになる。
ここで指定するポート名は、MIDIPORTで見ることができる。
ポートを省略すると環境変数 QS_MIDI_OUT で指定したポートを用いる。
-I[portname]
MIDI入力するポートの名称を指定する。MIDI入力が使えるようになる。
ここで指定するポート名は、MIDIPORTで見ることができる。
ポートを省略すると環境変数 QS_MIDI_IN で指定したポートを用いる。
-N
出力を禁止する。
-Ofilename
出力を指定のファイルに切替える。
-Twaittime
SYSEX受信のタイムアウト時間を指定する。単位は秒(0-120)。
SYSEXの受信がこの時間途切れると処理を終了する。
-X
式評価した結果を出力しない。ただし、??outへの代入の結果は出力する。
式の結果はバイナリではなく任意の型を返しても良い。
-Z
MIDI入力(??SYX)のタイムアウトでFALSEの代わりに長さ0のバイナリを返すようにする。

用例

参考

SENDSYXSYXをMIDIへ出力
RCVSYXSYXをMIDIから入力
MIDIPORT存在するMIDIPORT名を出力する

バージョン

Ver 1.012015/03/22環境変数に対応
Ver 1.002013/03/06初版