엑셀 MIDI (엄마, 나 엑셀 배웠어)
유튜브 영상에서 사용한 엑셀 MIDI 연주 파일입니다. 저작권 문제로 영상에서 연주한 노래의 악보 데이터는 첨부파일에서 제외했습니다. ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ 초간단 VBA 코드 — 피아노 한 음 내기 첨부파일과 별개로, 빈 엑셀에서도 원리를 확인할 수 있는 예제입니다. 피아노 음색으로 ‘도’ 한 음을 누른 뒤 약 0.5초 후에 떼도록 구성했습니다. Option Explicit Private Declare PtrSafe Function midiOutOpen Lib "winmm.dll" ( _ ByRef hMidi As LongPtr, ByVal deviceID As Long, _ ByVal callback As LongPtr, ByVal instance As LongPtr, _ ByVal flags As Long) As Long Private Declare PtrSafe Function midiOutShortMsg Lib "winmm.dll" ( _ ByVal hMidi As LongPtr, ByVal message As Long) As Long Private Declare PtrSafe Function midiOutClose Lib "winmm.dll" ( _ ByVal hMidi As LongPtr) As Long Private Declare PtrSafe Sub Sleep Lib "kernel32" ( _ ByVal milliseconds As Long) Sub 피아노_한음() Dim hMidi As LongPtr Dim note As Long note = 60 '연주할 음: 도 'MIDI 출력 장치 열기 If midiOutOpen(hMidi, -1, 0, 0, 0) <> 0 Then MsgBox "MIDI 출력 장치를 열 수 없습니다." Exit Sub End If midiOutShortMsg hMidi, &HC0 '피아노 음색 선택 '음 누르기: 음 번호와 세기 전달 midiOutShortMsg hMidi, &H90 Or (note * &H100&) Or (100 * &H10000) Sleep 500 '약 0.5초 대기 midiOutShortMsg hMidi, &H80 Or (note * &H100&) '음 떼기 midiOutClose hMidi 'MIDI 출력 장치 닫기 End Sub