Gibt keinen Ton von sich. Sonst geht alles.NicTheQuick hat geschrieben:@Batze: Was genau funktioniert bei dir denn nicht?
Interface zur Ansprechung der MIDI-Schnittstelle
- NicTheQuick
- Ein Admin
- Beiträge: 8812
- 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
- NicTheQuick
- Ein Admin
- Beiträge: 8812
- 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
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.
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.
- NicTheQuick
- Ein Admin
- Beiträge: 8812
- 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
Ich habe hier nochmal alle 207 Befehle, die ich bisher umgesetzt habe mit Parametern aufgelistet:
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.
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.
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)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.
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.
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()
> 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
> ä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²
- NicTheQuick
- Ein Admin
- Beiträge: 8812
- 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
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!
///Edit:
Links erneuert!
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!
///Edit:
Links erneuert!
Zuletzt geändert von NicTheQuick am 03.09.2007 10:33, insgesamt 1-mal geändert.