Interface zur Ansprechung der MIDI-Schnittstelle

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
Batze
Beiträge: 1492
Registriert: 03.06.2005 21:58
Wohnort: Berlin
Kontaktdaten:

Beitrag von Batze »

NicTheQuick hat geschrieben:@Batze: Was genau funktioniert bei dir denn nicht?
Gibt keinen Ton von sich. Sonst geht alles. :wink:
Hier sind meine Codes (aber die Seite geht gerade nicht):
http://www.basicpure.de.vu
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

Beitrag von NicTheQuick »

@Batze: Hat deine Soundkarte überhaupt einen Sythesizer? Also kannst
du in dem Requester am Anfang einen Output auswählen? Oder hast du
vielleicht im Mixer den MIDI-Out nicht hochgedreht oder sonstwas?
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

Beitrag von NicTheQuick »

Es gibt wieder eine neue Version des Interfaces. Jetzt sind es schon stolze
1935 Zeilen bei 70,3 kB. Die Datei befindet sich hier.

Meine Daten für das Interface beziehe ich übrigens von hier.

Das Interface selbst ist 648 Bytes groß, die dazugehörige Struktur 748
Bytes und die zwei Zusatzstrukturen für den Callback und anderes
nochmal 4 und 29 Bytes. Wenn man das Interface also einmal erstellt,
werden direkt 748 Bytes reserviert. Zum Glück macht man das im
Normalfall nur einmal, weil man ja nicht hunderte Synthesizer ansprechen
will.
Benutzeravatar
Batze
Beiträge: 1492
Registriert: 03.06.2005 21:58
Wohnort: Berlin
Kontaktdaten:

Beitrag von Batze »

NicTheQuick hat geschrieben:Oder hast du vielleicht im Mixer den MIDI-Out nicht hochgedreht oder sonstwas?
Gott bin ich blöd. Hatte den Ton für Midis aus. :freak: :oops:
Hier sind meine Codes (aber die Seite geht gerade nicht):
http://www.basicpure.de.vu
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

Beitrag von NicTheQuick »

Ich habe hier nochmal alle 207 Befehle, die ich bisher umgesetzt habe mit Parametern aufgelistet:

Code: Alles auswählen

