Aktuelle Ausgabe
Nehmen Sie Kontakt zur nmz auf
Holen Sie sich die nmz ins Haus
Archiv und Sitemap der neuen musikzeitung
Links zum Musikleben
neue musikzeitung interaktiv
Taktlos - Das Musikmagazin des bayerischen Rundfunks und der neuen musikzeitung
Fortbildung - Stellenmarkt der nmz
Die nmz als Werbeplattform
zurück zur vorherigen Seite
Startseite der neuen musikzeitung, nmz aktuell
Counter





Ausgabe 2003/06
Inhaltsverzeichnis
Archiv und Suche
[an error occurred while processing this directive]
 

 

 

 

 

 

 

 

 

 

nmz-archiv

nmz 2003/06 | Seite 13
52. Jahrgang | Juni
Internet/Computer

Sich dem Goldenen Schnitt annähern

Die grafische Programmiersprache Max/MSP, Teil 2

Im ersten Teil dieser Serie (nmz 5/2003) habe ich Max/MSP dem weit verbreiteten Paradigma der „klassischen“ Programmiersprachen gegenübergestellt. Es zeigte sich, dass der Übergang zwischen der Herstellung eines Programmes und seiner Ausführung bei Max/MSP denkbar klein ist.

Das Prinzip autarker Funktionseinheiten, Objekte genannt, die bei Bedarf durch Nachrichten miteinander kommunizieren, ermöglicht es, Programme zu ändern, während sie schon laufen. Das ist in der traditionellen Software-Architektur in diesem grundsätzlichen Umfang nicht vorgesehen. Zum anderen wurde deutlich, dass grafische Darstellungen im Allgemeinen dem Computer-Anwender oft den Zugang erleichtern, indem durch bekannte Metaphern aus der realen Welt hilfreiche Brücken zu immateriellen Domänen gebaut werden können. Im Fall von Max/MSP lassen sich die Daten, die vom Programm generiert werden, mit überraschendem Erfolg als Dinge mit durchaus gegenständlichen Eigenschaften missverstehen, die durch Funktionen, die in den Kästchen versteckt sind, modifiziert werden können. Diese Datendinge fahren miteinander durch Kabel von einem angeschlossenen Objekt zum nächsten, um dort weiter gesiebt, gesägt oder geschreddert zu werden. Am Schluss kommen sie dann heraus und machen einen Ton.

Code

Wie leicht die Lösung einer Entwicklungsaufgabe mit Max/MSP von der Hand gehen kann, wird im hier abgebildeten Beispiel-Patch gezeigt. Es soll die Fibonacci-Reihe berechnet werden. Bei dieser Zahlenreihe wird, beginnend mit den Initialelementen „0“ und „1“, jede Zahl aus der Summe der beiden vorangehenden Zahlen gebildet : 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144… Das Besondere an dieser Reihe ist, dass sich die Verhältnisse von aufeinander folgenden Zahlenpaaren zunehmend dem Goldenen Schnitt annähern: 8 : 5 = 1,6; 13 : 8 = 1,625; 21 : 13 = 1,615; 34 : 21 = 1,619. Anders ausgedrückt verhält sich ein Element der Reihe (etwa 13) zu seinem nächstkleineren Nachbarn (8) wie die Summe der beiden (21) zum größeren Element (13).

Programm zur Berechnung und Ausgabe der Fibonacci-Reihe

Da jede Zahl der Fibonacci-Reihe aus der Summe ihrer beiden Vorgänger gebildet wird, lässt sich die Berechnung als rekursive Schleife anlegen. Das Ergebnis eines Durchlaufs wird in der folgenden Berechnung als Ausgangswert eingesetzt. Weiterhin benötigen wir das erste Initialelement, „0“, eine Additions-Einheit mit dem zweiten Initialelement als Argument „1“, [+ 1], eine Bedingung, bei deren Erreichen der Prozess beendet wird, [> 1000] mit [gate], sowie eine Ausgabe zur grafischen Anzeige jedes Zyklusergebnisses.

