sample\iron\sample_midi.hsp » Plain Format
;============================================================
; sample_midi.hsp — hspmidi.dll (iron_midi) デモ
;
; 既定の MIDI 音源 (通常 "Microsoft GS Wavetable Synth") で
; C メジャースケール (C D E F G A B C) を演奏します。
;
; 実行前:
; package/win32/common/ に iron_midi.hsp があり、
; hspmidi.dll がランタイムパスに存在すること。
;============================================================
#include "hsp3_net_64.as"
#include "iron_midi.hsp"
title "iron_midi — sample"
screen 0, 480, 240
font "MS Gothic", 14
color 0, 0, 0
mes "hspmidi.dll — C major scale demo"
mes ""
; デバイス列挙
ndev = 0
midi_out_count ndev
mes strf("MIDI out devices: %d", ndev)
if ndev == 0 {
color 180, 0, 0
mes "利用可能な MIDI 出力デバイスがありません。"
stop
}
sdim nm, 256
repeat ndev
midi_out_name nm, 256, cnt
mes strf(" %d: %s", cnt, nm)
loop
mes ""
; 既定デバイス (0) で開く
midi_out_open 0
if stat < 0 {
color 180, 0, 0
mes strf("midi_out_open failed (stat=%d)", stat)
stop
}
; Piano に音色切替
midi_out_program_change 0, GM_ACOUSTIC_GRAND
mes "Playing C major scale..."
redraw 1
; C4 → C5 までのスケール (全音/半音ステップ)
sdim scale_name, 8, 8
scale_name(0) = "C4"
scale_name(1) = "D4"
scale_name(2) = "E4"
scale_name(3) = "F4"
scale_name(4) = "G4"
scale_name(5) = "A4"
scale_name(6) = "B4"
scale_name(7) = "C5"
repeat 8
n = note_name(scale_name(cnt))
mes strf(" %s (note=%d)", scale_name(cnt), n)
redraw 1
midi_out_note_on 0, n, 110
await 300
midi_out_note_off 0, n, 0
await 50
loop
; 全ノートオフ
midi_out_reset
midi_out_close
mes ""
mes "Done."
stop