Processing is een computertaal die door visuele kunstenaars wordt gebruikt om generatieve en interactieve kunst te maken. Naast het maken van grafische afbeeldingen op het scherm, wordt de taal ook gebruikt om allerlei interactieve sculpturen en fysieke kunsten te maken. In het begin is het moeilijk te vatten waar het voor is, maar het volstaat om te zeggen dat de kunstwereld Processing heeft omarmd als de programmeertaal bij uitstek.

In dit artikel zien we hoe de band The Sinatra Test een cover heeft gemaakt voor het aanstaande album dat een unieke versie voor elke gebruiker creëert via een Mac-app die met de muziek wordt gedistribueerd.

Album Cover Generator

Voor hun aankomende album 'ambientertainment' wilde The Sinatra Test een coverontwerp hebben dat de gegenereerde aard van de muziek op het album weerspiegelde. Verwerking bood een eenvoudige en eenvoudig te leren methode om precies dat te doen.

De code voor de albumhoes is nog niet helemaal klaar op het moment van schrijven, maar ze waren tevreden met de uitvoer om ons de resultaten tot nu toe te laten bekijken en de code voor deze vroege versie te publiceren zodat mensen het zelf konden proberen.

De code is erg kort en eenvoudig, maar hij doet het werk. In deze huidige versie op de Mac maakt het uitvoeren van de build van de app een variatie op het ontwerp en slaat het op dezelfde locatie op als de app.

Om Verwerking te installeren, gaat u naar de Downloadpagina op de site en klikt u op de koppeling voor uw platform. Wanneer het is gedownload, pak het ZIP-bestand uit en sleep de applicatie naar uw map Toepassingen.

Maak er een PDF van

De eerste stap is het laden van de PDF-aanmaakbibliotheek:

 import processing.pdf. *; 

Vervolgens stellen we de grootte van de uitvoer op het scherm in, in dit geval 500 pixels vierkant:

 grootte (500, 500); 

Het is duidelijk dat de uitvoer een grafische vector van een PDF-vector is, zodat deze kan worden geschaald naar elke grootte zonder verslechtering of grillige lijnen.

Vervolgens moeten we een bestandsnaam definiëren voor de resulterende PDF en beginnen met het opnemen van de afbeeldingen zoals ze zijn gemaakt voor opslag in de uiteindelijke afbeelding:

 startRecord (PDF, "cover.pdf"); 

De kleuren van de afbeelding worden vervolgens gedefinieerd. De achtergrond is zwart:

 achtergrond (0); 

Wanneer in twijfel, willekeurig

Om de kleuren van de strengen te maken, werd besloten dat ze voornamelijk groen moesten zijn, maar met variaties. De strategie was dat RGB van de kleuren willekeurig was, maar dat het groene element altijd hoger kon gaan dan het rode of het blauwe. Groen kan helemaal omhoog gaan naar 256, maar de andere twee kanalen hebben een limiet van 100.

Dus definiëren we de zwevende variabelen rood, groen en blauw met de volgende waarden:

 zweven rood = willekeurig (100); zwevend groen = willekeurig (255); float blue = willekeurig (100); 

Hierdoor wordt elke keer een nieuwe colorway gemaakt, elke keer groen, maar met verschillende gradaties rood, groen en blauw om de schaduw aan te passen. Er is altijd meer groen dan rood of blauw.

Haar, bladeren of bieslook? Wie weet!

Nu de code voor het tekenen van de strengen. Het lijngewicht van elke streng wordt willekeurig verdeeld en de horizontale positie van de boven- en onderkant van de strengen worden ook willekeurig binnen bepaalde parameters gevarieerd. De strengen zijn voor 60% doorschijnend, wat resulteert in een aangenaam haarachtig strengeffect:

 for (int i = 0; i <500; i ++) {float r = random (10); strokeWeight (r); beroerte (rood, groen, blauw, 60); zwevende offset = r * 5, 0; lijn (i-20, 500, i + offset, 0); } 

Nu wat tekst

Vervolgens moet het lettertype worden gemaakt. Voor gebruik in Processing moeten lettertypen worden geconverteerd naar een .vlw-indeling. Dit gebeurt vanuit een gezicht in de map met lettertypen op het hostsysteem.

Opmerking: dit is een gebied waar de band nog steeds aan werkt. Voor web-apps kan het geconverteerde lettertype op de server worden opgeslagen en nooit op het systeem van de gebruiker worden geïnstalleerd.

 P Font lettertype; font = createFont ("CooperBlackMS", 24); textfont (lettertype); 

Nadat het lettertype is gemaakt, wordt de tekst naar de afbeelding geschreven, de naam van de band linksboven en de naam van het album rechtsonder:

 tekst ("de sinatra-test", 10, 20); tekst ("ambientertainment", 250, 490); 

Blijkbaar kostte het veel vallen en opstaan ​​om de tekst goed te positioneren, en de ogenschijnlijk willekeurige coördinaten zijn degene die er op het scherm het best uitzagen.

Wikkel het in

Vervolgens wordt de opname van de PDF beëindigd, waardoor het programma wordt gestopt en de voltooide afbeelding naar de schijf wordt geschreven met de hierboven gedefinieerde bestandsnaam:

 endRecord (); 

Uiteindelijk drukt het programma een bericht af op de console om aan te geven dat het klaar is:

 print ("Klaar! Nieuw aangemaakt album"); 

verfijningen

De uiteindelijke versie van de app zal enkele verfijningen bevatten, zoals een ingebed lettertype en een iets meer interactieve gebruikersinterface, waardoor de gebruiker mogelijk enkele parameters vooraf kan instellen.

Ook schrijft het Processing-programma op de Mac standaard Java voor het maken van apps, waarvoor het in dit geval werd gebruikt, maar je kunt ook andere modi toevoegen zoals Coffeescript, Javascript en Python als je dat wilt. Ook wordt er een versie onderzocht van de software die is gecodeerd voor Javascript, die de albumhoes via een webpagina maakt en downloadt naar de computer van de gebruiker.

Kunst genereren met behulp van software is een groeiende trend in de moderne kunst. Heeft u ervaring met Processing of generatieve kunst gehad? Laat ons je mening weten in de reacties hieronder.