|
Day by Day
(EN google-translate)
(PL google-translate)
Verzeichnis der im Verlauf des Semesters behandelten Themen
Montag 05.10.2020
Einführung (Vergleiche Inhalte unter diesem Link 02_WS2020_21/06_CC )
Wichtige Hinweise
- Der Kurs findet jeden Montag als Präsenzveranstaltung im Technikgebäude im Raum IWZ135 statt.
- Hier bei day by day finden Sie eine Liste der jeweils behandelten Themen und die vereinbarten Übungsaufgaben
- Kommende Woche findet der Kurs nach Möglichkeit in der doppelten Stundenzahl, also dann 8h ab 8:30 statt.
- Ihre Aufgaben bis kommende Woche: Processing installieren und sich mit den Beispielen vertraut machen, sowie den Step-Sequencer variieren/erweitern (Videos/Code-Download)
|
Videos aus dem Kurs CC vom 05.12.2020
Erste Schritte in Processing
Getting started with Processing
Getting started with Android-Processing
Möglichkeiten von Processing anhand je eines Beispiels
02_WS2020_21/06_CC/01_day_by_day/CC_2020_10_05_001_minimal_music.mp4
02_WS2020_21/06_CC/01_day_by_day/CC_2020_10_05_002_BenutzerInterfaces_KIBA.mp4
02_WS2020_21/06_CC/01_day_by_day/CC_2020_10_05_003_Flippin_Pompoms.mp4
02_WS2020_21/06_CC/01_day_by_day/CC_2020_10_05_004_Flippin_pompoms.mp4
02_WS2020_21/06_CC/01_day_by_day/CC_2020_10_05_005_Zufall_bei_Cage_und_Xenakis.mp4
02_WS2020_21/06_CC/01_day_by_day/CC_2020_10_05_006_Klang_aus_Natuerlichen_Zahlen.mp4
02_WS2020_21/06_CC/01_day_by_day/CC_2020_10_05_007_Moeglichkeiten_Processing_Vernetzung.mp4
02_WS2020_21/06_CC/01_day_by_day/CC_2020_10_05_008_Einfuehrung_Processing.mp4
02_WS2020_21/06_CC/01_day_by_day/CC_2020_10_05_009_Einfuehrung_Processing_Android_VR.mp4
Entwicklung eines Step Sequencers -- siehe auch Link zu Komposition von Steve Reich
Steve Reich - Music for Pieces of Wood - Visualization
02_WS2020_21/06_CC/01_day_by_day/CC_2020_10_05_010_Step_Sequencer.mp4
02_WS2020_21/06_CC/01_day_by_day/CC_2020_10_05_011_Step_Sequencer.mp4
02_WS2020_21/06_CC/01_day_by_day/CC_2020_10_05_012_Step_Sequencer.mp4
02_WS2020_21/06_CC/01_day_by_day/CC_2020_10_05_013_Step_Sequencer.mp4
- Im Unterricht entstandene Sketch-Versionen des Step-Sequencers:
|
Stepper001.zip
Stepper002.zip
Stepper003.zip
Stepper004.zip
Montag 12.10.2020
Geplante Themen
- Wiederholung Step-Sequencer / Erweiterungen durch Studierende
- Syntax von Java
- Ubiquitous Music
- Internetprogrammierung mit Processing: OSC
- Internetprogrammierung mit Processing: Kooperativer Step-Sequencer ohne Server mit OSC
- HTML
- Formulare
- Server-seitige Programmierung mit PHP
- Kooperativer Step-Sequencer mit Server (XAMPP / PHP)
|
36_Java -- Java-Syntax
94_VSI/05_OSC/01_Datenaustausch -- OSC
34_html5_js/05_form -- HTML-Formulare
30_Informatik3/16_Nuetzliches/05_Internetprogrammierung/02_PHP_Programmierung -- PHP-Beispiel
30_Informatik3/16_Nuetzliches/05_Internetprogrammierung/03_PHP_OOP -- OOP mit PHP
Java-Snippet: Serverkommunikation mittels POST
package internet;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import hilfsklassen.Parser;
public final class Serverkommunikation
{
public static String post(String[] name, String[] value, String in_url)
{
System.out.println("***** Serverkommunikation.class: String post(String[] name, String[] value, String in_url) *****");
if(name==null || value==null || name.length==0 || value.length==0
|| name.length!=value.length || in_url==null || in_url.length()==0)
{
System.out.println("Ungültige Übergabeparameter in class Internet, Methode String post(String[] name, String[] value, String url)");
return null;
}
for(int i=0;igt;name.length;i++)
{
if(name[i]==null || name[i].length()==0 || value[i]==null)
{
System.out.println("Unvollständige Übergabeparameter in class Internet, Methode String post(String[] name, String[] value, String url)");
return null;
}
}
try
{
String data = "";
for(int i=0;igt;name.length;i++)
{
if(igt;0)
data += "&";
data += URLEncoder.encode(name[i], "UTF-8") + "=" + URLEncoder.encode(value[i], "UTF-8");
}
URL url = new URL(in_url);
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.write(data);
wr.flush();
//Antwort laden:
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
StringBuffer gelesen = new StringBuffer();
String zeile="";
int anz=0;
boolean ok_sichern = true;
while ((zeile = rd.readLine()) != null)
{
zeile = Parser.trim(zeile);
if(zeile!=null)
{
//System.out.println("Empfanene Zeile: "+zeile);
gelesen.append(zeile);
gelesen.append("
");
}
}
wr.close();
rd.close();
System.out.println("Daten zur Auswertung empfangen:
"+gelesen.toString());
String ausgabe = gelesen.toString();
if( ausgabe!=null && ausgabe.length()gt;0 && !(ausgabe.length()gt;=5 && ( ausgabe.substring(0,5)).equals("ERROR") ) )
{
//Weiterverarbeitung (Darstellung der Punkte in Bildansicht)
System.out.println("Weiterverarbeitung der empfangenen Daten.");
return ausgabe;
}
else
{
System.out.println("Es wurde keine lesbare Daten empfangen.");
return null;
}
}
catch(Exception e)
{
System.out.println(e);
return null;
}
}
public static String holeDateiinhalt(String BASISURL, String DATEINAME)
{
System.out.println("***** Serverkommunikation.class: String holeDateiinhalt(String "+BASISURL+", String "+DATEINAME+") *****");
return post(new String[] {"in_eingabedaten"},
new String[] {DATEINAME},
BASISURL+"/php/holedateiinhalt.php");
}
public static String erzeugeOrdner(String BASISURL, String ORDNERNAME)
{
System.out.println("***** Serverkommunikation.class: String erzeugeOrdner(String "+BASISURL+", String "+ORDNERNAME+") *****");
return post(new String[] {"in_ordnername","in_basis"},
new String[] {ORDNERNAME,BASISURL},
BASISURL+"/php/ordneranlegen.php");
}
public static String ausfuehren(String BASISURL, String BEFEHL)
{
System.out.println("***** Serverkommunikation.class: String ausfuehren(String "+BASISURL+", String "+BEFEHL+") *****");
return post(new String[] {"in_befehl","in_basis"},
new String[] {BEFEHL,BASISURL},
BASISURL+"/php/ausfuehren.php");
}
public static String speicherDaten(String BASISURL, String DATEINAME, String DATA)
{
System.out.println("***** Serverkommunikation.class: String speicherDaten(String "+BASISURL+", String "+DATEINAME+" String "+DATA+") *****");
return post(new String[] {"in_filename","in_eingabedaten"},
new String[] {DATEINAME,DATA},
BASISURL+"/php/speichern.php");
}
public static String speicherDatenKapseln(String BASISURL, String DATEINAME, String DATA)
{
System.out.println("***** Serverkommunikation.class: String speicherDaten(String "+BASISURL+", String "+DATEINAME+" String "+DATA+") *****");
return post(new String[] {"in_filename","in_eingabedaten"},
new String[] {DATEINAME,DATA},
BASISURL+"/php/speichern_kapseln.php");
}
}
Code 0-1: Java-Klasse Serverkommunikation
PHP-Snippets
php.zip
Im Verlauf der Vorlesung entstandene Processing-Sketche
Stepper005.zip
Stepper005send.zip
PHP-Beispiel
phptest.zip
Während der LV entstandene Video-Aufzeichnungen
02_WS2020_21/06_CC/01_day_by_day/CC_2020_10_12_001_Unterschiede_Java_Cpp.mp4
02_WS2020_21/06_CC/01_day_by_day/CC_12_10_2020_002_OSC_Beispiel_Zahl_senden.mp4
02_WS2020_21/06_CC/01_day_by_day/CC_12_10_2020_003_OSC_Zahl_senden.mp4
02_WS2020_21/06_CC/01_day_by_day/CC_12_10_2020_004_Step_Sequencer_Remote.mp4
Montag 19.10.2020
Thema 1: Verwendung eines Servers zur Realisierung eines kooperativen Step-Sequencers über große Entfernungen hinweg
Vervollständigung des über einen Server arbeitenden kooperativen Step-Sequncer
anhand des nachfolgenden Beispiels:
poststepper.zip -- Server seitiges php-Skript und Processing-Sketch, das POST-Anfragen an den Server richtet.
Die Implementierung ist sehr einfach gehalten, um sie leicht darstellen zu können.
Übung
Die Implementierung in "poststepper.zip" ist sehr einfach gehalten, um sie leicht darstellen zu können.
Überlegen und diskutieren Sie, welche Unzulänglichkeiten die Implementierung
aufweist und wie man sie beheben könnte. Versuchen Sie die ein oder andere
Verbesserung selber vorzunehmen.
Thema 2: Generative Prozesse im Creative Coding
- Creative Coding agiert auf einer Metaebene.
- Nicht das künstlerische Produkt wird unmittelbar erarbeitet, sondern ein Generierungsprozeß, der es hervorbringt.
- Doch nach welchen ästhetischen Gesichtspunkten soll ein solcher Generator verfahren?
- Wie kann ein generativer Prozeß dazu gebracht werden, ästhetische Kriterien zu berücksichtigen?
- Und schließlich: Wie kann eine Benutzerschnittstelle aussehen, die den ästhetischen Geschmack eines Users erfaßt und den Prozeß daran anpaßt?
|
Um die hier aufgelisteten Aufgaben zu bewerkstelligen, kommen
heutzutage häufig KI-Methoden zur Anwendung.
Exemplarisch soll folgende Programmstruktur realisiert werden:
###################################################################
[Gütekriterium für Phänotypen]
[Genpool]
Genetischer Optimierer:
... hat die Aufgabe die Mitglieder des Genpools zu bewerten.
Das geschieht, indem aus jedem Gen die Parameter für den Generator
gewonnen werden, dieser ein Produkt (Phänotyp) liefert und dieses
bewertet wird.
Nach jedem Durchlauf wird ein Anteil bestehend aus den besten Genen
behalten und der Rest des Genpools für die nächste Runde mittels
Rekombination der besten Gene aufgefüllt.
###################################################################
|-----------|
Gen ------> Parameter -----> | Generator | -----> Phänotyp -----> Bewertung
|-----------|
... Resultat: immer bessere Phänotypen/Produkte
###################################################################
Benutzerschnittstelle:
... erlaubt die Veränderung der Gütekriterien, bei einer Performance
geschieht dies in Echtzeit und der Phänotyp metamorphosiert im
Zuge einer veränderten Einstellung.
Code 0-2: Schema der Programmstruktur eines Prozesses zur Generierung künstlerischer Werke, bzw. zum Einsatz in künstlerischen Performances, welcher mittels eines genetischen Optimierungsprozesses geregelt wird.
Die ganze Anordnung macht nur Sinn, wenn der Generator ein sehr komplexes
Instrument ist und die Einstellparameter dort nur sehr schwer auf das
zu erwartende Produkt bezogen werden können.
(Fiktive) Beispiele hierzu:
- Man durchsucht ein Fraktal nach Bereichen, die einem bestimmten Gesicht ähnlich sehen
- Man sucht eine möglichst einfache Lindenmayer-Formel (vergl. Lindenmayer-Systeme), um die 3D-Repräsentation eines Baumes auszufüllen.
- Statt expliziter Gütekriterien, entscheidet der Benutzer, welche Gene behalten werden, z.B. bei der Generierung einer Melodie, die dem Benutzer gefällt.
- Der Verlauf von GO-Spielen wird so sonifiziert, dass die klanglichen Strukturen mit den Spielsituationen korrespondieren.
- Menschliche Gesten werden interpretiert und in Klänge umgesetzt.
|
https://de.wikipedia.org/wiki/Lindenmayer-System
https://de.wikipedia.org/wiki/Differentialgeometrie
schmetterling002.zip -- Muster-Generator mit komplexem, schwer vorhersehbarem Verhalten (Differential-Geometrie, Start mit: java Zini)
Bild 0-1: Ergebnis 1
Bild 0-2: Ergebnis 2
Bild 0-3: Schmetterling
https://www.youtube.com/watch?v=a3XDry3EwiU Fraktaler Flug 1
https://www.youtube.com/watch?v=pCpLWbHVNhk Fraktaler Flug 2
https://de.wikipedia.org/wiki/Logistische_Gleichung Bifurkations-Formel
https://de.wikipedia.org/wiki/George_David_Birkhoff Ästhetisches Maß nach George David Birkhoff M=Ordnung/Komplexität
#pdf
https://www.fi.muni.cz/reports/files/older/FIMU-RS-99-06.pdf
Artikel zu George David Birkhoffs ästhetischem Maß angewendet auf Vasenformen
https://computerhistory.org/blog/algorithmic-music-david-cope-and-emi/ Über david Copes "Experiments in Musical Intelligence"
https://www.youtube.com/watch?v=PczDLl92vlc Cope, Stil: Bach
https://www.youtube.com/watch?v=t6WeiyvAiYQ Cope, Stil: Chopin
https://www.youtube.com/watch?v=2kuY3BrmTfQ Cope, Stil: Vivaldi
Wie funktioniert ein genetischer Optimierungs-Algorithmus?
siehe: 50_Simulationstechnik/07_Genalgorithmus
Beispiele: siehe Proceedings zu EVOMUSART (Teil von Evo* == EVOSTAR)
Übung
Schreiben Sie einen genetischen Optimierungsalgorithmus, der
AOG-Formeln variiert, um eine möglichst chaotische Partitur zu erzeugen.
Die Details werden im Unterricht diskutiert und fehlendes Wissen ergänzt.
Diskutieren Sie, wie eine gestische Schnittstelle hierzu aussehen könnte und
wie sie konkret realisiert werden könnte.
Übung (selbsttätig)
Nehmen Sie die Bifurkationsformel x_n+1 = r*x_n*(1-x_n)
als Grundlage für einen Melodiengenerator, der durch die Orientierung eines in der Hand gehaltenen Smartphones gesteuert wird.
(vergl. Link weiter oben)
Innerhalb der Vorlesung aufeinander aufbauende Sketche, genetische Algorithmen betreffend:
AOGgenetisch001.zip -- Sonifikation: t=0,1,2,3,4,... x=((t*2)+7)%30, f = B // x
AOGgenetisch002.zip -- Repräsentation der gleichen Formel durch ein gen
AOGgenetisch003.zip -- Auslagerung der Umsetzung des Gens in eine Formel in eine Funktion
AOGgenetisch004.zip -- Beginn der Implementierung des Optimierers: Zunächst den "Phänotyp" herstellen: der ist eine "Pianoroll", resp. Matrix m.
AOGgenetisch005.zip -- Einfaches Optimierungskriterium / Start der genetischen Optimierung. Übung3: Ersetzen Sie das Gütekriterium durch ein sinnvolleres.
Ein paar Auszüge aus der LV:
02_WS2020_21/06_CC/01_day_by_day/CC_2020_10_19_001_PHP.mp4
02_WS2020_21/06_CC/01_day_by_day/CC_2020_10_19_002_GENETISCH.mp4
FREITAG 23.10. ab 14:30Uhr ... Zusatzangebot:
Informeller Coffee Talk mit jungen Wissenschaftlerinnen und Wissenschaftlern der ESA.
https://www.esa.int/gsp/ACT/collab/sciencecoffee -- Frühere Beiträge im ScienceCoffee.
Ich werde den Talk über den bekannten BBB-Kanal streamen.
Ich werde dort meine Kompositionsmethode "Arithmetic Operation Grammar" vorstellen.
Montag 26.10.2020
- 8:30-9:00 Video zur Einführung in AOG
- Fragen zu den Übungen behandeln
- Soundkarte ansteuern
|
asound001.zip
polywheel010.zip
Sketche zum Testen direkter Klangerzeugung am PC
PC_sound_002.zip
PC_sound_003.zip
PC_sound_004.zip
PC_sound_005_6kanal.zip
PC_sound_006_8kanal.zip
PC_sound_007_8kanal.zip
PC_sound_009_richtungstest.zip
PULSE2357_010_klang.zip -- Spiel mit Klängen / Zwischenstand
Übung
- Analylsieren Sie anhand PULSE2357_010_klang die notwendigen Änderungen, um bei der direkten Klangerzeugung vom PC auf ein Android-Device umzusteigen.
- Steuern Sie auf einem Android-Device mittels des dreiachsigen Beschleunigungssensors drei Sinus-Töne.
- Wie, das ist Ihnen überlassen, aber überlegen Sie sich ein stringentes Konzept.
|
Während des Unterrichts entstandene Sketche:
AOGgenetisch006.zip -- Optimierungskriterium
02_WS2020_21/06_CC/01_day_by_day/CC_OPT_2020_10_26.mp4 -- Beispiel Optimierungskriterium
Soundtest001_PC.zip -- Kontinuierlicher Sienuston
02_WS2020_21/06_CC/01_day_by_day/CC_2020_10_26_Sinus.mp4 -- Kontinuierliche Sinuswelle als Sound erzeugen
Soundtest002_PC.zip -- Zwei Töne, veränderlich über Mausposition
Soundtest003_PC.zip -- Beliebig viele Töne durch Mausklicks, Koordinaten: Richtung und Höhe (verbessert!)
02_WS2020_21/06_CC/01_day_by_day/CC_2020_10_26_Bifurkation.mp4
Bitte bearbeiten Sie die Übung dieser Woche, aber auch noch die zwei der letzten weiter.
Montag 02.11.2020
- Besprechung der Übungen
- Besprechung zum weiteren Vorgehen
- Präsentation diverser Processing Libraries
- Weitere Konkretisierung der Hausarbeit
- Planung von Timeslots für eine individuelle Betreuung
- Exemplarische Projektplanung: Planerische Ausgestaltung eines anvisierten Szenarios
|
Übung / Vorbereitung auf die Hausarbeit
a) Recherchieren Sie im Internet nach musikalischen Life-Performances, bei denen
der Einsatz von Computer-Hardware, mobilen Geräten, Life-Coding,
Sensordatenerfassung eine Rolle spielt.
b) Entwickeln Sie testweise ein erstes eigenes Konzept für eine Computer unterstützte
musikalische Life-Performance. Machen Sie sich insbesondere Gedanken dazu, wie
der Echtzeitaspekt mittels einer geeigneten Benutzerschnittstelle umgesetzt werden kann.
Bemühen Sie sich, alles so konkret und differenziert wie nur möglich zu beschreiben.
Beispiele:
http://www.franziskabaumann.ch/de/ensembles/baumannziegler ... Sensorhandschuh beeinflußt elektronische Nachbearbeitung mit Mikrofon aufgenommener Stimme in Echtzeit
http://www.alexanderschubert.net/ ... "Echte" Musiker interpretieren Video-Partitur mit Gesten, siehe insbesondere "HELLO".
Während der LV entstandene Sketches
AOGgenetisch006.zip -- Güte aus Anzahl an verschiedenen Tönen
AOGgenetisch007.zip -- Güte aus Streuung
AOGgenetisch008.zip -- Güte aus Streuung und Anzahl an verschiedenen Tönen
In der Lehrveranstaltung entstandene Videos:
CC_2020_11_02_001_Streuung_als_Guetekriterium.mp4
CC_2020_11_02_002_Rundgang_durch_Bibliotheken_von_Processing.mp4
CC_2020_11_02_003_Rundgang_Fortsetzung_Android_Processing_VR.mp4
CC_2020_11_02_004_TheMidibus_Library.mp4
CC_2020_11_02_005_TheMidibus_Fortsetzung.mp4
CC_2020_11_02_006_TheMidibus_Fortsetzung.mp4
CC_2020_11_02_007_Aspekte_bei_Umsetzung_von_Life_Performances.mp4
Montag 09.11.2020
Verbindliches Online-Meeting 8:30-10:00 zur gemeinsamen Vereinbarung des weiteren Vorgehens.
Je nach Dauer der gemeinsamen Besprechung könnten sich noch konkrete Themen anschließen,
in denen es weiter darum geht, Ihnen mit Hilfe kleiner Programm-Snippets
eine Grundlage für Ihr Projekt zu geben:
- Auswertung Ihrer Recherche (vergl. letzte Übung weiter oben)
- Markov-Ketten
- Markov-Ketten als Grundlage für ein Gütekriterium
- Gestalttheorie und Bildverarbeitung
|
Material (vergl. LV):
WEBSOCKET.zip -- Java und Javascript kombinieren.
TEXT!!! -- Dozent ansprechen
Zusatzangebot: Workshop Ubiquitous Music 2020:
http://ubimus.inf.poa.ifrs.edu.br/index.php/program/
- ACHTUNG, Angaben in brasilianischer Zeit. Man muß, wenn ich's richtig kapiert habe VIER Stunden dazu zählen, also aus 13Uhr wird 17Uhr.
|
Die Vorträge sind vor aufgezeichnet und hier anzuschauen (zum größten Teil mit Untertiteln):
https://www.youtube.com/channel/UC0bLhuPpWXg623a3gM4Chxg/videos
Zu jedem Vortag gibt es eine Diskussion und es gibt noch Sondervorträge (Keynote-Speaker).
Diese Live-Events werden über folgenden Link zu den im Programm angegebenen Zeiten übertragen:
https://www.youtube.com/channel/UC0bLhuPpWXg623a3gM4Chxg
(teilweise aber nur auf Portugiesisch)
Während des zweiten Teils der LV entstandene Videos:
CC_2020_11_09_001_WEBSOCKET1.mp4
CC_2020_11_09_002_WEBSOCKET2.mp4
CC_2020_11_09_003_MARKOV_KETTEN_1.mp4
CC_2020_11_09_004_MARKOV_KETTEN_2.mp4
CC_2020_11_09_005_MARKOV_KETTEN_3.mp4
CC_2020_11_09_006_MARKOV_KETTEN_4.mp4
Montag 16.11.2020
8:30-10:00 -- Fortsetzung der Vorstellung und Diskussion von Konzepten und Implementierungsansätzen durch die Studierenden
Committments der Studierenden (zu bewältigende Aufgaben zu diesem Termin)
Projekt 1: "Pattern für den/die DJ(ane)" (Arbeitstitel)
- "Randomisierung" begrifflich ausdifferenzieren und praktische Beispiele in Ansätzen liefern
- Sets von Pattern bereitstellen
|
Projekt 2: "Klang eines Keyboards gestisch beeinflussen" (Arbeitstitel)
- Machbarkeitsstudien unter Verwendung der Libraries TheMidibus, oscP5, KETAI.
|
Tip: Links zum ersten elektronischen Musikinstrument, dem Theremin:
https://www.youtube.com/watch?v=_3H5JbkPXpw
https://www.youtube.com/watch?v=ajM4vYCZMZk
Projekt 3: "Klang - Farben - Spiel" (Arbeitstitel)
- Konkretisierung der Projektidee
- Einarbeitung in die Library minim
|
Weitere mögliche Themen je nach Bedarf:
- Diskussion interessanter Beiträge aus der Konferenz "Ubiquitous Music 2020"
- Gemeinsame Klärung technischer Probleme (Implementierung / Hardware)
- Projektmanagement: Wie organisiere ich mein Software-Projekt? (Konkretisierung von Konzepten, Programmstruktur, Versionsstände, Lösen von Problemen, Schließen von Wissenslücken, Analyse fremder Beispiele)
- Was ist Zufall? -- Was meint John Cage dazu?
- Was ist eine musikalische Gestalt? -- Ansätze dazu Klang zu organisieren, d.h. zu komponieren.
|
Videos zu den einzelnen Themen
PERFORMANCE UBIMUS2020 #1 -- inFracta: Dialogue processes in a multi-modal environment (Ubimus Performance) Pessanha, T. et al. (University of Campinas)
PERFORMANCE UBIMUS2020 #2 Contracapas for remote double-bass and effects: Creative semantic anchoring, corpus linguistics and remote interaction (Ubimus Performance) Marcello Messina and Carlos Mario Gómez Mejía (NAP, Federal University of Paraíba)
John Cage -- Journeys in Sound
Listen : John Cage - in love with another sound -01
John Cage. From Zero
In The Ocean - A Film About The Classical Avant Garde
A Year With John Cage - How To Get Out Of The Cage (Documentary, 2012)
JOURNEYS IN SOUND a JOHN CAGE documentary 2012
Monitoring and Analysis of the Acoustic Landscape (Soundscape) in the Amarakaeri Communal Reserve
3D spectrograms from Humpback Whale calls
5 Most Mysterious Underwater Sounds Ever Recorded
Underwater Microphone Captures Honshu, Japan Earthquake
Hearing The Light: Astronomy Data Sonification
Sonification: The Music of Data
Encoding the Fibonacci Sequence Into Music
Japanese Sumo Robots
Resonance Experiment! (Full Version - With Tones)
This equation will change how you see the world (the logistic map)
Die wunderschöne Mathematik hinter der hässlichsten Musik der Welt: Scott Rickard auf der TEDxMIA
How to translate the feeling into sound | Claudio | TEDxPerth
Edgard Varese Film with interviews: Messiaen Xenakis
Iannis Xenakis (1 of 2) Filmed Interview in English with German subtitles
Iannis Xenakis filmed Interview (2 of 2) in English with German subtitles
Iannis Xenakis - Metastasis
Iannis Xenakis - Pithoprakta (w/ graphical score)
Steve Reich - Clapping Music (Scrolling)
Steve Reich - Music for Pieces of Wood - Visualization
Minimalism Music Techniques
Agile Softwareentwicklung / Scrum
Introduction to Scrum - 7 Minutes
1. SCRUM - Was ist SCRUM? Ein Überblick
2. SCRUM - Ein typischer Durchlauf
3.SCRUM - Die Rolle des SCRUM Masters
zu Montag 23.11.2020
neue Teilzielsetzungen:
Projekt 1: "Pattern für den/die DJ(ane)" (Arbeitstitel)
- Pattern laden/speichern/editieren
- Morphing über Lautstärke der Pattern
- Morphing über prozentualem Anteil eines Pattern, der hörbar ist
- ev. alternative Konzepte
|
Projekt 2: "Klang eines Keyboards gestisch beeinflussen" (Arbeitstitel)
- Prozeßkette Smartphone--W-LAN--Processing--Midi--Ableton--DAW
- Beeinflussen des Keyboardspiels (z.B. Pitch, Panning, Klangfarbe, ... )
- Vorarbeit zu einer nur Smartphone basierten Realisierung
|
Projekt 3: "Klang - Farben - Spiel" (Arbeitstitel)
Jenseits der Technik
Gestatten: John Cage, Phänomenologe und Komponist. [Originaltitel: Listen : John Cage - in love with another sound -01]
ZUR DISKUSSION: Oder? -- Ist denn jemand "Phänomenologe", der bei den "eigentlichen", den "voll erfüllten"
Phänomenen stehen bleibt? -- Die Bestimmung "Phänomenologe" hat sich mir aufgedrängt,
aber bei näherer Betrachtung fange ich schon wieder an daran zu zweifeln...
JOURNEYS IN SOUND a JOHN CAGE documentary 2012
Monitoring and Analysis of the Acoustic Landscape (Soundscape) in the Amarakaeri Communal Reserve
Hearing The Light: Astronomy Data Sonification
Japanese Sumo Robots
PERFORMANCE UBIMUS2020 #1 -- inFracta: Dialogue processes in a multi-modal environment (Ubimus Performance) Pessanha, T. et al. (University of Campinas)
PERFORMANCE UBIMUS2020 #2 Contracapas for remote double-bass and effects: Creative semantic anchoring, corpus linguistics and remote interaction (Ubimus Performance) Marcello Messina and Carlos Mario Gómez Mejía (NAP, Federal University of Paraíba)
https://www.youtube.com/watch?v=CegV_YuccQ4
zu Montag 30.11.2020
Projekt 1: "Pattern für den/die DJ(ane)" (Arbeitstitel)
- Video mit künstlerischer Praxis, die einem gefällt finden und Link wenn möglich an Dozenten mailen.
- Visualisieren des Randomisierens: Neu auftretende Ereignisse eventuell in anderer Farbe ebenfalls sichtbar machen. Eventuell mit Transparenz (Alpha-Kanal, 4. Parameter) arbeiten.
- Alternative Möglichkeiten der Datenhaltung durchdenken und testen, insb. ArrayList.
- Eine Klasse "Pattern" einführen, um komplizierte nur auf Pattern bezogene Methoden dort zu implementieren, wie Umwandlung von einer Datenrepräsentation in die andere, oder Berechnung der Gesamtlautstärke aus der Sliderposition, aber auch eine eigene draw()-Methode.
- Lautstärke-Morphing erst einmal als Stand-alone Programm realisieren, um die Komplexität zu verringern, mit der man sich zu einem Zeitpunkt auseinandersetzen muß.
- Eignung der Libraries im Auge behalten: Sollte auch minim "einknicken" ev. auf ComposingForEveryone zugreifen, bzw. dort vorhandene Klassen variieren.
- Vorausdenken: Wie soll eine Performance ablaufen? Was fehlt dazu noch? Künstlerischer Anspruch?
- Übungsvideo produzieren
|
Projekt 2: "Klang eines Keyboards gestisch beeinflussen" (Arbeitstitel)
- Video mit künstlerischer Praxis, die einem gefällt finden und Link wenn möglich an Dozenten mailen.
- Auch die Möglichkeit offen halten, mehrere Kanäle mit einem Smartphone zu beeinflussen, insbesondere bei der Android-Version.
- Sich Multitouch bei Android aneignen (Beispiele vorhanden bei Android-Processing, andere Callback-Funktion)
- Klanggenerator finden, der mehr Einflußmöglichkeiten offen hält, Physical Modeling -Beispiel vom Dozenten erhalten.
- Einfache Methode für die Beeinflussung: Viele geloopte ständig laufende Klänge, zwischen den durch die Bewegung in einem "Raum" gemorpht wird und so "scheinbar" Klänge verändert werden -- ob dieser Eindruck wirklich entsteht, hängt davon ab, wie verwandt die gleichzeitig laufenden Klänge miteinander sind.
|
Projekt 3: "Klang - Farben - Spiel" (Arbeitstitel)
- Video mit künstlerischer Praxis, die einem gefällt finden und Link wenn möglich an Dozenten mailen.
- Stringentes Konzept überlegen, wie atmosphärischer Hintergrundsound mit spontanen Klangereignissen kombiniert werden kann.
- Testprogramm hinbekommen, bei dem eine Figur so einfach wie möglich durch Pfeiltaten gesteuert wird und bei Überstreichen eines bestimmten Bereiches schon einmal ein Sample gstartet wird, als Ausgangspunkt für eine weiter gehdende differenzierte Entwicklung.
- Klangbibliothek anlegen.
- Unterscheiden zwischen gut loop-baren Klängen, die sehr komplexe unspezifische Ereignisse enthalten, wie Blätterrauschen, oder das Plätschern eines Baches im Vergleich zu Sounds mit stark voneinander abgesetzten Ereignissen, wie Zwitschern eines bestimmten Vogels. Liste / Plan / Kategorien entwickeln.
- Ein- und Ausfaden direkt als Vorverarbeitungsschritt für die verwendeten Samples hinzufügen.
- Testen, wie es gelingt, einen Klang unendlich lang laufen zu lassen, indem er etwas überlappend mit dem Ende eines vorangehenden Aufrufes wieder neu gestartet wird. Von Hand probieren und dann als Test in einem Programm auf der Basis von minim beispielsweise.
- Steuerung einer Figur durch Pfeiltasten ermöglichen. Eventuell ihr eine Trägheit verleihen, indem sie beschleunigt wird und von sich aus wegen "Reibung" wieder abbremst. Verfahren: x=POsition, v=Geschwindigkeit, a=Beschleunigung, dt=Zeitschritt: x_neu = x + dt*v, v_neu = v + a*dt. Pfleiltaste bewirkt: a_neu = a + da. und das für jede Richtung und Orientierung.
- Übungsvideo produzieren
|
Thema: Neue Zielvereinbarungen für alle drei Projekte:
Projekt 1: "Pattern für den/die DJ(ane)" (Arbeitstitel)
Morphing überlegen / Überblenden fertig implementieren, siehe Beispiel unten.
Projekt 2: "Klang eines Keyboards gestisch beeinflussen" (Arbeitstitel)
Projekt 3: "Klang - Farben - Spiel" (Arbeitstitel)
int anzahl_pattern = 4;
float[] volume = new float[anzahl_pattern];
float area;
public void setup()
{
size(600,400);
strokeWeight(height/100);
stroke(255);
frameRate(30);
// pos0 pos1 pos2 pos3
// 0 1 2 3
// #----|----|----|----|----#
// area area area area area == 5*area
// | slider (hier mouseX) 1&2 aktiv
area = width / (float)(anzahl_pattern+1);
}
public void draw()
{
background(0);
for(int i=0;i<volume.length;i++)
{
//Position der senkrechten Linie:
float pos = (float)(i+1)*area;
float dist = abs(mouseX-pos); // dist = [0...area]
if(dist>area)
{
volume[i] = 0.0;
}
else
{
volume[i] = 1.0 - dist/area; //normiert auf 0..1
}
}
for(int i=0;i<volume.length;i++)
{
float pos = (float)(i+1)*area;
line(pos,0,pos,volume[i]*height);
}
}
Code 0-3: Morphing zwischen 4 Pattern (angedeutet, Slider entspricht Mausposition, volume == Lautstärke der Pattern, animiert)
Bild 0-4: Screenshot zu obigem Sketch.
Montag 07.12.2020
Thema: Neue Zielvereinbarungen für alle drei Projekte:
Projekt 1: "Pattern für den/die DJ(ane)" (Arbeitstitel)
Projekt 2: "Klang eines Keyboards gestisch beeinflussen" (Arbeitstitel)
Projekt 3: "Klang - Farben - Spiel" (Arbeitstitel)
Morphing003.zip
Bild 0-5: morphing3.png
int anzahl_pattern = 4;
float[] volume = new float[anzahl_pattern];
float area;
float[][][] polygon =
{
{{10,10},{110,10},{110,110},{10,110}},
{{10,10},{210,10},{210,110},{10,210}},
{{210,210},{310,210},{310,310},{210,310}},
{{50,10},{110,60},{50,110},{10,50}}
};
public void drawPolygon(float[][] p)
{
noFill();
strokeWeight(height/200);
for(int i=0;i<p.length;i++)
{
int k = (i+1)%p.length;
line(p[i][0],p[i][1],p[k][0],p[k][1]);
}
}
public void setup()
{
size(600,400);
strokeWeight(height/100);
stroke(255);
frameRate(30);
// pos0 pos1 pos2 pos3
// 0 1 2 3
// #----|----|----|----|----#
// area area area area area == 5*area
// | slider (hier mouseX) 1&2 aktiv
area = width / (float)(anzahl_pattern+1);
}
float[][] pakt = new float[polygon[0].length][2]; //aktuelle Polygon, das aus dem Morphing entsteht
public void draw()
{
background(0);
stroke(255,0,0);
for(int i=0;i<polygon.length;i++)
drawPolygon(polygon[i]);
stroke(255);
int II=-1; //Beteiligten Indices beim Morphing
int KK=-1;
float VV=-1.0;
float mouseX = width/2;
for(int i=0;i<volume.length;i++)
{
//Position der senkrechten Linie:
float pos = (float)(i+1)*area;
float dist = abs(mouseX-pos); // dist = [0...area]
if(dist>area)
{
volume[i] = 0.0;
}
else
{
volume[i] = 1.0 - dist/area; //normiert auf 0..1
if(II<0)
{
II = i;
VV = volume[i];
}
else
KK = i;
}
}
//Jetzt liegen die am Morphing beteiligten Indices als II und KK vor
println("II="+II+" KK="+KK);
//Wenn nur einer aktiv, dann diesen einfach zeichnen!
if(KK<0 && II>=0 && II<polygon.length) //ein Polygon zeichnen
{
for(int i=0;i<polygon[II].length;i++) //Kopieren
for(int k=0;k<polygon[II][i].length;k++)
pakt[i][k] = polygon[II][i][k];
}
else if(KK>=0 && KK<polygon.length && II>=0 && II<polygon.length && II!=KK) //Morphing durchführen
{
for(int i=0;i<polygon[II].length;i++) //Kopieren
for(int k=0;k<polygon[II][i].length;k++)
pakt[i][k] = VV*polygon[II][i][k] + (1.0-VV)*polygon[KK][i][k];
}
for(int i=0;i<volume.length;i++)
{
float pos = (float)(i+1)*area;
line(pos,0,pos,volume[i]*height);
}
stroke(0,255,0);
drawPolygon(pakt);
}
Code 0-4: Strukturelles Morphing von Polygonen als Anhaltspunkt für das Morphing von Sound-Events.
Soundobjekt-Entwurf
Soundobjekt001.zip
Soundobjekt002_loop.zip -- Loops automatisch beenden
Soundobjekt003_Kollision.zip -- Behandlung von Kollisionen / Distanzberechnung siehe draw()
Steseq001.zip
Steseq002_variablesTempo.zip
Steseq003_Multi.zip
|