2017-09-10 1 views
0

Egal wo ich suche, ich kann keine gute Antwort auf diese Frage finden. Ich hätte gerne etwas bei einer bestimmten BPM (in meinem Beispiel verwende ich BPM), aber die grundlegende C# Timer-Klasse funktioniert nicht für mich. Da es nur in Millisekunden misst, werden alle Aktionen, die innerhalb des Timers ausgeführt werden, merklich von der Musik nicht synchronisiert. Ich habe versucht, diese MicroTimer Library aber ohne Glück zu verwenden! Obwohl es ziemlich feinkörnig sein kann, ist es ressourcenintensiv und es hat nicht die erforderliche Auflösung. Ich verstehe, dass ich eine Funktion mit einem Zähler haben kann, aber gibt es eine gute Möglichkeit, dies mit Visual Studio-Bibliotheken (wie dem Basistimer) zu tun? Ich höre, die sind nicht so prozessorhungrig.Tun Sie etwas bei einem gegebenen (ungeraden) BPM

+1

Was Sie suchen, sind Multimedia-Timer, ich habe sie zuvor für MIDI-Synchronisation verwendet, was auch Ihr Fall scheint (oder sehr ähnlich). Dieser Beitrag hat einige Beispiele: https://stackoverflow.com/questions/24839105/high-resolution-timer-in-c-sharp – Gusman

Antwort

-1

Ich bezweifle, dass Sie die gewünschte Zeitauflösung in einer verwalteten Sprache wie C# erhalten.

Zur Hölle, auch wenn Sie in C geschrieben haben, könnte das OS entscheiden, dass ein anderer Prozess wichtiger ist und einfach nicht mehr synchron ist.

Vielleicht in Betracht ziehen, den Timer zu verwenden, aber jede Sekunde oder halbe Sekunde resyncing? Ich würde standardmäßig auf einen anderen Benutzer zurückgreifen, wenn sie Erfahrung in diesem Bereich haben, aber ich würde zumindest eine Chance geben. Oder geh durch die Systemuhr ticks?

+0

Pflege, um den Downvote zu erklären? Ich würde wenigstens gerne wissen, warum ich falsch liege, damit ich etwas lernen kann. –

+0

Da die Antwort völlig falsch ist, da ich auf den Benutzer hingewiesen habe, können Sie Multimedia-Timer verwenden, und Sie werden diese Auflösung erreichen, und Sie werden nicht synchron sein, wenn der Timer vom Betriebssystem auf Kernel-Ebene ausgelöst wird. – Gusman