Changes

5,480 bytes removed ,  01:52, 12 April 2020
m
Line 1: Line 1:     
==Sectors==
 
==Sectors==
==Sectors==
  −
<source>
  −
Option Explicit
  −
Option Base 0
  −
Private Const MAXPNAMELEN              As Integer = 32
  −
Private Const MMSYSERR_BASE            As Integer = 0
  −
Private Const MMSYSERR_BADDEVICEID      As Integer = (MMSYSERR_BASE + 2)
  −
Private Const MMSYSERR_INVALPARAM      As Integer = (MMSYSERR_BASE + 11)
  −
Private Const MMSYSERR_NODRIVER        As Integer = (MMSYSERR_BASE + 6)
  −
Private Const MMSYSERR_NOMEM            As Integer = (MMSYSERR_BASE + 7)
  −
Private Const MMSYSERR_INVALHANDLE      As Integer = (MMSYSERR_BASE + 5)
  −
Private Const MIDIERR_BASE              As Integer = 64
  −
Private Const MIDIERR_STILLPLAYING      As Integer = (MIDIERR_BASE + 1)
  −
Private Const MIDIERR_NOTREADY          As Integer = (MIDIERR_BASE + 3)
  −
Private Const MIDIERR_BADOPENMODE      As Integer = (MIDIERR_BASE + 6)
  −
  −
Private Type MIDIOUTCAPS
  −
  wMid            As Integer
  −
  wPid            As Integer
  −
  wTechnology      As Integer
  −
  wVoices          As Integer
  −
  wNotes          As Integer
  −
  wChannelMask    As Integer
  −
  vDriverVersion  As Long
  −
  dwSupport        As Long
  −
  szPname          As String * MAXPNAMELEN
  −
End Type
  −
  −
Private Declare PtrSafe Function midiOutGetNumDevs Lib "winmm" () As Integer
  −
Private Declare PtrSafe Function midiOutGetDevCaps Lib "winmm.dll" Alias "midiOutGetDevCapsA" (ByVal uDeviceID As Long, lpCaps As MIDIOUTCAPS, ByVal uSize As Long) As Long
  −
Private Declare PtrSafe Function midiOutClose Lib "winmm.dll" (ByVal hMidiOut As Long) As Long
  −
Private Declare PtrSafe Function midiOutOpen Lib "winmm.dll" (lphMidiOut As Long, ByVal uDeviceID As Long, ByVal dwCallback As Long, ByVal dwInstance As Long, ByVal dwFlags As Long) As Long
  −
Private Declare PtrSafe Function midiOutShortMsg Lib "winmm.dll" (ByVal hMidiOut As Long, ByVal dwMsg As Long) As Long
  −
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
  −
  −
Private mlngNumDevices    As Long
  −
Private mlngCurDevice      As Long
  −
Private mlngHmidi          As Long
  −
Private mlngRc            As Long
  −
Private mlngMidiMsg        As Long
  −
Private mlngMiPrivatesg    As Long
  −
Private mintChannel        As Integer
  −
Private mintVolume        As Integer
  −
Private mintNoteLength    As Integer
  −
Private mintMidiNote      As Integer
  −
Private mintInstrument    As Integer
  −
Private mstrDeviceName    As String
  −
Private mblnIsDeviceOpen  As Boolean
  −
'
  −
Private Const INT_DEFAULT_CHANNEL      As Integer = 0
  −
Private Const INT_DEFAULT_VOLUME        As Integer = 127
  −
Private Const INT_DEFAULT_NOTE_LENGTH  As Integer = 1000
  −
Private Const INT_DEFAULT_CUR_DEVICE    As Integer = 0
  −
'
  −
  −
Private Sub Class_Initialize()
  −
    mintChannel = INT_DEFAULT_CHANNEL
  −
    mlngCurDevice = INT_DEFAULT_CUR_DEVICE
  −
    mintVolume = INT_DEFAULT_VOLUME
  −
    mintNoteLength = INT_DEFAULT_NOTE_LENGTH
  −
    mblnIsDeviceOpen = False
  −
    Call OpenDevice
  −
End Sub
  −
  −
Private Sub Class_Terminate()
  −
    Call CloseDevice
  −
End Sub
  −
  −
