Arduino Clock Multiplier

Ein Arduino Nano und eine Handvoll Befehlszeilen – fertig ist ein kleiner Taktvervielfacher. Da fehlt nur noch eine Logik, um auf dem Weg vom Gate-Out eines Sequenzers bis zum ADSR ein paar Extra-Impulse via Zufall einzustreuen, um ein Ratcheting zu erzeugen. Aber eins nach dem anderen …

Den Code findet ihr hier. Wie funktioniert’s: Ein Interrupt wird mit einem digitalen Eingang gekoppelt (Pin D3). Beim Eintreffen eines ansteigenden Impulses wird in die Subroutine calculate gesprungen. Wenn das mindestens zweimal geschehen ist, kann die Zeit zwischen beiden Sprüngen berechnet und dann durch einen Multiplikationsfaktor dividiert werden (Variable multiplier). Bei einem Multiplikationsfaktor von 4 heißt das: Ein Viertel der Periodendauer entspricht der vierfachen Frequenz. Mit dem neu berechnten Wert wird die TimerOne-Routine angesprungen, die am digitalen Ausgang (Pin D8) Impulse der vierfachen Frequenz erzeugt. Wird die Eingangsfrequenz geändert, wird die neue Zeit wieder aus dem Abstand der letzten beiden gemessenen Impulse berechnet. Die Genauigkeit liegt im Mikrosekundenbereich. Die Länge des Impulses ist mit delay(20) ≙ 20 Millisekunden festgelegt. Auch diese könnt ihr natürlich nach eigenem Ermessen ändern. Behaltet nur im Hinterkopf, dass die Zeit bei höheren Eingangsfrequenzen verkleinert werden muss. Sonst kommen Impulse in einer Geschwidigkeit herein, die die Länge des Delays unterschreiten. 20msec ≙ 50 ㎐. Bei einem Multiplikationsfaktor von 4 ist die max. Eingangsfrequenz 12.5 ㎐, was 750 BPM entspricht. Bei einem Multiplikationsfaktor von 8 immerhin noch 375 BPM. Es ist also ausreichend “Luft nach oben” …

Die Hauptschleife loop ist bis dato leer und wird im nächsten Artikel mit Leben gefüllt. Dort findet sich dann eine Routine, die via Zufall einzelne Impulse zusätzlich zum Standardtakt einstreut und somit die Grundlage für den Ratcheting-Effekt bildet.

Hinterlasse einen Kommentar

Du kannst diese HTML tags benutzen

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

  

  

  

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.