Verfolgen wir den Ablauf des Programms Schritt für Schritt. Nach dem Anklicken des Startwerts „0“ wird dieser über den Nachrichtenverteiler [t i i i] an zwei weitere Objekte geschickt. Da in Max/MSP (fast) alle Nachrichten von rechts nach links abgearbeitet werden, wird der Wert zunächst an das Objekt [> 1000] übermittelt. Die Prüfung ergibt, dass „0“ nicht größer „1000“ ist, und der Wert „0“ für „falsch“ wird von [> 1000] an das nachfolgende Objekt [!- 1] übergeben. Hier wird der Wert invertiert und demzufolge eine „1“ an den linken Eingang von [gate] weitergereicht. Das [gate] ist nun geöffnet und reicht Nachrichten, die an seinem rechten Eingang eingehen, an seinen Ausgang durch. Da dieser Strang des Nachrichtenverteilers [t i i i] abgearbeitet ist, ist dessen mittlerer Ausgang an der Reihe. Der dort an den linken Eingang von [+ 1] ausgegebene Initialwert „0“ löst dessen Addition um den Wert des Arguments „1“ aus. Das Ergebnis „1“ geht an [gate] und wird dort durchgereicht, da [gate], wie zuvor beschrieben, geöffnet wurde. Von dort geht die „1“ über ein Hilfsobjekt [prepend] an das grafische Anzeigefeld unten rechts. Dieses ist beim Programmstart zu-nächst noch leer und enthält nun als Ergebnis des Durchlaufs das erste Element der Fibonacci-Reihe, „1“. Außerdem geht das Ergebnis „1“ an das Hilfsobjekt [pipe], das die Nachricht speichert und um einige Mikrosekunden zurückhält, bis der aktuelle Zyklus beendet ist.

Da der mittlere Strang des Nachrichtenverteilers [t i i i] nun ebenfalls abgearbeitet ist, wird sein linker Ausgang aktiv. Der Initialwert „0“ wird abschließend an den rechten Eingang des Objekts [+ 1] geschickt und überschreibt dort als Argument für die Addition im nächsten Zyklus das Initialargument „1“. Nun kann [pipe] das zurückgehaltene Ergebnis an den Nachrichtenverteiler [t i i i] schicken, und der Ablauf beginnt von vorn: Prüfung, ob die Endbedingung „größer 1000“ bereits erreicht wurde, Addition mit dem vorangegangenen Reihenelement, Hinzufügen zur grafischen Ausgabe, Speicherung des Ergebnisses als Argument für die nächste Addition. Bei Erreichen der Abbruchbedingung [> 1000] wird [gate] für den Durchlass weiterer Nachrichten gesperrt, die Programm-Schleife stoppt.

Media

Was hier für arithmetische Aufgaben innerhalb der Max-Bibliothek vorgestellt wurde, lässt sich durch die Erweiterungs-Bibliotheken MSP und Jitter in sehr ähnlicher Weise auf die Lösung von Aufgaben aus dem Audio- und Videobereich übertragen. Erst in der Kombination dieser drei Säulen entfaltet die Entwicklungsumgebung ihre volle Stärke, gerade im angewandten und gestalterischen Bereich.

So einfach und flexibel Max/MSP zu handhaben ist, so leicht zu unterschätzen sind die Nachteile, die sich der Anwender mit dieser Sprache einhandeln kann. Einerseits kommt der hohe Bedienkomfort nicht umsonst, sondern geht auf Kosten der Effizienz eines Programms. Andererseits neigen große Projekte in Max/MSP leicht dazu, unübersichtlich und in der Folge unzuverlässig zu werden, da in anderen Sprachen vorhandene wirkungsvolle Werkzeuge und Methoden zur Strukturierung komplexer Programmkonstrukte fehlen. Trotz dieser Einschränkungen kann Max/MSP als hervorragendes Instrument zur Erstellung von Prototypen sowie Programmen geringen bis mittleren Umfangs in einer Geschwindigkeit dienen, die mit konventionellen Entwicklungsinstrumenten wenn überhaupt, dann nur unter extremen Bedingungen erreicht werden könnte.

Torsten Belschner

Link zu Pd, einer Max ähnlichen Sprache in der public domain
http://www-crca.ucsd.edu/~msp/Pd_documentation/index.htm

Beispiel des Programmes, das im Text erwähnt wird als ausführbares Programm, welches unter Mac OS9 läuft.

 

Social Bookmarking
Bookmark bei: Mr. Wong Bookmark bei: Webnews Bookmark bei: Linkarena Bookmark bei: Newskick Bookmark bei: Newsider Bookmark bei: Folkd Bookmark bei: Yigg Bookmark bei: Digg Bookmark bei: Del.icio.us Bookmark bei: Reddit Bookmark bei: Slashdot Bookmark bei: Netscape Bookmark bei: Yahoo Bookmark bei: Google Bookmark bei: Technorati Bookmark bei: Newsvine Bookmark bei: Ma.Gnolia Information

| top | nmz-start | kontakt |
| aktuelle ausgabe | kulturinformationszentrum | archiv/suche | abonnement | leserbrief |
| © 1997-2008 by neue musikzeitung und autoren | Impressum | Alle Rechte vorbehalten |