JS HOME Index
JS AVR Index
Timing eines Softwaresequencers verglichen mit dem eines Hardwaresequencers
(Bad) English Version
Vor einiger Zeit erwarb ich mein STK500 (Entwicklungskit für Atmel Mikrokontroller). Einer der ersten Versuche war
natürlich der Umgang mit Midi.
Da Pascal immer noch meine vaforrisierte Programmiersprache ist, probierte ich den Pascal-Dialekt für AVR's von
E-LAB
aus. Insgesamt sehr zu empfehlen ! Schlanker, schneller Code, mit wenig Aufwand. Natürlich werden Hardcore-AVR-Programmierer
nur mit Assembler und grade noch C
arbeiten. Es soll aber ja nur funktionieren, und keinen Preis für elegantes Programmdesign gewinnen.
Also schrob ich ein kleines
Programm
welches das eingehende Midisignal nach Midi-Time-Clock analysiert, und jeden Timeclock-Puls in einen 1ms-Puls am
Ausgang verwandelt. Start/Stop wird auf extra Ausgäne geführt.
Zusätzlich werden die anderen Ausgänge noch missbraucht, um krumme Teiler des Time Clock zu erzeugen (N= 2, 3, 5, 7, 9 and 11).
In Cubase Score (unter Win 95) wird midi time clock als 24 Pulse pro Viertel erzeugt (ppq). Pro Note also 96 Messages.
Um also das kleine Progrämmchen auszuprobieren, habe ich Cubase Score mit 220 Bpm laufen lassen. Das sind 220 Viertelnoten in der Minute
und damit 5280 Pulse pro Minute oder 88 pro Sekunde. 2 Aufeinanderfolgende Pulse sind also dann 11,36 Millisekunden auseinander.
Dachte ich mir so.
Das AVR-Progrämmle funktionierte auch schön, laufend 1ms-Pulse mit etwa 88 Hz. Allerdings war das kein sauberer Puls, sondern es klang
unsauber und völlig unrund. Mit dem Oszilloskop sah man auch schon deutlich das Zittern.
Ich hab also kurzerhand das Singal mit nem Harddisc-Recorder aufgenommen und das Signal mit einem kurzen Visual-Basic Programm
(hatte grad nix anderes zur Hand, Verzeihung) analysiert und die Zeiten zwischen jeweils 2 aufeinanderfolgenden Pulsen als ASCII ausgegeben,
und das dann mit einem Statistikprogramm untersucht.
Visual basic Programm
Und das sah dann so aus :
bar graph of the cumulative distribution of suceeding time intervals in milliseconds from one midi time
clock pulse to the next using cubase score
Das Ergebniss ist erschreckend : Mords-Standardabweichung, und völlig unregelmäßige Pulsabstände. Nun, es könnte ja
sein, das Cubase Score auf nem 200 Mhzer unter Win95 nicht mehr wirklich modern ist.
Ich nahm also Cubase VST mit nem 800MHzer unter Win2000. Das Ergebniss :
bar graph of the cumulative distribution of suceeding time intervals in milliseconds from one midi time clock
pulse to the next using cubasis VST 3
Genau der gleiche Mist !!!!
Jetzt dachte ich langsam an einen systematischen Fehler, irgendwo in der Auswertesoftware oder doch am AVR.
Ich hab also noch einen letzten Versuch gemacht, und genau das Gleiche mit meiner Rave-O-Lution 309 von Quasimidi
ausprobiert, ein Hardwaresequencer also, der auch TimeClock ausgeben kann. Hier das Ergebniss :
bar graph of the cumulative distribution of suceeding time intervals in milliseconds from one midi time
clock pulse to the next using a hardware sequencer (Quasimidi Rave-O-Lution 309)
Sauber, glatt, reine 88 Hz. Fast keine Standardabweichung. Also doch kein Fehler bei mir.
Damit steht für mich fest : Wenn es schnell wird, und wirklich drauf ankommt : lieber mit Hardwaresequencern
arbeiten, statt mit Cubase unter Windows.