Archivierter Inhalt
Bitte beachten Sie: Dieser Beitrag wurde vor einiger Zeit geschrieben und bezieht sich wahrscheinlich auf eine Version des Betriebssystems oder des Programms, die zur Zeit Ihres Abrufs nicht mehr aktuell ist. Insofern sind die hier zu findenden Informationen möglicherweise nicht mehr aktuell und/oder funktionsfähig. In den Kommentaren werde ich nicht mehr auf Änderungen oder Rückfragen reagieren. Diese Seite ist noch online, weil ein Link von irgendwoher hierhin verweist oder weil die Informationen für Leser, die eine ältere Version einsetzen, nach wie vor nützlich sein können.
Spaß mit dem Quartz Composer (10.4)
Zusammen mit den Developer Tools Xcode wird auch das Programm Quartz Composer installiert. Eigentlich dient es in erster Linie dazu, die Fähigkeiten der Quartz Engine auszuprobieren und die erstellten Clips in eigene Programme einzubinden. Aber es ist mit dem Programm ein Leichtes, eigene Bildschirmschoner zu erstellen. Ohne eine Zeile Programmcode, dafür aber mit viel Spaß.
Der Quartz Composer wird im Ordner /Developer/Applications/Graphics Tools installiert. Wenn das Programm gestartet wird, stehen dem Anwender mehrere Vorlagen von Apple für eine Quartz Composer Composition zur Auswahl. Die Vorlagen finden bereits bei den Standard-Bildschirmschonern RSS Visualizer und Spectrum Verwendung, sind aber für einen strukturierten Einstieg in das Programm vielleicht ein wenig zu kompliziert. Der Dialog lässt sich abbrechen und mit File • New eine neue, leere Datei erstellen.
Warnung Sie werden, wenn Ihre Grafikkarte nicht Core Image-fähig ist, beim Start des Programms eine Warnung (Unsupported configuration) erhalten. Sie können dann den Quartz Composer zwar immer noch ausprobieren, müssen aber mit Abstürzen des Programms und des Systems rechnen. Beenden Sie alle anderen Programme und sichern Sie alle Dateien, bevor Sie mit dem Quartz Composer weiter arbeiten. Elemente, die Sie nicht verwenden sollten oder bei deren Verwendung Vorsicht geboten ist, werden mit einem Punkt vor dem Namen gekennzeichnet.
?

Abbildung 1: Nicht alle Grafikkarten unterstützen die Funktionen des Quartz Composers. In diesem Fall kann es zu Abstürzen kommen.
Aufbau des Programms
Erzeugen Sie eine leere Datei, so öffnet der Quartz Composer zwei Fenster. Der Viewer zeigt Ihnen direkt die Ergebnisse Ihrer Änderungen und Vorgaben. Im Fenster Editor entwickeln Sie Ihre Composition. Das Fenster unterteilt sich in vier Bereiche. Links finden Sie sowohl die Patch und die Clip Library. Darunter wird Ihnen, wenn Sie einen Patch ausgewählt haben, eine kurze Beschreibung seiner Funktion angezeigt. Rechts mit Quadraten unterlegt wird die eigentliche Arbeitsfläche angezeigt. Ferner können Sie mir einem Klick auf den Button Hierarchy Browser oberhalb der Arbeitsfläche eine Hierarchie der in Ihrer Composition verwendeten Makros anzeigen lassen. Die Darstellung ähnelt der Spaltenansicht im Finder. Die Anzeige der Hierarchie kann bei einer komplizierteren Composition, in der Sie mehrere Patches zu einem Macro bündeln, die Übersicht enorm erleichtern. Bei einfacheren Arbeiten nimmt der Browser hingegen einfach nur Platz weg und Sie können ihn ruhig ausgeblendet lassen.
?

