Excel ¤ËÉÕ°¤¹¤ë¡¡Visual Basic Editer
£±3ÆüÌÜ
¥È¥é¥ó¥×¥²¡¼¥à¤òºî¤ë¡¡midi²»³Ú¤òÌĤ餹
¨ ¡¡¥Ý¡¼¥«¡¼¥²¡¼¥à¡¡¤ò¥ê¥ó¥¯¤¹¤ë
¥²¡¼¥àÀâÌÀ¡¡
´Êñ¤Ê¥×¥í¥°¥é¥à¤òºî¤ì¤ë¤è¤¦¤Ë²òÀ⤷¤Þ¤¹
¤³¤³¤Ç¤Ï¥ß¥Ë¥×¥í¥°¥é¥à¤ÎºîÀ®²áÄø¤òÂ賤·¤Æ¤¯¤À¤µ¤¤¡£
¨¡¡midi²»³Ú¤òÌĤ餹
Excel 2008¤ÎÊý¤Ï¼¡¤Î¥Õ¥¡¥¤¥ëdorectx¤ò²òÅष¤Æexcel_dx8.bat¤ò´ÉÍý¼Ô¤È¤·¤Æ¼Â¹Ô¤·¤Æ¤¯¤À¤µ¤¤¡£
¾Ü¤·¤¯¤Ï¡¡¥¤¥ó¥¿¡¼¥Í¥Ã¥È¤ÇÄ´¤Ù¤Æ¤¯¤À¤µ¤¤¡£
midi¤Èecxel¤Î¥Ç¡¼¥¿¡¼¤ÏƱ¤¸¥Ç¥£¥ì¥¯¥È¥ê¤ËÆþ¤ì¤Æ¤¯¤À¤µ¤¤¡£¡¡¸«ËÜ¡¡mid¤ò²òÅष¤Æ¼Â¹Ô¤·¤Æ¤¯¤À¤µ¤¤
¾°midi¥Õ¥¡¥ó¥Õ¥¡¡¼¥ì¤ÎÃøºî¸¢¤Ïnatori¤Ë¤¢¤ê¤Þ¤¹¡£
ÀßÄê¡¡directx8¤ò»ØÄꤷ¤Þ¤¹¡£
¥Ä¡¼¥ë¡¡»²¾ÈÀßÄê¡¡directx£¸¡¡for¡¡¤Ë¥ìÅÀ¤òÆþ¤ì¤ë¡£
vbaproject¤Ç±¦¥¯¥ê¥Ã¥¯¡¡ÁÞÆþ¡¡É¸½à¥â¥¸¥å¡¼¥ë
£í£ï£ä£õ£ì£å£±¤Ë¼¡¤òÆþ¤ì¤ë
Rem ɸ½à¥â¥¸¥å¡¼¥ë¤Î(General)(Declarations)¤Øµ½Ò¤·¤Þ¤¹
Declare Function FindWindow Lib "User32.dll" Alias "FindWindowA" _
(ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Form1¤ò¥¯¥ê¥Ã¥¯¤·botton1¤ò¥¯¥ê¥Ã¥¯¤·¤Æ¤«¤éÀèÆ¬¤Ë
Dim card(52), z, keta(10), yaku(5), tokuten, start_flag
Dim DirectXD8 As New DirectX8
Dim DirectSoundD8 As DirectSound8
Dim BufferSoundTestD As DirectSoundSecondaryBuffer8
Dim BufferDirectSoundC As DSBUFFERDESC
Dim DirectMyWindow As Long
Dim WorkSoundFiles As String
Dim WorkSoundFiles2 As String
Dim BuferfBgmTest As DirectMusicPerformance8
Dim DirectXMLoader As DirectMusicLoader8
Dim DirectMSegment As DirectMusicSegment8
Dim DirectMSegmentState As DirectMusicSegmentState8
Dim AudioParam As DMUS_AUDIOPARAMS
Private Sub CommandButton1_Click()
Call StartMidi
°ìÈÖ²¼¤Ø
Private Sub CommandButton4_Click()
card(1) = 2
card(2) = 3
card(3) = 4
card(4) = 5
card(5) = 6
End Sub
Public Sub ReadMusicBuffer()
DirectMyWindow = FindWindow("XLMAIN", Application.Caption)
WorkSoundFiles = ThisWorkbook.Path & "\test1.mid"
Set DirectXMLoader = DirectXD8.DirectMusicLoaderCreate()
Set DirectMSegment = DirectXMLoader.LoadSegment(WorkSoundFiles)
DirectMSegment.SetStartPoint mtStart:=0
DirectMSegment.SetRepeats lRepeats:=0
Set BuferfBgmTest = DirectXD8.DirectMusicPerformanceCreate()
BuferfBgmTest.InitAudio Hwnd:=DirectMyWindow, _
lFlags:=DMUS_AUDIOF_ALL, _
audioparams:=AudioParam, _
DirectSound:=Nothing, _
lDefaultPathType:=DMUS_APATH_DYNAMIC_3D, _
lPChannelCount:=16
BuferfBgmTest.SetMasterAutoDownload b:=True
End Sub
Public Sub ReadMusicBuffer2()
DirectMyWindow = FindWindow("XLMAIN", Application.Caption)
WorkSoundFiles2 = ThisWorkbook.Path & "\test2.mid"
Set DirectXMLoader = DirectXD8.DirectMusicLoaderCreate()
Set DirectMSegment = DirectXMLoader.LoadSegment(WorkSoundFiles2)
DirectMSegment.SetStartPoint mtStart:=0
DirectMSegment.SetRepeats lRepeats:=0
Set BuferfBgmTest = DirectXD8.DirectMusicPerformanceCreate()
BuferfBgmTest.InitAudio Hwnd:=DirectMyWindow, _
lFlags:=DMUS_AUDIOF_ALL, _
audioparams:=AudioParam, _
DirectSound:=Nothing, _
lDefaultPathType:=DMUS_APATH_DYNAMIC_3D, _
lPChannelCount:=16
BuferfBgmTest.SetMasterAutoDownload b:=True
End Sub
Public Sub StartMidi()
Call ReadMusicBuffer
Set DirectMSegmentState = BuferfBgmTest.PlaySegmentEx(DirectMSegment, 0, 0)
End Sub
Public Sub StopMidi()
BuferfBgmTest.StopEx ObjectToStop:=DirectMSegmentState, lStopTime:=0, lFlags:=0
End Sub
Public Sub StartMidi2()
Call ReadMusicBuffer2
Set DirectMSegmentState = BuferfBgmTest.PlaySegmentEx(DirectMSegment, 0, 0)
End Sub
Private Sub CommandButton5_Click()
Call StartMidi
End Sub
Private Sub CommandButton6_Click()
Call StartMidi2
End Sub
Private Sub UserForm_Click()
Call StopMidi
End Sub
¼«Ê¬¤Ç²»³Ú¤ÎÌĤ餷¤¿¤¤¤È¤³¤ë
¤¿¤È¤¨¤Ð¡¡£³¥«¡¼¥É¤Î¸å¤Ë
Call StartMidi2¡¡¤È¤¤¤ì¤ë¡Ú¥Õ¥¡¥ó¥Õ¥¡¡¼¥ì¡Û
¡¡¡¡¤³¤ì¤Ç´°À®¤Ç¤¢¤ë