Code : Tout sélectionner
;Code par Dobro
; Purebasic 4.00
Declare MIDIOpen()
Declare SendMIDIMessage(nStatus.l,nCanal.l,nData1.l,nData2.l)
Declare PlayNoteMIDI(Canal.b,Note.b,VelociteDown.b,VelociteUp.b)
Declare ChargeInstrument(Canal.b,Instrument.b)
Global m_hMidiOut,m_MIDIOpen.b
Enumeration 35
#Kick_Drum_2
#Kick_Drum_1
#Side_Stick
#Snare_Drum_1
#Hand_clap
#Snare_Drum_2
#Low_Tom_2
#Closed_Hi_Hat
#Low_Tom_1
#Pedal_Hi_Hat
#Mid_Tom_2
#Open_Hi_Hat
#Mid_Tom_1
#High_Tom_2
#Crash_Cymbal_1
#High_Tom_1
#Ride_Cymbal_1
#Chinese_Cymbal
#Ride_Bell
#Tambourine
#Splash_Cymbal
#Cow_Bell
#Crash_Cymbal_2
#Vibra_Slap
#Ride_Cymbal_2
#High_Bongo
#Low_Bongo
#Mute_High_Conga
#Open_High_Conga
#Low_Conga
#High_Timbale
#Low_Timbale
#High_Agogo
#Low_Agogo
#Cabasa
#Maracas
#Short_Hi_Whistle
#Low_Hi_Whistle
#Short_Guiro
#Long_Guiro
#Claves
#High_Wood_Block
#Low_Wood_Block
#Mute_Cuica
#Open_Cuica
#Mute_Triangle
#Open_Triangle
EndEnumeration
OpenConsole()
MIDIOpen()
ChargeInstrument(9,0)
bpm=60 ; bpm1 = beat par minute !!
bpm=(1000*60)/bpm
Repeat
For Cases=1 To 32
; ************************************
Note$=StringField("1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", Cases, ",")
If Note$="1"
PlayNoteMIDI(9, #Kick_Drum_1,127,127)
EndIf
; ************************************
Note$=StringField("0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0", Cases, ",")
If Note$="1"
PlayNoteMIDI(9, #Snare_Drum_1,127,127)
EndIf
; ************************************
Note$=StringField("0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0", Cases, ",")
If Note$="1"
PlayNoteMIDI(9, #Hand_clap,127,127)
EndIf
; ************************************
Note$=StringField("1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0", Cases, ",")
If Note$="1"
PlayNoteMIDI(9, #Closed_Hi_Hat,127,127)
EndIf
; ************************************
Note$=StringField("0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", Cases, ",")
If Note$="1"
PlayNoteMIDI(9, #Low_Tom_1,127,127)
EndIf
; ************************************
Note$=StringField("0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", Cases, ",")
If Note$="1"
PlayNoteMIDI(9, #Pedal_Hi_Hat,127,127)
EndIf
; ************************************
Note$=StringField("0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", Cases, ",")
If Note$="1"
PlayNoteMIDI(9, #Open_Hi_Hat,127,127)
EndIf
; ************************************
Note$=StringField("0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0", Cases, ",")
If Note$="1"
PlayNoteMIDI(9, #Mid_Tom_1,127,127)
EndIf
; ************************************
Note$=StringField("0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", Cases, ",")
If Note$="1"
PlayNoteMIDI(9, #Crash_Cymbal_1,127,127)
EndIf
; ************************************
Note$=StringField("0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", Cases, ",")
If Note$="1"
PlayNoteMIDI(9, #High_Tom_1,127,127)
EndIf
; ************************************
Note$=StringField("0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0", Cases, ",")
If Note$="1"
PlayNoteMIDI(9, #Ride_Cymbal_1,127,127)
EndIf
; ************************************
Note$=StringField("0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", Cases, ",")
If Note$="1"
PlayNoteMIDI(9, #Chinese_Cymbal,127,127)
EndIf
; ************************************
Note$=StringField("0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", Cases, ",")
If Note$="1"
PlayNoteMIDI(9, #Ride_Bell,127,127)
EndIf
; ************************************
Note$=StringField("0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", Cases, ",")
If Note$="1"
PlayNoteMIDI(9, #Tambourine,127,127)
EndIf
; ************************************
Note$=StringField("0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", Cases, ",")
If Note$="1"
PlayNoteMIDI(9, #Splash_Cymbal,127,127)
EndIf
; ************************************
Note$=StringField("0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", Cases, ",")
If Note$="1"
PlayNoteMIDI(9, #Cow_Bell,127,127)
EndIf
; ************************************
Note$=StringField("0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", Cases, ",")
If Note$="1"
PlayNoteMIDI(9, #Vibra_Slap,127,127)
EndIf
; ************************************
Note$=StringField("0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", Cases, ",")
If Note$="1"
PlayNoteMIDI(9, #High_Bongo,127,127)
EndIf
; ************************************
Note$=StringField("0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", Cases, ",")
If Note$="1"
PlayNoteMIDI(9, #Low_Bongo,127,127)
EndIf
; ************************************
Note$=StringField("0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", Cases, ",")
If Note$="1"
PlayNoteMIDI(9, #High_Timbale,127,127)
EndIf
; ************************************
Note$=StringField("0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", Cases, ",")
If Note$="1"
PlayNoteMIDI(9, #Low_Timbale,127,127)
EndIf
; ************************************
Note$=StringField("0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", Cases, ",")
If Note$="1"
PlayNoteMIDI(9, #High_Agogo,127,127)
EndIf
; ************************************
Note$=StringField("0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", Cases, ",")
If Note$="1"
PlayNoteMIDI(9, #Low_Agogo,127,127)
EndIf
; ************************************
Note$=StringField("0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", Cases, ",")
If Note$="1"
PlayNoteMIDI(9, #Cabasa,127,127)
EndIf
; ************************************
Note$=StringField("0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", Cases, ",")
If Note$="1"
PlayNoteMIDI(9, #Maracas,127,127)
EndIf
; ************************************
Note$=StringField("0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", Cases, ",")
If Note$="1"
PlayNoteMIDI(9, #Short_Hi_Whistle,127,127)
EndIf
; ************************************
Note$=StringField("0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", Cases, ",")
If Note$="1"
PlayNoteMIDI(9, #Low_Hi_Whistle,127,127)
EndIf
; ************************************
Note$=StringField("0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", Cases, ",")
If Note$="1"
PlayNoteMIDI(9, #Short_Guiro,127,127)
EndIf
; ************************************
Note$=StringField("0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", Cases, ",")
If Note$="1"
PlayNoteMIDI(9, #Long_Guiro,127,127)
EndIf
; ************************************
Note$=StringField("0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", Cases, ",")
If Note$="1"
PlayNoteMIDI(9, #Mute_Cuica,127,127)
EndIf
; ************************************
Note$=StringField("0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", Cases, ",")
If Note$="1"
PlayNoteMIDI(9, #Mute_Triangle,127,127)
EndIf
; ************************************
Note$=StringField("0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", Cases, ",")
If Note$="1"
PlayNoteMIDI(9, #Open_Triangle,127,127)
EndIf
; ************************************
Delay( bpm/32)
Next Cases
ForEver
; ********************** Procedures ****************************************
Procedure SendMIDIMessage(nStatus.l,nCanal.l,nData1.l,nData2.l)
dwFlags.l = nStatus | nCanal | (nData1 << 8) | (nData2 << 16)
temp.l = midiOutShortMsg_(m_hMidiOut,dwFlags);
If temp<>0
MessageRequester("Problème", "Erreur dans l'envoi du message MIDI",0)
EndIf
EndProcedure
Procedure MIDIOpen()
If m_MIDIOpen = 0
If midiOutOpen_(@m_hMidiOut,MIDIMAPPER,0,0,0) <> 0
MessageRequester("Problème", "Impossible d'ouvrir le périphérique MIDI",0)
Else
SendMIDIMessage($C0,0,0,0)
m_MIDIOpen = 1
EndIf
EndIf
EndProcedure
Procedure PlayNoteMIDI(Canal.b,Note.b,VelociteDown.b,VelociteUp.b)
If m_MIDIOpen
SendMIDIMessage($80 | Canal,0,Note,VelociteDown)
SendMIDIMessage($90 | Canal,0,Note,VelociteUp)
EndIf
EndProcedure
Procedure ChargeInstrument(Canal.b,Instrument.b)
If m_MIDIOpen
SendMIDIMessage($C0 | Canal,0,Instrument,0)
EndIf
EndProcedure