受信メッセージの取得
midi_in_poll var_got, var_status, var_d1, var_d2
var_got ... 取得結果フラグ (int 変数: 1=取得成功 / 0=バッファ空) var_status ... 結果のステータスバイト (int 変数) var_d1 ... データ1 (int 変数) var_d2 ... データ2 (int 変数)
(プラグイン / モジュール : hspmidi.dll)
内部リングバッファから 1 件取り出します。
var_got = 1 ... 取得成功 (status/d1/d2 に値が入る)
var_got = 0 ... バッファ空 (status/d1/d2 は 0)
status には「チャンネル付きステータスバイト」(例: $90 ch0 Note On)
がそのまま入ります。チャンネル分離が必要な場合は
ch = st & $0F
kind = st & $F0
のようにマスクしてください。
例 (受信ループ):
midi_in_open 0
midi_in_start
*poll
midi_in_poll got, st, d1, d2
if got {
kind = st & $F0
ch = st & $0F
if kind == MIDI_NOTE_ON : mes strf("ON ch%d note=%d vel=%d", ch, d1, d2)
if kind == MIDI_NOTE_OFF : mes strf("OFF ch%d note=%d vel=%d", ch, d1, d2)
goto *poll
}
await 5
goto *poll
| プラグイン / モジュール | hspmidi.dll |
| バージョン | 1.0 |
| 作成日 | 2026-04-15 |
| 著作者 | IronHSP / hspmidi |
| URL | https://github.com/inovia/IronHSP |
| 備考 | hspmidi.dll は Windows の winmm (midiOut* / midiIn*) を使った
MIDI 入出力プラグインです。ショートメッセージ (Note On/Off, Program Change 等) の送受信のみサポートします。SysEx は v1 では非対応。 #include "hspmidi.as" ; 直接使用 #include "iron_midi.hsp" ; note_name("C4") 等の便利 cfunc 付き 制約 (v1): - MIDI out / in それぞれハンドルは同時 1 個のみ - MIDI in はワーカースレッド callback → 内部リングバッファ (1024) に蓄え、HSP 側は midi_in_poll で取り出すポーリング式 - SysEx / MIM_LONGDATA は未対応 戻り値規約: 0 ... 成功 負 ... 失敗 (winmm の MMRESULT を負符号化したもの) |
| タイプ | 拡張命令 |
| グループ | hspmidi ― MIDI in |
| 対応環境 |
|
| hs ファイル | hsphelp\hspmidi.hs |