【音楽を扱うプログラム】
あらかじめキーボードとMIDI音源装置を使って扇風機というmidiwaveファイルを作成しておき、VisualBasicのプログラムでスピーカーから音楽を流す。
ポイントは Windows API である
Private Declare Function sndPlaySound Lib "winmm.dll"
Alias "sndPlaySoundA" (ByVal lpszSoundName As String,
ByVal uFlags As Long) As Long
Const SND_SYNC = &H0
Const SND_ASYNC = &H1
Const SND_NODEFAULT = &H2
Const SND_MEMORY = &H4
Const SND_LOOP = &H8
Const SND_NOSTOP = &H10
Private Declare Function mciSendString Lib "winmm.dll"
Alias "mciSendStringA" (ByVal lpstrCommand As String,
ByVal lpstrReturnString As String, ByVal uReturnLength As Long,
ByVal hwndCallback As Long) As Long
Dim returnstrng As String * 512
Const MIDICAPS_VOLUME = &H0&
の部分と、使用するときの
mcistr = "open sequencer"
msg& = mciSendString(mcistr, returnstrng, 512, 0)
mcistr = "play " + fname
msg& = mciSendString(mcistr, returnstrng, 512, 0)
の部分である。
1.素材の作成
次のような演奏音楽をmidi形式で作成しておく。
senpuki.mid
なお、"\\SKALA\教材提示ELEVATO\石山 謙\石山研究室(hyosiから開く)\"
の中にサンプルがあるので、今回はそれを使用する。
2.インターフェイスの作成
(1)コマンドボタンを2つ配置する。
(2)タイマーを1つ配置する。
3.プロパティの設定
オブジェクトの種類 | プロパティ名を探す | 次のように設定する | |
コマンドボタン | Command1 | Caption | クリックすると扇風機というメロディーが 流れます(midiサウンド) |
Command2 | Caption | 終了 | |
タイマー | Timer1 | interval | 100 |
4.コードの記述
[プログラム全文]
Private Declare Function sndPlaySound Lib "winmm.dll"
Alias "sndPlaySoundA" (ByVal lpszSoundName As String,
ByVal uFlags As Long) As Long
Const SND_SYNC = &H0
Const SND_ASYNC = &H1
Const SND_NODEFAULT = &H2
Const SND_MEMORY = &H4
Const SND_LOOP = &H8
Const SND_NOSTOP = &H10
Private Declare Function mciSendString Lib "winmm.dll"
Alias "mciSendStringA" (ByVal lpstrCommand As String,
ByVal lpstrReturnString As String, ByVal uReturnLength As Long,
ByVal hwndCallback As Long) As Long
Dim returnstrng As String * 512
Const MIDICAPS_VOLUME = &H0&
Dim fname As String
Private Sub command1_click()
Timer1.Enabled = True
End Sub
Private Sub Command2_Click()
End
End Sub
Private Sub Form_Load()
fname = "f:\石山研究室(hyosiから開く)\senpuki.mid"
'↑は実習では、
'"\\SKALA\教材提示ELEVATO\石山 謙\石山研究室(hyosiから開く)\senpuki.mdi"
'と記載する。
Timer1.Interval = 100
Timer1.Enabled = False
End Sub
Private Sub Timer1_Timer()
mcistr = "open sequencer"
msg& = mciSendString(mcistr, returnstrng, 512, 0)
mcistr = "play " + fname
msg& = mciSendString(mcistr, returnstrng, 512, 0)
End Sub
5.実行
6.保存
フォーム、プロジェクトともに melody という名前で保存する。