Abbildung 2: Das Fenster des Editors gliedert sich in bis zu vier Bereiche.
Patches, Macros, Eigenschaften
Bei der Erstellung Ihrer Composition werden Sie bevorzugt mit drei Elementen arbeiten. Patches stellen die Grundlage für Ihre Composition dar. Fast alle Patches verfügen über Vorgaben Werte und Eigenschaften, die Sie mit Hilfe des Informationsfensters manipulieren können. Sie können bei vielen Patches auch auf die Ergebnisse anderer zurück greifen, um so zum Beispiel die Ausdehnung eines Objektes dynamisch zu modifizieren. Schließlich können Sie, wenn Ihre Composition etwas komplexer geworden ist, Patches in einem Makro zusammen fassen.
Patches
Sie finden im linken Teil des Fensters Editor eine Liste mit allen Patches, die Sie für Ihre Composition verwenden können. Als Patches werden die Elemente bezeichnet, die für die Darstellung eines Objektes (Würfel, Bild, Strich,…) sorgen, die Berechnungen (Größe, Ausdehnung,…) vornehmen, Daten aus Quellen (Ordnern, RSS-Feeds,…) importieren oder Filter (Weichzeichnen, Verzerrung,…) auf ein Objekt anwenden. Die Patches gliedern sich in folgende Gruppen:
- Controller: Die Patches in dieser Gruppe ermöglichen es Ihnen, mit dem Anwender zu interagieren. Sie können hier die Position des Mauspfeils auslesen, eine zufällige Zahl (Random) verwenden, mit einem Grafiktablett (Tablet) arbeiten oder auf angeschlossene MIDI-Geräte zurück greifen.
- Environment: In dieser Gruppe werden Patches zusammen gefasst mit deren Hilfe Sie Objekte mehrfach berechnen, mit einem Nebel versehen oder dreidimensional transformieren können.
- Generator: Mit diesen Objekten können Sie Elemente wie eine Grafikdatei oder einen Text für die Verwendung mit einem Renderer (siehe unten) vorbereiten.
- Modifier: Diese Patches dienen dazu, Werte und Elemente zu modifizieren. Sie können Farben manipulieren oder aus einem Text einzelne Buchstaben extrahieren.
- Numeric: Einzelne Werte können mit diesen Patches berechnet werden. Ihnen steht neben Grundfunktionen wie dem Runden und logischen Operatoren auch die Möglichkeit zur Verfügung, Werte zu addieren, dividieren, multiplizieren und zu substrahieren.
- Renderer: Diese Patches sorgen für die Darstellung eines Objektes auf dem Bildschirm. Die Renderer benötigen in der Regel die Vorgaben von Generatoren und Werte für die Anzeige wie etwa der Positionierung auf dem Bildschirm, der Ausdehnung und einem Drehwinkel.
- Source: Bei diesen Datenquellen kann es sich um RSS-Feeds, Bilder (über die Spotlight-Suche) oder auch die Lautstärke der Tonausgabe handeln.
- Tool: Hier werden verschiedene Werkzeuge zusammen gefasst. Zu dieser Gruppe gehört unter anderem die Möglichkeit, JavaScript in Ihre Composition einzubinden, die abgelaufene Zeit (Patch Time) auszulesen oder auf mehrere Werte, die in einer Liste gespeichert wurden, zuzugreifen.

Abbildung 3: Zu jedem Patch wird eine kleine Beschreibung angezeigt.
Schließlich finden Sie, möglicherweise mit einem Punkt gekennzeichnet wenn Ihre Grafikkarte Core Image nicht unterstützt, verschiedene Filter (z.B. Blur zum Weichzeichnen), Farbmanipulationen und Verzerrungen, die Ihnen wahrscheinlich schon aus einem Programm zur Bildbearbeitung wie Adobe Photoshop bekannt sind und auch im Quartz Composer eine ähnliche Funktion übernehmen.
Patches verwenden Wenn Sie in der Liste einen Patch gefunden haben, den Sie für Ihre Composition verwenden möchten, dann können Sie ihn einfach mit der Maus auf die Arbeitsfläche ziehen oder mit einem Doppelklick in der Mitte platzieren. Er erscheint dann auf dieser und beeinflusst umgehend auch die Darstellung im Fenster Viewer. Wenn er ausgewählt wurde, wird er mit einem blauen Rahmen versehen. Um einen Patch zu entfernen, wählen Sie ihn mit der Maus aus und nutzen dann die Taste Backspace (?).
? ?

Abbildung 4: Die Werte eines Pacthes werden im Fenster Inspector vor gegeben.
Eigenschaften Bei den meisten Patches können Sie die Werte vorgeben. Hierbei wird zwischen eingehenden Werten, zum Beispiel die Breite eines Bildes für die Darstellung, und ausgehenden Werten, das Ergebnis einer Berechnung, unterschieden. Bei einem Patch, den Sie auf der Arbeitsfläche positioniert haben, werden die eingehenden Werte links, ausgehende rechts dargestellt. In Abbildung 4 wurde der Patch Psychedelic ausgewählt. Dieser erzeugt ein Objekt und gibt dementsprechend keine Werte an andere Patches weiter. Er kann aber Werte entgegen nehmen. Zum Beispiel wird mit Image das anzuzeigende Bild von einem anderen Patch übernommen. Ebenso können Sie die Größe (Scale) als auch die Geschwindigkeit und die Farbe bestimmen. Bei Patches, die ein Objekt darstellen, finden Sie oben rechts eine Nummer. In Abbildung 4 ist es die 1. Diese Zahlen geben die Ebene (Rendering Layer) des Patches vor. So würde ein Patch mit dem Rendering Layer 2 den ersteren überlagern. Sie können diesen Rendering Layer über das Kontextmenü ändern, das Sie mit einem Rechtsklick auf die Ziffer aufrufen können.
? ?

