cs_juju59
Messages postés37Date d'inscriptionvendredi 4 novembre 2005StatutMembreDernière intervention29 décembre 2015
-
17 mai 2008 à 08:22
cs_juju59
Messages postés37Date d'inscriptionvendredi 4 novembre 2005StatutMembreDernière intervention29 décembre 2015
-
19 mai 2008 à 10:38
Salut à tous,
J'ai déjà posé la question, mais je n'ai pas eu de réponse ...
Je suis musicien de longue date, et de ce fait, j'écris beaucoup de dources qui tournent autour de ce sujet.
J'ai réussi, non sans mal, à déchiffrer les fichier mid's. Mais pour l'exécution, j'ai le timer rapide qui ne suit pas trop, surtout si plusieurs applications tournent. Voici une section du timer que j'utilise dans un UserControl :
'=======================================================================================
' Mise en service du timer
'---------------------------------------------------------------------------------------
Public Function Start_Timer() As Boolean
'---------------------------------------------------------------------------------------
Dim Resultat As Long
'--------------------------------------------------------------------------------------- Actif True: Start_Timer True: Evenement = True
Do
If Evenement Then Evenement = False: RaiseEvent Timer FT.Long_High -1: FT.Long_Low -1
Resultat = API_KL_Set_Waitable_Timer(Timer_Handle, FT, 0, 0, 0, False)
Do
If API_US_Msg_Wait_For_Multiple_Objects(1, Timer_Handle, False _
, INFINITE, QS_ALLINPUT) = WAIT_OBJECT_0 Then Exit Do
DoEvents
Loop
If m_Valeur > 0 Then
m_Valeur = m_Valeur - 1 If m_Valeur <0 Then Evenement True
End If
Loop While Actif = True
End Function
Cela fonctionne, mais la priorité ce ce timer n'est pas très élevé, malgré son attribution
'=======================================================================================
' Initialisation personnelle contrôle
'---------------------------------------------------------------------------------------
Private Sub UserControl_Initialize()
'---------------------------------------------------------------------------------------
' API_KL_Set_Priority_Class API_KL_Get_Current_Process, HIGH_PRIORITY_CLASS
' API_KL_Set_Thread_Priority API_KL_Get_Current_Thread, THREAD_BASE_PRIORITY_MAX
Timer_Handle = API_KL_Create_Waitable_Timer(0, True, "UC_Timer_MIDI")
Timer_Thread = API_KL_Get_Current_Thread
API_KL_Set_Priority_Class Timer_Handle, HIGH_PRIORITY_CLASS
API_KL_Set_Thread_Priority Timer_Thread, THREAD_BASE_PRIORITY_IDLE
End Sub
Ma question est simple : Existe-t-il un timer plus fiable que celui-ci.
Afyn
Messages postés608Date d'inscriptionsamedi 3 août 2002StatutMembreDernière intervention22 décembre 2016 17 mai 2008 à 13:34
Sous VB6 car on accède a un thread de la même instance. (ou alors voir RSTimer via DLL/OCX qui est un MMTimer)
Sinon un MMTimer sous VB.NET va bien je peux te poster un exemple si tu veux ?
Afyn
cs_juju59
Messages postés37Date d'inscriptionvendredi 4 novembre 2005StatutMembreDernière intervention29 décembre 2015 17 mai 2008 à 08:27
Complément d'information :
Avec le Pascal, on pouvait dévié une interruption, et y attribué sa propre routine de traitement de cette dernière. Peut-on faire la même chose sous VB, ou avec un module écrit en assembleur ?
Merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_juju59
Messages postés37Date d'inscriptionvendredi 4 novembre 2005StatutMembreDernière intervention29 décembre 2015 17 mai 2008 à 14:50
Je ne travaille pas en VB.net ... je n'ai pas encore installé le pack 2, et je ne crois pas l'installer avant longtemps.
Si ton exemple est accessible en API, c'est OK§
cs_juju59
Messages postés37Date d'inscriptionvendredi 4 novembre 2005StatutMembreDernière intervention29 décembre 2015 19 mai 2008 à 10:38
Salut,
Oui, ce serait plus simple, mais je travaille au niveau des évènements midi proprement dit, c'est à dire que le midi est en pièces détachées, sous forme de partition.
Chaque note est déclenchée par appel d'une API, ainsi que son arrêt et son volume.