Arbeiten

Übungen und Arbeiten der Studierenden zur Lehrveranstaltung Creative Programming Nr. 470.002, Vorlesung und Übung Universität für künstlerische und industrielle Gestaltung, Linz Abteilung für Mediengestaltung Lehramt Dozent: Andreas Pirchner Wintersemester 2016/17

Hausübung 1

Aufgabenstellung
Programmiere einen Bildschirmschoner bei dem sich visuelle Elemente auf interessante Weise zufallsgesteuert über den Bildschirm bewegen (Befehl: fullscreen()). Das Programm soll beendet werden, wenn man die Maus bewegt. (Befehl: exit())

Christina Klaus

Lisa Kuka

Kinga Hügel

Marija Milosavljevic

Hausübung 2

Aufgabenstellung
Programmiere ein Pipettenwerkzeug, mit dem man die Farbe aus einem geladenen Bild aufnehmen kann. Stelle die aufgenommene Farbe als gefülltes Rechteck am Mauspointer dar. Verwende einen Slider, um den Farbaufnahmebereich zwischen 1 Pixel und 5x5Pixel einzustellen.

Lisa Kuka

Lena Huber

Hausübung 3

Aufgabenstellung
Programmiere zwei interessante Videoeffekte für die Webcam Bildeffekte.

Aksinnaia Semyanikhina

Lisa Kuka

Hausübung 4

Aufgabenstellung
Erstelle eine virtuelle Version von Steve Reichs Pendulum Music mit drei "Pendeln".

1 Erstelle analog zum 1. Pendel (siehe Code unten) zwei weitere Pendel

2 Zeichne in der Mitte einen Bereich, den die Pendel durchqueren und dabei zum Klingen angeregt werden Jedes Pendel soll zufallsgesteuert leicht unterschiedliche Grundparameter aufweisen, sodass es zu charakteristischen Asynchronizitäten kommt

3 Erstelle Klanggeneratoren für jedes Pendel

Bonus: Erstelle eine Klasse für Pendel-Objekte

Verwende folgenden Code als Ausgangspunkt:


int xOrigin, yOrigin;             // Variablen für die Koordinaten des Ursprungs
float x, y;                       // Koordinaten für Pendelkopf
int time = 0;
float omega;
float theta = 0;
float gravity = 9.81;             // Schwerkraft
int len = 600;                    // Länge des Pendels
float auslenk = random(0.1, 0.4); // Auslenkung
float mass = random(80,120);      // Gewicht des Pendels
float damp = 1.0002;              // Dämpfung – wie schnell sich die Auslenkung verringert

void setup()
{
  size(1080, 700);
  xOrigin = width/2;              // Ursprung (x) des Pendels
  yOrigin = 50;                   // Ursprung (y) des Pendels
  fill(0);
}

void draw()
{
  background(255);
  auslenk = auslenk/damp;                       // Auslenkung des Pendels dämpfen (immer kleiner werden lassen)
  omega=sqrt((gravity/len));
  time=millis();
  theta=(PI*auslenk)*sin(omega*time/mass);
  x=len*sin(theta);                             // x-Koordinate auf Kreisbogen berechnen
  y=len*cos(theta);                             // y-Koordinate auf Kreisbogen berechnen
  line(xOrigin, yOrigin, x+xOrigin, y+yOrigin); // Pendelschnur zeichnen
  ellipse(x+xOrigin, y+yOrigin, 20, 20);        // Pendelgewicht zeichnen
  ellipse(xOrigin, yOrigin, 5, 5);              // Urpsrung zeichnen
  line(0,50,width, 50);
}
    

Marija Milosavljevic

Kinga Hügel

Christina Klaus


Abschlussprojekt

Aufgabenstellung
Entwickle ein "visuelles Instrument", bei dem visuelle Elemente in Klang übersetzt werden oder Klang in visuelle Formen und Farben. Es kann Zufallsprozesse beinhalten, autonom nach den Regeln funktionieren, die bei seiner Erstellung gegeben wurden, oder durch Interaktion angeregt werden. Die audiovisuellen Ereignisse können auch gänzlich aus dem Code entstehen. Auch alles zusammen ist möglich. Welche Verbindungen von auditivem und visuellem Material entstehen? Achte darauf, dass das Instrument von vorneherein so konzipiert wird, dass es auf dem bisherigen Kenntnisstand realisierbar ist.