Abbildung 5: Mit nur zwei Patches lässt sich eine erste Composition erstellen.
Ein Beispiel Soweit die vielleicht etwas trockene Theorie. In einem ersten und einfachen Beispiel soll mit Hilfe des Patches Psychedelic ein zu importierendes Bild gespiegelt wieder gegeben werden. Wählen Sie zuerst in der Liste der Patches Image Importer aus und ziehen Sie diesen auf die Arbeitsfläche. Wählen Sie den Patch dann mit der Maus aus, so dass er blau umrandet dargestellt wird. Im Fenster Inspector wählen Sie die Ansicht Settings aus. Mit einem Klick auf die Schaltfläche Import From File können Sie ein Grafikdatei auf Ihrer Festplatte auswählen. Sie erhalten anschließend eine Vorschau der ausgewählten Datei. Sie können im Inspector weitere Vorgaben in Bezug auf Alphakanäle, Ränder, … machen. Für dieses Beispiel sind diese Funktionen aber ohne Belang. Zuerst soll die Grafikdatei für Ihre Composition zur Verfügung stehen. In einem zweiten Schritt wählen Sie in der Liste der Patches Psychedelic aus der Gruppe Renderer aus und platzieren auch diesen auf der Arbeitsfläche. Um das importierte Bild darzustellen, wählen Sie bei dem Patch Image Importer den kleinen Punkt rechts neben Image aus und ziehen die Linie zu dem gleichnamigen Punkt von Psychedelic. Die Patches sind nun miteinander verknüpft und das importierte Bild wird Psychedelic als Wert übergeben.
Linienfarben
Wenn Sie zwei Patches miteinander verknüfen, dann gibt Ihnen die Farbe der Linie einen Hinweis, ob diese Verknüpfung sinnvoll ist oder nicht. Wird die Linie gelb (Image ? Image) dargestellt, dann können die Werte einwandfrei übergeben werden. Bei einer roten Linie ist die Verknüpfung zwar möglich, aber keinesfalls sinnvoll. Sie könnten zum Beispiel eine Verbindung Image ? Enable herstellen, die aber keine Funktion übernehmen würde. Wird die Linie orange dargestellt, so kommt es manchmal auf den Einzelfall an.
?

Abbildung 6: Die fertige Composition spiegelt das importierte Bild.
Haben Sie auf diese Weise die zwei Patches miteinander verknüpft, so erscheinen die Ergebnisse sofort im Fenster Viewer (siehe Abbildung 6). Wenn Sie an den Eigenschaften eines Patches Änderungen vornehmen, also zum Beispiel ein anderes Bild auswählen, die Geschwindigkeit oder die Größe ändern, werden Ihnen die Ergebnisse angezeigt, ohne dass Sie die Darstellung von Hand aktualisieren müssen.
Ein pulsierender Würfel
In einem zweiten Beispiel soll ein sich drehender Würfel platziert werden, der in seiner Größe pulsiert. Zusätzlich soll ein Hintergrund erstellt werden, dessen Farben oszillieren. Damit Sie die Übersicht nicht so schnell verlieren, werden jeweils zwei Macros erstellt, die jeweils den Würfel als auch den Hintergrund zusammen fassen. Erstellen Sie zunächst eine leere Composition im Quartz Composer.
Der Hintergrund
Der erste Schritt besteht darin, mit der Schaltfläche Create Macro aus der Symbolleiste des Fensters Editor ein neues, leeres Macro zu erzeugen. Das Macro wird zunächst grün angezeigt. Im Fenster Inspector des Macros können Sie unter Title einen neuen Namen, zum Beispiel Hintergrund, vergeben. Mit einem Doppelklick auf das neue Macro öffnen Sie es. Die Arbeitsfläche des neuen Macros ist naturgemäß leer. Im Hierarchy Browser wird das ausgewählte Macro anschließend markiert. Wenn Sie das Macro fertig gestellt haben, können Sie mit der Schaltfläche Edit Parent in der Symbolleiste wieder zum übergeordneten Macro wechseln. Es ist durchaus möglich, weitere Macros in ein übergeordnetes einzubetten.
?

Abbildung 7: Einem Macro kann auch ein individueller Name zugewiesen werden.
Haben Sie ein Macro erstellt und ausgewählt, so gilt es zuerst den Patch auszuwählen, der für das Farbspektrum im Hintergrund zuständig ist. Sie finden in der Kategorie Renderer einen Patch Gradient. Haben Sie den Gradient platziert, wird er in seiner Standardeinstellung, einem Verlauf von Schwarz nach Weiß, angezeigt.
?
Abbildung 8: Für den Hintergrund werden drei Farben definiert.
Das Macro benötigt in einem zweiten Schritt drei Farbwerte, die das Farbspektrum begrenzen. Platzieren Sie aus der Kategorie Generator dreimal den Patch RGB Color auf der Arbeitsfläche. Verbinden Sie den Endwert Color jeweils mit den Werten Start Color, Middle Color und End Color von Gradient. Jede der drei Farben, die Sie mit Hilfe des Patches RGB Color definieren, wird jetzt für einen Bereich des Hintergrunds verwendet. Sie könnten, um einen festen Verlauf zu erstellen, im Inspector der einzelnen Farb-Patches einen Wert im Bereich Settings festlegen.
?