OpenOutputDevice.l(DeviceID.l)
CloseOutputDevice.l()
OpenInputDevice.l(DeviceID.l, Callback.l, UserData.l)
CloseInputDevice.l()
StartInput.l()
StopInput.l()
ResetInput.l()
ProgramChange.l(Channel.b, Voice.b)
NoteOn.l(Channel.b, Note.b, Velocity.b)
NoteOff.l(Channel.b, Note.b, Velocity.b)
NoteOffAlternate.l(Channel.b, Note.b)
ChangeController.l(Channel.b, Controller.b, Value.b)
ChannelPressure.l(Channel.b, Value.b)
KeyAftertouch.l(Channel.b, Note.b, Value.b)
PitchWheel.l(Channel.b, Value.w)
SysEx.l(*SysEx, Length.l)
Master_Tune.l(Tune.l)
Master_Volume_Realtime.l(Volume.b)
Master_Volume.l(Volume.b)
Master_Transpose.l(Transpose.b)
Drum_Setup_Reset.l(Drum_Setup.b)
XG_System_On.l()
All_Parameter_Reset.l()
TG300B_Reset.l()
General_Midi_On.l()
Bank_Select_MSB.l(Channel.b, Bank.b)
Bank_Select_LSB.l(Channel.b, Bank.b)
Volume.l(Channel.b, Volume.b)
Panorama.l(Channel.b, Panorama.b)
Modulation.l(Channel.b, Modulation.b)
Expression.l(Channel.b, Expression.b)
Reverb_Send_Level.l(Channel.b, Reverb.b)
Chorus_Send_Level.l(Channel.b, Chorus.b)
Variation_Effect_Send_Level.l(Channel.b, Variation_Effect.b)
Portamento.l(Channel.b, OnOff.b)
Portamento_Time.l(Channel.b, Time.b)
Portamento_Control.l(Channel.b, Note.b)
Filter_Frequency.l(Channel.b, Offset.b)
Filter_Resonance.l(Channel.b, Offset.b)
EG_Attack_Time.l(Channel.b, Offset.b)
EG_Release_Time.l(Channel.b, Offset.b)
Hold_Pedal.l(Channel.b, OnOff.b)
Sostenuto_Pedal.l(Channel.b, OnOff.b)
Soft_Pedal.l(Channel.b, OnOff.b)
All_Sounds_Off.l(Channel.b)
Reset_All_Controllers.l(Channel.b)
All_Notes_Off.l(Channel.b)
Omni_Off.l(Channel.b)
Omni_On.l(Channel.b)
Mono_Mode.l(Channel.b)
Poly_Mode.l(Channel.b)
Set_NRPN_MSBLSB.l(Channel.b, MSB.b, LSB.b)
Vibrato_Rate.l(Channel.b, Offset.b)
Vibrato_Depth.l(Channel.b, Offset.b)
Vibrato_Delay.l(Channel.b, Offset.b)
Filter_CutOff_Frequency.l(Channel.b, Offset.b)
Filter_Resonance_2.l(Channel.b, Offset.b)
EG_Attack_Time_2.l(Channel.b, Offset.b)
EG_Decay_Time.l(Channel.b, Offset.b)
EG_Release_Time_2.l(Channel.b, Offset.b)
DI_Filter_CutOff_Frequency.l(Channel.b, Note.b, Offset.b)
DI_Filter_Resonance.l(Channel.b, Note.b, Offset.b)
DI_EG_Attack_Rate.l(Channel.b, Note.b, Offset.b)
DI_EG_Decay_Rate.l(Channel.b, Note.b, Offset.b)
DI_Pitch_Coarse.l(Channel.b, Note.b, Offset.b)
DI_Pitch_Fine.l(Channel.b, Note.b, Offset.b)
DI_Level.l(Channel.b, Note.b, Level.b)
DI_Panorama.l(Channel.b, Note.b, Panorama.b)
DI_Reverb_Send_Level.l(Channel.b, Note.b, Reverb.b)
DI_Chorus_Send_Level.l(Channel.b, Note.b, Chorus.b)
DI_Variation_Effect_Send_Level.l(Channel.b, Note.b, Variation_Effect.b)
Set_RPN_MSBLSB(Channel.b, MSB.b, LSB.b)
Pitch_Bend_Sensivity.l(Channel.b, Offset.b)
Fine_Tuning.l(Channel.b, Offset.b)
Coarse_Tuning.l(Channel.b, Offset.b)
P_ChangeController.l(Controller.b, Part.b, Value.b)
P_Part_Mode.l(Part.b, Mode.b)
P_Receive_Midi_Channel.l(Part.b, Channel.b)
P_Element_Reserve.l(Part.b, Elements.b)
P_Same_Note_Number_Key_On_Assign.l(Part.b, Value.b)
P_MonoPoly_Mode.l(Part.b, Value.b)
P_Bank_Select_MSB.l(Part.b, MSB.b)
P_Bank_Select_LSB.l(Part.l, LSB.b)
P_Program_Number.l(Part.b, Program.b)
P_Volume.l(Part.b, Volume.b)
P_Dry_Level.l(Part.b, Level.b)
P_Panorama.l(Part.b, Panorama.b)
P_Reverb_Send.l(Part.b, Reverb.b)
P_Chorus_Send.l(Part.b, Chorus.b)
P_Variation_Send.l(Part.b, Variation.b)
P_Note_Shift.l(Part.b, Shift.b)
P_Detune.l(Part.b, Detune.b)
P_Vibrato_Depth.l(Part.b, Depth.b)
P_Pitch_EG_Inital_Level.l(Part.b, Level.b)
P_Pitch_EG_Attack_Time.l(Part.b, Time.b)
P_Pitch_EG_Release_Level.l(Part.b, Level.b)
P_Pitch_EG_Release_Time.l(Part.b, Time.b)
P_Filter_CutOff_Frequency.l(Part.b, Offset.b)
P_Filter_Resonance.l(Part.b, Offset.b)
P_Vibrato_Rate.l(Part.b, Rate.b)
P_Vibrato_Delay.l(Part.b, Delay.b)
P_EG_Attack_Time.l(Part.b, Time.b)
P_EG_Decay_Time.l(Part.b, Time.b)
P_EG_Relase_Time.l(Part.b, Time.b)
P_Portamento_Switch.l(Part.b, OnOff.b)
P_Portamento_Time.l(Part.b, Time.b)
P_Note_Limit_Low.l(Part.b, Note.b)
P_Note_Limit_High.l(Part.b, Note.b)
P_Velocity_Sense_Depth.l(Part.b, Offset.b)
P_Velocity_Sense_Offset.l(Part.b, Offset.b)
P_Velocity_Limit_Low.l(Part.b, Note.b)
P_Velocity_Limit_High.l(Part.b, Note.b)
P_MW_Pitch_Control.l(Part.b, Offset.b)
P_MW_Filter_Control.l(Part.b, Offset.b)
P_MW_Amplitude_Control.l(Part.b, Offset.b)
P_MW_LFO_Pitch_Modulation_Depth.l(Part.b, Depth.b)
P_MW_LFO_Filter_Modulation_Depth.l(Part.b, Depth.b)
P_MW_LFO_Amplitude_Modulation_Depth.l(Part.b, Depth.b)
P_BEND_Pitch_Control.l(Part.b, Offset.b)
P_BEND_Filter_Control.l(Part.b, Offset.b)
P_BEND_Amplitude_Control.l(Part.b, Offset.b)
P_BEND_LFO_Pitch_Modulation_Depth.l(Part.b, Depth.b)
P_BEND_LFO_Filter_Modulation_Depth.l(Part.b, Depth.b)
P_BEND_LFO_Amplitude_Modulation_Depth.l(Part.b, Depth.b)
P_Receive_Pitch_Bend.l(Part.b, OnOff.b)
P_Receive_Channel_After_Touch.l(Part.b, OnOff.b)
P_Receive_Program_Change.l(Part.b, OnOff.b)
P_Receive_Control_Change.l(Part.b, OnOff.b)
P_Receive_Poly_After_Touch.l(Part.b, OnOff.b)
P_Receive_Note_Messages.l(Part.b, OnOff.b)
P_Receive_RPN.l(Part.b, OnOff.b)
P_Receive_NRPM.l(Part.b, OnOff.b)
P_Receive_Modulation.l(Part.b, OnOff.b)
P_Receive_Volume.l(Part.b, OnOff.b)
P_Receive_Pan.l(Part.b, OnOff.b)
P_Receive_Expression.l(Part.b, OnOff.b)
P_Receive_Hold_Pedal.l(Part.b, OnOff.b)
P_Receive_Portamento.l(Part.b, OnOff.b)
P_Receive_Sostenuto_Pedal.l(Part.b, OnOff.b)
P_Receive_Soft_Pedal.l(Part.b, OnOff.b)
P_Receive_Bank_Select.l(Part.b, OnOff.b)
P_Scale_Tuning.l(Part.b, Note.b, Offset.b)
D_ChangeController.l(Controller.b, Drum_Setup.b, Note.b, Value.b)
D_Pitch_Coarse.l(Drum_Setup.b, Note.b, Offset.b)
D_Pitch_Fine.l(Drum_Setup.b, Note.b, Pitch.b)
D_Level.l(Drum_Setup.b, Note.b, Level.b)
D_Alternate_Group.l(Drum_Setup.b, Note.b, Group.b)
D_Panorama.l(Drum_Setup.b, Note.b, Panorama)
D_Reverb_Send.l(Drum_Setup.b, Note.b, Reverb.b)
D_Chorus_Send.l(Drum_Setup.b, Note.b, Chorus.b)
D_Variation_Send.l(Drum_Setup.b, Note.b, Variation.b)
D_Key_Assign.l(Drum_Setup.b, Note.b, Value.b)
D_Receive_Note_Off.l(Drum_Setup.b, Note.b, OnOff.b)
D_Receive_Note_On.l(Drum_Setup.b, Note.b, OnOff.b)
D_Filter_CutOff_Frequency.l(Drum_Setup.b, Note.b, Offset.b)
D_Filter_Resonance.l(Drum_Setup.b, Note.b, Offset.b)
D_EG_Attack_Rate.l(Drum_Setup.b, Note.b, Rate.b)
D_D_EG_Decay1_Rate.l(Drum_Setup.b, Note.b, Rate.b)
D_EG_Decay2_Rate.l(Drum_Setup.b, Note.b, Rate.b)
E_ChangeController_1.l(Controller.b, Value.b)
E_ChangeController_2.l(Controller.b, Value1.b, Value2.b)
R_Reverb_Typ.l(Typ.l)
R_Reverb_Time(Time.b)
R_Diffusion.l(Diffusion.b)
R_Initial_Delay.l(Delay.b)
R_HPF_CutOff.l(Offset.b)
R_LPF_CutOff.l(Offset.b)
R_DryWet.l(Offset.b)
R_Reverb_Return.l(Value.b)
R_Reverb_Panorama.l(Panorama.b)
R_Reverb_Delay(Delay.b)
R_Density(Value.b)
R_Early_Reflection(Value.b)
R_Feedback_Level(Level.b)
R_Width(Width.b)
R_Height(Height.b)
R_Depth(Depth.b)
R_Wall_Variation(Variation.b)
C_Chorus_Typ.l(Typ.l)
C_LFO_Frequency.l(Offset.b)
C_LFO_Phase_Modulation_Depth.l(Offset.b)
C_Feedback_Level.l(Level.b)
C_EQ_Low_Frequency.l(Offset.b)
C_EQ_Low_Gain.l(Gain.b)
C_EQ_High_Frequency.l(Offset.b)
C_EQ_High_Gain.l(Gain.b)
C_DryWet.l(Offset.b)
C_Chorus_Return.l(Value.b)
C_Chorus_Panorama.l(Panorama.b)
C_Send_Chorus_To_Reverb.l(Value.b)
C_Delay_Offset.l(Offset.b)
C_Input_Mode.l(Mode.b)
C_LFO_Phase_Difference(Offset.b)
V_Variation_Return.l(Level.b)
V_Variation_Panorama.l(Panorama.b)
V_Send_Variation_To_Reverb.l(Reverb.b)
V_Send_Variation_To_Chorus.l(Chorus.b)
V_Variation_Connection.l(Value.b)
V_Variation_Part.l(Part.b)
V_Modulation_Wheel.l(Offset.b)
V_Pitch_Bend_Wheel.l(Offset.b)
V_Channel_After_Touch.l(Offset.b)
V_AC1.l(Offset.b)
V_AC2.l(Offset.b)
V_Effect_Turned_Off.l()
V_Effect_Thru.l()
V_Variation_Typ.l(Typ.l)
Jetzt fehlen noch alle Variationeffekte des XG-Synth.
Danach schaue ich mich mal nach SysEx-Messages für Roland um. Dann
kann ich das Interface noch weiter ausbauen.