Ablauf:
Konzept bis zum 22.12.2016 per EMail senden.
Feedback per Mail in KW 52
Einheit am 13.01. 2017: Projektbesprechung anhand des Prototyps
Einheit am 20.01. 2017: Abschlusspräsentation

Beispiele:
OscilloScoop (Lukas Girling, Scott Snibbe, Graham McDermott)
Test Pattern (enhanced version) (Ryoji Ikeda , 2011)
What Is Life? (Simon Katan, 2012)
Cube with Magic Ribbons (Simon Katan, 2012)
Cycles 720 (Craig Ritchie Allan, 2013)
Soundloom (Craig Ritchie Allan, 2014)
Collision music (Craig Ritchie Allan, 2011)
Reduction Reflection( Sound Visuals, Rodrigo Carvalho [VISIOPHONE], 2016)

Christina Klaus

Lisa Kuka ›Snapping Lines‹

›Bei Snapping Lines + Sound handelt es sich um ein Programm das ein Netzwerk aus Punkten kreiert. Dabei wird bei Mausdruck ein weißer Punkt auf schwarzem Untergrund erstellt und mit allen Punkten innerhalb eines bestimmten Radius verbunden. Die gefundenen Punkten besitzen alle eine bestimmte Frequenz, die durch einen Dreiecksgenerator erzeugt wird. Die gefundenen Frequenzen werden der Reihe nach abgespielt. Bei Betätigung der R-Taste für Record startet eine Aufnahme des Programms, welche bei Betätigung der E-Taste für End abgebrochen wird. Durch Drücken der X-Taste kann das Programm beendet werden. Weiters gibt es eine Android-Version. Da diese jedoch die Soundlibrary nicht unterstützen wurde vorerst auf die Soundebene der App verzichtet.‹



int radius = 5;
int x;
int y;
boolean first = true;
int searchRadius = 200;

//Point array for all points
ArrayList pList = new ArrayList();
int i = 0;

//recording
boolean rec = false;

void setup() {
  background(0);
  fullScreen();
}

void draw() {
  if(rec){
    saveFrame();
  }
}

void mousePressed() {
  fill(255);
  //draw new point
  ellipse(mouseX, mouseY, radius, radius);
  
  //draw line from last point to the new one
  //but if it is the first point skip the line drawing
  stroke(255);
  if (!first) line(x, y, mouseX, mouseY);
  
  //save the new point in the x and y coordinates
  x = mouseX;
  y = mouseY;
  
  TriOsc trio = new TriOsc(this);
  
  //save Points in an arrayList
  Point p1 = new Point(x, y);
  p1.setAmp(map(mouseX, 0, width, 0, 1));
  p1.setFreq(mouseY);
  pList.add(p1);
  startTriO1after1(p1, trio);
  
  

  //run through the array and draw a new line from an point within an certain range
  for (Point pt : pList) {  
    if(   pt.x <= mouseX+searchRadius 
       && pt.y <= mouseY+searchRadius
       && pt.x >= mouseX-searchRadius 
       && pt.y >= mouseY-searchRadius ) {
                                         line(pt.x, pt.y, mouseX, mouseY);                                     
                                         startTriO1after1(pt, trio);
                                       }
  }  
  first = false;
}

void startTriO1after1(Point p, TriOsc trio){
    trio.amp(p.amp);
    trio.freq(p.freq);
    trio.play();
    delay(50);
    trio.stop();   
}


void keyPressed(){
   if(key == 's'){
      rec = true;
   }
   if(key == 'e'){
      rec = false;
   }
   
   if(key == 'x'){
      exit();
   }
}
import processing.sound.*;
class Point{
  int x;
  int y;
  
  float amp;
  int freq;
  
  Point(int x, int y){
    this.x = x;
    this.y = y;
  }
  
  void setAmp(float amp){
    this.amp = amp;
  }
  
  void setFreq(int freq){
    this.freq = freq;
  }
  
  int getFreq(){
    return freq;
  }
}

Markus Kager ›Sound geometrische Form schwarz‹

Marija Milosavljevic ›(IN)AUDIBILITY‹

Idea for implementation:
To write the program in Processing which will show the piece of textile. Observer will be able to "tauch it" by moving the mause, or just mouse-click. By deforming of textile surface, physical properties of the material (weight, hardness, tickness ... ) will be transformed in physical properties of the sound (loudness, height, harmonic composition ...) . So, programmed textile should be conected with the generator of the sound by the function.