Abbildung 9: Der Patch Interpolation zählt zwischen dem Start- und Endwert.
Damit der Verlauf dynamisch erzeugt wird, platzieren Sie den Patch Interpolation aus der Kategorie Controller. Verbinden Sie dessen Wert Result mit den Farben Red, Green und Blue der Patches RGB Color (siehe Abbildung 9). Der Patch Iterpolation hat die Aufgabe, zwischen den vorgegebenen Werten hin und her zu zählen. Geben Sie im Inspector unter Start Value 0, unter End Value 1 und als Repeat Mode die Methode Mirrored Loop vor, so zählt der Patch von 0 bis 1 und wieder zurück. Auf diese Weise ändern sich natürlich auch die Rot-, Grün- und Blauwerte der Patches RGB Color und damit verbunden die Werte für die Farben von Gradient. Im Fenster Viewer können Sie jetzt einen sich ändernden Farbverlauf betrachten. Sie können an den Vorgaben für den Patch Interpolation die Geschwindigkeit der Zählung und damit verbunden des Farbverlaufs vorgeben, indem Sie die Werte für Duration und Tension vergrößern oder verkleinern.
?
Abbildung 10: Der Farbverlauf wird durch den Patch Interpolation beeinflusst.
Über die Werte, die miteinander verbundene Patches austauschen, können Sie sich leicht informieren. Wählen Sie den fraglichen Patch aus und platzieren Sie den Mauspfeil über den Wert, über den Sie sich informieren möchten. In Abbildung 11 wurde der Patch Interpolation ausgewählt und der Mauspfeil über Result positioniert. Sie können nun nach verfolgen, wie der Patch von 0 bis 1 und wieder zurück zählt.
?
Abbildung 11: Der Wert eines Patches wird Ihnen automatisch angezeigt.
Der Würfel
Der Hintergrund der Composition wurde nun in einem eigenen Macro definiert. Wechseln Sie zur obersten Ebene und erstellen Sie ein weiteres Macro für den Würfel. In dem neuen Macro platzieren Sie nun aus der Kategorie Renderer den Patch Cube. Damit Sie nicht mit einem weißen Würfel vorlieb nehmen müssen, können Sie wie im ersten Beispiel beschrieben, mit dem Patch Image Importer eine Grafikdatei importieren und für die Flächen des Würfels als Motiv verwenden. Verknüpfen Sie hierzu den Ausgang Image des Importers mit den Werten Front, Left, Right, … Image des Patches Cube. Sie können natürlich auch mehrere Bilder importieren und so für die Flächen verschiedene Motive verwenden. Alternativ zu den Bildern können Sie auch Farben verwenden.
?

Abbildung 12: Der erzeugte Würfel vor dem Hintergrund.
Damit der Würfel rotiert, müssen Sie sich zweier Patches bedienen. Zuerst wird die interne Zeit mit Hilfe von Patch Time (Kategorie Tool) ausgelesen. Hierbei handelt es sich um einen Wert, der immer größer wird. Der Würfel rotiert also immer weiter in eine Richtung. Mit dem Patch Interpolation könnten Sie auch veranlassen, dass sich der Würfel zuerst in die eine und dann in die andere Richtung dreht. Da die Werte, die von Patch Time übergeben werden, für eine eher langsame Drehung des Würfels sorgen, wird der Wert mit dem Patch Math mit 100 multipliziert. Das Ergebnis dieser Multiplikation können Sie für die Werte X, Y und Z Rotation verwenden. Haben Sie die Verknüpfungen hergestellt, so rotiert der Würfel.
?

Abbildung 13: Mit dem Patch Math wird der Wert von Patch Time mit 100 multipliziert.
Um die Multiplikation vorzunehmen, rufen Sie im Inspector des Patches Math zuerst den Bereich Settings auf. Mit einem Klick auf das Minuszeichen löschen Sie die überflüssige Operation #2. Im Bereich Input Parameters (siehe Abbildung 13) wird als Initial Value automatisch der aktuelle Wert von Patch Time angezeigt. Im Ausklappmenü wählen Sie als Operation #1 dann Multiply und geben als Operand #1 den Wert 100 ein. Sie können natürlich mit diesem Wert ein wenig experimentieren und so den Würfel schneller oder langsamer rotieren lassen. Auch könnten Sie, indem Sie Math zwei- oder dreimal verwenden, die Rotation um die einzelnen Achsen unterschiedlich schnell ablaufen lassen.
?
Abbildung 14: Der Patch Interpolation sorgt für die Änderung der Größe des Würfels.
Damit der Würfel seine Größe ändert, kommt der Patch Interpolation erneut zum Einsatz. Geben Sie als Startwert 0, als Endwert 1 und als Modus Mirrored Loop vor. Die Geschwindigkeit, mit der Würfel dann pulsiert, können Sie über den Wert Duration dieses Patches vorgeben. Verbinden Sie den Wert Result mit den Werten Width, Height und Depth. Der Würfel ändert seine Größe nun von ganz klein bis zur Höhe des Bildschirms oder Fensters.
Positionierung mit der Maus In der bisherigen Fassung wurde der Würfel in der Mitte des Fensters oder des Bildschirms positioniert. Mit dem Patch Mouse (Kategorie Controller) können Sie die aktuelle Position des Mauspfeils abfragen. Verbinden Sie den Wert X mit X Position und Y mit Y Position, so folgt der Würfel den Bewegungen der Maus. Damit dieser Effekt voll zum Tragen kommt, wählen Sie das Fenster Viewer aus und bringen es anschließend mit der Tastenkombination Apfel und F in die Volldarstellung. Das Fenster belegt nun den gesamten Bildschirm, der Würfel dreht sich, pulsiert und seine Position folgt den Bewegungen der Maus. Mit Escape können Sie die Vollbilddarstellung wieder verlassen.
?

