Dériation interruption µP

[Résolu]
Signaler
Messages postés
37
Date d'inscription
vendredi 4 novembre 2005
Statut
Membre
Dernière intervention
29 décembre 2015
-
Messages postés
37
Date d'inscription
vendredi 4 novembre 2005
Statut
Membre
Dernière intervention
29 décembre 2015
-
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.

Merci

juju59

6 réponses

Messages postés
608
Date d'inscription
samedi 3 août 2002
Statut
Membre
Dernière intervention
22 décembre 2016

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
Messages postés
608
Date d'inscription
samedi 3 août 2002
Statut
Membre
Dernière intervention
22 décembre 2016

Non ça fonctionne pas sous VB6.

Pour VB6 essaye le RSTimer

http://www.programmersheaven.com/download/17755/download.aspx

Resolution max 1 milliseconde

Afyn - Navedac
Messages postés
14827
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
23 octobre 2021
157
Bonjour

Sinon pourquoi ne pas utiliser MMControl ou DirectMusic pour lire le Midi ?

Le fer à souder a besoin d'une panne pour fonctionner.
VB (6, .NET1&2), C++, C#.Net1
Mon site
Messages postés
37
Date d'inscription
vendredi 4 novembre 2005
Statut
Membre
Dernière intervention
29 décembre 2015

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
Messages postés
37
Date d'inscription
vendredi 4 novembre 2005
Statut
Membre
Dernière intervention
29 décembre 2015

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§

Merci
Messages postés
37
Date d'inscription
vendredi 4 novembre 2005
Statut
Membre
Dernière intervention
29 décembre 2015

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.

Merci de ton intérêt apporté

juju59