Frage

Ich habe gerade gesehen diese Frage , wo eine der Antworten zeigt, dass System.Diagnostics.Stopwatch sollte nur für die Diagnose von Performance verwendet wird und nicht in der Produktion Code.

In diesem Fall, was wäre der beste Weg, Präzisionszeitgebungssystems in .NET zu erhalten? Ich bin zur Zeit in den frühen Phasen des Aufbaus einer sehr einfachen MIDI Sequenzer MIDI-out mit Funktionalität von NAudio . Ich möchte in der Lage sein, aus MIDI-Nachrichten senden ausgerichtet (sagen wir) 1 / 10s mit so wenig Jitter wie möglich. Ist dies möglich, oder werden Dinge wie kontextSchalt Ruine meinen Tag?

Im Moment habe ich einen Code in einer Konsole-Anwendung, die Stopwatch kontinuierlich Anrufe und berechnet den Jitter, wenn ein Strom von 1 / 16tel-Noten bei 150bpm zu erzeugen. Der Jitter ist in dieser Situation sehr gering. Allerdings werde ich diese weg zu einem anderen Thread bewegen, so dass ich weiß nicht, ob das der Fall sein.

War es hilfreich?

Lösung

Wenn Sie nicht über P / Invoke dagegen haben, können Sie Queryperformancecounter verwenden: http: // www .eggheadcafe.com / articles / 20021111.asp

Andere Tipps

Sie können auch die native Streaming-MIDI-API verwenden. Ich glaube nicht, seine in NAudio aber am C # Midi Toolkit aussehen könnte, um zu sehen, ob das man es unterstützt. Andernfalls haben Sie zwei Beispiele dafür, wie nativen MIDI API P / Invoke zu tun und rollen Sie Ihre eigenen ...

Windows-Multimedia-Timer Staaten dass es

„mit der größten Auflösung (oder Genauigkeit) möglich, dass die Hardware-Plattform. Anwendungen planen Timer-Ereignisse“ ermöglicht

Die Anwendung es als ein Beispiel verwendet, ist ein MIDI-Sequenzer.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top