HSP | MIDI出力デバイス一覧を取得する・デフォルトのデバイス変更
HSP | MIDI出力デバイス一覧を取得する・デフォルトのデバイス変更
#runtime "hsp3cl"
// 初期化
#include "winmm.as"
dim outCaps,13
res=0
num=0
// 表示
midiOutGetNumDevs
num=stat
mes "Number of output devices: "+num
repeat num
midiOutGetDevCaps cnt,varptr(outCaps),52
res=stat
if res!0 : continue
wMid=outCaps.0&0xFFFF
wPid=(outCaps.0>>16)&0xFFFF
vDriverVersion=outCaps.1
sdim szPname,32,1
memcpy szPname,outCaps,32,0,8
wTechnology=outCaps.10&0xFFFF
wVoices=(outCaps.10>>16)&0xFFFF
wNotes=outCaps.11&0xFFFF
wChannelMask=(outCaps.11>>16)&0xFFFF
dwSupport=outCaps.12
mes "ID="+cnt+": "+szPname
loop
// 初期化
#include "hspext.as"
#include "winmm.as"
sdim list
id=0
sdim regmid
sdim namemid
dim outCaps,13
res=0
num=0
// 取得
title "デフォルトのMIDI出力デバイスの変更"
midiOutGetNumDevs
num=stat
notesel list
repeat num
midiOutGetDevCaps cnt,varptr(outCaps),52
res=stat
if res!0 : continue
wMid=outCaps.0&0xFFFF
wPid=(outCaps.0>>16)&0xFFFF
vDriverVersion=outCaps.1
sdim szPname,32,1
memcpy szPname,outCaps,32,0,8
wTechnology=outCaps.10&0xFFFF
wVoices=(outCaps.10>>16)&0xFFFF
wNotes=outCaps.11&0xFFFF
wChannelMask=(outCaps.11>>16)&0xFFFF
dwSupport=outCaps.12
noteadd szPname
loop
regkey 0,"Software\\Microsoft\\Windows\\CurrentVersion\\Multimedia\\MIDIMap"
if stat!0 {
exec "new.reg",16
dialog "指示に従って書き込むところを新規作成してください\n作成したら下のボタンを押してください",,"情報"
} else {
getreg regmid,"szPname",1
if stat!0 {
exec "new.reg",16
dialog "指示に従って書き込むところを新規作成してください\n成したら下のボタンを押してください",,"情報"
dialog "一回終了します",,"情報"
end
} else {
id=-1
repeat num
noteget namemid,cnt
if namemid=regmid : id=cnt : break
loop
if id=-1 : dialog "現在の設定が異常です",1,"情報" : id=0
}
}
// 表示
objsize 320,24
combox id,,list
button gosub "変更",*change
stop
*change
noteget namemid,id
regkey 0,"Software\\Microsoft\\Windows\\CurrentVersion\\Multimedia\\MIDIMap"
setreg namemid,"szPname",1
dialog "設定を書き込みました",,"情報"
return
REGEDIT4
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Multimedia]
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Multimedia\MIDIMap]
"szPname"=""