jomo.org

aus dem Unterricht von Johann Moser: Realtime Processing und Mathematik
Subscribe

Artikel der Kategorie »Max-Themen«

Metronomsteuerung 4: Transition Metronom

06. Sep. 2006 Von: Johann Moser Kategorie: Max-Themen Keine Kommentare →

https://www.jomo.org/index.php/metronomsteuerung-4-transition-metronom
gedruckt am 19. Apr. 2024

Das line-Object löst einen linearen Übergang zwischen Start- und Zielwert in einer definierten Übergangszeit aus. Die Zwischenwerte der Übergangszeit werden jeweils als neue Metronom-Zeit gesetzt. Im Beispiel wechselt die Metronom-Zeit zwischenn 20 und 200 Millisekunden mit linearen Zwischenwerten im Zeitraum von 1000ms.

Ins Metro-Objekt werden laufend die Zwischenwerte geschickt, das Metro-Objekt nimmt dann jenen Wert, der gerade bei der Impulsausgabe aktuell ist, als Zeitraum bis zum nächsten Impuls. Zu beachten ist, dass die Übergangszeit jedes Mal neu ausgelöst werden muss und dass für diese Auslösung zwischen der Ziel-Konstanten (20 bzw. 200) und der Übergangszeit (1000) ein Button stehen muss, der die konstante Zahl in einen neutralen Impuls verwandelt.

Ausgelöst wird der linear Übergang hier manuell durch Klick auf 20 (beschleunigt Metro auf 200) oder durch Klick auf 200 (bremst von 200ms auf 20ms).

Der lineare Übergang kann natürlich automatisiert ausgelöst werden: Im Beispiel wird am Ende des linearen Übergangs mit einem Impuls der jeweils nächste Übergang ausgelöst. Der lineare Übergang muss jetzt lediglich einmal durch einen Impuls gestartet werden – mit einer Verbindung von loadbang zu 200 würde der Vorgang zur Gänze automatisch gestartet.

In der vorliegenden Variante kann der Wechsel der linearen Übergänge nicht mehr unterbrochen werden, dazu ist ein weiterer Programmiereingriff nötig: Die Non-Stop-Automatik kann mit einem Toggle unterbrochen werden.

Als Arbeitsweise empfehle ich übrigens meine Programmierphilosophie: nicht alles sofort von oben nach unten fertig zu programmieren, sondern mit einfachen, auch statischen Varianten zu beginnen und dann schrittweise die Programme komplexer und dynamischer zu gestalten. Einzelne Codebereich können dann bei zunehmender Komplexität durch Encapsulation zu eigenen Modulen (Subpatcher) zusammengefasst werden, die bei Bedarf auch bei anderen Projekten verwendet werden können.

Verwendete Objekte: loadbang, metro, random, line, gate