Editer un fichier midi (boucle batterie)

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Stefou
Messages : 234
Inscription : jeu. 18/janv./2007 14:08

Editer un fichier midi (boucle batterie)

Message par Stefou »

Salut à tous ! 8)

J'aimerais avoir des boucles de batterie en midi pour jouer de la basse ou de la guitare dessus et puis faire des compos...
J'ai cherché sur le net mais je n'ai rien trouvé ou très peu...

Alors voilà, le but du projet est de pouvoir découper des morceaux midi qui eux sont facile à trouver.

1 _ éditer le fichier midi
2 _ extraire le canal 10 (canal batterie)
3 _ découper la piste par mesure
4_ faire le trie des mêmes mesures et ne garder que les différentes.
....
Bref une fois l'édition faite du fichier midi, le reste est un jeux d'enfant 8)

Merci d'avance

(J'ai comme une intuition qui me dit que Dobro va me répondre...)
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

bah a une epoque j'avais fait ça :

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

Stefou
Messages : 234
Inscription : jeu. 18/janv./2007 14:08

Message par Stefou »

Hihihi je savais que Dobro allait me répondre :D

Mais ce n'est pas cela que je cherche :?

Je cherche vraiment à éditer un fichier midi, a retrouver tous les événements inscrit à l'intérieur du fichier.

Je continue mes recherche....
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Stefou a écrit :
Je cherche vraiment à éditer un fichier midi, a retrouver tous les événements inscrit à l'intérieur du fichier..
ici :
http://www.purebasic.fr/french/viewtopi ... rseur+midi
Stefou
Messages : 234
Inscription : jeu. 18/janv./2007 14:08

Message par Stefou »

Merci Dobro, j'étais justement dessus...enfin le post anglais et faut bien le dire en français c'est plus clair.....

Reste à enregistrer le fichier mais cela ne devrait pas être trop compliqué.

a+ et encore merci de l'aide pour la recherche.
Répondre