GetTempo dans un timer

Signaler
Messages postés
172
Date d'inscription
lundi 10 octobre 2005
Statut
Membre
Dernière intervention
16 mai 2011
-
Messages postés
172
Date d'inscription
lundi 10 octobre 2005
Statut
Membre
Dernière intervention
16 mai 2011
-
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

Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
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 #
Messages postés
172
Date d'inscription
lundi 10 octobre 2005
Statut
Membre
Dernière intervention
16 mai 2011

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....
Messages postés
172
Date d'inscription
lundi 10 octobre 2005
Statut
Membre
Dernière intervention
16 mai 2011

Pour info : j'ai changé perf2 par dmPerf (que j'utilise dans mon programme, c'est pour ça)
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
49
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
Messages postés
172
Date d'inscription
lundi 10 octobre 2005
Statut
Membre
Dernière intervention
16 mai 2011

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.