Library: BPM to HZ
Wie bekommt man Module wie z.B. LFOs, die mit einer Frequenz (Hz) angesteuert werden wollen, zu Notenwerten (BPM) synchronisiert? Das klären wir in diesem Tutorial.
[01]
Um was wird es gehen?
Ich habe lange überlegt, ob dieses Tutorial nicht eher in den Advanced-Bereich gehört. Immerhin gibt es vorab einiges zu rechnen und eine Menge Fleißarbeit in Sachen Strippen ziehen. Letztendlich entsteht aber „nur“ ein kleines verträumtes Macro, das einen Wertebereich in einen anderen übersetzt und nicht nur zum synchronisieren von LFOs eingesetzt werden kann. deshalb steht es nun in der Library…
An Hand des Eingans beschriebenen Beispiels mit der Ansteuerung eines LFO, wollen wir herausfinden, wie man diesen z.B. zu triolischen Achteln oder punktierten Sechzehnteln synchronisieren kann. Selbstredend mit einer ansprechenden Benutzerführung.
[02]
Berechnung vs. Übersetzung
Natürlich können wir Formeln zum Umrechnen der verschiedenen BPM in Hz etablieren. Da das Macro aber durchaus öfter in einem Projekt auftauchen kann, sollte es möglichst effizient arbeiten, also nicht zuviel Rechenleistung verbrauchen – und wir wollen es uns ja auch nicht zu kompliziert machen. Deshalb stehen am Anfang ein paar Vorüberlegungen:
- Auf der einen Seite haben wir die musikalische Einheit BPM. Ihr kennt sie sicher alle vom Metronom: Ist es auf Tempo 60 eingestellt, tickt es mit 60 Beats/Minute (daher BPM).
- Auf der anderen Seite haben wir die Maßeinheit Hz (Hertz), bei der Schwingungen/Frequenzen angegeben werden. 1 Hz ist demnach eine Schwingung/Sekunde. Für Reaktor-Module, die gerne mit Millisekunden (ms) versorgt werden (z.B. das Delay-Modul), entspräche das dann 1000ms. Aber das nur am Rande
- Der gemeinsame Nenner zwischen BPM und Hz ist also die Sekunde. Und um später alle Notenlängen sinnvoll in Hz skalieren zu können, suchen wir erst einemal die Hz für 1 BPM. Das ist einfach:
- bei 60 BPM haben wir 1 Ereignis/Sekunde, was 1 Hz entspricht.
- 1 BPM entspricht dann 1/60 Hz, also 0,0167 Hz. Dieser Wert gilt für eine Viertelnote
- Eine punktierte Viertelnote (+ die eigene Hälfte, also +1 Achtelnote) entspricht bei 1 BPM dann 0,0111 Hz.
- Eine triolische Viertelnote erhält dann bei 1 BPM den Wert 0.0250 Hz.
- Für den nächst längeren Notenwert, müssen diese Werte verdoppelt, für die nächst kürzeren Notenwerte halbiert werden. Der Rest ist eine reine Fleißaufgabe
In der folgenden Tabelle stehen die Buchstaben hinter den Notenwerten für folgende Bezeichnung: „N“ = normal, „D“ = punktiert (dot) und „T“ = triolisch.. Der Inhalt ist absteigend nach Notenwerten sortiert, also von Ganzen Noten (1/1) bis Vierundsechzigstel Noten (1/64).
Für den Einen oder anderen ist es eventuell intuitiver, nicht nach Notenwerten zu sortieren, sondern nach denm realen Längen. Dann verschieben sich die Anordnunge zum Teil etwas:
[03]
Core-Selector
An dieser Stelle verweise ich auf ein Tutorial aus dem Core-Bereich, weil wir hier mit „Standard-Modulen“ nicht weiter kommen. Jedenfalls nicht ohne einen erheblichen Mehraufwand: Da wir einen Selector mit mehr als 16 Eingängen benötigen. Das lässt sich aber leicht auf Core-Ebene lösen. Da die Erklärung für den Core-Selector ein Tutorial für sich ist, möchte ich an dieser Stelle nur auf Allgemeinschauplätze eingehen und für das Verständnis des Selectors auf das entsprechende Tutorial hinweisen.
Abb. 1: Selector-Macro – Hz nach Notenart
Warum ich die Core-Cell in ein konventionelles Macro verpackt habe? Nun, ich kann innerhalb der Core-Cell den Eingängen lange, aussagekräftige Beschriftungen zuweisen, die Core-Cell zeigt aussen aber nur ca. drei Zeichen davon an. Da das nicht hilfreich ist, habe ich die Anschlüsse der Core-Cell durchnummeriert und die Beschriftung eine Ebene höher (ART-Macro) angelegt, um die Übersicht bei den Eingangswerten zu behalten.
In der linken Spalte befindet sich also der Selector für die 21 Notenlängen nach Notenarten sortiert (s. 1. Tabelle). Je nach Eingang am SEL-Input, gibt das Core-Modul den korrespodierenden Hz-Wert aus.
Abb. 2: Selector-Macro – Hz nach Notelänge
Und hier seht ihr ein weiteres Macro, bei dem die Hz-Werte in aufsteigender Folge sortiert wurden. Das entspricht der rechten Spalte der zweiten Tabelle. So können wir eine ebenso einfache wie komfortable Wahl zwischen den beiden Sortierungen anbieten.
[04]
Noten-Display
Die folgenden Schritte erfordern eine Grafik-Software (Photohop, Gimp, ect.), etwas Erfahrung im Umgang damit und das Wissen um die Darstellung von Notenwerten.
Abb. 3: Notengrafiken (Photoshop)
Für die Darstellung im Reaktor verwenden wir das Multi-Picture-Modul. Voraussetzung ist hier, dass wir dem Modul eine einzige Grafik liefern, in der alle verwendeten Teile gleich groß sind. Das Modul wird dann erfragen, ob die einzelnen Teile in der Grafik horizontal oder vertikal angeordnet sind und um wieviele Teile es sich handelt. Je nach Input am Modul, wählt es dann das entsprechende Teilbild aus. Das bedeutet aber auch, dass wir zwei Notenlängen-Grafiken anbieten müssen – für jeden Selector eine. Schauen wir uns Abb.. 3 genau an:
- Obere Reihe: Hier seht ihr die komplette Grafik, also zwei mal den Durchgang von einer punktierten Halben bis zu einer triolischen Vierundsechzigstel. Alle Noten sond lückenlos horizontal angeordnet und bilden somit 42 Teilgrafiken. Jeweils 21 davon gehören zu einer Tabelle. Die linken 21 zur Tabelle, die nach Notenarten sortiert ist und die rechten 21 zur Tabelle, die nach Notenlängen geordnet ist.
- Mitlerer Reihe: Die Notenschrift selbst basiert auf möglichst wenigen, immer wiederkehrenden Teilen, um alles möglichst schlicht zu halten. Da wären zwei Notenköpfe (leer und ausgefüllt), einen Punkt für die Punktierung, die Notenhälse mit den entsprechenden Fähnchen und die „3“ für die Triolen. Das untere Pixel der Notenhälse ist deckungsgleich mit dem rechten oberen Pixel der Notenköpfe. Das spart ein wenig Platz.
- für die Einzelnen Symbole habe ich mich für eine Matrix aus 14 x 16 Pixeln entschieden. Die dunkleren Punkte an den Kanten suggerieren später eine minimale runde Kante.
Abb. 4: Multipicture
An den beiden IN-Ports der Schaltung könnt ihre erkennen, dass wir uns innerhalb eines Macros befinden. Der SELECT-Eingang liefert die Werte von 0 – 20 (also 21 Positionen) und deckt damit jeweils einen Selector ab.
Der ORDER-Eingang wird von einem Button bedient, der außerhalb dieses Macros entscheidet, welche Tabelle angesteuert wird (s. folgender Abschnitt 5). Gleichzeitig legt das ORDER-Signal innerhalb dieses Macros fest, welcher Eingang des Selectors bedient wird. Wir erinnerun uns: die ersten 21 Teilgrafiken gehören zur ersten Tabelle (Notenarten), die letzten 21 Teilgrafiken zur zweiten Tabelle (Notenlängen). Steht der Button also auf „Notenlängen, wird zum SELECT-Wert 21 hinzu addiert, so dass das Multi-Picture-Modul in der zweiten Hälfte der Grafik mit dem Auslesen beginnt.
[05]
Zusammenbau
Wir haben nun zwei Macros mit den Notenlängen-Selectoren und eines für die Darstellung der gewählten Notenlängen. Jetzt geht es um den sinnvollen Zusammenbau:
Abb. 5: Zusammenbau
- [1]: Mit dem Tempo-Info-Modul greifen wir die BPS des Reaktors ab und multiplizieren diese mit 60, um die gewünschten BPM zu erhalten. Das Ergebnis wird mit den Ausgängen der beiden Selector-Macros multipliziert.
- [2]: Hier ist er, der Select-Regler, der den Wertebereich von 0 – 20 abdeckt und damit die beiden Selector-Macros und das Multi-Picture-Modul bedient.
- [3]: Und schlussendlich der Button, der festlegt, welcher Fruenz-Selector zum Zuge kommt, und welchen Teilbereich der Notengrafik dem Multi-Picture-Module zur Verfühung gestellt wird.
Abb. 6: Serviervorschlag
Die komplette Funktionalität des „BPM to HZ“-Konverters befindet sich in dem farblich hervorgehobenen Macro. Der Rest dient – ausser dem LFO – nur dem sicht- und hörbarmachen des Ergebnisses.
[06]
Downloads
BPM to HZ - Komplett
.ens-Datei, (Zip-File, 843KB)
BPM to HZ - Nur Macro
.mdl-Datei, (Zip-File, 840KB)
BPM to HZ - Notengrafik
.png-Datei, (Zip-File, 2KB)
Kontakt
Bernd Scheurer
Mainstraße 2
64390 Erzhausen
Fon: 06150 865902
Mobil: 0151 50411034
unterricht@bernd-scheurer.de
Follow Me ...
Freie Plätze
- Erzhausen
- MO: 14:00 – 16:30 [anfragen]
- Langen
- DO: 13:30 - 14:00 [anfragen]
Infos
- Aktuelle Gebührenordnungen