Midi Abfrage ....
- NicTheQuick
- Ein Admin
- Beiträge: 8679
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
- Kontaktdaten:
Re: Midi Abfrage ....
Ich habe leider keine Zeit mir diese Tabelle genauer anzuschauen. Außerdem habe ich das Gerät nicht und schon seit mindestens 12 Jahren auch kein Windows mehr. Sprich ich kann meinen eigenen Code jetzt eh nicht mehr testen.
Re: Midi Abfrage ....
Haha, habe nun auch so ein DDJ-200 zu Weihnachten bekommen, weil ich mal sowas erwähnte. Nun habe ich das Teil hier stehen und will es auch am liebsten zum "leuchten" bringen.
Die Abfrage funktionierte auch super, aber senden kann ich auch nichts an das Gerät. Ich würde gerne meinen MP3 Player damit steuern und auch eine Rückmeldung an die Tasten schicken.
2x ist mit der PC damit abgeschmiert. Im englischen Forum habe ich nun auch diese Diskussion verfolgt und ich finde, es sollte wieder aufgenommen werden. Die Controller sind doch feine Gadgets.
auch damit habe ich mal rumgespielt, aber kam nicht bei raus. Auch die MIDI_IN müsste da noch rein, um wenigstens abzufragen. Midi ist schon eine interessante Sache.
Die Abfrage funktionierte auch super, aber senden kann ich auch nichts an das Gerät. Ich würde gerne meinen MP3 Player damit steuern und auch eine Rückmeldung an die Tasten schicken.
2x ist mit der PC damit abgeschmiert. Im englischen Forum habe ich nun auch diese Diskussion verfolgt und ich finde, es sollte wieder aufgenommen werden. Die Controller sind doch feine Gadgets.
Code: Alles auswählen
EnableExplicit
Macro MIDIKeyMessage(Status, Channel, key, Velocity)
((Velocity << 16) | (key << 8) | (Status << 4) | (Channel - 1))
EndMacro
Macro MIDIInstrumentMessage(Channel, Instrument)
(((Instrument - 1) << 8) | (%1100 << 4) | (Channel - 1))
EndMacro
Define iNumDev.i, around.i, moc.MIDIOUTCAPS, Instrument.i, Result.i, hmo.i,t,k,v
iNumDev = midiOutGetNumDevs_()
For around = 0 To iNumDev - 1
midiOutGetDevCaps_(around, moc, SizeOf(MIDIOUTCAPS))
Debug " " + Str(around) + " " + PeekS(@moc\szPname[0], #MAXPNAMELEN)
Next
Result = midiOutOpen_(@hmo,1, #Null, #Null, #CALLBACK_NULL)
If Result = #MMSYSERR_NOERROR
midiOutShortMsg_(hmo, MIDIInstrumentMessage(10, 1))
Delay(500)
midiOutShortMsg_(hmo, MIDIKeyMessage(%1001,10, 4, 0))
Delay(500)
Result = midiOutClose_(hmo)
Else
Debug "midiOutOpen Error: " + Str(Result)
EndIf
- NicTheQuick
- Ein Admin
- Beiträge: 8679
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
- Kontaktdaten:
Re: Midi Abfrage ....
Im zweiten Post hier ist ein Thread von mir verlinkt mit eine guten Vorlage zum Arbeiten mit MIDI. Wenn du MIDI-Out verwenden möchtest, musst du aber die shared Variable setzen.
Wieso ist dein PC eigentlich abgeschmiert?
Wieso ist dein PC eigentlich abgeschmiert?
Re: Midi Abfrage ....
Warum Windows abschmierte weis ich nicht. Aber es passierte immer, wenn ich das Midi Programm getestet hatte. Bisher 3x. Bin jetzt auch kein Profi in Pb, daher weiß ich nicht genau was du meinst.
Re: Midi Abfrage ....
Hey, ich bin komplett neu hier und habe bisher nur gelesen. Ich bin DJ und programmiere mit PB auch so einige Spielereien wie Soundboards, Effektboards oder andere coole Toolz für meine GIGs. Ist eben mit PB echt easy
Nun bin ich auch auf diese MIDI Geschichte aufgesprungen, denn ich habe ein Launchpad, welches ich gerne selbst ansteuern würde. Ich benutze dieses hier :
https://www.gear4music.de/de/Keyboards- ... i-MK3/34U1
Ein klasse Teil, aber es würde mir mehr helfen, wenn ich´s besser integrieren könnte. Nicht überall brauche ich diese mitgelieferte Software, sondern es passte perfekt zu meinen kleinen Helferleins. Ich kann die Tasten mit dem geposteten Code oben zwar abfragen, aber wie krieg ich die Pads zum leuchten ? Wäre cool, wenn da jemand ´ner Anfängerin helfen könnte
Auch der Code zum Abfragen kommt mir sehr überladen vor, braucht man das alles ??
Nun bin ich auch auf diese MIDI Geschichte aufgesprungen, denn ich habe ein Launchpad, welches ich gerne selbst ansteuern würde. Ich benutze dieses hier :
https://www.gear4music.de/de/Keyboards- ... i-MK3/34U1
Ein klasse Teil, aber es würde mir mehr helfen, wenn ich´s besser integrieren könnte. Nicht überall brauche ich diese mitgelieferte Software, sondern es passte perfekt zu meinen kleinen Helferleins. Ich kann die Tasten mit dem geposteten Code oben zwar abfragen, aber wie krieg ich die Pads zum leuchten ? Wäre cool, wenn da jemand ´ner Anfängerin helfen könnte
Auch der Code zum Abfragen kommt mir sehr überladen vor, braucht man das alles ??
Re: Midi Abfrage ....
Habe mal den Code deutlich verkleinert (Man möge mir die Fehler verzeihen, aber auch gerne zeigen)
Damit kannste den Datenfluss der MIDI Schnittstelle anzeigen. Wie man jedoch wieder einen genauen Wert (0-127) vom Drehregler bekommt, kriege ich nicht hin, sorry. Vielleicht schafft es ein anderer....
Code: Alles auswählen
#MIDIRequ_InSet = 2
#MIDIRequ_OutSet = 1
OutDevice.l=1
InDevice.l=0
MIDIResult=3
InfoOut.MIDIOUTCAPS
Structure MIDIData
Channel.b
Note.b
Velocity.b
Null.b
EndStructure
Procedure MidiInProc(hMidiIn.l, wMsg.l, dwInstance.l, dwParam1.l, dwParam2.l)
Protected Status.l, OnOf.l, NoteNr.l, Velocity.l
Select wMsg
Case #MM_MIM_DATA
Status=dwParam1 & $FF
key1=(dwParam1 >> 8) & $FF
key2=(dwParam1 >> 16) & $FF
key3=dwParam1 & $F
key4=dwParam2
SetGadgetText(11,Str(Status))
SetGadgetText(12,Str(key1))
SetGadgetText(13,Str(key2))
SetGadgetText(14,Str(key3))
SetGadgetText(15,Str(key4))
EndSelect
EndProcedure
If MIDIResult & #MIDIRequ_InSet
hMidiIn.l
If midiInOpen_(@hMidiIn, InDevice, @MidiInProc(), 0, #CALLBACK_FUNCTION) = #MMSYSERR_NOERROR
If midiInStart_(hMidiIn) = #MMSYSERR_NOERROR
EndIf
EndIf
EndIf
If hMidiIn And hMidiOut
If midiConnect_(hMidiIn, hMidiOut, 0) = 0
EndIf
EndIf
main:
OpenWindow(0,0,0,260,90,"",#PB_Window_ScreenCentered)
TextGadget(1, 10,10,40,20,"Status")
TextGadget(2, 60,10,40,20,"Key1")
TextGadget(3,110,10,40,20,"Key2")
TextGadget(4,160,10,40,20,"Key3")
TextGadget(5,210,10,40,20,"Key4")
ButtonGadget(7,10,60,80,20,"EXIT")
StringGadget(11, 10,30,40,20,"",#PB_Text_Right)
StringGadget(12, 60,30,40,20,"",#PB_Text_Right)
StringGadget(13,110,30,40,20,"",#PB_Text_Right)
StringGadget(14,160,30,40,20,"",#PB_Text_Right)
StringGadget(15,210,30,40,20,"",#PB_Text_Right)
Repeat
Delay(1)
Event=WindowEvent()
Select Event
Case #PB_Event_Gadget
Gadget=EventGadget()
Select Gadget
Case 7
midiDisconnect_(hMidiIn, hMidiOut, 0)
While midiInClose_(hMidiIn) = #MIDIERR_STILLPLAYING : Wend
While midiOutClose_(hMidiOut) = #MIDIERR_STILLPLAYING : Wend
End
EndSelect
EndSelect
ForEver
PB 5.62 / Windows 11 64Bit (i5/32GB/240GB-SSD+3TB-HDD/1050GTX4GB) / 27" Multitouch Monitor
... ich mache dazu keine Aussage, weil ich mich damit selbst belasten könnte !
... ich mache dazu keine Aussage, weil ich mich damit selbst belasten könnte !
Re: Midi Abfrage ....
Hi, danke, habe nun Zeit gefunden diesen wirklich kurzen Code zu testen. Funktioniert super , aber wie kann ich nun den genauen Wert der Regler oder Jogwheels finden. Dieser sollte laut Beschreibung (und anderen Codes) von 0-127 gehen.
Wichtiger wäre mir eben, wie man nun per MIDI sendet. Ist scheinbar doch nicht so einfach
Wichtiger wäre mir eben, wie man nun per MIDI sendet. Ist scheinbar doch nicht so einfach
Re: Midi Abfrage ....
Also, wenn ich an meinen Wheels drehe, wird der Wert, der ausgegeben wird immer größer, egal in welche Richtung ich drehe. Jetzt muss quasi nur der Unterschied zwischen Ausgangswert und Endwert ausgerechnet werden und anhand der Drehbewegung kann man diesen dann von einer vorgegebenen Variable subtrahieren oder addieren.
Wie das genau geht... keine Ahnung. Vielleicht erbarmt sich ja doch mal einer der "Profis" und hilft uns. Da ja nun doch mehrere Leute genau dieses Thema derzeit verstehen wollen.
Wie das genau geht... keine Ahnung. Vielleicht erbarmt sich ja doch mal einer der "Profis" und hilft uns. Da ja nun doch mehrere Leute genau dieses Thema derzeit verstehen wollen.
SYNTAX ERROR IN 30! TYPE MISMATCH