Midi Abfrage ....

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Then
Beiträge: 278
Registriert: 06.09.2004 13:26
Wohnort: Siegen

Midi Abfrage ....

Beitrag von Then »

Hi, ich habe nen Controller und habe es schon geschafft, dass ich eine Antwort von ihm per MIDI bekomme. Das geht mit folgendem Code

Code: Alles auswählen

Global MidiHeader.MIDIHDR

Procedure MIDICallBack0(hMi.l, wMsg.l, dummy.l , Data1.l, Data2.l)
  Select wMsg
    Case #MIM_DATA
      Debug "Normal MIDI Msg"     
    Case #MIM_LONGDATA
      Debug MidiHeader\dwBytesRecorded
  EndSelect
EndProcedure

*SysexBuffer = AllocateMemory(16384)
hMiP0.l = 0

MidiHeader\dwFlags = 0
MidiHeader\dwBufferLength = 16384
MidiHeader\lpData = *SysexBuffer

midiInOpen_(@hMiP0, 1, @MIDICallBack0(), 0, #CALLBACK_FUNCTION)
midiInPrepareHeader_(hMiP0, @MidiHeader, SizeOf(MidiHeader))
midiInAddBuffer_(hMiP0, @MidiHeader, SizeOf(MidiHeader))
midiInStart_(hMiP0)

OpenWindow(0, 10, 10, 200, 200, "MIDI Test")

Repeat
  Event = WaitWindowEvent(10)
Until Event = #PB_Event_CloseWindow


;midiInStop_(hMiP0)
midiInUnprepareHeader_(hMiP0, @MidiHeader, SizeOf(MidiHeader))
midiInReset_(hMiP0)
midiInClose_(hMiP0)
Nun möchte ich aber wissen, welche der vielen Knöpfe gedrückt wurde. Habe zwar schon was gefunden, aber der Code ist so unendlich lang :| Hier gehts ja schon etwas geschmeidiger, aber wie bekomme ich die Knopf/Schalter Nummer ?
PB 6.10LTs / Windows 11 64Bit (i9/32GB/ 1TB-SSD+4TB-HDD/3060GTX12GB) / 2x27" Multitouch

... ich mache dazu keine Aussage, weil ich mich damit selbst belasten könnte !
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Midi Abfrage ....

Beitrag von NicTheQuick »

Ich habe vor 16 Jahren mal das hier veröffentlicht. Ich nehme an das große Teile davon heute immer noch funktionieren: viewtopic.php?f=8&t=326
Schau dir vor allem die Procedure MidiInProc an, wenn du wissen willst welche Töne reinkommen.
Welche MIDI-Werte welchen Knöpfen entsprechen, musst du allerdings selbst herausfinden oder den den Hersteller fragen. Bei einem normalen MIDI-Keyboard sollte es aber klar sein.
Benutzeravatar
Then
Beiträge: 278
Registriert: 06.09.2004 13:26
Wohnort: Siegen

Re: Midi Abfrage ....

Beitrag von Then »

Nächstes Problem... :( Ich kann nun alle Regler abfragen und alles funktioniert doch sehr gut, aber... einige Schalter haben eine RGB Led drunter. Wie kann man die einschalten ? Ich würde an den Controller so lange verschiedene Parameter senden, bis ihm ein Licht aufgeht, nur wie sende ich ?
PB 6.10LTs / Windows 11 64Bit (i9/32GB/ 1TB-SSD+4TB-HDD/3060GTX12GB) / 2x27" Multitouch

... ich mache dazu keine Aussage, weil ich mich damit selbst belasten könnte !
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Midi Abfrage ....

Beitrag von NicTheQuick »

In meinem Code sind auch jede Menge Procedures wie NoteOn, NoteOff, ProgramChange, ChangeController, usw. Damit kannst du Signale senden, aber welche genau dein Gerät erwartet, weiß trotzdem nur der Hersteller. Bestimmt gibt es eine Dokumentation von ihm dazu. Oder du musst per Mail anfragen. Ich kann mir vorstellen, dass man ein NoteOn mit einer bestimmten Velocity sendet und dann leuchtet der entsprechende Button, der zu dieser Note gehört. Du musst nur noch herausfinden, auf welchem Channel zu senden musst. Aber das ist trotzdem nur geraten.
Benutzeravatar
Then
Beiträge: 278
Registriert: 06.09.2004 13:26
Wohnort: Siegen

Re: Midi Abfrage ....

Beitrag von Then »

Danke, werde es mal versuchen. :allright:
PB 6.10LTs / Windows 11 64Bit (i9/32GB/ 1TB-SSD+4TB-HDD/3060GTX12GB) / 2x27" Multitouch

... ich mache dazu keine Aussage, weil ich mich damit selbst belasten könnte !
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Midi Abfrage ....

Beitrag von NicTheQuick »

Welchen Controller hast du eigentlich? Es gibt ja viele Bastler, die mit sowas herumspielen.
Benutzeravatar
Then
Beiträge: 278
Registriert: 06.09.2004 13:26
Wohnort: Siegen

Re: Midi Abfrage ....

Beitrag von Then »

also dein Code gibt aus :

Code: Alles auswählen

Channel : 2
Note : 71
Velocity : 12
wenn ich eine Taste drücke. Es geht auch eine grüne LED an.

aber anderesherunm kann ich nicht

Code: Alles auswählen

NoteOn(2,71,12)
schreiben, oder ? Weil da nix passiert :(
NoteOn(Channel.b, Note.b, Velocity.b)
PB 6.10LTs / Windows 11 64Bit (i9/32GB/ 1TB-SSD+4TB-HDD/3060GTX12GB) / 2x27" Multitouch

... ich mache dazu keine Aussage, weil ich mich damit selbst belasten könnte !
Benutzeravatar
Stuhli
Beiträge: 75
Registriert: 18.10.2004 10:05

Re: Midi Abfrage ....

Beitrag von Stuhli »

Hallo,

würde mich jetzt auch interressieren. Habe von nem Kumpel ein Pioneer DDJ-200 geschenkt bekommen, weils halt kein echter Controller ist. Tja, die Buttons kann ich nun komplett abfragen und in meinen Softwareplayer integrieren, aber ich würde auch gerne die LEDs am Controller einschalten können. Wie geht das ?

Ich glaube nicht, das NoteOn(...) das richtige ist, oder ? Hat das mal jemand gemacht ??

Vielleicht bring ich die Leute hier auf ne Idee :lol:
SYNTAX ERROR IN 30! TYPE MISMATCH
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Midi Abfrage ....

Beitrag von NicTheQuick »

In der Anleitung des Pioneer DDJ-200 steht, dass man die Liste der MIDI-Messages auf der Pioneer-Webseite findet. Und tadaa: DDJ-200 List of MIDI messages

Edit: Ansonsten scheint auch das Forum die bessere Informationsquelle zu sein: https://forums.pioneerdj.com/hc/de/community/topics
Benutzeravatar
Stuhli
Beiträge: 75
Registriert: 18.10.2004 10:05

Re: Midi Abfrage ....

Beitrag von Stuhli »

Hey, vielen Dank. Da hatte ich gar nicht erst gesucht, aber wie muß ich das in Pb machen ? Stehe da etwas auf dem Schlauch. Ich sende mit NoteOn(...) Aber es passiert nix ....
:(
SYNTAX ERROR IN 30! TYPE MISMATCH
Antworten