Abbildung 15: Der Patch Mouse übergibt die Position des Mauspfeils an den Würfel.
Speichern Sie diese Composition nun im Ordner ~/Library/Screen Savers, so steht sie Ihnen als Bildschirmschoner in den Systemeinstellungen zur Verfügung. Sie können ihn nun wie jeden anderen Bildschirmschoner auswählen und nach einer vorgegebenen Zeit aktivieren.
?
Abbildung 16: Die fertige Composition kann als Bildschirmschoner eingesetzt werden.
RSS Feeds anzeigen
Das zweite Beispiel soll den RSS-Feed der Notizen von mac.delta-c (http://mac.delta-c.de/blog/feed) einlesen und die Überschriften sowie den Text der einzelnen Notizen nacheinander anzeigen. Dabei soll als Hintergrund das Cover des Buches links auf dem Bildschirm platziert, die Überschriften sollen in der rechten oberen Ecke des Bildschirms angezeigt und der Haupttext der Notiz soll von unten nach oben über den Bildschirm gescrollt werden.
Der Hintergrund
Erstellen Sie für den Hintergrund ein neues, leeres Macro. In diesem platzieren Sie zuerst aus der Kategorie Renderer den Patch Clear. In seinen Eigenschaften müssen Sie als Farbe (Clear Color) weiß auswählen und zusätzlich noch die Deckkraft (Opacity) auf 100% setzen. Der gesamte Hintergrund der Composition ist nun weiß. Mit dem Patch Image Importer wird das Cover des Buches in die Composition importiert. Damit die importierte Grafikdatei, die für die Auflösung 1024x768 optimiert wurde, korrekt dargestellt wird, verwenden Sie den Patch Image Dimensions und verknüpfen die beiden Patches miteinander. Der Renderer Sprite wird nun dazu verwendet, das Bild in seiner ursprünglichen Auflösung darzustellen. Verknüpfen Sie zuerst Image Importer mit dem Wert Image von Sprite. Damit die Auflösung des ursprünglichen Bildes auch für den Patch Sprite gilt, verknüpfen Sie die Werte Width und Height. Das Cover wird nun in der Mitte der Composition angezeigt. Um es an den linken Rand zu rücken – rechts soll der RSS Feed angezeigt werden – vergeben Sie in den Eigenschaften von Sprite für X Position den Wert -0.28. Das Cover wird an den linken Rand gerückt.
?

Abbildung 17: Der Patch Image Dimensions übergibt die Breite und Höhe eines Bildes an einen anderen Patch.
X und Y Position
Bei den X und Y Koordinaten verwendet der Quartz Composer ein etwas anderes Verfahren, als es vielleicht noch aus dem Schulunterricht bekannt ist. Der Nullpunkt, den Sie mit 0,0 ansprechen können, liegt in der Mitte des Fensters. Die horizontale Breite wird mit -1 und 1 begrenzt. Den linken Rand können Sie also mit -1, den rechten mit der X Koordinate 1 ansprechen. Die Höhe wird proportional zur Breite berechnen. Wenn das Fenster quadratisch ist, können Sie den oberen Rand mit 1 und den unteren mit der Y Koordinate -1 ansprechen. Ziehen Sie das Fenster so auf, dass es ein Rechteck darstellt und dabei doppelt so breit wie hoch ist, so entspricht die obere Kante der Y Koordinate 0.5, die untere -0.5. Ist das Fenster doppelt so hoch wie breit, dann würde der obere Rand mit 2, der untere mit -2 angesetzt werden.
Den Feed einlesen
Die Composition soll so angelegt werden, dass neben der Überschrift auch der Haupttext der Einträge angezeigt wird. Sowohl die Anzeige der Überschrift als auch des Haupttextes beruhen also auf ein und derselben Datenbasis, greifen sich aber nur ein unterschiedliches Element des jeweiligen Beitrags heraus. Aus diesem Grund wird, auch um die Übersicht ein wenig zu bewahren, der Hauptteil der Auswertung des Feeds in ein eigenes Macro ausgegliedert. Dessen Ergebnisse werden dann an zwei andere übergeben, die für die Darstellung der Überschrift und des Haupttextes sorgen. Erstellen Sie hierfür zuerst ein neues Macro, das Sie beispielweise mit der Bezeichnung Der RSS Feed (siehe Abbildung 18) versehen können.
?

Abbildung 18: Für die Auswertung des RSS Feeds wird ein eigenes Macro verwendet.
Datenquelle In dem neu erzeugten Macro muss zuerst der RSS Feed als Datenquelle angegeben werden. Sie finden in der Kategorie Source den Patch RSS Feed. Geben Sie diesem Patch in seinen Eigenschaften unter Input Parameters als URL http://mac.delta-c.de/blog/feed oder einen beliebigen anderen RSS Feed an. Der Patch liest den angegebenen Feed ein und stellt seinen Inhalt im Wert Article List zur Verfügung.
?

Abbildung 19: Der Patch RSS Feed liest den in den Input Parameters angegebenen Feed ein.
Einträge zählen
Die Aufgabe besteht nun darin, die Einträge des Feeds auszulesen und für die anderen beiden Macros auszuwerten. Bei dem Wert, den Sie über Article List verknüpfen können, handelt es sich um eine Liste der Einträge. In der Terminologie des Quartz Composer werden solche Listen auch Structures genannt. Um die Einträge abwechselnd anzuzeigen, benötigt es einige »Berechnungen«. Platzieren Sie hierfür zuerst aus der Kategorie Tool den Patch Structure Count auf der Arbeitsfläche. Verknüpfen Sie ihn mit dem Wert Article List und Sie erhalten als Resultat die Anzahl der Einträge (Structure Count) im RSS Feed. Der zweite Schritt besteht nun darin, eine Zahlenfolge beginnend mit 1 und endend mit der Anzahl der Einträge zu erzeugen. Bei dieser Zahlenfolge besteht die Herausforderung darin, dass erst nach einer gewissen Wartezeit zur nächsten Zahl und damit auch zum nächsten Eintrag gesprungen werden soll. Platzieren Sie hierfür einmal den Patch Patch Time (Kategorie Tool) und Math (Kategorie Numeric) auf der Arbeitsfläche. Es gilt nun, den Patch Math so einzurichten, dass als Resultat von 1 bis zur Anzahl der Einträge gezählt wird.
? ?

Abbildung 20: Mit Hilfe von Patch Time und Math wird die Anzahl der Beiträge im Feed nacheinander aufgezählt.
Verknüpfen Sie als erstes den Wert Time mit Initial Value von Math und die Anzahl der Einträge (Count) verknüpfen Sie mit Operand #2 (siehe Abbildung 20). Für die korrekte Berechnung müssen Sie im Inspector von Math folgende Vorgaben (siehe Abbildung 20) vorgeben: Als Initial Value wird der Wert von Patch Time verwendet. Diese Zahl wird also immer weiter addiert. Als Operation #2 geben Sie Divide an. Mit dem Wert für Operand #1 können Sie die Dauer der Anzeige eines Eintrages bestimmen. Ein Wert von 20 hat sich hier als brauchbar erwiesen. Wenn Sie den Wert niedriger ansetzen, verringert sich auch die Dauer der Anzeige. Für Operation #2 geben Sie Modulo an. Hier wird der Wert Operand #2 von der Anzahl der Einträge, die mit Structure Count ermittelt wurde, vorgegeben. Das Endergebnis von Math bewegt sich nun in dem Bereich 1 bis zur Anzahl der Einträge. Letzteres wird durch die Operation Modulo erreicht. Sind in dem RSS Feed 15 Einträge vorhanden, so zählt Math ausgehend von Patch Time nun von 1 bis 15.
?
Abbildung 21: Ein Eintrag in einer Structure oder Liste kann mit dem Patch Structure Index Member angesprochen werden.
Eintrag übergeben Der letzte Schritt in diesem Macro besteht nun darin, aus dem RSS Feed das Element oder besser den Eintrag auszuwählen, der dem aktuellen Ergebnis von Math entspricht. Der Patch Structure Index Member (Kategorie Modifier) wählt einen Eintrag aus einer Liste aus und berücksichtigt dabei den Wert, den Sie als Index vorgeben. Wenn für Index der Wert 5 gelten sollte, wird der fünfte Eintrag als Member ausgegeben. Da mit den Vorgaben, die in Math getroffen wurden, nacheinander alle Einträge, zum Beispiel von 1 bis 15 abgearbeitet werden, verknüpfen Sie Resulting Value mit Index, wie in Abbildung 21 zu sehen. Sie müssen jetzt noch den Wert Structure mit Article List verknüpfen und damit den RSS Feed als Datenbasis vorgeben. Das Resultat (Member) entspricht nun den einzelnen Beiträgen im Feed, die nacheinander ausgegeben werden.

Abbildung 22: Das Ergebnis muss, damit es von anderen Macros und Patches auf der übergeordneten Ebene verwendet werden kann, publiziert werden.
Eintrag exportieren Damit der Eintrag, der auf diese Weise ausgewählt wurde, von den beiden Macros, die die Überschrift und den Haupttext darstellen sollen, verwendet werden können, müssen Sie den Wert publizieren. Wenn Sie das Kontextmenü über dem Patch Structure Index Member aufrufen, können Sie über Optionen Published Inputs und Published Outputs für andere Patches auf der übergeordneten Ebene freigeben. Wählen Sie unter Published Ouputs den Eintrag Member aus, wird dieser (siehe Abbildung 22) anschließend auf der übergeordneten Ebene vom Macro Der RSS Feed angezeigt und steht so anderen Patches und Macros auf dieser Ebene zur Verfügung.
Die Überschrift anzeigen
Die Einträge des Feeds werden nun von dem zuvor erstellten Macro nacheinander ausgegeben. Erstellen Sie für die Anzeige der Überschrift ein weiteres Macro (z.B. Die Überschrift als Wert für Title) . In diesem Macro müssen Sie zuerst den Patch Structure Key Member (Kategorie Modifier) platzieren. Die Aufgabe dieses Patches besteht darin, einen Eintrag in einer Structure oder einer Liste anhand der Bezeichnung auszuwählen. Da der Eintrag eines RSS Feeds aus mehreren Teilen (Title, Text,…) besteht, wird mit Hilfe von Structure Key Member einer dieser Bestandteile anhand seines Namens ausgewählt. Geben Sie im Inspector unter Input Parameters für Key den Wert title vor. Ferner müssen Sie noch über das Kontextmenü den Wert Structure mit Hifle von Published Inputs für die höher gelegene Ebene freigeben, um ihn später mit dem Macro Der RSS Feed zu verknüpfen. Das Ergebnis (Member) ist der Text der Überschrift, also ein String.

Abbildung 23: Mit dem Patch Structure Key Member kann ein Eintrag anhand seiner Bezeichnung ausgewählt werden.
Text in Bild umwandeln Der Patch Image With String (Kategorie Generator) wandelt einen Text, wie er mit Hilfe von Structure Key Member erzeugt wurde, in ein Bild um. Platzieren Sie den Patch auf der Arbeitsfläche und verknüpfen Sie seinen Wert String mit dem Wert Member. Im Inspector des Patches können Sie im Bereich Settings die Schriftart, die Ausrichtungen (horizontal und vertikal) sowie die Breite vorgeben. Welche Schriftart Sie nutzen, sei Ihren Präferenzen überlassen. Damit die Überschrift am rechten Rand des Bildschirms erscheint, wählen Sie für Horizontal Alignment den Wert Right aus. Sie müssen ferner als Border Color die weiße Farbe auswählen und für diese den Wert Opacity auf 100% setzen. Unter Input Parameters vergeben Sie für Image Width den Wert 2, andernfalls erscheint die Überschrift etwas zu klein.
Das im weiteren Sinne Problem des so erzeugten Bildes besteht darin, dass die Schrift weiß ist und sich damit vom weißen Hintergrund nicht abhebt. Mit dem Patch Color Invert (Kategorie Color Effect) können Sie die Farbwerte umkehren und eine schwarze Schrift erhalten.

Abbildung 24: Mit Hilfe von vier Patches wird die Überschrift angezeigt.
Text platzieren Das Ergebnis dieser drei Patches ist nun ein schwarzer Schriftzug, der auf der Überschrift des aktuellen Eintrages im Feed basiert. Damit dieser angezeigt wird, nutzen Sie den Patch Billboard (Kategorie Renderer). Verknüpfen Sie dessen Wert Image mit dem gleichnamigen Resultat von Color Invert. Schließlich müssen Sie noch im Inspector des Patches Billboard einige Werte anpassen. Wenn Sie unter X und Y Position jeweils den Wert 0.5 angeben, wird die Überschrift in den rechten oberen Ecke angezeigt. Als Breite (Width) geben Sie 1 an. Ferner müssen Sie als Farbe (Color) wiederum weiß mit Opacity 100% angeben und schließlich den Wert für Blending, der in seiner Funktionsweise den Ebenenvorgaben von Photoshop entspricht, auch Over setzen.
?

Abbildung 25: Über die Eigenschaften des Patches Billboard wird die Überschrift rechts oben platziert.
Schatten werfen Sie können die Überschrift optisch ein wenig aufbessern, indem Sie ihr einen Schatten zuweisen. Wählen Sie den Patch Billboard aus, kopieren Sie ihn mit Apfel und c in die Zwischenablage und setzen Sie ihn mit Apfel und v gleich wieder ein. Der so verdoppelte Patch verfügt über die gleichen Werte wie sein Ursprung, ist aber nicht mehr verknüpft. Für einen Schatten eignet sich der Patch Gaussian Blur (Kategorie Blur) recht gut. Platzieren Sie den Patch auf der Arbeisfläche und weisen Sie im Inspector für Radius einen Wert 10 zu. Verknüpfen Sie nun das Ergebnis von Color Invert mit Gaussian Blur und diesen wiederum mit dem zweiten Patch Billboard.

Abbildung 26: Die Überschrift wird mit Hilfe von sechs Patches erzeugt.
Macros verknüpfen
Der letzte Arbeitsschritt für die Anzeige der Überschrift besteht jetzt noch darin, dass Ergebnis des Macros Der RSS Feed mit dem Macro Die Überschrift zu verknüpfen. Die Überschrift erscheint jetzt mit einem Schatten versehen in der rechten oberen Ecke.

Abbildung 27: Zuletzt müssen die beiden Macros miteinander verknüpft werden.
Der Haupttext
Für den Haupttext eines Beitrages erstellen Sie auf der obersten Ebene ein weiteres Macro, dem Sie die Bezeichnung der Haupttext geben. Die ersten vier Schritte bestehen wiederum in der Erzeugung und Verknüpfung der Patches Structure Key Member, Image With String sowie Color Invert. Allerdings müssen Sie für Structure Key Member neben der Publizierung des Eingangswertes Structure den Wert von Key auf description abändern. Auch müssen Sie die Werte von Image With String ein wenig modifizieren, da ansonsten der Haupttext ein wenig zu groß wird. Geben Sie als Wert für Image Width 1 und unter Glyph Size den Wert 0.04 vor. Schließlich platzieren Sie den in ein Image umgewandelten Text mit Billboard erneut. Geben Sie für Billboard als X Position den Wert 0.7 vor, so wird der Haupttext am rechten Rand ausgerichtet. Eine Breite (Width) von 0.6 sorgt dafür, dass sich der Haupttext mit dem Cover nicht überschneidet. Sie können wiederum mit Hilfe des Patches Gaussian Blur und einem zweiten Patch Billboard einen Schatten erzeugen.
?

Abbildung 28: Der Scroll-Effekt wird mit drei Patches realisiert.
Text bewegen
Damit der Text von unten nach oben gescrollt wird, müssen Sie für den Wert Y Position einen Zähler entwerfen. Zwar wäre auch eine Lösung mit dem Patch Interpolation denkbar, aber damit lässt sich das Ziel, dass der Text nur einmal angezeigt wird, nur durch viel ausprobieren herstellen. Besser wäre eine Bewegung basierend auf Patch Time, da ja auch die Durchzählung der Einträge und somit der Wechsel der Überschriften damit erfolgt. Platzieren Sie zunächst Patch Time und Math auf Ihrer Arbeitsfläche. Verknüpfen Sie Time und Initial Value miteinander und geben Sie in den Eigenschaften von Math als Operation #1 Divide an. Ein Wert von 5 sorgt für eine noch lesbare, aber ausreichend schnelle Geschwindigkeit der Bewegung.

Abbildung 29: Die endültige Composition besteht aus vier Macros.
Das Ergebnis dieser beiden Patches ist ein stetig ansteigender Wert, der nicht mit dem Koordinaten-System des Composer konform geht. Damit der Text von unten nach oben gescrollt wird, müssten die Werte für die Y Koordinate von -2, was unterhalb der Darstellung liegt, auf 2 oberhalb der Darstellung hochgezählt werden. Mit Hilfe des Patches Range aus der Kategorie Numeric können Sie die Werte auf einen Bereich eingrenzen. Platzieren Sie den Patch auf der Arbeitsfläche und geben Sie unter Input Parameters als Range Min -2 und als Range Max 2 an. Verknüpfen Sie dann den Wert Resulting Value von Math mit Value von Range. Als Ergebnis wird der Wert Rolled Over Value von -2 nach 2 hochgezählt. Verknüpfen Sie ihn mit dem Wert Y Position des Patches Billboard und der Text wird von unten nach oben gescrollt.
Abschlussarbeiten Als letzten Schritt müssen Sie nun den Wert Member des Macros Der RSS Feed mit dem Wert Structure des Macros Der Haupttext verbinden. Speichern Sie die Datei anschließend im Order /Library/Screen Savers oder ~/Library/Screen Savers, so steht Ihnen der RSS Feed als Bildschirmschoner in den Systemeinstellungen zur Verfügung.

Abbildung 30: Die fertige Composition zeigt die Notizen der Webseite zum Buch an.
Ausblick
Es ist in diesem doch recht kurzen Tutorial unmöglich, alle Facetten und Möglichkeiten des Quartzs Composers vorzustellen. Für die ersten Schritte und ein Verständnis der Funktionsweise dürften die Erläuterungen aber ausreichen. Sie können die beiden Beispiel verfeinern oder erweitern, indem Sie zum Beispiel einen Filter zur Verzerrung oder Weichzeichnung auf das Cover anwenden. Kombinieren Sie die Werte des Filters mit einem Patch wie Interpolation, so können Sie das Bild sich dynamisch ändern lassen. Sie könnten auch bei der Größe auf die Lautstärke der Tonausgabe zurück greifen. Bei der Tonausgabe stellt Ihnen der Composer auch die Möglichkeit zur Verfügung, die verschiedenen Kanäle auszuwerten. Sie könnten also mehrere Objekte mit den Werten der Höhen, Mitten und Tiefen der Musik berechnen, was bei den beliebten Plug-Ins für iTunes gebräuchlich ist. Sie können die unterschiedlichen Filter und Effekte auch nutzen, um Bilder, die Sie in einer Art Diashow anzeigen, zu verfremden. Die Möglichkeiten, die sich Ihnen hier bieten, sind aufgrund der offenen Kombinationen und Verknüpfungen fast unbegrenzt.
Wenn Sie eigene Programme mit Cocoa und dem Interface Builder entwickeln, dann können Sie Ihre Composition auch in Ihren Programmen verwenden. Neben der detaillierten Dokumentation des Programms steht Ihnen im Interface Builder auch ein passendes Objekt zur Verfügung.
- Druckversion
- Anmelden oder Registrieren um Kommentare zu schreiben














