Sub Process_Globals
Private fx As JFX
Private MainForm As Form
Private MidiSystem,Receiver,MyDevice,MyReceiver As JavaObject
........
End Sub
Private Sub MidiStart
Try
'Get the MidiSysten Object
MidiSystem.InitializeStatic("javax.sound.midi.MidiSystem")
Dim Result As List
Result.Initialize
Dim Class As JavaObject
Class.InitializeStatic("java.lang.Class")
Dim MidiRecs() As Object = MidiSystem.RunMethod("getMidiDeviceInfo",Null)
Dim MyMidiName As String
MyMidiName = "Custom MIDI interface"
For Each MInfo As JavaObject In MidiRecs
Result.Add(MInfo)
Next
Dim MyPortNr As Int
MyPortNr = -1
For i = 0 To Result.Size-1
lbl_status.Text = Result.Get(i)
If lbl_status.Text == MyMidiName Then
Log("MyMIDI : ---------")
MyPortNr = i
End If
Log(Result.Get(i))
Next
Log(MyPortNr)
If MyPortNr == -1 Then
lbl_status.Text = "Error: Custom MIDI interface not found!"
Receiver = MidiSystem.RunMethod("getReceiver",Null)
Else
lbl_status.Text = "Custom MIDI interface found!"
lbl_ctrl_name.Text = "Port:"
lbl_ctrl_val.Text = MyPortNr
cnt_mid_port = 0
For Each MInfo As JavaObject In MidiRecs
If cnt_mid_port == MyPortNr Then
' If cnt_mid_port == 1 Then
Log(MInfo)
MyDevice = MidiSystem.RunMethod("getMidiDevice",Array(MInfo))
Receiver = MyDevice
End If
cnt_mid_port = cnt_mid_port + 1
Next
' Receiver = MidiSystem.RunMethod("getReceiver",Null)
Log(Receiver)
End If
Log("Midi Device available")
Log(Receiver)
Catch
'If a midi synth is not available
Log(LastException)
Log("Midi System unavailable")
Return
End Try
'Create a Short Midi Message
Dim Message As JavaObject
Message.InitializeNewInstance("javax.sound.midi.ShortMessage",Null)
MidiReady = True
cmb_box1.Items.AddAll(Result)
End Sub
Private Sub CtrlChange(CtrlNr As Int, CtrlVal As Int)
If Not(MidiReady) Then
Log("Midi Device is not ready")
Return
End If
'Create a short midi message
Dim Message As JavaObject
Message.InitializeNewInstance("javax.sound.midi.ShortMessage",Null)
Dim CtrlChg() As Object
CtrlChg = Array As Object(0xB0,CtrlNr,CtrlVal)
Message.RunMethod("setMessage",CtrlChg)
'Send Message
Receiver.RunMethod("send",Array(Message,TimeStamp))
End Sub