Domanda

ho appena visto questa domanda , in cui una delle risposte indica che System.Diagnostics.Stopwatch deve essere usato solo per la diagnosi delle prestazioni e non nel codice di produzione.

In questo caso, quale sarebbe il modo migliore per ottenere la sincronizzazione di precisione in .NET? Sono attualmente nelle prime fasi di costruzione di una molto semplice rel="nofollow sequencer MIDI utilizzando il MIDI-out funzionalità di NAudio . Mi piacerebbe essere in grado di inviare messaggi MIDI out allineati a (diciamo) 1 / 10s con il minimo jitter possibile. È questo possibile, o le cose andranno come contesto di commutazione di rovinarmi la giornata?

Al momento ho un po 'di codice in una console app che chiama continuamente Stopwatch e calcola il jitter durante la generazione di un flusso di 1/16 ° note a 150 bpm. Il jitter è molto bassa in questa situazione. Tuttavia, mi trasferirò questa via ad un altro thread, quindi non so se questo rimarrà il caso.

È stato utile?

Soluzione

Se non ti dispiace P / Invoke, è possibile utilizzare QueryPerformanceCounter: http: // www .eggheadcafe.com / articoli / 20021111.asp

Altri suggerimenti

Si potrebbe anche usare il nativo API di streaming MIDI. Non credo che la sua in NAudio ma si poteva guardare il Toolkit C # Midi per vedere se quella lo supporta. In caso contrario, ci sono due esempi di come fare native API MIDI P / Invoke e può rotolare il proprio ...

di Windows timer multimediale stati che permette "le applicazioni di programmare eventi timer con la massima risoluzione (o accuratezza) possibile per la piattaforma hardware".

L'applicazione utilizza come esempio è un sequencer MIDI.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top