Question

Je viens de voir cette question , où l'une des réponses indique que System.Diagnostics.Stopwatch ne doit être utilisé pour le diagnostic de la performance et non dans le code de production.

Dans ce cas, quelle serait la meilleure façon d'obtenir un timing précis dans .NET? Je suis actuellement dans les premières étapes de la construction d'un séquenceur MIDI à l'aide de MIDI-out fonctionnalité de NAudio . Je voudrais être en mesure d'envoyer des messages MIDI sur alignés à (disons) 1 / 10s avec aussi peu que possible la gigue. Est-ce possible, ou les choses vont comme ruine changement de contexte mon jour?

J'ai actuellement un code dans une application console qui appelle en permanence Stopwatch et calcule la gigue lors de la génération d'un flux de 1 / 16e-notes à 150bpm. La gigue est très faible dans cette situation. Cependant, je vais être en mouvement ce à un autre fil, donc je ne sais pas si cela reste le cas.

Était-ce utile?

La solution

Si vous ne me dérange pas P / Invoke, vous pouvez utiliser QueryPerformanceCounter: http: // www .eggheadcafe.com / articles / 20021111.asp

Autres conseils

Vous pouvez également utiliser l'API streaming MIDI natif. Je ne pense pas que ce à NAudio mais vous pouvez regarder le C # Midi Toolkit pour voir si celui-ci supporte. Sinon, vous avez deux exemples de la façon de faire API MIDI natif P / Invoke et peut rouler votre ...

de Windows minuterie multimédia états qu'il permet « applications de planifier des événements de minuterie avec la plus grande résolution (ou précision) possible pour la plate-forme matérielle. »

L'application utilise comme un exemple est un séquenceur MIDI.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top