GetTempo dans un timer

gribouillex Messages postés 172 Date d'inscription lundi 10 octobre 2005 Statut Membre Dernière intervention 16 mai 2011 - 6 sept. 2006 à 11:00
gribouillex Messages postés 172 Date d'inscription lundi 10 octobre 2005 Statut Membre Dernière intervention 16 mai 2011 - 6 sept. 2006 à 14:45
Bonjour,

J'ai utilisé les informations contenues dans ce tutorial pour améliorer mon lecteur midi :http://francis.dupont.free.fr/coindev/english/dm.htm

A un moment, il dit ceci : 

'Obtient le tempo de la musique (parfois le tempo change au cours du morceau, donc il faut créer un contrôle timer pour avoir la bonne information de tempo tout le long du morceau.
    dTempo = perf2.GetTempo(mtTime + 2000, 0)
    lblTempo.Caption = "Tempo: " & Format(dTempo, "00.00")

Ma question est : que mettre dans le timer ?

Merci pour votre aide

5 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
6 sept. 2006 à 11:03
Tout simplement le code que tu viens de mettre ci-dessus. C'est du moins ce que je comprend du commentaire que l'auteur a mis à son code.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
gribouillex Messages postés 172 Date d'inscription lundi 10 octobre 2005 Statut Membre Dernière intervention 16 mai 2011
6 sept. 2006 à 11:36
Non, j'ai essayé, ça ne fonctionne pas, néanmoins j'ai testé ceci dans le timer :

    dtempo = dmPerf.GetTempo(dmState.GetSeek, 0)
    lblTempo.Caption = Format(dtempo, "00")

Mon tempo se met bien à jour sauf que celui-ci se fait trop tôt par rapport à la musique....?!!?

J'ai oublié de préciser que je suis débutant, donc j'avance à tatons bien souvent....
0
gribouillex Messages postés 172 Date d'inscription lundi 10 octobre 2005 Statut Membre Dernière intervention 16 mai 2011
6 sept. 2006 à 11:38
Pour info : j'ai changé perf2 par dmPerf (que j'utilise dans mon programme, c'est pour ça)
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
6 sept. 2006 à 13:44
salut
ton timer doit servir en fait à faire durer la note. il doit donc lire toutes tes notes (sauvées dans un tableau par exemple) et changer son intervalle en fonction du tempo par note.

çà resemblerait à peu près à çà :

Option Explicit 

Private Type tNotes 
    Note        As Long 
    Instrument  As Long 
    Interval    As Long 
End Type 

Dim aNotes() As tNotes 

Private Sub Form_Load() 
    Timer1.Enabled =  False 

    ReDim aNotes(3) 
    aNotes(0).Note = 157 
    aNotes(0).Instrument = 333 
    aNotes(0).Interval = 150 

    aNotes(1).Note = 240 
    aNotes(1).Instrument = 333 
    aNotes(1).Interval = 180 

    aNotes(2).Note = 245 
    aNotes(2).Instrument = 333 
    aNotes(2).Interval = 60 

    aNotes(3).Note = 210 
    aNotes(3).Instrument = 333 
    aNotes(3).Interval = 400 

    Timer1.Interval = 1000  '<- on va commencer dans une seconde
    Timer1.Enabled = True 
End Sub 

Private Sub Timer1_Timer() 
    Static lCpt As Long 

    Call StopMidi  'sub à faire, pour arrêter le son en cours

    If lCpt =  UBound (aNotes) + 1 Then 
        Timer1.Enabled  = False 
        lCpt =  0 
        Me.Caption = "fini" 
    Else 
        Timer1.Interval = aNotes(lCpt).Interval 
        Call PlayMidi(aNotes(lCpt).Note, aNotes(lCpt).Instrument) 
        lCpt = lCpt + 1 
    End If 
End Sub 

Sub StopMidi() 
    'pour arrêter le son en cours..., à créer
End Sub 

Sub PlayMidi(lNote As Long, lInstrument As Long) 
    'à faire.....
End Sub

<small> Coloration
syntaxique automatique [AFCK] </small>
       

++
PCPT   [AFCK]
<hr size ="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gribouillex Messages postés 172 Date d'inscription lundi 10 octobre 2005 Statut Membre Dernière intervention 16 mai 2011
6 sept. 2006 à 14:45
Salut. J'y suiis arrivé finalement.

eE fait cela fonctionne très bien si je mets ceci : (il fallalit simplement reprendre la première ligne...)

    mtTime = dmPerf.GetMusicTime()
    dtempo = dmPerf.GetTempo(mtTime, 0)
    lblTempo.Caption = Format(dtempo, "00")

Je te remercie pour ton aide PCPT, en fait mon timer est déjà complètement écrit, il n'incluait pas le changement de tempo éventuel en cours de morceau. C'es tout.
0
Rejoignez-nous