Private Sub OpenDevice()
  −
On Error GoTo ERR_HANDLER:
  −
    If Not mblnIsDeviceOpen Then
  −
        mlngRc = midiOutClose(mlngHmidi)
  −
        mlngRc = midiOutOpen(mlngHmidi, mlngCurDevice, 0, 0, 0)
  −
        If (mlngRc <> 0) Then
  −
            MsgBox "Couldn't open midi out, lngc = " & mlngRc
  −
            mblnIsDeviceOpen = False
  −
        End If
  −
        mblnIsDeviceOpen = True
  −
    End If
  −
    Exit Sub
  −
ERR_HANDLER:
  −
    Debug.Print "Open DLL Error:=" & Err.LastDllError
  −
    mblnIsDeviceOpen = False
  −
End Sub
  −
  −
Private Sub CloseDevice()
  −
    If mblnIsDeviceOpen Then
  −
        mlngRc = midiOutClose(mlngHmidi)
  −
        mblnIsDeviceOpen = False
  −
    End If
  −
End Sub
  −
  −
Private Sub StartNote()
  −
    mlngMidiMsg = &H90 + (mintMidiNote * &H100) + (mintVolume * &H10000) + mintChannel
  −
    midiOutShortMsg mlngHmidi, mlngMidiMsg
  −
End Sub
  −
  −
Private Sub StopNote()
  −
    mlngMidiMsg = &H80 + (mintMidiNote * &H100) + mintChannel
  −
    midiOutShortMsg mlngHmidi, mlngMidiMsg
  −
End Sub
  −
  −
Private Sub PauseNote()
  −
    Sleep mintNoteLength
  −
End Sub
  −
  −
'Private Function Playnote(ByVal note As csNote)
  −
'    mintNoteLength = note.NoteLength
  −
'    mintVolume = note.volume
  −
'    mintInstrument = note.Instrument
  −
'    mintMidiNote = note.NoteNumber
  −
'    Call StartNote
  −
'    Call PauseNote
  −
'End Function
  −
  −
Public Function note(n)
  −
        mintMidiNote = n: Call StartNote
  −
        mintMidiNote = n + Me.note_1: Call StartNote
  −
        mintMidiNote = n + Me.note_2: Call StartNote
  −
        mintMidiNote = n + Me.Note_3: Call StartNote
  −
   
  −
   
  −
    Call PauseNote
  −
End Function
  −
  −
Private Sub UpdateInstrument()
  −
    If mblnIsDeviceOpen = True Then
  −
        mlngMidiMsg = (mintInstrument * 256) + &HC0 + mintChannel + (0 * 256) * 256
  −
        midiOutShortMsg mlngHmidi, mlngMidiMsg
  −
    End If
  −
End Sub
  −
  −
Private Sub getNumberOfDevices()
  −
    mlngNumDevices = (midiOutGetNumDevs() - 1)
  −
End Sub
  −
  −
Private Sub CurrentDeviceName()
  −
    Dim caps    As MIDIOUTCAPS
  −
    midiOutGetDevCaps mlngCurDevice, caps, Len(caps)
  −
    mstrDeviceName = caps.szPname
  −
End Sub
  −
  −
Private Function GetMIDIDevices() As String()
  −
    Dim strRet() As String
  −
    Dim lngLoop As Long
  −
    Dim udtCap As MIDIOUTCAPS
  −
   
  −
    mlngNumDevices = (midiOutGetNumDevs() - 1)
  −
    ReDim strRet(0) As String
  −
    strRet(0) = " MIDI Mapper"
  −
   
  −
    For lngLoop = 0 To mlngNumDevices
  −
        mlngRc = midiOutGetDevCaps(lngLoop, udtCap, Len(udtCap))
  −
        ReDim Preserve strRet(lngLoop + 1) As String
  −
        strRet(lngLoop + 1) = udtCap.szPname
  −
    Next
  −
    GetMIDIDevices = strRet()
  −
End Function
  −
  −
Private Sub Form_Close()
  −
    CloseDevice
  −
End Sub
  −
  −
Private Sub Form_Load()
  −
    Class_Initialize
  −
End Sub
  −
</source>
  −
   
=Test 1=
 
=Test 1=
  
4,000

edits