choupierre
Messages postés12Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention29 décembre 2003
-
18 déc. 2003 à 01:55
choupierre
Messages postés12Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention29 décembre 2003
-
18 déc. 2003 à 13:06
Etant un debutant en programmation et un musicien, je decide de faire un metronome.Suite a different post je choisi d'utiliser la fonction gettickcount qui apparement est plus precise.Mais voila mon metronome n'est pas du tout regulier et apres avoir pas mal farfouillé je trouve que c'est plutot gettickcount qui n'est pas regulier.
Autre petite question : tout le monde parle de millieme de seconde avec cette fonction mais moi j'ai au moins dix chiffre apres les secondes?!?
J'ai .net 2003.
Un petit bout de code au cas ou j'aurai fait n'importe quoi :
Declaration :
Private Declare Function GetTickCount Lib "kernel32" () As Long
metronome irregulié:
While MouseButtons = MouseButtons.None
Application.DoEvents()
Label3.Text = GetTickCount
If GetTickCount > t1 + j * i Then
sndPlaySound("C:\Pierre\Visual basic\vbfrance_source_17484\beat2.wav", 1)
Label3.Text = GetTickCount
j = j + 1
End If
End While
(on voit clairement que les secondes ne sont pas reguliere avec ce code!!)(merci a DARKSIDIOUS pour la fonction Doevent ...bien utile)
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 18 déc. 2003 à 08:11
GetTickCount fonctionne en MILLISECONDES.
l'irregularite vient de ton algo....
pour un battement toutes les 2 secondes, fait :
Dim Interval As Long, Start As LongInterval 2000 '# 2000 millisecondes 2 secondes !!
Start = GetTickCount
While MouseButtons = MouseButtons.None
Application.DoEvents
If GetTickCount - Interval > Start Then
Start = GetTickCount
sndPlaySound("C:\Pierre\Visual basic\vbfrance_source_17484\beat2.wav", 1)
End If
End While
hvb
Messages postés939Date d'inscriptionvendredi 25 octobre 2002StatutMembreDernière intervention27 janvier 20093 18 déc. 2003 à 10:47
en .net t'as pas besoin de definir l'api,
utilise Environment.TickCount, ça devrait theoriquement etre plus rapide .
De plus tu te retrouve avec un chiffre enorme car tu declarais Getickcount en Long... les Long en vb.net sont maintenant codé sur 8bits, le double de l'equivalent en vb6. (il me semble que c'est pour ça, j'ai compris ça il y a peu de temps, et ça explique plein de truc que je comprenais pas dans mes migrations ^^)
en la definissant en tant qu'integer, tu devrais recuperer les meme valeurs qu'en vb6
choupierre
Messages postés12Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention29 décembre 2003 18 déc. 2003 à 13:06
Merci beaucoup à tout les deux!!
En effet il suffit de passer long en integer et tout devient normal!!!!
J'aurai aimé comprendre pourquoi le long n'a pas la meme valeur que l'integer mais bon.
Mon debut de metronome est presque fini!