DUMPLAY.DLL での処理するにあたり、様々なコールバック関数が呼び出される機会があります。これらは必要に応じて任意に用意し、不要ならNULLにしておきます。
HANDLE dllh; DPCONST dp_const; DPVER dp_version; /*説明のためエラー処理は省略してるけど、実際は省略するべからず*/ dllh=LoadLibrary("DUMPLAY.DLL"); dp_const=(DPCONST)GetProcAddress(dllh,"dp_const"); dp_version=(DPVER)GetProcAddress(dllh,"dp_version");
DUMPLAY.DLL を使うには、まずインスタンスを取得する必要があります。
(インスタンス関数の詳細も後述)
再生部は以下のような感じ。
void *data; /*DUMデータ先頭位置*/ unsigned long size; /*DUMデータサイズ*/ void *usr; /*ユーザポインタ(コールバックに渡される任意値)*/ PDPIF dp; DPHOOKTBL ht; DPERRCODE err; memset(&ht,0,sizeof(DPHOOKTBL)); /*必要なコールバック関数をここで設定*/ dp=dp_const(16,data,size,&ht,sizeof(DPHOOKTBL),usr,&err); if(!dp){ /*返値がNULLの場合はエラー発生: errにエラーコード格納*/ }
ここで得たインスタンスは、使用が済んだら必ず解放しなければなりません。
PDPIF dp; /*インスタンス*/ int t,nt,lt; nt=lt=GetTickCount(); while(1){ Sleep(10); /*1/100秒毎にループを回すときのウェイト*/ nt=GetTickCount(); t=nt-lt; lt=nt; dp->time(dp,t,65536); }
PDPIF dp; /*インスタンス*/ volatile PDPIF p; /*安全に解放するため、解放前に変数の内容は消しておく*/ p=dp; dp=NULL; p->purge(p);
・引数
usr | ユーザポインタ dp_constの引数がそのまま |
pos | エラーが起きた位置(byte, DUM先頭からのオフセット) |
code | エラーコード |
・処理内容
インスタンス関数の処理中にエラーが発生したときに呼ばれる。
エラー処理をユーザ側で行う場合に設定しておく。
・返値
DPERR_NONE | エラーを無視して処理を続行する場合に返す。 ただ、続行してもまともな動作は期待できないので、普通は使わない。 |
other | エラーコードを返す。通常、codeの内容をそのまま返す。 |
・引数
usr | ユーザポインタ dp_constの引数がそのまま |
size | 確保すべきメモリサイズ(byte) |
・処理内容
インスタンス関数の処理中にメモリを確保する必要がでてきたときに呼ばれる。
通常、return malloc(size); だけでよい。
なお、このコールバックは、必ず設定しなければならない。
(V0.40以降)
NULLにするとディフォルトのメモリ管理関数を使う。また、cbfreeの設定が無効となり、これもNULLと同様に扱われる。
・返値
NULL | メモリが確保できなかったときに返す。 |
other | 確保したメモリの先頭アドレスを返す。 |
・引数
usr | ユーザポインタ dp_constの引数がそのまま |
mem | 解放すべきメモリの先頭アドレス |
・処理内容
インスタンス関数の処理中に確保したメモリを解放する必要がでてきたときに呼ばれる。
通常、free(mem); だけでよい。
なお、このコールバックは、必ず設定しなければならない。
(V0.40以降)
NULLにするとディフォルトのメモリ管理関数を使う。また、cballocの設定が無効となり、これもNULLと同様に扱われる。
・引数
usr | ユーザポインタ dp_constの引数がそのまま |
time | タイムカウンタの現在値 |
・処理内容
DPIF::time または DPIF::step 処理において、タイムカウンタがインクリメントされる度に呼ばれる。
・返値
DPERR_NONE | 処理を続行する場合に返す。 |
other | 任意のエラーコードを返す。処理は中断される。 |
・引数
usr | ユーザポインタ dp_constの引数がそのまま |
step | ステップカウンタの現在値 |
・処理内容
DPIF::time または DPIF::step 処理において、ステップカウンタがインクリメントされる度に呼ばれる。
・返値
DPERR_NONE | 処理を続行する場合に返す。 |
other | 任意のエラーコードを返す。処理は中断される。 |
・引数
usr | ユーザポインタ dp_constの引数がそのまま |
dev | MIDIディヴァイス番号(0~15) |
trk | DUMトラック番号(0~255) |
mch | MIDIチャネル番号(0~15) |
note | ノート番号(0~127) |
vel | ヴェロシティ(1~127) |
・処理内容
インスタンス関数の処理中にノートオフをMIDIに送信する必要がでてきたときに呼ばれる。
Windows APIを使う場合、midiOutShortMsg() の第2引数に 0x80|mch|(note<<8)|(vel<<16) を指定すればよい。
・返値
DPERR_NONE | 処理を続行する場合に返す。 |
other | 任意のエラーコードを返す。処理は中断される。 |
・引数
usr | ユーザポインタ dp_constの引数がそのまま |
dev | MIDIディヴァイス番号(0~15) |
trk | DUMトラック番号(0~255) |
mch | MIDIチャネル番号(0~15) |
note | ノート番号(0~127) |
vel | ヴェロシティ(1~127) |
・処理内容
インスタンス関数の処理中にノートオンをMIDIに送信する必要がでてきたときに呼ばれる。
Windows APIを使う場合、midiOutShortMsg() の第2引数に 0x90|mch|(note<<8)|(vel<<16) を指定すればよい。
・返値
DPERR_NONE | 処理を続行する場合に返す。 |
other | 任意のエラーコードを返す。処理は中断される。 |
・引数
usr | ユーザポインタ dp_constの引数がそのまま |
dev | MIDIディヴァイス番号(0~15) |
trk | DUMトラック番号(0~255) |
mch | MIDIチャネル番号(0~15) |
note | ノート番号(0~127) |
val | 設定値(0~127) |
・処理内容
インスタンス関数の処理中にキープレッシャをMIDIに送信する必要がでてきたときに呼ばれる。
Windows APIを使う場合、midiOutShortMsg() の第2引数に 0xa0|mch|(note<<8)|(val<<16) を指定すればよい。
・返値
DPERR_NONE | 処理を続行する場合に返す。 |
other | 任意のエラーコードを返す。処理は中断される。 |
・引数
usr | ユーザポインタ dp_constの引数がそのまま |
dev | MIDIディヴァイス番号(0~15) |
trk | DUMトラック番号(0~255) |
mch | MIDIチャネル番号(0~15) |
code | コントロール番号(0~127) |
val | 設定値(0~127) |
・処理内容
インスタンス関数の処理中にコントロールチェンジをMIDIに送信する必要がでてきたときに呼ばれる。
Windows APIを使う場合、midiOutShortMsg() の第2引数に 0xb0|mch|(code<<8)|(val<<16) を指定すればよい。
・返値
DPERR_NONE | 処理を続行する場合に返す。 |
other | 任意のエラーコードを返す。処理は中断される。 |
・引数
usr | ユーザポインタ dp_constの引数がそのまま |
dev | MIDIディヴァイス番号(0~15) |
trk | DUMトラック番号(0~255) |
mch | MIDIチャネル番号(0~15) |
val | 設定値(0~127) |
・処理内容
インスタンス関数の処理中にプログラムチェンジをMIDIに送信する必要がでてきたときに呼ばれる。
Windows APIを使う場合、midiOutShortMsg() の第2引数に 0xc0|mch|(val<<8) を指定すればよい。
・返値
DPERR_NONE | 処理を続行する場合に返す。 |
other | 任意のエラーコードを返す。処理は中断される。 |
・引数
usr | ユーザポインタ dp_constの引数がそのまま |
dev | MIDIディヴァイス番号(0~15) |
trk | DUMトラック番号(0~255) |
mch | MIDIチャネル番号(0~15) |
val | 設定値(0~127) |
・処理内容
インスタンス関数の処理中にチャネルプレッシャをMIDIに送信する必要がでてきたときに呼ばれる。
Windows APIを使う場合、midiOutShortMsg() の第2引数に 0xd0|mch|(val<<8) を指定すればよい。
・返値
DPERR_NONE | 処理を続行する場合に返す。 |
other | 任意のエラーコードを返す。処理は中断される。 |
・引数
usr | ユーザポインタ dp_constの引数がそのまま |
dev | MIDIディヴァイス番号(0~15) |
trk | DUMトラック番号(0~255) |
mch | MIDIチャネル番号(0~15) |
val | 設定値(-8192~+8191) |
・処理内容
インスタンス関数の処理中にプログラムチェンジをMIDIに送信する必要がでてきたときに呼ばれる。
Windows APIを使う場合、midiOutShortMsg() の第2引数に 0xe0|mch|(((val+8192)&127)<<8)|((((val+8192)>>7)&127)<<16) を指定すればよい。
・返値
DPERR_NONE | 処理を続行する場合に返す。 |
other | 任意のエラーコードを返す。処理は中断される。 |
・引数
usr | ユーザポインタ dp_constの引数がそのまま |
dev | MIDIディヴァイス番号(0~15) |
trk | DUMトラック番号(0~255) |
len | 必要な長さ(1~255byte) |
・処理内容
インスタンス関数の処理中にシステムエクスクルーシヴ用送信バッファを確保する必要がでてきたときに呼ばれる。
Windows APIを使う場合、このバッファは第1引数を GMEM_MOVEABLE|GMEM_SHARE にした GlobalAlloc() で確保し、且つ GlobalLock() でアドレスを得たものでなければならない。
因みに、MIDIへ一度に送信できるサイズは127バイトまでと決まっている。DUMにおいては他の処理にも使えるため最大255バイトとなっているが、MIDIへの送信を目的とする場合は128バイト以上のデータを一度に送ってはならない。len>127 のときはNULLを返すのが無難。
・返値
NULL | バッファが確保できなかったとき、またはシステムエクスクルーシヴの送信を阻止したいときに返す。 |
other | 確保したバッファの先頭アドレスを返す。 |
・引数
usr | ユーザポインタ dp_constの引数がそのまま |
dev | MIDIディヴァイス番号(0~15) |
trk | DUMトラック番号(0~255) |
len | 必要な長さ(1~255byte) |
・処理内容
DPHOOKTBL::cbgetsysx() で NULL 以外を返したとき、バッファにデータをセットした後に呼ばれる。
Windows APIを使う場合、処理手順は以下のような感じ。
HMIDIOUT hmidi; /*midiOutOpen()の返値*/ /*下2つはGlobalAlloc,GMEM_MOVEABLE|GMEM_SHARE,GlobalLockで確保しておく*/ MIDIHDR *hp; /*SysX送信用作業領域()*/ void *dp; /*SysX送信バッファ*/ int perr,merr; memset(hp,0,sizeof(MIDIHDR)); hp->lpData=dp; hp->dwBufferLength=len; perr=midiOutPrepareHeader(hmidi,hp,sizeof(MIDIHDR)); if(!perr){ merr=midiOutLongMsg(hmidi,hp,sizeof(MIDIHDR)); if(!merr)midiOutUnprepareHeader(hmidi,hp,sizeof(MIDIHDR)); }
・返値
DPERR_NONE | 処理を続行する場合に返す。 |
other | 任意のエラーコードを返す。処理は中断される。 |
・引数
usr | ユーザポインタ dp_constの引数がそのまま |
trk | DUMトラック番号(0~255) |
str | 文字列の先頭アドレス |
len | 文字列の長さ(0~4095byte) |
・処理内容
シーケンスの解析中、;コマンドで埋め込まれた文字列が見つかったときに呼ばれる。
この文字列をユーザ側で利用する場合に設定しておく。
(注)
DUMCMAIN.DLLは ; コマンドで埋め込んだ文字列の後に0を付加するが、それ以外の手段で埋め込まれた文字列については感知しない。このため、任意のDUMデータを再生するプログラムにおいては、文字列の終端が0であることを前提として文字列を処理してはならない。
・返値
DPERR_NONE | 処理を続行する場合に返す。 |
other | 任意のエラーコードを返す。処理は中断される。 |
・引数
usr | ユーザポインタ dp_constの引数がそのまま |
trk | DUMトラック番号(0~255) |
val | 設定値(1~16777215) |
・処理内容
インスタンス関数の処理中にテンポが変更されたときに呼ばれる。
変更処理自体は既に完了しているためユーザ側で操作することはできないが、変更後の値を知りたい場合に設定しておく。
・返値
DPERR_NONE | 処理を続行する場合に返す。 |
other | 任意のエラーコードを返す。処理は中断される。 |
・引数
usr | ユーザポインタ dp_constの引数がそのまま |
trk | DUMトラック番号(0~255) |
code | コマンドコード(0~255) |
data | 設定データ先頭アドレス |
len | 設定データの長さ(0~255byte) |
・処理内容
シーケンスの解析中、一部を除いた拡張コマンドが見つかったときに呼ばれる。
これらをユーザ側で処理する場合に設定しておく。
拡張コマンドの詳細については別表を参照。
・返値
DPERR_NONE | 処理を続行する場合に返す。 |
other | 任意のエラーコードを返す。処理は中断される。 |
・引数
usr | ユーザポインタ dp_constの引数がそのまま |
trk | DUMトラック番号(0~255) |
lpcnt | 現在のループ回数 |
・処理内容
シーケンスの解析中、無限ループの終端に達したときに呼ばれる。
ループ回数を知りたいときや、ループの可否をユーザ側で制禦する場合に設定しておく。
・返値
0 | ループを許可する場合に返す。 |
1 | ループを抑制する場合に返す。 |
・引数
usr | ユーザポインタ dp_constの引数がそのまま |
prog | バンク番号(0~127)*128+プログラム番号(0~127) |
file | ファイル名 |
ch | PCM番号 |
sw | PCM制禦スウィッチ |
・処理内容
拡張コマンド#128でPCMのロードが必要なときに呼ばれる。
ファイル名は基本的にシーケンスデータファイルからの相対パス指定となる。
・返値
NULL | ロードに失敗した(以後、このPCMに対する処理は全て無視するようになる) |
other | ロードしたPCMの識別タグ |
・引数
usr | ユーザポインタ dp_constの引数がそのまま |
unit | PCM識別タグ(cbpcmloadの返値) |
・処理内容
拡張コマンド#129でPCMの複製が必要なときに呼ばれる。
・返値
NULL | 複製に失敗した(以後、このPCMに対する処理は全て無視するようになる) |
other | 複製したPCMの識別タグ |
・引数
usr | ユーザポインタ dp_constの引数がそのまま |
unit | PCM識別タグ(cbpcmloadの返値) |
・処理内容
cbloadpcm,cbduppcmで確保したPCMを破棄する必要があるときに呼ばれる。
・引数
usr | ユーザポインタ dp_constの引数がそのまま |
unit | PCM識別タグ(cbpcmloadの返値) |
flg | フラグ(0=ワンショット,1=ループ) |
0 | 処理が成功した場合に返す。 |
1 | 処理が失敗した場合に返す。 |
・引数
usr | ユーザポインタ dp_constの引数がそのまま |
unit | PCM識別タグ(cbpcmloadの返値) |
・処理内容
cbplaypcmで再生したPCMを停止する必要があるときに呼ばれる。
・引数
usr | ユーザポインタ dp_constの引数がそのまま |
unit | PCM識別タグ(cbpcmloadの返値) |
vol | 音量(0=ミュート ~ 16384=最大) |
・処理内容
cbpcmload,cbpcmdupで確保したPCMの音量を変更する必要があるときに呼ばれる。
・返値
0 | 処理が成功した場合に返す。 |
1 | 処理が失敗した場合に返す。 |
・引数
usr | ユーザポインタ dp_constの引数がそのまま |
unit | PCM識別タグ(cbpcmloadの返値) |
pan | 定位(-16384=左 ~ 0=中央 ~ +16384=右) |
・処理内容
cbpcmload,cbpcmdupで確保したPCMの定位を変更する必要があるときに呼ばれる。
・返値
0 | 処理が成功した場合に返す。 |
1 | 処理が失敗した場合に返す。 |
・引数
usr | ユーザポインタ dp_constの引数がそのまま |
unit | PCM識別タグ(cbpcmloadの返値) |
pit | 音程(-32768 ~ -256= 半音下 ~ 0=原音 ~ +256=半音上 ~ +32767) |
・処理内容
cbpcmload,cbpcmdupで確保したPCMの音程を変更する必要があるときに呼ばれる。
・返値
0 | 処理が成功した場合に返す。 |
1 | 処理が失敗した場合に返す。 |
・引数
usr | ユーザポインタ dp_constの引数がそのまま |
unit | PCM識別タグ(cbpcmloadの返値) |
pos | 再生位置(0=先頭 ~ 16384=最後尾) |
・処理内容
cbpcmload,cbpcmdupで確保したPCMの再生位置を変更する必要があるときに呼ばれる。
・返値
0 | 処理が成功した場合に返す。 |
1 | 処理が失敗した場合に返す。 |
・引数
usr | ユーザポインタ dp_constの引数がそのまま |
unit | PCM識別タグ(cbpcmloadの返値) |
・処理内容
cbpcmload,cbpcmdupで確保したPCMの状態を取得する必要があるときに呼ばれる。
・返値
以下のフラグの論理和を返す。
DP_PCMSTA_PLAY | 再生中 |
DP_PCMSTA_LOOP | ループ再生中 |
DP_PCMSTA_TERM | (謎; DSBSTATUS_TERMINATEDと同内容) |
DP_PCMSTA_LOST | バッファ消失 |
DP_PCMSTA_INVALID | 関数呼び出しエラー |
・引数
usr | ユーザポインタ dp_constの引数がそのまま |
ctxt | ストリームコンテクスト番号 |
file | ファイル名 |
ch | PCM番号 |
sw | PCM制禦スウィッチ |
・処理内容
PCMのストリーム再生準備が必要なときに呼ばれる。
ファイル名は基本的にシーケンスデータファイルからの相対パス指定となる。
・引数
usr | ユーザポインタ dp_constの引数がそのまま |
ctxt | ストリームコンテクスト番号 |
・処理内容
cbstropenで準備したストリームを破棄する必要があるときに呼ばれる。
・引数
usr | ユーザポインタ dp_constの引数がそのまま |
ctxt | ストリームコンテクスト番号 |
・処理内容
cbstropenで準備したストリームの再生が必要なときに呼ばれる。
・返値
0 | 処理が成功した場合に返す。 |
1 | 処理が失敗した場合に返す。 |
・引数
usr | ユーザポインタ dp_constの引数がそのまま |
ctxt | ストリームコンテクスト番号 |
・処理内容
cbstrplayで再生たストリームの停止が必要なときに呼ばれる。
・引数
usr | ユーザポインタ dp_constの引数がそのまま |
ctxt | ストリームコンテクスト番号 |
vol | 音量(0=ミュート ~ 16384=最大) |
・処理内容
cbstropenで準備したストリームの音量を変更する必要があるときに呼ばれる。
・返値
0 | 処理が成功した場合に返す。 |
1 | 処理が失敗した場合に返す。 |
・引数
usr | ユーザポインタ dp_constの引数がそのまま |
ctxt | ストリームコンテクスト番号 |
pan | 定位(-16384=左 ~ 0=中央 ~ +16384=右) |
・処理内容
cbstropenで準備したストリームの定位を変更する必要があるときに呼ばれる。
・返値
0 | 処理が成功した場合に返す。 |
1 | 処理が失敗した場合に返す。 |
・引数
usr | ユーザポインタ dp_constの引数がそのまま |
ctxt | ストリームコンテクスト番号 |
pit | 音程(-32768 ~ -256= 半音下 ~ 0=原音 ~ +256=半音上 ~ +32767) |
・処理内容
cbstropenで準備したストリームの音程を変更する必要があるときに呼ばれる。
・返値
0 | 処理が成功した場合に返す。 |
1 | 処理が失敗した場合に返す。 |
・引数
usr | ユーザポインタ dp_constの引数がそのまま |
ctxt | ストリームコンテクスト番号 |
desc | 種別識別用の値(拡張コマンド#137が渡す値) |
・処理内容
トラックが同期を必要としているときに呼ばれる。
この関数が0以外を返し続けている間、トラックの進行が止まる。
・返値
0 | 同期が完了している場合に返す。 |
1 | 未完了の場合に返す。 |
・引数
dp | dp_const() の返値 |
・処理内容
インスタンスを破棄する。
インスタンスが不要になったら必ず破棄すること。
・返値
DPERR_NONE | 正常に処理完了 |
DPERR_REENT | 他のインスタンス関数がまだ処理中 |
・引数
dp | dp_const() の返値 |
・処理内容
シーケンスを初期状態に戻す。
・返値
DPERR_NONE | 正常に処理完了 |
DPERR_REENT | 他のインスタンス関数がまだ処理中 |
・引数
dp | dp_const() の返値 |
count | 進ませるカウント数 |
tempo | テンポ係数(65536=1倍速) |
・処理内容
タイムカウンタがcount回インクリメントされるまでシーケンスを進める。
タイムカウンタは1回が1/1000秒に相当し、通常は1/1000秒毎に1つ進めるようにユーザ側でタイミングを計っていく。
・返値
DPERR_NONE | 正常に処理完了 |
DPERR_FETCH | データの読み出し位置が不正 |
DPERR_ILLEGAL | パラメータの値が不正 |
DPERR_LOOPOF | ループ用スタックがオーヴァーフローした |
DPERR_LOOPUF | ループ用スタックがアンダーフローした |
DPERR_REENT | 他のインスタンス関数がまだ処理中 |
DPERR_SHORT | パラメータの個数が足りない |
DPERR_UNDEF | コマンドが未定義 |
DPERR_ZTEMPO | テンポが0になった |
0未満 | ユーザ定義のエラー |
・引数
dp | dp_const() の返値 |
count | 進ませるカウント数 |
tempo | テンポ係数(65536=1倍速) |
・処理内容
ステップカウンタがcount回インクリメントされるまでシーケンスを進める。
ステップカウンタは1回が1分音符を分解能で除算した長さ。
SMF出力などでステップ単位の処理がしたいときに使う。
・返値
DPERR_NONE | 正常に処理完了 |
DPERR_FETCH | データの読み出し位置が不正 |
DPERR_ILLEGAL | パラメータの値が不正 |
DPERR_LOOPOF | ループ用スタックがオーヴァーフローした |
DPERR_LOOPUF | ループ用スタックがアンダーフローした |
DPERR_REENT | 他のインスタンス関数がまだ処理中 |
DPERR_SHORT | パラメータの個数が足りない |
DPERR_UNDEF | コマンドが未定義 |
DPERR_ZTEMPO | テンポが0になった |
0未満 | ユーザ定義のエラー |
・引数
dp | dp_const() の返値 |
buf | 文字列を格納するバッファの先頭位置 |
len | バッファサイズ |
・処理内容
シーケンスの著作権情報を得る。
バッファサイズが足りないときは、後ろが切られる。
メタイヴェントの最長サイズは255バイトなので、確実に得たい場合はlenを256以上にする。
・返値
本来の文字列の長さをバイト数で返す。
文字列を完全に得るためには、この数よりも大きい数(同数では不足)をlenに指定する。
・引数
dp | dp_const() の返値 |
buf | 文字列を格納するバッファの先頭位置 |
len | バッファサイズ |
・処理内容
シーケンスのタイトル名を得る。
バッファサイズが足りないときは、後ろが切られる。
メタイヴェントの最長サイズは255バイトなので、確実に得たい場合はlenを256以上にする。
・返値
本来の文字列の長さをバイト数で返す。
文字列を完全に得るためには、この数よりも大きい数(同数では不足)をlenに指定する。
・引数
dp | dp_const() の返値 |
buf | 文字列を格納するバッファの先頭位置 |
len | バッファサイズ |
・処理内容
シーケンスで使われている文字列の言語コードを得る。
バッファサイズが足りないときは、後ろが切られる。
メタイヴェントの最長サイズは255バイトなので、確実に得たい場合はlenを256以上にする。
・返値
本来の文字列の長さをバイト数で返す。
文字列を完全に得るためには、この数よりも大きい数(同数では不足)をlenに指定する。
・引数
dp | dp_const() の返値 |
buf | 文字列を格納するバッファの先頭位置 |
len | バッファサイズ |
・処理内容
シーケンスで使われている文字列の文字セット名を得る。
バッファサイズが足りないときは、後ろが切られる。
メタイヴェントの最長サイズは255バイトなので、確実に得たい場合はlenを256以上にする。
・返値
本来の文字列の長さをバイト数で返す。
文字列を完全に得るためには、この数よりも大きい数(同数では不足)をlenに指定する。
(未実装)
(未実装)
・引数
dp | dp_const() の返値 |
・返値
最も最近起きたエラーのコードを返す。
・引数
dp | dp_const() の返値 |
・返値
シーケンスのトラック数を返す。
・引数
dp | dp_const() の返値 |
・返値
シーケンスの最大分解能を返す。
・引数
dp | dp_const() の返値 |
・返値
シーケンスのループ数を返す。
稼動中のトラックのうち、最小のループ数がシーケンス全体のループ数として採用される。
・引数
dp | dp_const() の返値 |
devf | 対象MIDIディヴァイスを表すフラグ群(bit0=dev0,bit15=dev15) |
mchf | 対象MIDIチャネルを表すフラグ群(bit0=ch0,bit15=ch15) |
・処理内容
対象のMIDIディヴァイス,MIDIチャネルでノートオン状態にあるもの全てにノートオフを送信させる。
ただし、ホールド類(CC#64,CC#66,CC#69)の操作はしない。必要であれば、事前に解除しておくこと。
・返値
DPERR_NONE | 正常に処理完了 |
DPERR_REENT | 他のインスタンス関数がまだ処理中 |
DPERR_ZTEMPO | テンポが0になった |
0未満 | ユーザ定義のエラー |
・引数
dp | dp_const() の返値 |
trk | 送信処理に関連付けるトラック番号 |
devf | 対象MIDIディヴァイスを表すフラグ群(bit0=dev0,bit15=dev15) |
mchf | 対象MIDIチャネルを表すフラグ群(bit0=ch0,bit15=ch15) |
note | 対象ノート番号 |
・処理内容
対象のMIDIディヴァイス,MIDIチャネル,ノート番号のキープレッシャを再送信する。
ユーザ側で操作して変化させた値を更新したいときに使う。
・返値
DPERR_NONE | 正常に処理完了 |
DPERR_ILLEGAL | トラック番号が不正 |
DPERR_REENT | 他のインスタンス関数がまだ処理中 |
0未満 | ユーザ定義のエラー |
・引数
dp | dp_const() の返値 |
trk | 送信処理に関連付けるトラック番号 |
devf | 対象MIDIディヴァイスを表すフラグ群(bit0=dev0,bit15=dev15) |
mchf | 対象MIDIチャネルを表すフラグ群(bit0=ch0,bit15=ch15) |
code | 対象コントロール番号 |
・処理内容
対象のMIDIディヴァイス,MIDIチャネル,コントロール番号のコントロールチェンジを再送信する。
ユーザ側で操作して変化させた値を更新したいときに使う。
・返値
DPERR_NONE | 正常に処理完了 |
DPERR_ILLEGAL | トラック番号が不正 |
DPERR_REENT | 他のインスタンス関数がまだ処理中 |
0未満 | ユーザ定義のエラー |
・引数
dp | dp_const() の返値 |
trk | 送信処理に関連付けるトラック番号 |
devf | 対象MIDIディヴァイスを表すフラグ群(bit0=dev0,bit15=dev15) |
mchf | 対象MIDIチャネルを表すフラグ群(bit0=ch0,bit15=ch15) |
・処理内容
対象のMIDIディヴァイス,MIDIチャネルのプログラムチェンジを再送信する。
ユーザ側で操作して変化させた値を更新したいときに使う。
・返値
DPERR_NONE | 正常に処理完了 |
DPERR_ILLEGAL | トラック番号が不正 |
DPERR_REENT | 他のインスタンス関数がまだ処理中 |
0未満 | ユーザ定義のエラー |
・引数
dp | dp_const() の返値 |
trk | 送信処理に関連付けるトラック番号 |
devf | 対象MIDIディヴァイスを表すフラグ群(bit0=dev0,bit15=dev15) |
mchf | 対象MIDIチャネルを表すフラグ群(bit0=ch0,bit15=ch15) |
・処理内容
対象のMIDIディヴァイス,MIDIチャネルのチャネルプレッシャを再送信する。
ユーザ側で操作して変化させた値を更新したいときに使う。
・返値
DPERR_NONE | 正常に処理完了 |
DPERR_ILLEGAL | トラック番号が不正 |
DPERR_REENT | 他のインスタンス関数がまだ処理中 |
0未満 | ユーザ定義のエラー |
・引数
dp | dp_const() の返値 |
trk | 送信処理に関連付けるトラック番号 |
devf | 対象MIDIディヴァイスを表すフラグ群(bit0=dev0,bit15=dev15) |
mchf | 対象MIDIチャネルを表すフラグ群(bit0=ch0,bit15=ch15) |
・処理内容
対象のMIDIディヴァイス,MIDIチャネルのピッチベンドを再送信する。
ユーザ側で操作して変化させた値を更新したいときに使う。
・返値
DPERR_NONE | 正常に処理完了 |
DPERR_ILLEGAL | トラック番号が不正 |
DPERR_REENT | 他のインスタンス関数がまだ処理中 |
0未満 | ユーザ定義のエラー |
・引数
dp | dp_const() の返値 |
tbl | ステップカウンタテーブルを受け取るポインタ |
tbllen | ステップカウンタテーブルのサイズ(byte) 通常、sizeof(DPSTEPCOUNT)を指定。 |
・処理内容
ステップカウンタの各種パラメータを読み出す。
構造体 DPSTEPCOUNT の内訳は次の通り。
mode | 0:通常動作,1:動作停止中,2:小節数カウント抑制中 |
pad | 未使用 |
bpm | 小節当たりの拍数 |
beat | 現在の拍数 |
spm | 小節当たりのステップ数 |
frac | 現在の小節余りステップ数 |
meas | 現在の小節数 |
div1 | 1分音符の分解能 |
・返値
DPERR_NONE | 正常に処理完了 |
DPERR_ILLEGAL | 引数が不正 |
(未実装)
(未実装)
(未実装)
(未実装)
(未実装)
(未実装)
(未実装)
(未実装)
(未実装)
(未実装)
・返値
DUMPLAY.DLLのヴァージョン情報を32bit値で返す。
これは8bitずつ4つのメンバで区切られ、上位から順にアンオフィシャル識別番号,メジャーヴァージョン,マイナーヴァージョン,リリースカウントとなっている。
・引数
devs | 有効にするディヴァイス数(1~16) 使用するディヴァイス数を減らすことでワークエリアを節約できる。無効なディヴァイスを使おうとした場合はダミーの処理を行うようにしているが、ちゃんとできているか不安。もし問題があったらディヴァイス数を16にしといてちょ。 |
data | DUMデータの先頭アドレス この内容は、インスタンスが存在している間は保持しておかなければならない。 |
datalen | DUMデータのサイズ(byte) |
ht | コールバック関数テーブルの先頭アドレス この内容は別に保存されるので、この関数を呼んだ後は破棄してもよい。 |
htlen | コールバック関数テーブルのサイズ(byte) 通常、sizeof(DPHOOKTBL)を指定。 |
usr | ユーザポインタ コールバック関数が呼ばれるときに渡される任意の値。 |
err | この関数自体で発生したエラーコードを書き込むポインタ NULLの場合、書き込みを行わない。 |
・処理内容
DUMプレイヤのインスタンスを生成する。
・返値
NULL | インスタンスの生成に失敗 |
other | インスタンスのポインタ この値はインスタンス関数を呼び出すときに必要であり、インスタンスが存在している間は保持しておかなければならない。 |