home *** CD-ROM | disk | FTP | other *** search
- Dim NoteCatchCount As Integer
- Dim NoteOnCatcher(1024) As Integer
-
-
- Sub About_Click ()
- AboutBox1.Show Modal
- End Sub
-
- Sub Exit_Click ()
- X% = MidiOutClose(hmidioutcopy)
- End
- End Sub
-
- Sub Form_Load ()
- Screen.MousePointer = 11
- Piano.Left = 0
- Piano.Top = 0
-
- ' Open Midi Driver
- MidiOutOpenPort
-
- HScrollMIDIChannel.Value = 0
- HScrollPatch.Value = 0
- HScrollVolume.Value = 100
- HScrollPan.Value = 64
- HScrollOctave.Value = 0
- Screen.MousePointer = 0
- End Sub
-
- Sub Form_Unload (Cancel As Integer)
- X% = MidiOutClose(hmidioutcopy)
- End Sub
-
- Sub HScrollMIDIChannel_Change ()
- ' Change Midi Channel to Vscroll1 value
- MidiChannelOut = HScrollMIDIChannel.Value
-
- ' Display new channel
- MidiChannelOutLabel.Caption = Str$(MidiChannelOut + 1)
-
- ' Sets the Patch & Volume for the current Midi Channel Out
- HScrollPatch.Value = MidiPatch(MidiChannelOut)
- HScrollVolume.Value = MidiVolume(MidiChannelOut)
- HScrollPan.Value = MidiPan(MidiChannelOut)
- HScrollOctave.Value = Octave(MidiChannelOut) / 12
- End Sub
-
- Sub HScrollOctave_Change ()
- LabelOctave.Caption = Str$(HScrollOctave.Value)
- Octave(MidiChannelOut) = (HScrollOctave.Value * 12)
- End Sub
-
- Sub HScrollPan_Change ()
- MidiPan(MidiChannelOut) = HScrollPan.Value
-
- ' 05-16-92 Pan Midi Out routine
- MidiEventOut = 176 + MidiChannelOut
- MidiNoteOut = 10
- MidiVelOut = MidiPan(MidiChannelOut)
- SendMidiOut
- End Sub
-
- Sub HScrollPatch_Change ()
- ' Sets the Patch for the current Midi Channel Out
- MidiPatch(MidiChannelOut) = HScrollPatch.Value
- ReadPatch
-
- ' 05-15-92 Patch Midi Out routine
- MidiEventOut = &HC0 + MidiChannelOut
- MidiNoteOut = MidiPatch(MidiChannelOut)
- MidiVelOut = 0
- SendMidiOut
-
- End Sub
-
- Sub HScrollVolume_Change ()
- MidiVelocity = HScrollVolume.Value
- MidiVolume(MidiChannelOut) = HScrollVolume.Value
- VolumeLabel.Caption = Str$(MidiVelocity)
- End Sub
-
- Sub PanelWhite_DragDrop (Index As Integer, Source As Control, X As Single, Y As Single)
- For nn = 0 To NoteCatchCount - 1
- MidiEventOut = 144 + MidiChannelOut
- MidiVelOut = 0
- MidiNoteOut = NoteOnCatcher(nn)
- SendMidiOut
-
- NoteMOD = (NoteOnCatcher(nn) - Octave(MidiChannelOut)) Mod 12
-
- If NoteMOD = 0 Or NoteMOD = 2 Or NoteMOD = 4 Or NoteMOD = 5 Or NoteMOD = 7 Or NoteMOD = 9 Or NoteMOD = 11 Then
- Piano.PanelWhite(NoteOnCatcher(nn) - Octave(MidiChannelOut)).BevelOuter = 2
- Else
- Piano.PanelWhite(NoteOnCatcher(nn) - Octave(MidiChannelOut)).BevelOuter = 2
- End If
- Next nn
-
- NoteCatchCount = 0
- End Sub
-
- Sub PanelWhite_DragOver (Index As Integer, Source As Control, X As Single, Y As Single, State As Integer)
- 'If still on same note, discard
- If NoteCatchCount > 0 Then
- If NoteOnCatcher(NoteCatchCount - 1) = Index + Octave(MidiChannelOut) Then
- Exit Sub
- End If
- End If
-
- NoteMOD = (Index) Mod 12
- If NoteMOD = 0 Or NoteMOD = 2 Or NoteMOD = 4 Or NoteMOD = 5 Or NoteMOD = 7 Or NoteMOD = 9 Or NoteMOD = 11 Then
- Piano.PanelWhite(Index).BevelOuter = 0
- Else
- Piano.PanelWhite(Index).BevelOuter = 0
- End If
- MidiEventOut = 144 + MidiChannelOut
- MidiVelOut = MidiVelocity
- MidiNoteOut = Index + Octave(MidiChannelOut)
- SendMidiOut
-
- 'Since drag/drop is being used, we must keep track of the note being played.
- NoteOnCatcher(NoteCatchCount) = MidiNoteOut
- If NoteCatchCount < 750 Then 'Don't let array get out of range
- NoteCatchCount = NoteCatchCount + 1
- End If
-
- End Sub
-
-