Ich bin mal gespannt, wer mit diesem Interface überhaupt etwas
anfangen kann. :lol: Also ich und meine Band schon. <) Aber es wenn ich
es fertig gestellt habe, fange ich mal mit der Hilfe an. Aber dazu brauche
ich dann sowieso wieder eure Hilfe, weil ich nämlich nicht weiß, was ich da
am besten benutzen kann und sollte, damit ich es übersichtlich gestalten
kann. :|
Benutzeravatar
Sebastian
Beiträge: 322
Registriert: 14.06.2006 16:46
Wohnort: Kiel

Beitrag von Sebastian »

Bei mir funktioniert es nicht. Es liegt wohl an dem | bei obenwindow. Das scheint pb 4.0 nicht zu kennen oder so. Wozu dient der | eigentlich? Vermutlich um mehrere Konstanten zu übergeben? Wie muss ich es für pb 4.0 umschreiben?
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

Das ist schon richtig so , allerdings hat man die Parameter in 4.0 verdreht , also erst den Titel dann die Flags.

Code: Alles auswählen

WinID = OpenWindow(#PB_Any, 0, 0, Width, 270, "MIDI-Requester", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) 

#PB_Event_CloseWindow
#PB_Event_Gadget
EventGadget()
Benutzeravatar
Sebastian
Beiträge: 322
Registriert: 14.06.2006 16:46
Wohnort: Kiel

Beitrag von Sebastian »

Nee. Leider funktioniert das Beispiel auch nicht, wenn ich diesen Punkt ändere. Könnte das Beispiel nicht für 4.0 umgesetzt werden?
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

> Nee. Leider funktioniert das Beispiel auch nicht, wenn ich diesen Punkt
> ändere.

edel hat mehrere Punkte aufgelistet.

Im übrigen ist es immer von Vorteil, wenn Du die Fehlermeldung mitpostest.
Ein 'funktioniert nicht' ist nicht sehr informativ.

> Könnte das Beispiel nicht für 4.0 umgesetzt werden?

das sind insgesamt 4 kleine Änderungen, die vorgenommen werden müssen.
Das wirst Du doch noch hinkriegen, oder?

Grüße ... Kiffi
a²+b²=mc²
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

Beitrag von NicTheQuick »

Hallo, ich habe auf Grund eines anstehenden Projektes wieder einen schönen
Codeschnipsel für euch.

Erstens habe ich meine DirectMIDI-Include auf PB 4.0 angepasst, wodurch
sie beträchtlich geschrumpft ist und nicht mehr soviel Speicher bei der
Ausführung benötigt.

Und zweitens ist noch ein kleines Mausklavier dabei, dass die
DirectMIDI-Include nutzt und selbst auch wieder ein handliches Interface ist.

Bevor JO_Keys.pb gestartet wird, bitte nicht vergessen die DirectMIDI.pbi zu
includieren. Wenn jemand ein MIDI-Keyboard sein Eigen nennt und es an den
PC angeschlossen hat, kann er beim MIDI-Requester auch einen Input
wählen und sieht seine gespielten Tasten auf dem Mausklavier.

///Edit: Hier auch nochmal als EXE: JO_Keys.exe

Viel Spaß damit! :allright:

///Edit:
Links erneuert!
Zuletzt geändert von NicTheQuick am 03.09.2007 10:33, insgesamt 1-mal geändert.
Antworten