<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>http://hyperdramatik.net/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Rodolfo.acostacastro</id>
	<title>hyperdramatik - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="http://hyperdramatik.net/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Rodolfo.acostacastro"/>
	<link rel="alternate" type="text/html" href="http://hyperdramatik.net/mediawiki/index.php/Spezial:Beitr%C3%A4ge/Rodolfo.acostacastro"/>
	<updated>2026-06-10T06:44:32Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.38.2</generator>
	<entry>
		<id>http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2818</id>
		<title>Random Acts of Vulnerability</title>
		<link rel="alternate" type="text/html" href="http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2818"/>
		<updated>2021-12-02T15:27:27Z</updated>

		<summary type="html">&lt;p&gt;Rodolfo.acostacastro: /* DOME 3 (mini-dom) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Random Acts of Vulnerability ist ein immersives Spiel für vier Spieler*innen in vier Dimensionen.  Durch Erkundung und Dokumentation der jeweils eigenen Dimension, formen die Spieler*innen anhand des Gesammelten und Erlebten die Erzählungen selbst.&lt;br /&gt;
Auf ein installatives Netz aus experimentellen Materialen, soften Schaltkreisen, meditativen Klangwelten, grotesken Interfaces und verzerrten Output-Signalen aufbauend, werden Fragen nach Isolation, Einsamkeit, immaterieller und haptischer Vernetzung und der Herstellung von Verhandlungsgrundlagen gestellt.&lt;br /&gt;
&lt;br /&gt;
Eine Arbeit von: Zoe Lohmann, Ella Estrella Tischa Raetzer, Rodolfo Acosta Castro, Lena Böckmann&lt;br /&gt;
&lt;br /&gt;
Video: https://www.youtube.com/watch?v=850KCMYEAow&amp;amp;t=7s&lt;br /&gt;
&lt;br /&gt;
https://live.staticflickr.com/65535/51681534884_545f161fd9.jpg&lt;br /&gt;
&lt;br /&gt;
= dokumentation_JAM &amp;lt;span style='font-size:50px;'&amp;gt;&amp;amp;#128206;&amp;lt;/span&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:doku_nextLevel.jpg| thumb |Die Frage ist: wie stellt man eine Dokumentation?]]&lt;br /&gt;
&lt;br /&gt;
* Bilddokumentation sammelt und einordnen &lt;br /&gt;
* künstlerisch/ästhetisch mit dem Material umgehen&lt;br /&gt;
* Dokumentieren auch Fehler, persönliche Ansprüche und Gespräche, Unerwartetes genauso wie&lt;br /&gt;
* Code-Snippets, Schaltpläne, Materialen, Skizzen&lt;br /&gt;
* usw.&lt;br /&gt;
* let's go! &amp;amp;#128293; &lt;br /&gt;
&lt;br /&gt;
PS --&amp;gt; [https://www.w3schools.com/charsets/ref_emoji.asp how to display Emojis: ]&lt;br /&gt;
&lt;br /&gt;
= DOME 1 = &lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
*Stretch-Jersey&lt;br /&gt;
*Polymorph&lt;br /&gt;
*Audiojacks&lt;br /&gt;
*Aux-Kabel&lt;br /&gt;
*Kunstblumen&lt;br /&gt;
*Röhrenfernsehe&lt;br /&gt;
etc...&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
*Processing-Codes&lt;br /&gt;
*Fingerhäkeln: https://www.youtube.com/watch?v=vfScF5EQ3sU&lt;br /&gt;
&lt;br /&gt;
== Sound == &lt;br /&gt;
 &lt;br /&gt;
*Klangbeispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= DOME 2 =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
Watte, Silikon, Kunstblumen, LED-Kerzen....&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
== Sound/Klang == &lt;br /&gt;
&lt;br /&gt;
Beispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= DOME 3 (mini-dom)  =&lt;br /&gt;
[http://hyperdramatik.net/mediawiki/index.php?title=How_to:_build_a_mini_Dome_Pod_from_Drinking_Straws Instructions to Mini-Dome]&lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
Kunstrasen, Number pad, Bürstenroboter, ...&lt;br /&gt;
&lt;br /&gt;
== Hacks == &lt;br /&gt;
&lt;br /&gt;
Einfache Arduino-to-Arduino Kommunikation mit Vactrol&lt;br /&gt;
&lt;br /&gt;
== Sound == &lt;br /&gt;
&lt;br /&gt;
Beispiele hochladen&lt;br /&gt;
&lt;br /&gt;
=arbeitsprozess=&lt;br /&gt;
&lt;br /&gt;
==1te Runde==&lt;br /&gt;
===Mini-Workshops===&lt;br /&gt;
====Ella Sound Workshop====&lt;br /&gt;
====Zoe Silicon Workshop====&lt;br /&gt;
===BAT===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==2te Runde==&lt;br /&gt;
===Proberaum HFS===&lt;br /&gt;
===NextLevel Festival===&lt;br /&gt;
&lt;br /&gt;
= relevant links =&lt;br /&gt;
&lt;br /&gt;
ESP with Arduino: http://hyperdramatik.net/mediawiki/index.php?title=ESP32_mit_Arduino&lt;br /&gt;
&lt;br /&gt;
MQTT: http://hyperdramatik.net/mediawiki/index.php?title=Hauptseite#MQTT&lt;br /&gt;
&lt;br /&gt;
DOMEs: http://hyperdramatik.net/mediawiki/index.php?title=Dome_Pod_KIT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= code examples from the project =&lt;br /&gt;
&lt;br /&gt;
== Arduino code for sounds in the fishing-dome ==&lt;br /&gt;
&lt;br /&gt;
// running on an ESP [[Spaghetti Monster]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
&lt;br /&gt;
byte analogPins[] = {&lt;br /&gt;
36, 39, 34, 35, 32, 33&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    pinMode(analogPins[i], INPUT);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    Serial.print(analogRead(analogPins[i]));&lt;br /&gt;
    Serial.print(&amp;quot;\t&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  delay(20);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the fishing-dome ==&lt;br /&gt;
 &lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the fishing-dome&lt;br /&gt;
 &lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import processing.serial.*;&lt;br /&gt;
import ddf.minim.*;&lt;br /&gt;
Serial myPort;    &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
//change these:&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
int ADCmax = 4095; &lt;br /&gt;
//int ADCmax = 1023;&lt;br /&gt;
float[] sensorThresholds = {1000, 1000, 1000, 1000, 1000, 1000};//new float[numOfSensors];&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
float[] sensorValues = new float[numOfSensors];&lt;br /&gt;
float[] previousSensorValues = new float[numOfSensors];&lt;br /&gt;
float xpos = 0;&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(600, 400);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  background(255);&lt;br /&gt;
&lt;br /&gt;
  println(Serial.list());&lt;br /&gt;
  String portName = Serial.list()[1];&lt;br /&gt;
  myPort = new Serial(this, &amp;quot;/dev/cu.SLAB_USBtoUART&amp;quot;, 9600);&lt;br /&gt;
  myPort.clear();&lt;br /&gt;
  myPort.bufferUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  sound0 = minim.loadSample( &amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound1 = minim.loadSample(&amp;quot;crazyfrogbardcore.wav&amp;quot;, 512);&lt;br /&gt;
  sound2 = minim.loadSample(&amp;quot;musterfinal.wav&amp;quot;, 512);&lt;br /&gt;
  sound3 = minim.loadSample(&amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound4 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 512);&lt;br /&gt;
  sound5 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 512);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  graph();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void graph() {&lt;br /&gt;
  for (int i=0; i&amp;lt;numOfSensors; i++) {&lt;br /&gt;
    if (sensorValues[i] &amp;lt; sensorThresholds[i]) sound(i);&lt;br /&gt;
&lt;br /&gt;
    // map the incoming values to an appropriate range:&lt;br /&gt;
    float ypos = map(sensorValues[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
&lt;br /&gt;
    // figure out the y position for this particular graph:&lt;br /&gt;
    float graphBottom = i * height/numOfSensors;&lt;br /&gt;
    ypos = ypos + graphBottom;&lt;br /&gt;
&lt;br /&gt;
    // draw the graph bottoms:&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    line(0, graphBottom, width, graphBottom);&lt;br /&gt;
&lt;br /&gt;
    // draw the thresholds:&lt;br /&gt;
    stroke(200, 0, 0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    float redLine = map(sensorThresholds[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
    line(0, redLine + graphBottom, width, redLine + graphBottom);&lt;br /&gt;
&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(2);&lt;br /&gt;
    line(xpos, previousSensorValues[i], xpos+1, ypos);&lt;br /&gt;
&lt;br /&gt;
    previousSensorValues[i] = ypos;&lt;br /&gt;
&lt;br /&gt;
    // if you've drawn to the edge of the window, start at the beginning again:&lt;br /&gt;
    if (xpos &amp;gt;= width) {&lt;br /&gt;
      xpos = 0;&lt;br /&gt;
      background(215);&lt;br /&gt;
    } else xpos+=0.1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void serialEvent (Serial myPort) {&lt;br /&gt;
  // get the ASCII string:&lt;br /&gt;
  String inString = myPort.readStringUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  // if it's not empty:&lt;br /&gt;
  if (inString != null) {&lt;br /&gt;
    // trim off any whitespace:&lt;br /&gt;
    inString = trim(inString);&lt;br /&gt;
&lt;br /&gt;
    // convert to an array of ints:&lt;br /&gt;
    int incomingValues[] = int(split(inString, &amp;quot;\t&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
    if (incomingValues.length &amp;lt;= numOfSensors &amp;amp;&amp;amp; incomingValues.length &amp;gt; 0) {&lt;br /&gt;
      for (int i = 0; i &amp;lt; incomingValues.length; i++) {&lt;br /&gt;
        sensorValues[i] = incomingValues[i];&lt;br /&gt;
        print(sensorValues[i] + &amp;quot;\t&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      println();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 4: &lt;br /&gt;
    sound4.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 5: &lt;br /&gt;
    sound5.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the dating-dome ==&lt;br /&gt;
&lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the dating-dome&lt;br /&gt;
 &lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import ddf.minim.*;  &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
int delayTime = 800;&lt;br /&gt;
boolean w_released = true;&lt;br /&gt;
boolean d_released = true;&lt;br /&gt;
boolean s_released = true;&lt;br /&gt;
boolean a_released = true;&lt;br /&gt;
int maxCount = 3;&lt;br /&gt;
int w_count = 0;&lt;br /&gt;
int a_count = 0;&lt;br /&gt;
int s_count = 0;&lt;br /&gt;
int d_count = 0;&lt;br /&gt;
int szene = 0;&lt;br /&gt;
int previousSzene;&lt;br /&gt;
int soundChangeInterval = 5000;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(1000, 800);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  background(255);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  szene = minute() % 3;&lt;br /&gt;
  if (szene != previousSzene) {&lt;br /&gt;
    previousSzene = szene;&lt;br /&gt;
    println(szene);&lt;br /&gt;
&lt;br /&gt;
    if (szene == 0) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;be.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;come.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;together.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;withMe.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 1) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 2) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void keyPressed() {&lt;br /&gt;
  if ((key == 'w' || key == 'W') &amp;amp;&amp;amp; w_released == true &amp;amp;&amp;amp; w_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0);&lt;br /&gt;
    w_released = false;&lt;br /&gt;
    sound(0);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    w_count ++;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'a' || key == 'A') &amp;amp;&amp;amp; a_released == true &amp;amp;&amp;amp; a_count &amp;lt; maxCount) {&lt;br /&gt;
    background(200, 0, 0);&lt;br /&gt;
    a_released = false;&lt;br /&gt;
    sound(1);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    a_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 's' || key == 'S') &amp;amp;&amp;amp; s_released == true &amp;amp;&amp;amp; s_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 200, 0);&lt;br /&gt;
    s_released = false;&lt;br /&gt;
    sound(2);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    s_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'd' || key == 'D') &amp;amp;&amp;amp; d_released == true &amp;amp;&amp;amp; d_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 0, 200);&lt;br /&gt;
    d_released = false;&lt;br /&gt;
    sound(3);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    d_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void keyReleased() {&lt;br /&gt;
  if (key == 'd' || key == 'D') {&lt;br /&gt;
    d_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'a' || key == 'A') {&lt;br /&gt;
    a_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 's' || key == 'S') {&lt;br /&gt;
    s_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'w' || key == 'W') {&lt;br /&gt;
    w_released = true;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rodolfo.acostacastro</name></author>
	</entry>
	<entry>
		<id>http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2806</id>
		<title>Random Acts of Vulnerability</title>
		<link rel="alternate" type="text/html" href="http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2806"/>
		<updated>2021-12-02T07:55:13Z</updated>

		<summary type="html">&lt;p&gt;Rodolfo.acostacastro: /* DOME 3 (mini-dom) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Random Acts of Vulnerability ist ein immersives Spiel für vier Spieler*innen in vier Dimensionen.  Durch Erkundung und Dokumentation der jeweils eigenen Dimension, formen die Spieler*innen anhand des Gesammelten und Erlebten die Erzählungen selbst.&lt;br /&gt;
Auf ein installatives Netz aus experimentellen Materialen, soften Schaltkreisen, meditativen Klangwelten, grotesken Interfaces und verzerrten Output-Signalen aufbauend, werden Fragen nach Isolation, Einsamkeit, immaterieller und haptischer Vernetzung und der Herstellung von Verhandlungsgrundlagen gestellt.&lt;br /&gt;
&lt;br /&gt;
Eine Arbeit von: Zoe Lohmann, Ella Estrella Tischa Raetzer, Rodolfo Acosta Castro, Lena Böckmann&lt;br /&gt;
&lt;br /&gt;
Video: https://www.youtube.com/watch?v=850KCMYEAow&amp;amp;t=7s&lt;br /&gt;
&lt;br /&gt;
https://live.staticflickr.com/65535/51681534884_545f161fd9.jpg&lt;br /&gt;
&lt;br /&gt;
= dokumentation_JAM &amp;lt;span style='font-size:50px;'&amp;gt;&amp;amp;#128206;&amp;lt;/span&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:doku_nextLevel.jpg| thumb |Die Frage ist: wie stellt man eine Dokumentation?]]&lt;br /&gt;
&lt;br /&gt;
* Bilddokumentation sammelt und einordnen &lt;br /&gt;
* künstlerisch/ästhetisch mit dem Material umgehen&lt;br /&gt;
* Dokumentieren auch Fehler, persönliche Ansprüche und Gespräche, Unerwartetes genauso wie&lt;br /&gt;
* Code-Snippets, Schaltpläne, Materialen, Skizzen&lt;br /&gt;
* usw.&lt;br /&gt;
* let's go! &amp;amp;#128293; &lt;br /&gt;
&lt;br /&gt;
PS --&amp;gt; [https://www.w3schools.com/charsets/ref_emoji.asp how to display Emojis: ]&lt;br /&gt;
&lt;br /&gt;
= DOME 1 = &lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
*Stretch-Jersey&lt;br /&gt;
*Polymorph&lt;br /&gt;
*Audiojacks&lt;br /&gt;
*Aux-Kabel&lt;br /&gt;
*Kunstblumen&lt;br /&gt;
*Röhrenfernsehe&lt;br /&gt;
etc...&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
*Processing-Codes&lt;br /&gt;
*Fingerhäkeln: https://www.youtube.com/watch?v=vfScF5EQ3sU&lt;br /&gt;
&lt;br /&gt;
== Sound == &lt;br /&gt;
 &lt;br /&gt;
*Klangbeispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= DOME 2 =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
Watte, Silikon, Kunstblumen, LED-Kerzen....&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
== Sound/Klang == &lt;br /&gt;
&lt;br /&gt;
Beispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= DOME 3 (mini-dom)  =&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
Kunstrasen, Number pad, Bürstenroboter, ...&lt;br /&gt;
&lt;br /&gt;
== Hacks == &lt;br /&gt;
&lt;br /&gt;
Einfache Arduino-to-Arduino Kommunikation mit Vactrol&lt;br /&gt;
&lt;br /&gt;
== Sound == &lt;br /&gt;
&lt;br /&gt;
Beispiele hochladen&lt;br /&gt;
&lt;br /&gt;
=arbeitsprozess=&lt;br /&gt;
&lt;br /&gt;
==1te Runde==&lt;br /&gt;
===Mini-Workshops===&lt;br /&gt;
====Ella Sound Workshop====&lt;br /&gt;
====Zoe Silicon Workshop====&lt;br /&gt;
===BAT===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==2te Runde==&lt;br /&gt;
===Proberaum HFS===&lt;br /&gt;
===NextLevel Festival===&lt;br /&gt;
&lt;br /&gt;
= relevant links =&lt;br /&gt;
&lt;br /&gt;
ESP with Arduino: http://hyperdramatik.net/mediawiki/index.php?title=ESP32_mit_Arduino&lt;br /&gt;
&lt;br /&gt;
MQTT: http://hyperdramatik.net/mediawiki/index.php?title=Hauptseite#MQTT&lt;br /&gt;
&lt;br /&gt;
DOMEs: http://hyperdramatik.net/mediawiki/index.php?title=Dome_Pod_KIT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= code examples from the project =&lt;br /&gt;
&lt;br /&gt;
== Arduino code for sounds in the fishing-dome ==&lt;br /&gt;
&lt;br /&gt;
// running on an ESP [[Spaghetti Monster]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
&lt;br /&gt;
byte analogPins[] = {&lt;br /&gt;
36, 39, 34, 35, 32, 33&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    pinMode(analogPins[i], INPUT);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    Serial.print(analogRead(analogPins[i]));&lt;br /&gt;
    Serial.print(&amp;quot;\t&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  delay(20);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the fishing-dome ==&lt;br /&gt;
 &lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the fishing-dome&lt;br /&gt;
 &lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import processing.serial.*;&lt;br /&gt;
import ddf.minim.*;&lt;br /&gt;
Serial myPort;    &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
//change these:&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
int ADCmax = 4095; &lt;br /&gt;
//int ADCmax = 1023;&lt;br /&gt;
float[] sensorThresholds = {1000, 1000, 1000, 1000, 1000, 1000};//new float[numOfSensors];&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
float[] sensorValues = new float[numOfSensors];&lt;br /&gt;
float[] previousSensorValues = new float[numOfSensors];&lt;br /&gt;
float xpos = 0;&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(600, 400);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  background(255);&lt;br /&gt;
&lt;br /&gt;
  println(Serial.list());&lt;br /&gt;
  String portName = Serial.list()[1];&lt;br /&gt;
  myPort = new Serial(this, &amp;quot;/dev/cu.SLAB_USBtoUART&amp;quot;, 9600);&lt;br /&gt;
  myPort.clear();&lt;br /&gt;
  myPort.bufferUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  sound0 = minim.loadSample( &amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound1 = minim.loadSample(&amp;quot;crazyfrogbardcore.wav&amp;quot;, 512);&lt;br /&gt;
  sound2 = minim.loadSample(&amp;quot;musterfinal.wav&amp;quot;, 512);&lt;br /&gt;
  sound3 = minim.loadSample(&amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound4 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 512);&lt;br /&gt;
  sound5 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 512);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  graph();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void graph() {&lt;br /&gt;
  for (int i=0; i&amp;lt;numOfSensors; i++) {&lt;br /&gt;
    if (sensorValues[i] &amp;lt; sensorThresholds[i]) sound(i);&lt;br /&gt;
&lt;br /&gt;
    // map the incoming values to an appropriate range:&lt;br /&gt;
    float ypos = map(sensorValues[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
&lt;br /&gt;
    // figure out the y position for this particular graph:&lt;br /&gt;
    float graphBottom = i * height/numOfSensors;&lt;br /&gt;
    ypos = ypos + graphBottom;&lt;br /&gt;
&lt;br /&gt;
    // draw the graph bottoms:&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    line(0, graphBottom, width, graphBottom);&lt;br /&gt;
&lt;br /&gt;
    // draw the thresholds:&lt;br /&gt;
    stroke(200, 0, 0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    float redLine = map(sensorThresholds[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
    line(0, redLine + graphBottom, width, redLine + graphBottom);&lt;br /&gt;
&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(2);&lt;br /&gt;
    line(xpos, previousSensorValues[i], xpos+1, ypos);&lt;br /&gt;
&lt;br /&gt;
    previousSensorValues[i] = ypos;&lt;br /&gt;
&lt;br /&gt;
    // if you've drawn to the edge of the window, start at the beginning again:&lt;br /&gt;
    if (xpos &amp;gt;= width) {&lt;br /&gt;
      xpos = 0;&lt;br /&gt;
      background(215);&lt;br /&gt;
    } else xpos+=0.1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void serialEvent (Serial myPort) {&lt;br /&gt;
  // get the ASCII string:&lt;br /&gt;
  String inString = myPort.readStringUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  // if it's not empty:&lt;br /&gt;
  if (inString != null) {&lt;br /&gt;
    // trim off any whitespace:&lt;br /&gt;
    inString = trim(inString);&lt;br /&gt;
&lt;br /&gt;
    // convert to an array of ints:&lt;br /&gt;
    int incomingValues[] = int(split(inString, &amp;quot;\t&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
    if (incomingValues.length &amp;lt;= numOfSensors &amp;amp;&amp;amp; incomingValues.length &amp;gt; 0) {&lt;br /&gt;
      for (int i = 0; i &amp;lt; incomingValues.length; i++) {&lt;br /&gt;
        sensorValues[i] = incomingValues[i];&lt;br /&gt;
        print(sensorValues[i] + &amp;quot;\t&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      println();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 4: &lt;br /&gt;
    sound4.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 5: &lt;br /&gt;
    sound5.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the dating-dome ==&lt;br /&gt;
&lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the dating-dome&lt;br /&gt;
 &lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import ddf.minim.*;  &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
int delayTime = 800;&lt;br /&gt;
boolean w_released = true;&lt;br /&gt;
boolean d_released = true;&lt;br /&gt;
boolean s_released = true;&lt;br /&gt;
boolean a_released = true;&lt;br /&gt;
int maxCount = 3;&lt;br /&gt;
int w_count = 0;&lt;br /&gt;
int a_count = 0;&lt;br /&gt;
int s_count = 0;&lt;br /&gt;
int d_count = 0;&lt;br /&gt;
int szene = 0;&lt;br /&gt;
int previousSzene;&lt;br /&gt;
int soundChangeInterval = 5000;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(1000, 800);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  background(255);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  szene = minute() % 3;&lt;br /&gt;
  if (szene != previousSzene) {&lt;br /&gt;
    previousSzene = szene;&lt;br /&gt;
    println(szene);&lt;br /&gt;
&lt;br /&gt;
    if (szene == 0) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;be.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;come.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;together.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;withMe.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 1) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 2) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void keyPressed() {&lt;br /&gt;
  if ((key == 'w' || key == 'W') &amp;amp;&amp;amp; w_released == true &amp;amp;&amp;amp; w_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0);&lt;br /&gt;
    w_released = false;&lt;br /&gt;
    sound(0);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    w_count ++;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'a' || key == 'A') &amp;amp;&amp;amp; a_released == true &amp;amp;&amp;amp; a_count &amp;lt; maxCount) {&lt;br /&gt;
    background(200, 0, 0);&lt;br /&gt;
    a_released = false;&lt;br /&gt;
    sound(1);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    a_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 's' || key == 'S') &amp;amp;&amp;amp; s_released == true &amp;amp;&amp;amp; s_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 200, 0);&lt;br /&gt;
    s_released = false;&lt;br /&gt;
    sound(2);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    s_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'd' || key == 'D') &amp;amp;&amp;amp; d_released == true &amp;amp;&amp;amp; d_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 0, 200);&lt;br /&gt;
    d_released = false;&lt;br /&gt;
    sound(3);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    d_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void keyReleased() {&lt;br /&gt;
  if (key == 'd' || key == 'D') {&lt;br /&gt;
    d_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'a' || key == 'A') {&lt;br /&gt;
    a_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 's' || key == 'S') {&lt;br /&gt;
    s_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'w' || key == 'W') {&lt;br /&gt;
    w_released = true;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rodolfo.acostacastro</name></author>
	</entry>
	<entry>
		<id>http://hyperdramatik.net/mediawiki/index.php?title=Datei:RosaTelefonHack5.JPG&amp;diff=2805</id>
		<title>Datei:RosaTelefonHack5.JPG</title>
		<link rel="alternate" type="text/html" href="http://hyperdramatik.net/mediawiki/index.php?title=Datei:RosaTelefonHack5.JPG&amp;diff=2805"/>
		<updated>2021-12-02T07:48:08Z</updated>

		<summary type="html">&lt;p&gt;Rodolfo.acostacastro: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Rodolfo.acostacastro</name></author>
	</entry>
	<entry>
		<id>http://hyperdramatik.net/mediawiki/index.php?title=Datei:RosaTelefonHack4.JPG&amp;diff=2804</id>
		<title>Datei:RosaTelefonHack4.JPG</title>
		<link rel="alternate" type="text/html" href="http://hyperdramatik.net/mediawiki/index.php?title=Datei:RosaTelefonHack4.JPG&amp;diff=2804"/>
		<updated>2021-12-02T07:46:05Z</updated>

		<summary type="html">&lt;p&gt;Rodolfo.acostacastro: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Rodolfo.acostacastro</name></author>
	</entry>
	<entry>
		<id>http://hyperdramatik.net/mediawiki/index.php?title=Datei:RosaTelefonHack3.JPG&amp;diff=2803</id>
		<title>Datei:RosaTelefonHack3.JPG</title>
		<link rel="alternate" type="text/html" href="http://hyperdramatik.net/mediawiki/index.php?title=Datei:RosaTelefonHack3.JPG&amp;diff=2803"/>
		<updated>2021-12-02T07:45:15Z</updated>

		<summary type="html">&lt;p&gt;Rodolfo.acostacastro: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Rodolfo.acostacastro</name></author>
	</entry>
	<entry>
		<id>http://hyperdramatik.net/mediawiki/index.php?title=Datei:RosaTelefonHack2.JPG&amp;diff=2802</id>
		<title>Datei:RosaTelefonHack2.JPG</title>
		<link rel="alternate" type="text/html" href="http://hyperdramatik.net/mediawiki/index.php?title=Datei:RosaTelefonHack2.JPG&amp;diff=2802"/>
		<updated>2021-12-02T07:44:46Z</updated>

		<summary type="html">&lt;p&gt;Rodolfo.acostacastro: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Rodolfo.acostacastro</name></author>
	</entry>
	<entry>
		<id>http://hyperdramatik.net/mediawiki/index.php?title=Datei:RosaTelefonHack.JPG&amp;diff=2801</id>
		<title>Datei:RosaTelefonHack.JPG</title>
		<link rel="alternate" type="text/html" href="http://hyperdramatik.net/mediawiki/index.php?title=Datei:RosaTelefonHack.JPG&amp;diff=2801"/>
		<updated>2021-12-02T07:43:52Z</updated>

		<summary type="html">&lt;p&gt;Rodolfo.acostacastro: Rodolfo.acostacastro lud eine neue Version von Datei:RosaTelefonHack.JPG hoch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Inneres des Spielzeugstelefon&lt;/div&gt;</summary>
		<author><name>Rodolfo.acostacastro</name></author>
	</entry>
	<entry>
		<id>http://hyperdramatik.net/mediawiki/index.php?title=Datei:RosaTelefonHack.JPG&amp;diff=2800</id>
		<title>Datei:RosaTelefonHack.JPG</title>
		<link rel="alternate" type="text/html" href="http://hyperdramatik.net/mediawiki/index.php?title=Datei:RosaTelefonHack.JPG&amp;diff=2800"/>
		<updated>2021-12-02T07:43:28Z</updated>

		<summary type="html">&lt;p&gt;Rodolfo.acostacastro: Rodolfo.acostacastro lud eine neue Version von Datei:RosaTelefonHack.JPG hoch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Inneres des Spielzeugstelefon&lt;/div&gt;</summary>
		<author><name>Rodolfo.acostacastro</name></author>
	</entry>
	<entry>
		<id>http://hyperdramatik.net/mediawiki/index.php?title=Datei:RosaTelefonHack.JPG&amp;diff=2799</id>
		<title>Datei:RosaTelefonHack.JPG</title>
		<link rel="alternate" type="text/html" href="http://hyperdramatik.net/mediawiki/index.php?title=Datei:RosaTelefonHack.JPG&amp;diff=2799"/>
		<updated>2021-12-02T07:42:03Z</updated>

		<summary type="html">&lt;p&gt;Rodolfo.acostacastro: Inneres des Spielzeugstelefon&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Inneres des Spielzeugstelefon&lt;/div&gt;</summary>
		<author><name>Rodolfo.acostacastro</name></author>
	</entry>
	<entry>
		<id>http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2798</id>
		<title>Random Acts of Vulnerability</title>
		<link rel="alternate" type="text/html" href="http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2798"/>
		<updated>2021-12-02T07:37:29Z</updated>

		<summary type="html">&lt;p&gt;Rodolfo.acostacastro: /* arbeitsprozess */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Random Acts of Vulnerability ist ein immersives Spiel für vier Spieler*innen in vier Dimensionen.  Durch Erkundung und Dokumentation der jeweils eigenen Dimension, formen die Spieler*innen anhand des Gesammelten und Erlebten die Erzählungen selbst.&lt;br /&gt;
Auf ein installatives Netz aus experimentellen Materialen, soften Schaltkreisen, meditativen Klangwelten, grotesken Interfaces und verzerrten Output-Signalen aufbauend, werden Fragen nach Isolation, Einsamkeit, immaterieller und haptischer Vernetzung und der Herstellung von Verhandlungsgrundlagen gestellt.&lt;br /&gt;
&lt;br /&gt;
Eine Arbeit von: Zoe Lohmann, Ella Estrella Tischa Raetzer, Rodolfo Acosta Castro, Lena Böckmann&lt;br /&gt;
&lt;br /&gt;
Video: https://www.youtube.com/watch?v=850KCMYEAow&amp;amp;t=7s&lt;br /&gt;
&lt;br /&gt;
https://live.staticflickr.com/65535/51681534884_545f161fd9.jpg&lt;br /&gt;
&lt;br /&gt;
= dokumentation_JAM &amp;lt;span style='font-size:50px;'&amp;gt;&amp;amp;#128206;&amp;lt;/span&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:doku_nextLevel.jpg| thumb |Die Frage ist: wie stellt man eine Dokumentation?]]&lt;br /&gt;
&lt;br /&gt;
* Bilddokumentation sammelt und einordnen &lt;br /&gt;
* künstlerisch/ästhetisch mit dem Material umgehen&lt;br /&gt;
* Dokumentieren auch Fehler, persönliche Ansprüche und Gespräche, Unerwartetes genauso wie&lt;br /&gt;
* Code-Snippets, Schaltpläne, Materialen, Skizzen&lt;br /&gt;
* usw.&lt;br /&gt;
* let's go! &amp;amp;#128293; &lt;br /&gt;
&lt;br /&gt;
PS --&amp;gt; [https://www.w3schools.com/charsets/ref_emoji.asp how to display Emojis: ]&lt;br /&gt;
&lt;br /&gt;
= DOME 1 = &lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
*Stretch-Jersey&lt;br /&gt;
*Polymorph&lt;br /&gt;
*Audiojacks&lt;br /&gt;
*Aux-Kabel&lt;br /&gt;
*Kunstblumen&lt;br /&gt;
*Röhrenfernsehe&lt;br /&gt;
etc...&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
*Processing-Codes&lt;br /&gt;
*Fingerhäkeln: https://www.youtube.com/watch?v=vfScF5EQ3sU&lt;br /&gt;
&lt;br /&gt;
== Sound == &lt;br /&gt;
 &lt;br /&gt;
*Klangbeispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= DOME 2 =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
Watte, Silikon, Kunstblumen, LED-Kerzen....&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
== Sound/Klang == &lt;br /&gt;
&lt;br /&gt;
Beispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= DOME 3 (mini-dom)  =&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
Kunstrasen, Number pad, Bürstenroboter, ...&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
== Sound == &lt;br /&gt;
&lt;br /&gt;
Beispiele hochladen&lt;br /&gt;
&lt;br /&gt;
=arbeitsprozess=&lt;br /&gt;
&lt;br /&gt;
==1te Runde==&lt;br /&gt;
===Mini-Workshops===&lt;br /&gt;
====Ella Sound Workshop====&lt;br /&gt;
====Zoe Silicon Workshop====&lt;br /&gt;
===BAT===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==2te Runde==&lt;br /&gt;
===Proberaum HFS===&lt;br /&gt;
===NextLevel Festival===&lt;br /&gt;
&lt;br /&gt;
= relevant links =&lt;br /&gt;
&lt;br /&gt;
ESP with Arduino: http://hyperdramatik.net/mediawiki/index.php?title=ESP32_mit_Arduino&lt;br /&gt;
&lt;br /&gt;
MQTT: http://hyperdramatik.net/mediawiki/index.php?title=Hauptseite#MQTT&lt;br /&gt;
&lt;br /&gt;
DOMEs: http://hyperdramatik.net/mediawiki/index.php?title=Dome_Pod_KIT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= code examples from the project =&lt;br /&gt;
&lt;br /&gt;
== Arduino code for sounds in the fishing-dome ==&lt;br /&gt;
&lt;br /&gt;
// running on an ESP [[Spaghetti Monster]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
&lt;br /&gt;
byte analogPins[] = {&lt;br /&gt;
36, 39, 34, 35, 32, 33&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    pinMode(analogPins[i], INPUT);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    Serial.print(analogRead(analogPins[i]));&lt;br /&gt;
    Serial.print(&amp;quot;\t&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  delay(20);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the fishing-dome ==&lt;br /&gt;
 &lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the fishing-dome&lt;br /&gt;
 &lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import processing.serial.*;&lt;br /&gt;
import ddf.minim.*;&lt;br /&gt;
Serial myPort;    &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
//change these:&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
int ADCmax = 4095; &lt;br /&gt;
//int ADCmax = 1023;&lt;br /&gt;
float[] sensorThresholds = {1000, 1000, 1000, 1000, 1000, 1000};//new float[numOfSensors];&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
float[] sensorValues = new float[numOfSensors];&lt;br /&gt;
float[] previousSensorValues = new float[numOfSensors];&lt;br /&gt;
float xpos = 0;&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(600, 400);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  background(255);&lt;br /&gt;
&lt;br /&gt;
  println(Serial.list());&lt;br /&gt;
  String portName = Serial.list()[1];&lt;br /&gt;
  myPort = new Serial(this, &amp;quot;/dev/cu.SLAB_USBtoUART&amp;quot;, 9600);&lt;br /&gt;
  myPort.clear();&lt;br /&gt;
  myPort.bufferUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  sound0 = minim.loadSample( &amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound1 = minim.loadSample(&amp;quot;crazyfrogbardcore.wav&amp;quot;, 512);&lt;br /&gt;
  sound2 = minim.loadSample(&amp;quot;musterfinal.wav&amp;quot;, 512);&lt;br /&gt;
  sound3 = minim.loadSample(&amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound4 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 512);&lt;br /&gt;
  sound5 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 512);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  graph();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void graph() {&lt;br /&gt;
  for (int i=0; i&amp;lt;numOfSensors; i++) {&lt;br /&gt;
    if (sensorValues[i] &amp;lt; sensorThresholds[i]) sound(i);&lt;br /&gt;
&lt;br /&gt;
    // map the incoming values to an appropriate range:&lt;br /&gt;
    float ypos = map(sensorValues[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
&lt;br /&gt;
    // figure out the y position for this particular graph:&lt;br /&gt;
    float graphBottom = i * height/numOfSensors;&lt;br /&gt;
    ypos = ypos + graphBottom;&lt;br /&gt;
&lt;br /&gt;
    // draw the graph bottoms:&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    line(0, graphBottom, width, graphBottom);&lt;br /&gt;
&lt;br /&gt;
    // draw the thresholds:&lt;br /&gt;
    stroke(200, 0, 0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    float redLine = map(sensorThresholds[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
    line(0, redLine + graphBottom, width, redLine + graphBottom);&lt;br /&gt;
&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(2);&lt;br /&gt;
    line(xpos, previousSensorValues[i], xpos+1, ypos);&lt;br /&gt;
&lt;br /&gt;
    previousSensorValues[i] = ypos;&lt;br /&gt;
&lt;br /&gt;
    // if you've drawn to the edge of the window, start at the beginning again:&lt;br /&gt;
    if (xpos &amp;gt;= width) {&lt;br /&gt;
      xpos = 0;&lt;br /&gt;
      background(215);&lt;br /&gt;
    } else xpos+=0.1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void serialEvent (Serial myPort) {&lt;br /&gt;
  // get the ASCII string:&lt;br /&gt;
  String inString = myPort.readStringUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  // if it's not empty:&lt;br /&gt;
  if (inString != null) {&lt;br /&gt;
    // trim off any whitespace:&lt;br /&gt;
    inString = trim(inString);&lt;br /&gt;
&lt;br /&gt;
    // convert to an array of ints:&lt;br /&gt;
    int incomingValues[] = int(split(inString, &amp;quot;\t&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
    if (incomingValues.length &amp;lt;= numOfSensors &amp;amp;&amp;amp; incomingValues.length &amp;gt; 0) {&lt;br /&gt;
      for (int i = 0; i &amp;lt; incomingValues.length; i++) {&lt;br /&gt;
        sensorValues[i] = incomingValues[i];&lt;br /&gt;
        print(sensorValues[i] + &amp;quot;\t&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      println();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 4: &lt;br /&gt;
    sound4.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 5: &lt;br /&gt;
    sound5.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the dating-dome ==&lt;br /&gt;
&lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the dating-dome&lt;br /&gt;
 &lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import ddf.minim.*;  &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
int delayTime = 800;&lt;br /&gt;
boolean w_released = true;&lt;br /&gt;
boolean d_released = true;&lt;br /&gt;
boolean s_released = true;&lt;br /&gt;
boolean a_released = true;&lt;br /&gt;
int maxCount = 3;&lt;br /&gt;
int w_count = 0;&lt;br /&gt;
int a_count = 0;&lt;br /&gt;
int s_count = 0;&lt;br /&gt;
int d_count = 0;&lt;br /&gt;
int szene = 0;&lt;br /&gt;
int previousSzene;&lt;br /&gt;
int soundChangeInterval = 5000;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(1000, 800);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  background(255);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  szene = minute() % 3;&lt;br /&gt;
  if (szene != previousSzene) {&lt;br /&gt;
    previousSzene = szene;&lt;br /&gt;
    println(szene);&lt;br /&gt;
&lt;br /&gt;
    if (szene == 0) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;be.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;come.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;together.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;withMe.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 1) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 2) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void keyPressed() {&lt;br /&gt;
  if ((key == 'w' || key == 'W') &amp;amp;&amp;amp; w_released == true &amp;amp;&amp;amp; w_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0);&lt;br /&gt;
    w_released = false;&lt;br /&gt;
    sound(0);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    w_count ++;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'a' || key == 'A') &amp;amp;&amp;amp; a_released == true &amp;amp;&amp;amp; a_count &amp;lt; maxCount) {&lt;br /&gt;
    background(200, 0, 0);&lt;br /&gt;
    a_released = false;&lt;br /&gt;
    sound(1);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    a_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 's' || key == 'S') &amp;amp;&amp;amp; s_released == true &amp;amp;&amp;amp; s_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 200, 0);&lt;br /&gt;
    s_released = false;&lt;br /&gt;
    sound(2);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    s_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'd' || key == 'D') &amp;amp;&amp;amp; d_released == true &amp;amp;&amp;amp; d_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 0, 200);&lt;br /&gt;
    d_released = false;&lt;br /&gt;
    sound(3);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    d_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void keyReleased() {&lt;br /&gt;
  if (key == 'd' || key == 'D') {&lt;br /&gt;
    d_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'a' || key == 'A') {&lt;br /&gt;
    a_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 's' || key == 'S') {&lt;br /&gt;
    s_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'w' || key == 'W') {&lt;br /&gt;
    w_released = true;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rodolfo.acostacastro</name></author>
	</entry>
	<entry>
		<id>http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2797</id>
		<title>Random Acts of Vulnerability</title>
		<link rel="alternate" type="text/html" href="http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2797"/>
		<updated>2021-12-02T07:33:54Z</updated>

		<summary type="html">&lt;p&gt;Rodolfo.acostacastro: /* dokumentation_JAM &amp;amp;#128206; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Random Acts of Vulnerability ist ein immersives Spiel für vier Spieler*innen in vier Dimensionen.  Durch Erkundung und Dokumentation der jeweils eigenen Dimension, formen die Spieler*innen anhand des Gesammelten und Erlebten die Erzählungen selbst.&lt;br /&gt;
Auf ein installatives Netz aus experimentellen Materialen, soften Schaltkreisen, meditativen Klangwelten, grotesken Interfaces und verzerrten Output-Signalen aufbauend, werden Fragen nach Isolation, Einsamkeit, immaterieller und haptischer Vernetzung und der Herstellung von Verhandlungsgrundlagen gestellt.&lt;br /&gt;
&lt;br /&gt;
Eine Arbeit von: Zoe Lohmann, Ella Estrella Tischa Raetzer, Rodolfo Acosta Castro, Lena Böckmann&lt;br /&gt;
&lt;br /&gt;
Video: https://www.youtube.com/watch?v=850KCMYEAow&amp;amp;t=7s&lt;br /&gt;
&lt;br /&gt;
https://live.staticflickr.com/65535/51681534884_545f161fd9.jpg&lt;br /&gt;
&lt;br /&gt;
= dokumentation_JAM &amp;lt;span style='font-size:50px;'&amp;gt;&amp;amp;#128206;&amp;lt;/span&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:doku_nextLevel.jpg| thumb |Die Frage ist: wie stellt man eine Dokumentation?]]&lt;br /&gt;
&lt;br /&gt;
* Bilddokumentation sammelt und einordnen &lt;br /&gt;
* künstlerisch/ästhetisch mit dem Material umgehen&lt;br /&gt;
* Dokumentieren auch Fehler, persönliche Ansprüche und Gespräche, Unerwartetes genauso wie&lt;br /&gt;
* Code-Snippets, Schaltpläne, Materialen, Skizzen&lt;br /&gt;
* usw.&lt;br /&gt;
* let's go! &amp;amp;#128293; &lt;br /&gt;
&lt;br /&gt;
PS --&amp;gt; [https://www.w3schools.com/charsets/ref_emoji.asp how to display Emojis: ]&lt;br /&gt;
&lt;br /&gt;
= DOME 1 = &lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
*Stretch-Jersey&lt;br /&gt;
*Polymorph&lt;br /&gt;
*Audiojacks&lt;br /&gt;
*Aux-Kabel&lt;br /&gt;
*Kunstblumen&lt;br /&gt;
*Röhrenfernsehe&lt;br /&gt;
etc...&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
*Processing-Codes&lt;br /&gt;
*Fingerhäkeln: https://www.youtube.com/watch?v=vfScF5EQ3sU&lt;br /&gt;
&lt;br /&gt;
== Sound == &lt;br /&gt;
 &lt;br /&gt;
*Klangbeispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= DOME 2 =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
Watte, Silikon, Kunstblumen, LED-Kerzen....&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
== Sound/Klang == &lt;br /&gt;
&lt;br /&gt;
Beispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= DOME 3 (mini-dom)  =&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
Kunstrasen, Number pad, Bürstenroboter, ...&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
== Sound == &lt;br /&gt;
&lt;br /&gt;
Beispiele hochladen&lt;br /&gt;
&lt;br /&gt;
=arbeitsprozess=&lt;br /&gt;
&lt;br /&gt;
= relevant links =&lt;br /&gt;
&lt;br /&gt;
ESP with Arduino: http://hyperdramatik.net/mediawiki/index.php?title=ESP32_mit_Arduino&lt;br /&gt;
&lt;br /&gt;
MQTT: http://hyperdramatik.net/mediawiki/index.php?title=Hauptseite#MQTT&lt;br /&gt;
&lt;br /&gt;
DOMEs: http://hyperdramatik.net/mediawiki/index.php?title=Dome_Pod_KIT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= code examples from the project =&lt;br /&gt;
&lt;br /&gt;
== Arduino code for sounds in the fishing-dome ==&lt;br /&gt;
&lt;br /&gt;
// running on an ESP [[Spaghetti Monster]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
&lt;br /&gt;
byte analogPins[] = {&lt;br /&gt;
36, 39, 34, 35, 32, 33&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    pinMode(analogPins[i], INPUT);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    Serial.print(analogRead(analogPins[i]));&lt;br /&gt;
    Serial.print(&amp;quot;\t&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  delay(20);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the fishing-dome ==&lt;br /&gt;
 &lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the fishing-dome&lt;br /&gt;
 &lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import processing.serial.*;&lt;br /&gt;
import ddf.minim.*;&lt;br /&gt;
Serial myPort;    &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
//change these:&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
int ADCmax = 4095; &lt;br /&gt;
//int ADCmax = 1023;&lt;br /&gt;
float[] sensorThresholds = {1000, 1000, 1000, 1000, 1000, 1000};//new float[numOfSensors];&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
float[] sensorValues = new float[numOfSensors];&lt;br /&gt;
float[] previousSensorValues = new float[numOfSensors];&lt;br /&gt;
float xpos = 0;&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(600, 400);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  background(255);&lt;br /&gt;
&lt;br /&gt;
  println(Serial.list());&lt;br /&gt;
  String portName = Serial.list()[1];&lt;br /&gt;
  myPort = new Serial(this, &amp;quot;/dev/cu.SLAB_USBtoUART&amp;quot;, 9600);&lt;br /&gt;
  myPort.clear();&lt;br /&gt;
  myPort.bufferUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  sound0 = minim.loadSample( &amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound1 = minim.loadSample(&amp;quot;crazyfrogbardcore.wav&amp;quot;, 512);&lt;br /&gt;
  sound2 = minim.loadSample(&amp;quot;musterfinal.wav&amp;quot;, 512);&lt;br /&gt;
  sound3 = minim.loadSample(&amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound4 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 512);&lt;br /&gt;
  sound5 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 512);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  graph();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void graph() {&lt;br /&gt;
  for (int i=0; i&amp;lt;numOfSensors; i++) {&lt;br /&gt;
    if (sensorValues[i] &amp;lt; sensorThresholds[i]) sound(i);&lt;br /&gt;
&lt;br /&gt;
    // map the incoming values to an appropriate range:&lt;br /&gt;
    float ypos = map(sensorValues[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
&lt;br /&gt;
    // figure out the y position for this particular graph:&lt;br /&gt;
    float graphBottom = i * height/numOfSensors;&lt;br /&gt;
    ypos = ypos + graphBottom;&lt;br /&gt;
&lt;br /&gt;
    // draw the graph bottoms:&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    line(0, graphBottom, width, graphBottom);&lt;br /&gt;
&lt;br /&gt;
    // draw the thresholds:&lt;br /&gt;
    stroke(200, 0, 0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    float redLine = map(sensorThresholds[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
    line(0, redLine + graphBottom, width, redLine + graphBottom);&lt;br /&gt;
&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(2);&lt;br /&gt;
    line(xpos, previousSensorValues[i], xpos+1, ypos);&lt;br /&gt;
&lt;br /&gt;
    previousSensorValues[i] = ypos;&lt;br /&gt;
&lt;br /&gt;
    // if you've drawn to the edge of the window, start at the beginning again:&lt;br /&gt;
    if (xpos &amp;gt;= width) {&lt;br /&gt;
      xpos = 0;&lt;br /&gt;
      background(215);&lt;br /&gt;
    } else xpos+=0.1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void serialEvent (Serial myPort) {&lt;br /&gt;
  // get the ASCII string:&lt;br /&gt;
  String inString = myPort.readStringUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  // if it's not empty:&lt;br /&gt;
  if (inString != null) {&lt;br /&gt;
    // trim off any whitespace:&lt;br /&gt;
    inString = trim(inString);&lt;br /&gt;
&lt;br /&gt;
    // convert to an array of ints:&lt;br /&gt;
    int incomingValues[] = int(split(inString, &amp;quot;\t&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
    if (incomingValues.length &amp;lt;= numOfSensors &amp;amp;&amp;amp; incomingValues.length &amp;gt; 0) {&lt;br /&gt;
      for (int i = 0; i &amp;lt; incomingValues.length; i++) {&lt;br /&gt;
        sensorValues[i] = incomingValues[i];&lt;br /&gt;
        print(sensorValues[i] + &amp;quot;\t&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      println();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 4: &lt;br /&gt;
    sound4.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 5: &lt;br /&gt;
    sound5.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the dating-dome ==&lt;br /&gt;
&lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the dating-dome&lt;br /&gt;
 &lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import ddf.minim.*;  &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
int delayTime = 800;&lt;br /&gt;
boolean w_released = true;&lt;br /&gt;
boolean d_released = true;&lt;br /&gt;
boolean s_released = true;&lt;br /&gt;
boolean a_released = true;&lt;br /&gt;
int maxCount = 3;&lt;br /&gt;
int w_count = 0;&lt;br /&gt;
int a_count = 0;&lt;br /&gt;
int s_count = 0;&lt;br /&gt;
int d_count = 0;&lt;br /&gt;
int szene = 0;&lt;br /&gt;
int previousSzene;&lt;br /&gt;
int soundChangeInterval = 5000;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(1000, 800);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  background(255);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  szene = minute() % 3;&lt;br /&gt;
  if (szene != previousSzene) {&lt;br /&gt;
    previousSzene = szene;&lt;br /&gt;
    println(szene);&lt;br /&gt;
&lt;br /&gt;
    if (szene == 0) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;be.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;come.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;together.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;withMe.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 1) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 2) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void keyPressed() {&lt;br /&gt;
  if ((key == 'w' || key == 'W') &amp;amp;&amp;amp; w_released == true &amp;amp;&amp;amp; w_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0);&lt;br /&gt;
    w_released = false;&lt;br /&gt;
    sound(0);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    w_count ++;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'a' || key == 'A') &amp;amp;&amp;amp; a_released == true &amp;amp;&amp;amp; a_count &amp;lt; maxCount) {&lt;br /&gt;
    background(200, 0, 0);&lt;br /&gt;
    a_released = false;&lt;br /&gt;
    sound(1);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    a_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 's' || key == 'S') &amp;amp;&amp;amp; s_released == true &amp;amp;&amp;amp; s_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 200, 0);&lt;br /&gt;
    s_released = false;&lt;br /&gt;
    sound(2);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    s_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'd' || key == 'D') &amp;amp;&amp;amp; d_released == true &amp;amp;&amp;amp; d_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 0, 200);&lt;br /&gt;
    d_released = false;&lt;br /&gt;
    sound(3);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    d_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void keyReleased() {&lt;br /&gt;
  if (key == 'd' || key == 'D') {&lt;br /&gt;
    d_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'a' || key == 'A') {&lt;br /&gt;
    a_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 's' || key == 'S') {&lt;br /&gt;
    s_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'w' || key == 'W') {&lt;br /&gt;
    w_released = true;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rodolfo.acostacastro</name></author>
	</entry>
	<entry>
		<id>http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2796</id>
		<title>Random Acts of Vulnerability</title>
		<link rel="alternate" type="text/html" href="http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2796"/>
		<updated>2021-12-02T07:33:30Z</updated>

		<summary type="html">&lt;p&gt;Rodolfo.acostacastro: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Random Acts of Vulnerability ist ein immersives Spiel für vier Spieler*innen in vier Dimensionen.  Durch Erkundung und Dokumentation der jeweils eigenen Dimension, formen die Spieler*innen anhand des Gesammelten und Erlebten die Erzählungen selbst.&lt;br /&gt;
Auf ein installatives Netz aus experimentellen Materialen, soften Schaltkreisen, meditativen Klangwelten, grotesken Interfaces und verzerrten Output-Signalen aufbauend, werden Fragen nach Isolation, Einsamkeit, immaterieller und haptischer Vernetzung und der Herstellung von Verhandlungsgrundlagen gestellt.&lt;br /&gt;
&lt;br /&gt;
Eine Arbeit von: Zoe Lohmann, Ella Estrella Tischa Raetzer, Rodolfo Acosta Castro, Lena Böckmann&lt;br /&gt;
&lt;br /&gt;
Video: https://www.youtube.com/watch?v=850KCMYEAow&amp;amp;t=7s&lt;br /&gt;
&lt;br /&gt;
https://live.staticflickr.com/65535/51681534884_545f161fd9.jpg&lt;br /&gt;
&lt;br /&gt;
= '''dokumentation_JAM''' &amp;lt;span style='font-size:50px;'&amp;gt;&amp;amp;#128206;&amp;lt;/span&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:doku_nextLevel.jpg| thumb |Die Frage ist: wie stellt man eine Dokumentation?]]&lt;br /&gt;
&lt;br /&gt;
* Bilddokumentation sammelt und einordnen &lt;br /&gt;
* künstlerisch/ästhetisch mit dem Material umgehen&lt;br /&gt;
* Dokumentieren auch Fehler, persönliche Ansprüche und Gespräche, Unerwartetes genauso wie&lt;br /&gt;
* Code-Snippets, Schaltpläne, Materialen, Skizzen&lt;br /&gt;
* usw.&lt;br /&gt;
* let's go! &amp;amp;#128293; &lt;br /&gt;
&lt;br /&gt;
PS --&amp;gt; [https://www.w3schools.com/charsets/ref_emoji.asp how to display Emojis: ]&lt;br /&gt;
&lt;br /&gt;
= DOME 1 = &lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
*Stretch-Jersey&lt;br /&gt;
*Polymorph&lt;br /&gt;
*Audiojacks&lt;br /&gt;
*Aux-Kabel&lt;br /&gt;
*Kunstblumen&lt;br /&gt;
*Röhrenfernsehe&lt;br /&gt;
etc...&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
*Processing-Codes&lt;br /&gt;
*Fingerhäkeln: https://www.youtube.com/watch?v=vfScF5EQ3sU&lt;br /&gt;
&lt;br /&gt;
== Sound == &lt;br /&gt;
 &lt;br /&gt;
*Klangbeispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= DOME 2 =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
Watte, Silikon, Kunstblumen, LED-Kerzen....&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
== Sound/Klang == &lt;br /&gt;
&lt;br /&gt;
Beispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= DOME 3 (mini-dom)  =&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
Kunstrasen, Number pad, Bürstenroboter, ...&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
== Sound == &lt;br /&gt;
&lt;br /&gt;
Beispiele hochladen&lt;br /&gt;
&lt;br /&gt;
=arbeitsprozess=&lt;br /&gt;
&lt;br /&gt;
= relevant links =&lt;br /&gt;
&lt;br /&gt;
ESP with Arduino: http://hyperdramatik.net/mediawiki/index.php?title=ESP32_mit_Arduino&lt;br /&gt;
&lt;br /&gt;
MQTT: http://hyperdramatik.net/mediawiki/index.php?title=Hauptseite#MQTT&lt;br /&gt;
&lt;br /&gt;
DOMEs: http://hyperdramatik.net/mediawiki/index.php?title=Dome_Pod_KIT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= code examples from the project =&lt;br /&gt;
&lt;br /&gt;
== Arduino code for sounds in the fishing-dome ==&lt;br /&gt;
&lt;br /&gt;
// running on an ESP [[Spaghetti Monster]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
&lt;br /&gt;
byte analogPins[] = {&lt;br /&gt;
36, 39, 34, 35, 32, 33&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    pinMode(analogPins[i], INPUT);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    Serial.print(analogRead(analogPins[i]));&lt;br /&gt;
    Serial.print(&amp;quot;\t&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  delay(20);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the fishing-dome ==&lt;br /&gt;
 &lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the fishing-dome&lt;br /&gt;
 &lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import processing.serial.*;&lt;br /&gt;
import ddf.minim.*;&lt;br /&gt;
Serial myPort;    &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
//change these:&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
int ADCmax = 4095; &lt;br /&gt;
//int ADCmax = 1023;&lt;br /&gt;
float[] sensorThresholds = {1000, 1000, 1000, 1000, 1000, 1000};//new float[numOfSensors];&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
float[] sensorValues = new float[numOfSensors];&lt;br /&gt;
float[] previousSensorValues = new float[numOfSensors];&lt;br /&gt;
float xpos = 0;&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(600, 400);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  background(255);&lt;br /&gt;
&lt;br /&gt;
  println(Serial.list());&lt;br /&gt;
  String portName = Serial.list()[1];&lt;br /&gt;
  myPort = new Serial(this, &amp;quot;/dev/cu.SLAB_USBtoUART&amp;quot;, 9600);&lt;br /&gt;
  myPort.clear();&lt;br /&gt;
  myPort.bufferUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  sound0 = minim.loadSample( &amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound1 = minim.loadSample(&amp;quot;crazyfrogbardcore.wav&amp;quot;, 512);&lt;br /&gt;
  sound2 = minim.loadSample(&amp;quot;musterfinal.wav&amp;quot;, 512);&lt;br /&gt;
  sound3 = minim.loadSample(&amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound4 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 512);&lt;br /&gt;
  sound5 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 512);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  graph();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void graph() {&lt;br /&gt;
  for (int i=0; i&amp;lt;numOfSensors; i++) {&lt;br /&gt;
    if (sensorValues[i] &amp;lt; sensorThresholds[i]) sound(i);&lt;br /&gt;
&lt;br /&gt;
    // map the incoming values to an appropriate range:&lt;br /&gt;
    float ypos = map(sensorValues[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
&lt;br /&gt;
    // figure out the y position for this particular graph:&lt;br /&gt;
    float graphBottom = i * height/numOfSensors;&lt;br /&gt;
    ypos = ypos + graphBottom;&lt;br /&gt;
&lt;br /&gt;
    // draw the graph bottoms:&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    line(0, graphBottom, width, graphBottom);&lt;br /&gt;
&lt;br /&gt;
    // draw the thresholds:&lt;br /&gt;
    stroke(200, 0, 0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    float redLine = map(sensorThresholds[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
    line(0, redLine + graphBottom, width, redLine + graphBottom);&lt;br /&gt;
&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(2);&lt;br /&gt;
    line(xpos, previousSensorValues[i], xpos+1, ypos);&lt;br /&gt;
&lt;br /&gt;
    previousSensorValues[i] = ypos;&lt;br /&gt;
&lt;br /&gt;
    // if you've drawn to the edge of the window, start at the beginning again:&lt;br /&gt;
    if (xpos &amp;gt;= width) {&lt;br /&gt;
      xpos = 0;&lt;br /&gt;
      background(215);&lt;br /&gt;
    } else xpos+=0.1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void serialEvent (Serial myPort) {&lt;br /&gt;
  // get the ASCII string:&lt;br /&gt;
  String inString = myPort.readStringUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  // if it's not empty:&lt;br /&gt;
  if (inString != null) {&lt;br /&gt;
    // trim off any whitespace:&lt;br /&gt;
    inString = trim(inString);&lt;br /&gt;
&lt;br /&gt;
    // convert to an array of ints:&lt;br /&gt;
    int incomingValues[] = int(split(inString, &amp;quot;\t&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
    if (incomingValues.length &amp;lt;= numOfSensors &amp;amp;&amp;amp; incomingValues.length &amp;gt; 0) {&lt;br /&gt;
      for (int i = 0; i &amp;lt; incomingValues.length; i++) {&lt;br /&gt;
        sensorValues[i] = incomingValues[i];&lt;br /&gt;
        print(sensorValues[i] + &amp;quot;\t&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      println();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 4: &lt;br /&gt;
    sound4.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 5: &lt;br /&gt;
    sound5.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the dating-dome ==&lt;br /&gt;
&lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the dating-dome&lt;br /&gt;
 &lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import ddf.minim.*;  &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
int delayTime = 800;&lt;br /&gt;
boolean w_released = true;&lt;br /&gt;
boolean d_released = true;&lt;br /&gt;
boolean s_released = true;&lt;br /&gt;
boolean a_released = true;&lt;br /&gt;
int maxCount = 3;&lt;br /&gt;
int w_count = 0;&lt;br /&gt;
int a_count = 0;&lt;br /&gt;
int s_count = 0;&lt;br /&gt;
int d_count = 0;&lt;br /&gt;
int szene = 0;&lt;br /&gt;
int previousSzene;&lt;br /&gt;
int soundChangeInterval = 5000;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(1000, 800);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  background(255);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  szene = minute() % 3;&lt;br /&gt;
  if (szene != previousSzene) {&lt;br /&gt;
    previousSzene = szene;&lt;br /&gt;
    println(szene);&lt;br /&gt;
&lt;br /&gt;
    if (szene == 0) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;be.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;come.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;together.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;withMe.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 1) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 2) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void keyPressed() {&lt;br /&gt;
  if ((key == 'w' || key == 'W') &amp;amp;&amp;amp; w_released == true &amp;amp;&amp;amp; w_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0);&lt;br /&gt;
    w_released = false;&lt;br /&gt;
    sound(0);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    w_count ++;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'a' || key == 'A') &amp;amp;&amp;amp; a_released == true &amp;amp;&amp;amp; a_count &amp;lt; maxCount) {&lt;br /&gt;
    background(200, 0, 0);&lt;br /&gt;
    a_released = false;&lt;br /&gt;
    sound(1);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    a_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 's' || key == 'S') &amp;amp;&amp;amp; s_released == true &amp;amp;&amp;amp; s_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 200, 0);&lt;br /&gt;
    s_released = false;&lt;br /&gt;
    sound(2);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    s_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'd' || key == 'D') &amp;amp;&amp;amp; d_released == true &amp;amp;&amp;amp; d_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 0, 200);&lt;br /&gt;
    d_released = false;&lt;br /&gt;
    sound(3);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    d_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void keyReleased() {&lt;br /&gt;
  if (key == 'd' || key == 'D') {&lt;br /&gt;
    d_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'a' || key == 'A') {&lt;br /&gt;
    a_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 's' || key == 'S') {&lt;br /&gt;
    s_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'w' || key == 'W') {&lt;br /&gt;
    w_released = true;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rodolfo.acostacastro</name></author>
	</entry>
	<entry>
		<id>http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2795</id>
		<title>Random Acts of Vulnerability</title>
		<link rel="alternate" type="text/html" href="http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2795"/>
		<updated>2021-12-02T07:32:59Z</updated>

		<summary type="html">&lt;p&gt;Rodolfo.acostacastro: /* dokumentation_JAM &amp;amp;#128206; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Random Acts of Vulnerability ist ein immersives Spiel für vier Spieler*innen in vier Dimensionen.  Durch Erkundung und Dokumentation der jeweils eigenen Dimension, formen die Spieler*innen anhand des Gesammelten und Erlebten die Erzählungen selbst.&lt;br /&gt;
Auf ein installatives Netz aus experimentellen Materialen, soften Schaltkreisen, meditativen Klangwelten, grotesken Interfaces und verzerrten Output-Signalen aufbauend, werden Fragen nach Isolation, Einsamkeit, immaterieller und haptischer Vernetzung und der Herstellung von Verhandlungsgrundlagen gestellt.&lt;br /&gt;
&lt;br /&gt;
Eine Arbeit von: Zoe Lohmann, Ella Estrella Tischa Raetzer, Rodolfo Acosta Castro, Lena Böckmann&lt;br /&gt;
&lt;br /&gt;
Video: https://www.youtube.com/watch?v=850KCMYEAow&amp;amp;t=7s&lt;br /&gt;
&lt;br /&gt;
https://live.staticflickr.com/65535/51681534884_545f161fd9.jpg&lt;br /&gt;
&lt;br /&gt;
'''= dokumentation_JAM &amp;lt;span style='font-size:50px;'&amp;gt;&amp;amp;#128206;&amp;lt;/span&amp;gt;=&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
[[File:doku_nextLevel.jpg| thumb |Die Frage ist: wie stellt man eine Dokumentation?]]&lt;br /&gt;
&lt;br /&gt;
* Bilddokumentation sammelt und einordnen &lt;br /&gt;
* künstlerisch/ästhetisch mit dem Material umgehen&lt;br /&gt;
* Dokumentieren auch Fehler, persönliche Ansprüche und Gespräche, Unerwartetes genauso wie&lt;br /&gt;
* Code-Snippets, Schaltpläne, Materialen, Skizzen&lt;br /&gt;
* usw.&lt;br /&gt;
* let's go! &amp;amp;#128293; &lt;br /&gt;
&lt;br /&gt;
PS --&amp;gt; [https://www.w3schools.com/charsets/ref_emoji.asp how to display Emojis: ]&lt;br /&gt;
&lt;br /&gt;
= DOME 1 = &lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
*Stretch-Jersey&lt;br /&gt;
*Polymorph&lt;br /&gt;
*Audiojacks&lt;br /&gt;
*Aux-Kabel&lt;br /&gt;
*Kunstblumen&lt;br /&gt;
*Röhrenfernsehe&lt;br /&gt;
etc...&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
*Processing-Codes&lt;br /&gt;
*Fingerhäkeln: https://www.youtube.com/watch?v=vfScF5EQ3sU&lt;br /&gt;
&lt;br /&gt;
== Sound == &lt;br /&gt;
 &lt;br /&gt;
*Klangbeispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= DOME 2 =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
Watte, Silikon, Kunstblumen, LED-Kerzen....&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
== Sound/Klang == &lt;br /&gt;
&lt;br /&gt;
Beispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= DOME 3 (mini-dom)  =&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
Kunstrasen, Number pad, Bürstenroboter, ...&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
== Sound == &lt;br /&gt;
&lt;br /&gt;
Beispiele hochladen&lt;br /&gt;
&lt;br /&gt;
=arbeitsprozess=&lt;br /&gt;
&lt;br /&gt;
= relevant links =&lt;br /&gt;
&lt;br /&gt;
ESP with Arduino: http://hyperdramatik.net/mediawiki/index.php?title=ESP32_mit_Arduino&lt;br /&gt;
&lt;br /&gt;
MQTT: http://hyperdramatik.net/mediawiki/index.php?title=Hauptseite#MQTT&lt;br /&gt;
&lt;br /&gt;
DOMEs: http://hyperdramatik.net/mediawiki/index.php?title=Dome_Pod_KIT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= code examples from the project =&lt;br /&gt;
&lt;br /&gt;
== Arduino code for sounds in the fishing-dome ==&lt;br /&gt;
&lt;br /&gt;
// running on an ESP [[Spaghetti Monster]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
&lt;br /&gt;
byte analogPins[] = {&lt;br /&gt;
36, 39, 34, 35, 32, 33&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    pinMode(analogPins[i], INPUT);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    Serial.print(analogRead(analogPins[i]));&lt;br /&gt;
    Serial.print(&amp;quot;\t&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  delay(20);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the fishing-dome ==&lt;br /&gt;
 &lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the fishing-dome&lt;br /&gt;
 &lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import processing.serial.*;&lt;br /&gt;
import ddf.minim.*;&lt;br /&gt;
Serial myPort;    &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
//change these:&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
int ADCmax = 4095; &lt;br /&gt;
//int ADCmax = 1023;&lt;br /&gt;
float[] sensorThresholds = {1000, 1000, 1000, 1000, 1000, 1000};//new float[numOfSensors];&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
float[] sensorValues = new float[numOfSensors];&lt;br /&gt;
float[] previousSensorValues = new float[numOfSensors];&lt;br /&gt;
float xpos = 0;&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(600, 400);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  background(255);&lt;br /&gt;
&lt;br /&gt;
  println(Serial.list());&lt;br /&gt;
  String portName = Serial.list()[1];&lt;br /&gt;
  myPort = new Serial(this, &amp;quot;/dev/cu.SLAB_USBtoUART&amp;quot;, 9600);&lt;br /&gt;
  myPort.clear();&lt;br /&gt;
  myPort.bufferUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  sound0 = minim.loadSample( &amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound1 = minim.loadSample(&amp;quot;crazyfrogbardcore.wav&amp;quot;, 512);&lt;br /&gt;
  sound2 = minim.loadSample(&amp;quot;musterfinal.wav&amp;quot;, 512);&lt;br /&gt;
  sound3 = minim.loadSample(&amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound4 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 512);&lt;br /&gt;
  sound5 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 512);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  graph();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void graph() {&lt;br /&gt;
  for (int i=0; i&amp;lt;numOfSensors; i++) {&lt;br /&gt;
    if (sensorValues[i] &amp;lt; sensorThresholds[i]) sound(i);&lt;br /&gt;
&lt;br /&gt;
    // map the incoming values to an appropriate range:&lt;br /&gt;
    float ypos = map(sensorValues[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
&lt;br /&gt;
    // figure out the y position for this particular graph:&lt;br /&gt;
    float graphBottom = i * height/numOfSensors;&lt;br /&gt;
    ypos = ypos + graphBottom;&lt;br /&gt;
&lt;br /&gt;
    // draw the graph bottoms:&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    line(0, graphBottom, width, graphBottom);&lt;br /&gt;
&lt;br /&gt;
    // draw the thresholds:&lt;br /&gt;
    stroke(200, 0, 0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    float redLine = map(sensorThresholds[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
    line(0, redLine + graphBottom, width, redLine + graphBottom);&lt;br /&gt;
&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(2);&lt;br /&gt;
    line(xpos, previousSensorValues[i], xpos+1, ypos);&lt;br /&gt;
&lt;br /&gt;
    previousSensorValues[i] = ypos;&lt;br /&gt;
&lt;br /&gt;
    // if you've drawn to the edge of the window, start at the beginning again:&lt;br /&gt;
    if (xpos &amp;gt;= width) {&lt;br /&gt;
      xpos = 0;&lt;br /&gt;
      background(215);&lt;br /&gt;
    } else xpos+=0.1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void serialEvent (Serial myPort) {&lt;br /&gt;
  // get the ASCII string:&lt;br /&gt;
  String inString = myPort.readStringUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  // if it's not empty:&lt;br /&gt;
  if (inString != null) {&lt;br /&gt;
    // trim off any whitespace:&lt;br /&gt;
    inString = trim(inString);&lt;br /&gt;
&lt;br /&gt;
    // convert to an array of ints:&lt;br /&gt;
    int incomingValues[] = int(split(inString, &amp;quot;\t&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
    if (incomingValues.length &amp;lt;= numOfSensors &amp;amp;&amp;amp; incomingValues.length &amp;gt; 0) {&lt;br /&gt;
      for (int i = 0; i &amp;lt; incomingValues.length; i++) {&lt;br /&gt;
        sensorValues[i] = incomingValues[i];&lt;br /&gt;
        print(sensorValues[i] + &amp;quot;\t&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      println();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 4: &lt;br /&gt;
    sound4.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 5: &lt;br /&gt;
    sound5.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the dating-dome ==&lt;br /&gt;
&lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the dating-dome&lt;br /&gt;
 &lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import ddf.minim.*;  &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
int delayTime = 800;&lt;br /&gt;
boolean w_released = true;&lt;br /&gt;
boolean d_released = true;&lt;br /&gt;
boolean s_released = true;&lt;br /&gt;
boolean a_released = true;&lt;br /&gt;
int maxCount = 3;&lt;br /&gt;
int w_count = 0;&lt;br /&gt;
int a_count = 0;&lt;br /&gt;
int s_count = 0;&lt;br /&gt;
int d_count = 0;&lt;br /&gt;
int szene = 0;&lt;br /&gt;
int previousSzene;&lt;br /&gt;
int soundChangeInterval = 5000;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(1000, 800);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  background(255);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  szene = minute() % 3;&lt;br /&gt;
  if (szene != previousSzene) {&lt;br /&gt;
    previousSzene = szene;&lt;br /&gt;
    println(szene);&lt;br /&gt;
&lt;br /&gt;
    if (szene == 0) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;be.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;come.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;together.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;withMe.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 1) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 2) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void keyPressed() {&lt;br /&gt;
  if ((key == 'w' || key == 'W') &amp;amp;&amp;amp; w_released == true &amp;amp;&amp;amp; w_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0);&lt;br /&gt;
    w_released = false;&lt;br /&gt;
    sound(0);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    w_count ++;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'a' || key == 'A') &amp;amp;&amp;amp; a_released == true &amp;amp;&amp;amp; a_count &amp;lt; maxCount) {&lt;br /&gt;
    background(200, 0, 0);&lt;br /&gt;
    a_released = false;&lt;br /&gt;
    sound(1);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    a_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 's' || key == 'S') &amp;amp;&amp;amp; s_released == true &amp;amp;&amp;amp; s_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 200, 0);&lt;br /&gt;
    s_released = false;&lt;br /&gt;
    sound(2);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    s_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'd' || key == 'D') &amp;amp;&amp;amp; d_released == true &amp;amp;&amp;amp; d_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 0, 200);&lt;br /&gt;
    d_released = false;&lt;br /&gt;
    sound(3);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    d_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void keyReleased() {&lt;br /&gt;
  if (key == 'd' || key == 'D') {&lt;br /&gt;
    d_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'a' || key == 'A') {&lt;br /&gt;
    a_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 's' || key == 'S') {&lt;br /&gt;
    s_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'w' || key == 'W') {&lt;br /&gt;
    w_released = true;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rodolfo.acostacastro</name></author>
	</entry>
	<entry>
		<id>http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2794</id>
		<title>Random Acts of Vulnerability</title>
		<link rel="alternate" type="text/html" href="http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2794"/>
		<updated>2021-12-02T07:32:47Z</updated>

		<summary type="html">&lt;p&gt;Rodolfo.acostacastro: /* Arbeitsprozess */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Random Acts of Vulnerability ist ein immersives Spiel für vier Spieler*innen in vier Dimensionen.  Durch Erkundung und Dokumentation der jeweils eigenen Dimension, formen die Spieler*innen anhand des Gesammelten und Erlebten die Erzählungen selbst.&lt;br /&gt;
Auf ein installatives Netz aus experimentellen Materialen, soften Schaltkreisen, meditativen Klangwelten, grotesken Interfaces und verzerrten Output-Signalen aufbauend, werden Fragen nach Isolation, Einsamkeit, immaterieller und haptischer Vernetzung und der Herstellung von Verhandlungsgrundlagen gestellt.&lt;br /&gt;
&lt;br /&gt;
Eine Arbeit von: Zoe Lohmann, Ella Estrella Tischa Raetzer, Rodolfo Acosta Castro, Lena Böckmann&lt;br /&gt;
&lt;br /&gt;
Video: https://www.youtube.com/watch?v=850KCMYEAow&amp;amp;t=7s&lt;br /&gt;
&lt;br /&gt;
https://live.staticflickr.com/65535/51681534884_545f161fd9.jpg&lt;br /&gt;
&lt;br /&gt;
= dokumentation_JAM &amp;lt;span style='font-size:50px;'&amp;gt;&amp;amp;#128206;&amp;lt;/span&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:doku_nextLevel.jpg| thumb |Die Frage ist: wie stellt man eine Dokumentation?]]&lt;br /&gt;
&lt;br /&gt;
* Bilddokumentation sammelt und einordnen &lt;br /&gt;
* künstlerisch/ästhetisch mit dem Material umgehen&lt;br /&gt;
* Dokumentieren auch Fehler, persönliche Ansprüche und Gespräche, Unerwartetes genauso wie&lt;br /&gt;
* Code-Snippets, Schaltpläne, Materialen, Skizzen&lt;br /&gt;
* usw.&lt;br /&gt;
* let's go! &amp;amp;#128293; &lt;br /&gt;
&lt;br /&gt;
PS --&amp;gt; [https://www.w3schools.com/charsets/ref_emoji.asp how to display Emojis: ]&lt;br /&gt;
&lt;br /&gt;
= DOME 1 = &lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
*Stretch-Jersey&lt;br /&gt;
*Polymorph&lt;br /&gt;
*Audiojacks&lt;br /&gt;
*Aux-Kabel&lt;br /&gt;
*Kunstblumen&lt;br /&gt;
*Röhrenfernsehe&lt;br /&gt;
etc...&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
*Processing-Codes&lt;br /&gt;
*Fingerhäkeln: https://www.youtube.com/watch?v=vfScF5EQ3sU&lt;br /&gt;
&lt;br /&gt;
== Sound == &lt;br /&gt;
 &lt;br /&gt;
*Klangbeispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= DOME 2 =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
Watte, Silikon, Kunstblumen, LED-Kerzen....&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
== Sound/Klang == &lt;br /&gt;
&lt;br /&gt;
Beispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= DOME 3 (mini-dom)  =&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
Kunstrasen, Number pad, Bürstenroboter, ...&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
== Sound == &lt;br /&gt;
&lt;br /&gt;
Beispiele hochladen&lt;br /&gt;
&lt;br /&gt;
=arbeitsprozess=&lt;br /&gt;
&lt;br /&gt;
= relevant links =&lt;br /&gt;
&lt;br /&gt;
ESP with Arduino: http://hyperdramatik.net/mediawiki/index.php?title=ESP32_mit_Arduino&lt;br /&gt;
&lt;br /&gt;
MQTT: http://hyperdramatik.net/mediawiki/index.php?title=Hauptseite#MQTT&lt;br /&gt;
&lt;br /&gt;
DOMEs: http://hyperdramatik.net/mediawiki/index.php?title=Dome_Pod_KIT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= code examples from the project =&lt;br /&gt;
&lt;br /&gt;
== Arduino code for sounds in the fishing-dome ==&lt;br /&gt;
&lt;br /&gt;
// running on an ESP [[Spaghetti Monster]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
&lt;br /&gt;
byte analogPins[] = {&lt;br /&gt;
36, 39, 34, 35, 32, 33&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    pinMode(analogPins[i], INPUT);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    Serial.print(analogRead(analogPins[i]));&lt;br /&gt;
    Serial.print(&amp;quot;\t&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  delay(20);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the fishing-dome ==&lt;br /&gt;
 &lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the fishing-dome&lt;br /&gt;
 &lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import processing.serial.*;&lt;br /&gt;
import ddf.minim.*;&lt;br /&gt;
Serial myPort;    &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
//change these:&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
int ADCmax = 4095; &lt;br /&gt;
//int ADCmax = 1023;&lt;br /&gt;
float[] sensorThresholds = {1000, 1000, 1000, 1000, 1000, 1000};//new float[numOfSensors];&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
float[] sensorValues = new float[numOfSensors];&lt;br /&gt;
float[] previousSensorValues = new float[numOfSensors];&lt;br /&gt;
float xpos = 0;&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(600, 400);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  background(255);&lt;br /&gt;
&lt;br /&gt;
  println(Serial.list());&lt;br /&gt;
  String portName = Serial.list()[1];&lt;br /&gt;
  myPort = new Serial(this, &amp;quot;/dev/cu.SLAB_USBtoUART&amp;quot;, 9600);&lt;br /&gt;
  myPort.clear();&lt;br /&gt;
  myPort.bufferUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  sound0 = minim.loadSample( &amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound1 = minim.loadSample(&amp;quot;crazyfrogbardcore.wav&amp;quot;, 512);&lt;br /&gt;
  sound2 = minim.loadSample(&amp;quot;musterfinal.wav&amp;quot;, 512);&lt;br /&gt;
  sound3 = minim.loadSample(&amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound4 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 512);&lt;br /&gt;
  sound5 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 512);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  graph();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void graph() {&lt;br /&gt;
  for (int i=0; i&amp;lt;numOfSensors; i++) {&lt;br /&gt;
    if (sensorValues[i] &amp;lt; sensorThresholds[i]) sound(i);&lt;br /&gt;
&lt;br /&gt;
    // map the incoming values to an appropriate range:&lt;br /&gt;
    float ypos = map(sensorValues[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
&lt;br /&gt;
    // figure out the y position for this particular graph:&lt;br /&gt;
    float graphBottom = i * height/numOfSensors;&lt;br /&gt;
    ypos = ypos + graphBottom;&lt;br /&gt;
&lt;br /&gt;
    // draw the graph bottoms:&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    line(0, graphBottom, width, graphBottom);&lt;br /&gt;
&lt;br /&gt;
    // draw the thresholds:&lt;br /&gt;
    stroke(200, 0, 0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    float redLine = map(sensorThresholds[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
    line(0, redLine + graphBottom, width, redLine + graphBottom);&lt;br /&gt;
&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(2);&lt;br /&gt;
    line(xpos, previousSensorValues[i], xpos+1, ypos);&lt;br /&gt;
&lt;br /&gt;
    previousSensorValues[i] = ypos;&lt;br /&gt;
&lt;br /&gt;
    // if you've drawn to the edge of the window, start at the beginning again:&lt;br /&gt;
    if (xpos &amp;gt;= width) {&lt;br /&gt;
      xpos = 0;&lt;br /&gt;
      background(215);&lt;br /&gt;
    } else xpos+=0.1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void serialEvent (Serial myPort) {&lt;br /&gt;
  // get the ASCII string:&lt;br /&gt;
  String inString = myPort.readStringUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  // if it's not empty:&lt;br /&gt;
  if (inString != null) {&lt;br /&gt;
    // trim off any whitespace:&lt;br /&gt;
    inString = trim(inString);&lt;br /&gt;
&lt;br /&gt;
    // convert to an array of ints:&lt;br /&gt;
    int incomingValues[] = int(split(inString, &amp;quot;\t&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
    if (incomingValues.length &amp;lt;= numOfSensors &amp;amp;&amp;amp; incomingValues.length &amp;gt; 0) {&lt;br /&gt;
      for (int i = 0; i &amp;lt; incomingValues.length; i++) {&lt;br /&gt;
        sensorValues[i] = incomingValues[i];&lt;br /&gt;
        print(sensorValues[i] + &amp;quot;\t&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      println();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 4: &lt;br /&gt;
    sound4.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 5: &lt;br /&gt;
    sound5.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the dating-dome ==&lt;br /&gt;
&lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the dating-dome&lt;br /&gt;
 &lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import ddf.minim.*;  &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
int delayTime = 800;&lt;br /&gt;
boolean w_released = true;&lt;br /&gt;
boolean d_released = true;&lt;br /&gt;
boolean s_released = true;&lt;br /&gt;
boolean a_released = true;&lt;br /&gt;
int maxCount = 3;&lt;br /&gt;
int w_count = 0;&lt;br /&gt;
int a_count = 0;&lt;br /&gt;
int s_count = 0;&lt;br /&gt;
int d_count = 0;&lt;br /&gt;
int szene = 0;&lt;br /&gt;
int previousSzene;&lt;br /&gt;
int soundChangeInterval = 5000;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(1000, 800);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  background(255);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  szene = minute() % 3;&lt;br /&gt;
  if (szene != previousSzene) {&lt;br /&gt;
    previousSzene = szene;&lt;br /&gt;
    println(szene);&lt;br /&gt;
&lt;br /&gt;
    if (szene == 0) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;be.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;come.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;together.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;withMe.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 1) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 2) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void keyPressed() {&lt;br /&gt;
  if ((key == 'w' || key == 'W') &amp;amp;&amp;amp; w_released == true &amp;amp;&amp;amp; w_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0);&lt;br /&gt;
    w_released = false;&lt;br /&gt;
    sound(0);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    w_count ++;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'a' || key == 'A') &amp;amp;&amp;amp; a_released == true &amp;amp;&amp;amp; a_count &amp;lt; maxCount) {&lt;br /&gt;
    background(200, 0, 0);&lt;br /&gt;
    a_released = false;&lt;br /&gt;
    sound(1);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    a_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 's' || key == 'S') &amp;amp;&amp;amp; s_released == true &amp;amp;&amp;amp; s_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 200, 0);&lt;br /&gt;
    s_released = false;&lt;br /&gt;
    sound(2);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    s_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'd' || key == 'D') &amp;amp;&amp;amp; d_released == true &amp;amp;&amp;amp; d_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 0, 200);&lt;br /&gt;
    d_released = false;&lt;br /&gt;
    sound(3);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    d_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void keyReleased() {&lt;br /&gt;
  if (key == 'd' || key == 'D') {&lt;br /&gt;
    d_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'a' || key == 'A') {&lt;br /&gt;
    a_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 's' || key == 'S') {&lt;br /&gt;
    s_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'w' || key == 'W') {&lt;br /&gt;
    w_released = true;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rodolfo.acostacastro</name></author>
	</entry>
	<entry>
		<id>http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2793</id>
		<title>Random Acts of Vulnerability</title>
		<link rel="alternate" type="text/html" href="http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2793"/>
		<updated>2021-12-02T07:32:28Z</updated>

		<summary type="html">&lt;p&gt;Rodolfo.acostacastro: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Random Acts of Vulnerability ist ein immersives Spiel für vier Spieler*innen in vier Dimensionen.  Durch Erkundung und Dokumentation der jeweils eigenen Dimension, formen die Spieler*innen anhand des Gesammelten und Erlebten die Erzählungen selbst.&lt;br /&gt;
Auf ein installatives Netz aus experimentellen Materialen, soften Schaltkreisen, meditativen Klangwelten, grotesken Interfaces und verzerrten Output-Signalen aufbauend, werden Fragen nach Isolation, Einsamkeit, immaterieller und haptischer Vernetzung und der Herstellung von Verhandlungsgrundlagen gestellt.&lt;br /&gt;
&lt;br /&gt;
Eine Arbeit von: Zoe Lohmann, Ella Estrella Tischa Raetzer, Rodolfo Acosta Castro, Lena Böckmann&lt;br /&gt;
&lt;br /&gt;
Video: https://www.youtube.com/watch?v=850KCMYEAow&amp;amp;t=7s&lt;br /&gt;
&lt;br /&gt;
https://live.staticflickr.com/65535/51681534884_545f161fd9.jpg&lt;br /&gt;
&lt;br /&gt;
= dokumentation_JAM &amp;lt;span style='font-size:50px;'&amp;gt;&amp;amp;#128206;&amp;lt;/span&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:doku_nextLevel.jpg| thumb |Die Frage ist: wie stellt man eine Dokumentation?]]&lt;br /&gt;
&lt;br /&gt;
* Bilddokumentation sammelt und einordnen &lt;br /&gt;
* künstlerisch/ästhetisch mit dem Material umgehen&lt;br /&gt;
* Dokumentieren auch Fehler, persönliche Ansprüche und Gespräche, Unerwartetes genauso wie&lt;br /&gt;
* Code-Snippets, Schaltpläne, Materialen, Skizzen&lt;br /&gt;
* usw.&lt;br /&gt;
* let's go! &amp;amp;#128293; &lt;br /&gt;
&lt;br /&gt;
PS --&amp;gt; [https://www.w3schools.com/charsets/ref_emoji.asp how to display Emojis: ]&lt;br /&gt;
&lt;br /&gt;
= DOME 1 = &lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
*Stretch-Jersey&lt;br /&gt;
*Polymorph&lt;br /&gt;
*Audiojacks&lt;br /&gt;
*Aux-Kabel&lt;br /&gt;
*Kunstblumen&lt;br /&gt;
*Röhrenfernsehe&lt;br /&gt;
etc...&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
*Processing-Codes&lt;br /&gt;
*Fingerhäkeln: https://www.youtube.com/watch?v=vfScF5EQ3sU&lt;br /&gt;
&lt;br /&gt;
== Sound == &lt;br /&gt;
 &lt;br /&gt;
*Klangbeispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= DOME 2 =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
Watte, Silikon, Kunstblumen, LED-Kerzen....&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
== Sound/Klang == &lt;br /&gt;
&lt;br /&gt;
Beispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= DOME 3 (mini-dom)  =&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
Kunstrasen, Number pad, Bürstenroboter, ...&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
== Sound == &lt;br /&gt;
&lt;br /&gt;
Beispiele hochladen&lt;br /&gt;
&lt;br /&gt;
=Arbeitsprozess=&lt;br /&gt;
&lt;br /&gt;
= relevant links =&lt;br /&gt;
&lt;br /&gt;
ESP with Arduino: http://hyperdramatik.net/mediawiki/index.php?title=ESP32_mit_Arduino&lt;br /&gt;
&lt;br /&gt;
MQTT: http://hyperdramatik.net/mediawiki/index.php?title=Hauptseite#MQTT&lt;br /&gt;
&lt;br /&gt;
DOMEs: http://hyperdramatik.net/mediawiki/index.php?title=Dome_Pod_KIT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= code examples from the project =&lt;br /&gt;
&lt;br /&gt;
== Arduino code for sounds in the fishing-dome ==&lt;br /&gt;
&lt;br /&gt;
// running on an ESP [[Spaghetti Monster]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
&lt;br /&gt;
byte analogPins[] = {&lt;br /&gt;
36, 39, 34, 35, 32, 33&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    pinMode(analogPins[i], INPUT);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    Serial.print(analogRead(analogPins[i]));&lt;br /&gt;
    Serial.print(&amp;quot;\t&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  delay(20);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the fishing-dome ==&lt;br /&gt;
 &lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the fishing-dome&lt;br /&gt;
 &lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import processing.serial.*;&lt;br /&gt;
import ddf.minim.*;&lt;br /&gt;
Serial myPort;    &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
//change these:&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
int ADCmax = 4095; &lt;br /&gt;
//int ADCmax = 1023;&lt;br /&gt;
float[] sensorThresholds = {1000, 1000, 1000, 1000, 1000, 1000};//new float[numOfSensors];&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
float[] sensorValues = new float[numOfSensors];&lt;br /&gt;
float[] previousSensorValues = new float[numOfSensors];&lt;br /&gt;
float xpos = 0;&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(600, 400);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  background(255);&lt;br /&gt;
&lt;br /&gt;
  println(Serial.list());&lt;br /&gt;
  String portName = Serial.list()[1];&lt;br /&gt;
  myPort = new Serial(this, &amp;quot;/dev/cu.SLAB_USBtoUART&amp;quot;, 9600);&lt;br /&gt;
  myPort.clear();&lt;br /&gt;
  myPort.bufferUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  sound0 = minim.loadSample( &amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound1 = minim.loadSample(&amp;quot;crazyfrogbardcore.wav&amp;quot;, 512);&lt;br /&gt;
  sound2 = minim.loadSample(&amp;quot;musterfinal.wav&amp;quot;, 512);&lt;br /&gt;
  sound3 = minim.loadSample(&amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound4 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 512);&lt;br /&gt;
  sound5 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 512);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  graph();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void graph() {&lt;br /&gt;
  for (int i=0; i&amp;lt;numOfSensors; i++) {&lt;br /&gt;
    if (sensorValues[i] &amp;lt; sensorThresholds[i]) sound(i);&lt;br /&gt;
&lt;br /&gt;
    // map the incoming values to an appropriate range:&lt;br /&gt;
    float ypos = map(sensorValues[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
&lt;br /&gt;
    // figure out the y position for this particular graph:&lt;br /&gt;
    float graphBottom = i * height/numOfSensors;&lt;br /&gt;
    ypos = ypos + graphBottom;&lt;br /&gt;
&lt;br /&gt;
    // draw the graph bottoms:&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    line(0, graphBottom, width, graphBottom);&lt;br /&gt;
&lt;br /&gt;
    // draw the thresholds:&lt;br /&gt;
    stroke(200, 0, 0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    float redLine = map(sensorThresholds[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
    line(0, redLine + graphBottom, width, redLine + graphBottom);&lt;br /&gt;
&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(2);&lt;br /&gt;
    line(xpos, previousSensorValues[i], xpos+1, ypos);&lt;br /&gt;
&lt;br /&gt;
    previousSensorValues[i] = ypos;&lt;br /&gt;
&lt;br /&gt;
    // if you've drawn to the edge of the window, start at the beginning again:&lt;br /&gt;
    if (xpos &amp;gt;= width) {&lt;br /&gt;
      xpos = 0;&lt;br /&gt;
      background(215);&lt;br /&gt;
    } else xpos+=0.1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void serialEvent (Serial myPort) {&lt;br /&gt;
  // get the ASCII string:&lt;br /&gt;
  String inString = myPort.readStringUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  // if it's not empty:&lt;br /&gt;
  if (inString != null) {&lt;br /&gt;
    // trim off any whitespace:&lt;br /&gt;
    inString = trim(inString);&lt;br /&gt;
&lt;br /&gt;
    // convert to an array of ints:&lt;br /&gt;
    int incomingValues[] = int(split(inString, &amp;quot;\t&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
    if (incomingValues.length &amp;lt;= numOfSensors &amp;amp;&amp;amp; incomingValues.length &amp;gt; 0) {&lt;br /&gt;
      for (int i = 0; i &amp;lt; incomingValues.length; i++) {&lt;br /&gt;
        sensorValues[i] = incomingValues[i];&lt;br /&gt;
        print(sensorValues[i] + &amp;quot;\t&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      println();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 4: &lt;br /&gt;
    sound4.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 5: &lt;br /&gt;
    sound5.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the dating-dome ==&lt;br /&gt;
&lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the dating-dome&lt;br /&gt;
 &lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import ddf.minim.*;  &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
int delayTime = 800;&lt;br /&gt;
boolean w_released = true;&lt;br /&gt;
boolean d_released = true;&lt;br /&gt;
boolean s_released = true;&lt;br /&gt;
boolean a_released = true;&lt;br /&gt;
int maxCount = 3;&lt;br /&gt;
int w_count = 0;&lt;br /&gt;
int a_count = 0;&lt;br /&gt;
int s_count = 0;&lt;br /&gt;
int d_count = 0;&lt;br /&gt;
int szene = 0;&lt;br /&gt;
int previousSzene;&lt;br /&gt;
int soundChangeInterval = 5000;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(1000, 800);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  background(255);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  szene = minute() % 3;&lt;br /&gt;
  if (szene != previousSzene) {&lt;br /&gt;
    previousSzene = szene;&lt;br /&gt;
    println(szene);&lt;br /&gt;
&lt;br /&gt;
    if (szene == 0) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;be.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;come.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;together.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;withMe.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 1) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 2) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void keyPressed() {&lt;br /&gt;
  if ((key == 'w' || key == 'W') &amp;amp;&amp;amp; w_released == true &amp;amp;&amp;amp; w_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0);&lt;br /&gt;
    w_released = false;&lt;br /&gt;
    sound(0);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    w_count ++;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'a' || key == 'A') &amp;amp;&amp;amp; a_released == true &amp;amp;&amp;amp; a_count &amp;lt; maxCount) {&lt;br /&gt;
    background(200, 0, 0);&lt;br /&gt;
    a_released = false;&lt;br /&gt;
    sound(1);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    a_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 's' || key == 'S') &amp;amp;&amp;amp; s_released == true &amp;amp;&amp;amp; s_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 200, 0);&lt;br /&gt;
    s_released = false;&lt;br /&gt;
    sound(2);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    s_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'd' || key == 'D') &amp;amp;&amp;amp; d_released == true &amp;amp;&amp;amp; d_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 0, 200);&lt;br /&gt;
    d_released = false;&lt;br /&gt;
    sound(3);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    d_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void keyReleased() {&lt;br /&gt;
  if (key == 'd' || key == 'D') {&lt;br /&gt;
    d_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'a' || key == 'A') {&lt;br /&gt;
    a_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 's' || key == 'S') {&lt;br /&gt;
    s_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'w' || key == 'W') {&lt;br /&gt;
    w_released = true;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rodolfo.acostacastro</name></author>
	</entry>
	<entry>
		<id>http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2792</id>
		<title>Random Acts of Vulnerability</title>
		<link rel="alternate" type="text/html" href="http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2792"/>
		<updated>2021-12-01T20:12:57Z</updated>

		<summary type="html">&lt;p&gt;Rodolfo.acostacastro: /* DOME 3(mini-dom) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Random Acts of Vulnerability ist ein immersives Spiel für vier Spieler*innen in vier Dimensionen.  Durch Erkundung und Dokumentation der jeweils eigenen Dimension, formen die Spieler*innen anhand des Gesammelten und Erlebten die Erzählungen selbst.&lt;br /&gt;
Auf ein installatives Netz aus experimentellen Materialen, soften Schaltkreisen, meditativen Klangwelten, grotesken Interfaces und verzerrten Output-Signalen aufbauend, werden Fragen nach Isolation, Einsamkeit, immaterieller und haptischer Vernetzung und der Herstellung von Verhandlungsgrundlagen gestellt.&lt;br /&gt;
&lt;br /&gt;
Eine Arbeit von: Zoe Lohmann, Ella Estrella Tischa Raetzer, Rodolfo Acosta Castro, Lena Böckmann&lt;br /&gt;
&lt;br /&gt;
Video: https://www.youtube.com/watch?v=850KCMYEAow&amp;amp;t=7s&lt;br /&gt;
&lt;br /&gt;
https://live.staticflickr.com/65535/51681534884_545f161fd9.jpg&lt;br /&gt;
&lt;br /&gt;
= dokumentation_JAM &amp;lt;span style='font-size:50px;'&amp;gt;&amp;amp;#128206;&amp;lt;/span&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:doku_nextLevel.jpg| thumb |Die Frage ist: wie stellt man eine Dokumentation?]]&lt;br /&gt;
&lt;br /&gt;
* Bilddokumentation sammelt und einordnen &lt;br /&gt;
* künstlerisch/ästhetisch mit dem Material umgehen&lt;br /&gt;
* Dokumentieren auch Fehler, persönliche Ansprüche und Gespräche, Unerwartetes genauso wie&lt;br /&gt;
* Code-Snippets, Schaltpläne, Materialen, Skizzen&lt;br /&gt;
* usw.&lt;br /&gt;
* let's go! &amp;amp;#128293; &lt;br /&gt;
&lt;br /&gt;
PS --&amp;gt; [https://www.w3schools.com/charsets/ref_emoji.asp how to display Emojis: ]&lt;br /&gt;
&lt;br /&gt;
= DOME 1 = &lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
*Stretch-Jersey&lt;br /&gt;
*Polymorph&lt;br /&gt;
*Audiojacks&lt;br /&gt;
*Aux-Kabel&lt;br /&gt;
*Kunstblumen&lt;br /&gt;
*Röhrenfernsehe&lt;br /&gt;
etc...&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
*Processing-Codes&lt;br /&gt;
*Fingerhäkeln: https://www.youtube.com/watch?v=vfScF5EQ3sU&lt;br /&gt;
&lt;br /&gt;
== Sound == &lt;br /&gt;
 &lt;br /&gt;
*Klangbeispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= DOME 2 =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
Watte, Silikon, Kunstblumen, LED-Kerzen....&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
== Sound/Klang == &lt;br /&gt;
&lt;br /&gt;
Beispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= DOME 3 (mini-dom)  =&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
Kunstrasen, Number pad, Bürstenroboter, ...&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
== Sound == &lt;br /&gt;
&lt;br /&gt;
Beispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= relevant links =&lt;br /&gt;
&lt;br /&gt;
ESP with Arduino: http://hyperdramatik.net/mediawiki/index.php?title=ESP32_mit_Arduino&lt;br /&gt;
&lt;br /&gt;
MQTT: http://hyperdramatik.net/mediawiki/index.php?title=Hauptseite#MQTT&lt;br /&gt;
&lt;br /&gt;
DOMEs: http://hyperdramatik.net/mediawiki/index.php?title=Dome_Pod_KIT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= code examples from the project =&lt;br /&gt;
&lt;br /&gt;
== Arduino code for sounds in the fishing-dome ==&lt;br /&gt;
&lt;br /&gt;
// running on an ESP [[Spaghetti Monster]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
&lt;br /&gt;
byte analogPins[] = {&lt;br /&gt;
36, 39, 34, 35, 32, 33&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    pinMode(analogPins[i], INPUT);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    Serial.print(analogRead(analogPins[i]));&lt;br /&gt;
    Serial.print(&amp;quot;\t&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  delay(20);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the fishing-dome ==&lt;br /&gt;
 &lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the fishing-dome&lt;br /&gt;
 &lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import processing.serial.*;&lt;br /&gt;
import ddf.minim.*;&lt;br /&gt;
Serial myPort;    &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
//change these:&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
int ADCmax = 4095; &lt;br /&gt;
//int ADCmax = 1023;&lt;br /&gt;
float[] sensorThresholds = {1000, 1000, 1000, 1000, 1000, 1000};//new float[numOfSensors];&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
float[] sensorValues = new float[numOfSensors];&lt;br /&gt;
float[] previousSensorValues = new float[numOfSensors];&lt;br /&gt;
float xpos = 0;&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(600, 400);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  background(255);&lt;br /&gt;
&lt;br /&gt;
  println(Serial.list());&lt;br /&gt;
  String portName = Serial.list()[1];&lt;br /&gt;
  myPort = new Serial(this, &amp;quot;/dev/cu.SLAB_USBtoUART&amp;quot;, 9600);&lt;br /&gt;
  myPort.clear();&lt;br /&gt;
  myPort.bufferUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  sound0 = minim.loadSample( &amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound1 = minim.loadSample(&amp;quot;crazyfrogbardcore.wav&amp;quot;, 512);&lt;br /&gt;
  sound2 = minim.loadSample(&amp;quot;musterfinal.wav&amp;quot;, 512);&lt;br /&gt;
  sound3 = minim.loadSample(&amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound4 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 512);&lt;br /&gt;
  sound5 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 512);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  graph();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void graph() {&lt;br /&gt;
  for (int i=0; i&amp;lt;numOfSensors; i++) {&lt;br /&gt;
    if (sensorValues[i] &amp;lt; sensorThresholds[i]) sound(i);&lt;br /&gt;
&lt;br /&gt;
    // map the incoming values to an appropriate range:&lt;br /&gt;
    float ypos = map(sensorValues[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
&lt;br /&gt;
    // figure out the y position for this particular graph:&lt;br /&gt;
    float graphBottom = i * height/numOfSensors;&lt;br /&gt;
    ypos = ypos + graphBottom;&lt;br /&gt;
&lt;br /&gt;
    // draw the graph bottoms:&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    line(0, graphBottom, width, graphBottom);&lt;br /&gt;
&lt;br /&gt;
    // draw the thresholds:&lt;br /&gt;
    stroke(200, 0, 0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    float redLine = map(sensorThresholds[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
    line(0, redLine + graphBottom, width, redLine + graphBottom);&lt;br /&gt;
&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(2);&lt;br /&gt;
    line(xpos, previousSensorValues[i], xpos+1, ypos);&lt;br /&gt;
&lt;br /&gt;
    previousSensorValues[i] = ypos;&lt;br /&gt;
&lt;br /&gt;
    // if you've drawn to the edge of the window, start at the beginning again:&lt;br /&gt;
    if (xpos &amp;gt;= width) {&lt;br /&gt;
      xpos = 0;&lt;br /&gt;
      background(215);&lt;br /&gt;
    } else xpos+=0.1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void serialEvent (Serial myPort) {&lt;br /&gt;
  // get the ASCII string:&lt;br /&gt;
  String inString = myPort.readStringUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  // if it's not empty:&lt;br /&gt;
  if (inString != null) {&lt;br /&gt;
    // trim off any whitespace:&lt;br /&gt;
    inString = trim(inString);&lt;br /&gt;
&lt;br /&gt;
    // convert to an array of ints:&lt;br /&gt;
    int incomingValues[] = int(split(inString, &amp;quot;\t&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
    if (incomingValues.length &amp;lt;= numOfSensors &amp;amp;&amp;amp; incomingValues.length &amp;gt; 0) {&lt;br /&gt;
      for (int i = 0; i &amp;lt; incomingValues.length; i++) {&lt;br /&gt;
        sensorValues[i] = incomingValues[i];&lt;br /&gt;
        print(sensorValues[i] + &amp;quot;\t&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      println();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 4: &lt;br /&gt;
    sound4.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 5: &lt;br /&gt;
    sound5.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the dating-dome ==&lt;br /&gt;
&lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the dating-dome&lt;br /&gt;
 &lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import ddf.minim.*;  &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
int delayTime = 800;&lt;br /&gt;
boolean w_released = true;&lt;br /&gt;
boolean d_released = true;&lt;br /&gt;
boolean s_released = true;&lt;br /&gt;
boolean a_released = true;&lt;br /&gt;
int maxCount = 3;&lt;br /&gt;
int w_count = 0;&lt;br /&gt;
int a_count = 0;&lt;br /&gt;
int s_count = 0;&lt;br /&gt;
int d_count = 0;&lt;br /&gt;
int szene = 0;&lt;br /&gt;
int previousSzene;&lt;br /&gt;
int soundChangeInterval = 5000;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(1000, 800);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  background(255);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  szene = minute() % 3;&lt;br /&gt;
  if (szene != previousSzene) {&lt;br /&gt;
    previousSzene = szene;&lt;br /&gt;
    println(szene);&lt;br /&gt;
&lt;br /&gt;
    if (szene == 0) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;be.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;come.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;together.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;withMe.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 1) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 2) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void keyPressed() {&lt;br /&gt;
  if ((key == 'w' || key == 'W') &amp;amp;&amp;amp; w_released == true &amp;amp;&amp;amp; w_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0);&lt;br /&gt;
    w_released = false;&lt;br /&gt;
    sound(0);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    w_count ++;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'a' || key == 'A') &amp;amp;&amp;amp; a_released == true &amp;amp;&amp;amp; a_count &amp;lt; maxCount) {&lt;br /&gt;
    background(200, 0, 0);&lt;br /&gt;
    a_released = false;&lt;br /&gt;
    sound(1);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    a_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 's' || key == 'S') &amp;amp;&amp;amp; s_released == true &amp;amp;&amp;amp; s_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 200, 0);&lt;br /&gt;
    s_released = false;&lt;br /&gt;
    sound(2);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    s_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'd' || key == 'D') &amp;amp;&amp;amp; d_released == true &amp;amp;&amp;amp; d_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 0, 200);&lt;br /&gt;
    d_released = false;&lt;br /&gt;
    sound(3);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    d_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void keyReleased() {&lt;br /&gt;
  if (key == 'd' || key == 'D') {&lt;br /&gt;
    d_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'a' || key == 'A') {&lt;br /&gt;
    a_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 's' || key == 'S') {&lt;br /&gt;
    s_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'w' || key == 'W') {&lt;br /&gt;
    w_released = true;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rodolfo.acostacastro</name></author>
	</entry>
	<entry>
		<id>http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2791</id>
		<title>Random Acts of Vulnerability</title>
		<link rel="alternate" type="text/html" href="http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2791"/>
		<updated>2021-12-01T20:12:35Z</updated>

		<summary type="html">&lt;p&gt;Rodolfo.acostacastro: /* DOME (3 mini-dom) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Random Acts of Vulnerability ist ein immersives Spiel für vier Spieler*innen in vier Dimensionen.  Durch Erkundung und Dokumentation der jeweils eigenen Dimension, formen die Spieler*innen anhand des Gesammelten und Erlebten die Erzählungen selbst.&lt;br /&gt;
Auf ein installatives Netz aus experimentellen Materialen, soften Schaltkreisen, meditativen Klangwelten, grotesken Interfaces und verzerrten Output-Signalen aufbauend, werden Fragen nach Isolation, Einsamkeit, immaterieller und haptischer Vernetzung und der Herstellung von Verhandlungsgrundlagen gestellt.&lt;br /&gt;
&lt;br /&gt;
Eine Arbeit von: Zoe Lohmann, Ella Estrella Tischa Raetzer, Rodolfo Acosta Castro, Lena Böckmann&lt;br /&gt;
&lt;br /&gt;
Video: https://www.youtube.com/watch?v=850KCMYEAow&amp;amp;t=7s&lt;br /&gt;
&lt;br /&gt;
https://live.staticflickr.com/65535/51681534884_545f161fd9.jpg&lt;br /&gt;
&lt;br /&gt;
= dokumentation_JAM &amp;lt;span style='font-size:50px;'&amp;gt;&amp;amp;#128206;&amp;lt;/span&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:doku_nextLevel.jpg| thumb |Die Frage ist: wie stellt man eine Dokumentation?]]&lt;br /&gt;
&lt;br /&gt;
* Bilddokumentation sammelt und einordnen &lt;br /&gt;
* künstlerisch/ästhetisch mit dem Material umgehen&lt;br /&gt;
* Dokumentieren auch Fehler, persönliche Ansprüche und Gespräche, Unerwartetes genauso wie&lt;br /&gt;
* Code-Snippets, Schaltpläne, Materialen, Skizzen&lt;br /&gt;
* usw.&lt;br /&gt;
* let's go! &amp;amp;#128293; &lt;br /&gt;
&lt;br /&gt;
PS --&amp;gt; [https://www.w3schools.com/charsets/ref_emoji.asp how to display Emojis: ]&lt;br /&gt;
&lt;br /&gt;
= DOME 1 = &lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
*Stretch-Jersey&lt;br /&gt;
*Polymorph&lt;br /&gt;
*Audiojacks&lt;br /&gt;
*Aux-Kabel&lt;br /&gt;
*Kunstblumen&lt;br /&gt;
*Röhrenfernsehe&lt;br /&gt;
etc...&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
*Processing-Codes&lt;br /&gt;
*Fingerhäkeln: https://www.youtube.com/watch?v=vfScF5EQ3sU&lt;br /&gt;
&lt;br /&gt;
== Sound == &lt;br /&gt;
 &lt;br /&gt;
*Klangbeispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= DOME 2 =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
Watte, Silikon, Kunstblumen, LED-Kerzen....&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
== Sound/Klang == &lt;br /&gt;
&lt;br /&gt;
Beispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= DOME 3(mini-dom)  =&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
Kunstrasen, Number pad, Bürstenroboter, ...&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
== Sound == &lt;br /&gt;
&lt;br /&gt;
Beispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= relevant links =&lt;br /&gt;
&lt;br /&gt;
ESP with Arduino: http://hyperdramatik.net/mediawiki/index.php?title=ESP32_mit_Arduino&lt;br /&gt;
&lt;br /&gt;
MQTT: http://hyperdramatik.net/mediawiki/index.php?title=Hauptseite#MQTT&lt;br /&gt;
&lt;br /&gt;
DOMEs: http://hyperdramatik.net/mediawiki/index.php?title=Dome_Pod_KIT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= code examples from the project =&lt;br /&gt;
&lt;br /&gt;
== Arduino code for sounds in the fishing-dome ==&lt;br /&gt;
&lt;br /&gt;
// running on an ESP [[Spaghetti Monster]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
&lt;br /&gt;
byte analogPins[] = {&lt;br /&gt;
36, 39, 34, 35, 32, 33&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    pinMode(analogPins[i], INPUT);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    Serial.print(analogRead(analogPins[i]));&lt;br /&gt;
    Serial.print(&amp;quot;\t&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  delay(20);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the fishing-dome ==&lt;br /&gt;
 &lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the fishing-dome&lt;br /&gt;
 &lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import processing.serial.*;&lt;br /&gt;
import ddf.minim.*;&lt;br /&gt;
Serial myPort;    &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
//change these:&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
int ADCmax = 4095; &lt;br /&gt;
//int ADCmax = 1023;&lt;br /&gt;
float[] sensorThresholds = {1000, 1000, 1000, 1000, 1000, 1000};//new float[numOfSensors];&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
float[] sensorValues = new float[numOfSensors];&lt;br /&gt;
float[] previousSensorValues = new float[numOfSensors];&lt;br /&gt;
float xpos = 0;&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(600, 400);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  background(255);&lt;br /&gt;
&lt;br /&gt;
  println(Serial.list());&lt;br /&gt;
  String portName = Serial.list()[1];&lt;br /&gt;
  myPort = new Serial(this, &amp;quot;/dev/cu.SLAB_USBtoUART&amp;quot;, 9600);&lt;br /&gt;
  myPort.clear();&lt;br /&gt;
  myPort.bufferUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  sound0 = minim.loadSample( &amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound1 = minim.loadSample(&amp;quot;crazyfrogbardcore.wav&amp;quot;, 512);&lt;br /&gt;
  sound2 = minim.loadSample(&amp;quot;musterfinal.wav&amp;quot;, 512);&lt;br /&gt;
  sound3 = minim.loadSample(&amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound4 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 512);&lt;br /&gt;
  sound5 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 512);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  graph();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void graph() {&lt;br /&gt;
  for (int i=0; i&amp;lt;numOfSensors; i++) {&lt;br /&gt;
    if (sensorValues[i] &amp;lt; sensorThresholds[i]) sound(i);&lt;br /&gt;
&lt;br /&gt;
    // map the incoming values to an appropriate range:&lt;br /&gt;
    float ypos = map(sensorValues[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
&lt;br /&gt;
    // figure out the y position for this particular graph:&lt;br /&gt;
    float graphBottom = i * height/numOfSensors;&lt;br /&gt;
    ypos = ypos + graphBottom;&lt;br /&gt;
&lt;br /&gt;
    // draw the graph bottoms:&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    line(0, graphBottom, width, graphBottom);&lt;br /&gt;
&lt;br /&gt;
    // draw the thresholds:&lt;br /&gt;
    stroke(200, 0, 0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    float redLine = map(sensorThresholds[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
    line(0, redLine + graphBottom, width, redLine + graphBottom);&lt;br /&gt;
&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(2);&lt;br /&gt;
    line(xpos, previousSensorValues[i], xpos+1, ypos);&lt;br /&gt;
&lt;br /&gt;
    previousSensorValues[i] = ypos;&lt;br /&gt;
&lt;br /&gt;
    // if you've drawn to the edge of the window, start at the beginning again:&lt;br /&gt;
    if (xpos &amp;gt;= width) {&lt;br /&gt;
      xpos = 0;&lt;br /&gt;
      background(215);&lt;br /&gt;
    } else xpos+=0.1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void serialEvent (Serial myPort) {&lt;br /&gt;
  // get the ASCII string:&lt;br /&gt;
  String inString = myPort.readStringUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  // if it's not empty:&lt;br /&gt;
  if (inString != null) {&lt;br /&gt;
    // trim off any whitespace:&lt;br /&gt;
    inString = trim(inString);&lt;br /&gt;
&lt;br /&gt;
    // convert to an array of ints:&lt;br /&gt;
    int incomingValues[] = int(split(inString, &amp;quot;\t&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
    if (incomingValues.length &amp;lt;= numOfSensors &amp;amp;&amp;amp; incomingValues.length &amp;gt; 0) {&lt;br /&gt;
      for (int i = 0; i &amp;lt; incomingValues.length; i++) {&lt;br /&gt;
        sensorValues[i] = incomingValues[i];&lt;br /&gt;
        print(sensorValues[i] + &amp;quot;\t&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      println();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 4: &lt;br /&gt;
    sound4.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 5: &lt;br /&gt;
    sound5.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the dating-dome ==&lt;br /&gt;
&lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the dating-dome&lt;br /&gt;
 &lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import ddf.minim.*;  &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
int delayTime = 800;&lt;br /&gt;
boolean w_released = true;&lt;br /&gt;
boolean d_released = true;&lt;br /&gt;
boolean s_released = true;&lt;br /&gt;
boolean a_released = true;&lt;br /&gt;
int maxCount = 3;&lt;br /&gt;
int w_count = 0;&lt;br /&gt;
int a_count = 0;&lt;br /&gt;
int s_count = 0;&lt;br /&gt;
int d_count = 0;&lt;br /&gt;
int szene = 0;&lt;br /&gt;
int previousSzene;&lt;br /&gt;
int soundChangeInterval = 5000;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(1000, 800);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  background(255);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  szene = minute() % 3;&lt;br /&gt;
  if (szene != previousSzene) {&lt;br /&gt;
    previousSzene = szene;&lt;br /&gt;
    println(szene);&lt;br /&gt;
&lt;br /&gt;
    if (szene == 0) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;be.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;come.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;together.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;withMe.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 1) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 2) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void keyPressed() {&lt;br /&gt;
  if ((key == 'w' || key == 'W') &amp;amp;&amp;amp; w_released == true &amp;amp;&amp;amp; w_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0);&lt;br /&gt;
    w_released = false;&lt;br /&gt;
    sound(0);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    w_count ++;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'a' || key == 'A') &amp;amp;&amp;amp; a_released == true &amp;amp;&amp;amp; a_count &amp;lt; maxCount) {&lt;br /&gt;
    background(200, 0, 0);&lt;br /&gt;
    a_released = false;&lt;br /&gt;
    sound(1);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    a_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 's' || key == 'S') &amp;amp;&amp;amp; s_released == true &amp;amp;&amp;amp; s_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 200, 0);&lt;br /&gt;
    s_released = false;&lt;br /&gt;
    sound(2);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    s_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'd' || key == 'D') &amp;amp;&amp;amp; d_released == true &amp;amp;&amp;amp; d_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 0, 200);&lt;br /&gt;
    d_released = false;&lt;br /&gt;
    sound(3);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    d_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void keyReleased() {&lt;br /&gt;
  if (key == 'd' || key == 'D') {&lt;br /&gt;
    d_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'a' || key == 'A') {&lt;br /&gt;
    a_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 's' || key == 'S') {&lt;br /&gt;
    s_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'w' || key == 'W') {&lt;br /&gt;
    w_released = true;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rodolfo.acostacastro</name></author>
	</entry>
	<entry>
		<id>http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2790</id>
		<title>Random Acts of Vulnerability</title>
		<link rel="alternate" type="text/html" href="http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2790"/>
		<updated>2021-12-01T20:12:14Z</updated>

		<summary type="html">&lt;p&gt;Rodolfo.acostacastro: /* DOME 3 mini-dom */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Random Acts of Vulnerability ist ein immersives Spiel für vier Spieler*innen in vier Dimensionen.  Durch Erkundung und Dokumentation der jeweils eigenen Dimension, formen die Spieler*innen anhand des Gesammelten und Erlebten die Erzählungen selbst.&lt;br /&gt;
Auf ein installatives Netz aus experimentellen Materialen, soften Schaltkreisen, meditativen Klangwelten, grotesken Interfaces und verzerrten Output-Signalen aufbauend, werden Fragen nach Isolation, Einsamkeit, immaterieller und haptischer Vernetzung und der Herstellung von Verhandlungsgrundlagen gestellt.&lt;br /&gt;
&lt;br /&gt;
Eine Arbeit von: Zoe Lohmann, Ella Estrella Tischa Raetzer, Rodolfo Acosta Castro, Lena Böckmann&lt;br /&gt;
&lt;br /&gt;
Video: https://www.youtube.com/watch?v=850KCMYEAow&amp;amp;t=7s&lt;br /&gt;
&lt;br /&gt;
https://live.staticflickr.com/65535/51681534884_545f161fd9.jpg&lt;br /&gt;
&lt;br /&gt;
= dokumentation_JAM &amp;lt;span style='font-size:50px;'&amp;gt;&amp;amp;#128206;&amp;lt;/span&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:doku_nextLevel.jpg| thumb |Die Frage ist: wie stellt man eine Dokumentation?]]&lt;br /&gt;
&lt;br /&gt;
* Bilddokumentation sammelt und einordnen &lt;br /&gt;
* künstlerisch/ästhetisch mit dem Material umgehen&lt;br /&gt;
* Dokumentieren auch Fehler, persönliche Ansprüche und Gespräche, Unerwartetes genauso wie&lt;br /&gt;
* Code-Snippets, Schaltpläne, Materialen, Skizzen&lt;br /&gt;
* usw.&lt;br /&gt;
* let's go! &amp;amp;#128293; &lt;br /&gt;
&lt;br /&gt;
PS --&amp;gt; [https://www.w3schools.com/charsets/ref_emoji.asp how to display Emojis: ]&lt;br /&gt;
&lt;br /&gt;
= DOME 1 = &lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
*Stretch-Jersey&lt;br /&gt;
*Polymorph&lt;br /&gt;
*Audiojacks&lt;br /&gt;
*Aux-Kabel&lt;br /&gt;
*Kunstblumen&lt;br /&gt;
*Röhrenfernsehe&lt;br /&gt;
etc...&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
*Processing-Codes&lt;br /&gt;
*Fingerhäkeln: https://www.youtube.com/watch?v=vfScF5EQ3sU&lt;br /&gt;
&lt;br /&gt;
== Sound == &lt;br /&gt;
 &lt;br /&gt;
*Klangbeispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= DOME 2 =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
Watte, Silikon, Kunstblumen, LED-Kerzen....&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
== Sound/Klang == &lt;br /&gt;
&lt;br /&gt;
Beispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= DOME (3 mini-dom)  =&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
Kunstrasen, Number pad, Bürstenroboter, ...&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
== Sound == &lt;br /&gt;
&lt;br /&gt;
Beispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= relevant links =&lt;br /&gt;
&lt;br /&gt;
ESP with Arduino: http://hyperdramatik.net/mediawiki/index.php?title=ESP32_mit_Arduino&lt;br /&gt;
&lt;br /&gt;
MQTT: http://hyperdramatik.net/mediawiki/index.php?title=Hauptseite#MQTT&lt;br /&gt;
&lt;br /&gt;
DOMEs: http://hyperdramatik.net/mediawiki/index.php?title=Dome_Pod_KIT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= code examples from the project =&lt;br /&gt;
&lt;br /&gt;
== Arduino code for sounds in the fishing-dome ==&lt;br /&gt;
&lt;br /&gt;
// running on an ESP [[Spaghetti Monster]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
&lt;br /&gt;
byte analogPins[] = {&lt;br /&gt;
36, 39, 34, 35, 32, 33&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    pinMode(analogPins[i], INPUT);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    Serial.print(analogRead(analogPins[i]));&lt;br /&gt;
    Serial.print(&amp;quot;\t&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  delay(20);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the fishing-dome ==&lt;br /&gt;
 &lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the fishing-dome&lt;br /&gt;
 &lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import processing.serial.*;&lt;br /&gt;
import ddf.minim.*;&lt;br /&gt;
Serial myPort;    &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
//change these:&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
int ADCmax = 4095; &lt;br /&gt;
//int ADCmax = 1023;&lt;br /&gt;
float[] sensorThresholds = {1000, 1000, 1000, 1000, 1000, 1000};//new float[numOfSensors];&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
float[] sensorValues = new float[numOfSensors];&lt;br /&gt;
float[] previousSensorValues = new float[numOfSensors];&lt;br /&gt;
float xpos = 0;&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(600, 400);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  background(255);&lt;br /&gt;
&lt;br /&gt;
  println(Serial.list());&lt;br /&gt;
  String portName = Serial.list()[1];&lt;br /&gt;
  myPort = new Serial(this, &amp;quot;/dev/cu.SLAB_USBtoUART&amp;quot;, 9600);&lt;br /&gt;
  myPort.clear();&lt;br /&gt;
  myPort.bufferUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  sound0 = minim.loadSample( &amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound1 = minim.loadSample(&amp;quot;crazyfrogbardcore.wav&amp;quot;, 512);&lt;br /&gt;
  sound2 = minim.loadSample(&amp;quot;musterfinal.wav&amp;quot;, 512);&lt;br /&gt;
  sound3 = minim.loadSample(&amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound4 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 512);&lt;br /&gt;
  sound5 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 512);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  graph();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void graph() {&lt;br /&gt;
  for (int i=0; i&amp;lt;numOfSensors; i++) {&lt;br /&gt;
    if (sensorValues[i] &amp;lt; sensorThresholds[i]) sound(i);&lt;br /&gt;
&lt;br /&gt;
    // map the incoming values to an appropriate range:&lt;br /&gt;
    float ypos = map(sensorValues[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
&lt;br /&gt;
    // figure out the y position for this particular graph:&lt;br /&gt;
    float graphBottom = i * height/numOfSensors;&lt;br /&gt;
    ypos = ypos + graphBottom;&lt;br /&gt;
&lt;br /&gt;
    // draw the graph bottoms:&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    line(0, graphBottom, width, graphBottom);&lt;br /&gt;
&lt;br /&gt;
    // draw the thresholds:&lt;br /&gt;
    stroke(200, 0, 0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    float redLine = map(sensorThresholds[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
    line(0, redLine + graphBottom, width, redLine + graphBottom);&lt;br /&gt;
&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(2);&lt;br /&gt;
    line(xpos, previousSensorValues[i], xpos+1, ypos);&lt;br /&gt;
&lt;br /&gt;
    previousSensorValues[i] = ypos;&lt;br /&gt;
&lt;br /&gt;
    // if you've drawn to the edge of the window, start at the beginning again:&lt;br /&gt;
    if (xpos &amp;gt;= width) {&lt;br /&gt;
      xpos = 0;&lt;br /&gt;
      background(215);&lt;br /&gt;
    } else xpos+=0.1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void serialEvent (Serial myPort) {&lt;br /&gt;
  // get the ASCII string:&lt;br /&gt;
  String inString = myPort.readStringUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  // if it's not empty:&lt;br /&gt;
  if (inString != null) {&lt;br /&gt;
    // trim off any whitespace:&lt;br /&gt;
    inString = trim(inString);&lt;br /&gt;
&lt;br /&gt;
    // convert to an array of ints:&lt;br /&gt;
    int incomingValues[] = int(split(inString, &amp;quot;\t&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
    if (incomingValues.length &amp;lt;= numOfSensors &amp;amp;&amp;amp; incomingValues.length &amp;gt; 0) {&lt;br /&gt;
      for (int i = 0; i &amp;lt; incomingValues.length; i++) {&lt;br /&gt;
        sensorValues[i] = incomingValues[i];&lt;br /&gt;
        print(sensorValues[i] + &amp;quot;\t&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      println();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 4: &lt;br /&gt;
    sound4.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 5: &lt;br /&gt;
    sound5.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the dating-dome ==&lt;br /&gt;
&lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the dating-dome&lt;br /&gt;
 &lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import ddf.minim.*;  &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
int delayTime = 800;&lt;br /&gt;
boolean w_released = true;&lt;br /&gt;
boolean d_released = true;&lt;br /&gt;
boolean s_released = true;&lt;br /&gt;
boolean a_released = true;&lt;br /&gt;
int maxCount = 3;&lt;br /&gt;
int w_count = 0;&lt;br /&gt;
int a_count = 0;&lt;br /&gt;
int s_count = 0;&lt;br /&gt;
int d_count = 0;&lt;br /&gt;
int szene = 0;&lt;br /&gt;
int previousSzene;&lt;br /&gt;
int soundChangeInterval = 5000;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(1000, 800);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  background(255);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  szene = minute() % 3;&lt;br /&gt;
  if (szene != previousSzene) {&lt;br /&gt;
    previousSzene = szene;&lt;br /&gt;
    println(szene);&lt;br /&gt;
&lt;br /&gt;
    if (szene == 0) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;be.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;come.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;together.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;withMe.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 1) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 2) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void keyPressed() {&lt;br /&gt;
  if ((key == 'w' || key == 'W') &amp;amp;&amp;amp; w_released == true &amp;amp;&amp;amp; w_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0);&lt;br /&gt;
    w_released = false;&lt;br /&gt;
    sound(0);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    w_count ++;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'a' || key == 'A') &amp;amp;&amp;amp; a_released == true &amp;amp;&amp;amp; a_count &amp;lt; maxCount) {&lt;br /&gt;
    background(200, 0, 0);&lt;br /&gt;
    a_released = false;&lt;br /&gt;
    sound(1);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    a_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 's' || key == 'S') &amp;amp;&amp;amp; s_released == true &amp;amp;&amp;amp; s_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 200, 0);&lt;br /&gt;
    s_released = false;&lt;br /&gt;
    sound(2);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    s_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'd' || key == 'D') &amp;amp;&amp;amp; d_released == true &amp;amp;&amp;amp; d_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 0, 200);&lt;br /&gt;
    d_released = false;&lt;br /&gt;
    sound(3);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    d_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void keyReleased() {&lt;br /&gt;
  if (key == 'd' || key == 'D') {&lt;br /&gt;
    d_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'a' || key == 'A') {&lt;br /&gt;
    a_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 's' || key == 'S') {&lt;br /&gt;
    s_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'w' || key == 'W') {&lt;br /&gt;
    w_released = true;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rodolfo.acostacastro</name></author>
	</entry>
	<entry>
		<id>http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2789</id>
		<title>Random Acts of Vulnerability</title>
		<link rel="alternate" type="text/html" href="http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2789"/>
		<updated>2021-12-01T20:11:42Z</updated>

		<summary type="html">&lt;p&gt;Rodolfo.acostacastro: /* DOME 3 MINI-DOM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Random Acts of Vulnerability ist ein immersives Spiel für vier Spieler*innen in vier Dimensionen.  Durch Erkundung und Dokumentation der jeweils eigenen Dimension, formen die Spieler*innen anhand des Gesammelten und Erlebten die Erzählungen selbst.&lt;br /&gt;
Auf ein installatives Netz aus experimentellen Materialen, soften Schaltkreisen, meditativen Klangwelten, grotesken Interfaces und verzerrten Output-Signalen aufbauend, werden Fragen nach Isolation, Einsamkeit, immaterieller und haptischer Vernetzung und der Herstellung von Verhandlungsgrundlagen gestellt.&lt;br /&gt;
&lt;br /&gt;
Eine Arbeit von: Zoe Lohmann, Ella Estrella Tischa Raetzer, Rodolfo Acosta Castro, Lena Böckmann&lt;br /&gt;
&lt;br /&gt;
Video: https://www.youtube.com/watch?v=850KCMYEAow&amp;amp;t=7s&lt;br /&gt;
&lt;br /&gt;
https://live.staticflickr.com/65535/51681534884_545f161fd9.jpg&lt;br /&gt;
&lt;br /&gt;
= dokumentation_JAM &amp;lt;span style='font-size:50px;'&amp;gt;&amp;amp;#128206;&amp;lt;/span&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:doku_nextLevel.jpg| thumb |Die Frage ist: wie stellt man eine Dokumentation?]]&lt;br /&gt;
&lt;br /&gt;
* Bilddokumentation sammelt und einordnen &lt;br /&gt;
* künstlerisch/ästhetisch mit dem Material umgehen&lt;br /&gt;
* Dokumentieren auch Fehler, persönliche Ansprüche und Gespräche, Unerwartetes genauso wie&lt;br /&gt;
* Code-Snippets, Schaltpläne, Materialen, Skizzen&lt;br /&gt;
* usw.&lt;br /&gt;
* let's go! &amp;amp;#128293; &lt;br /&gt;
&lt;br /&gt;
PS --&amp;gt; [https://www.w3schools.com/charsets/ref_emoji.asp how to display Emojis: ]&lt;br /&gt;
&lt;br /&gt;
= DOME 1 = &lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
*Stretch-Jersey&lt;br /&gt;
*Polymorph&lt;br /&gt;
*Audiojacks&lt;br /&gt;
*Aux-Kabel&lt;br /&gt;
*Kunstblumen&lt;br /&gt;
*Röhrenfernsehe&lt;br /&gt;
etc...&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
*Processing-Codes&lt;br /&gt;
*Fingerhäkeln: https://www.youtube.com/watch?v=vfScF5EQ3sU&lt;br /&gt;
&lt;br /&gt;
== Sound == &lt;br /&gt;
 &lt;br /&gt;
*Klangbeispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= DOME 2 =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
Watte, Silikon, Kunstblumen, LED-Kerzen....&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
== Sound/Klang == &lt;br /&gt;
&lt;br /&gt;
Beispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= DOME 3 mini-dom  =&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
Kunstrasen, Number pad, Bürstenroboter, ...&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
== Sound == &lt;br /&gt;
&lt;br /&gt;
Beispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= relevant links =&lt;br /&gt;
&lt;br /&gt;
ESP with Arduino: http://hyperdramatik.net/mediawiki/index.php?title=ESP32_mit_Arduino&lt;br /&gt;
&lt;br /&gt;
MQTT: http://hyperdramatik.net/mediawiki/index.php?title=Hauptseite#MQTT&lt;br /&gt;
&lt;br /&gt;
DOMEs: http://hyperdramatik.net/mediawiki/index.php?title=Dome_Pod_KIT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= code examples from the project =&lt;br /&gt;
&lt;br /&gt;
== Arduino code for sounds in the fishing-dome ==&lt;br /&gt;
&lt;br /&gt;
// running on an ESP [[Spaghetti Monster]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
&lt;br /&gt;
byte analogPins[] = {&lt;br /&gt;
36, 39, 34, 35, 32, 33&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    pinMode(analogPins[i], INPUT);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    Serial.print(analogRead(analogPins[i]));&lt;br /&gt;
    Serial.print(&amp;quot;\t&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  delay(20);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the fishing-dome ==&lt;br /&gt;
 &lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the fishing-dome&lt;br /&gt;
 &lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import processing.serial.*;&lt;br /&gt;
import ddf.minim.*;&lt;br /&gt;
Serial myPort;    &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
//change these:&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
int ADCmax = 4095; &lt;br /&gt;
//int ADCmax = 1023;&lt;br /&gt;
float[] sensorThresholds = {1000, 1000, 1000, 1000, 1000, 1000};//new float[numOfSensors];&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
float[] sensorValues = new float[numOfSensors];&lt;br /&gt;
float[] previousSensorValues = new float[numOfSensors];&lt;br /&gt;
float xpos = 0;&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(600, 400);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  background(255);&lt;br /&gt;
&lt;br /&gt;
  println(Serial.list());&lt;br /&gt;
  String portName = Serial.list()[1];&lt;br /&gt;
  myPort = new Serial(this, &amp;quot;/dev/cu.SLAB_USBtoUART&amp;quot;, 9600);&lt;br /&gt;
  myPort.clear();&lt;br /&gt;
  myPort.bufferUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  sound0 = minim.loadSample( &amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound1 = minim.loadSample(&amp;quot;crazyfrogbardcore.wav&amp;quot;, 512);&lt;br /&gt;
  sound2 = minim.loadSample(&amp;quot;musterfinal.wav&amp;quot;, 512);&lt;br /&gt;
  sound3 = minim.loadSample(&amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound4 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 512);&lt;br /&gt;
  sound5 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 512);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  graph();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void graph() {&lt;br /&gt;
  for (int i=0; i&amp;lt;numOfSensors; i++) {&lt;br /&gt;
    if (sensorValues[i] &amp;lt; sensorThresholds[i]) sound(i);&lt;br /&gt;
&lt;br /&gt;
    // map the incoming values to an appropriate range:&lt;br /&gt;
    float ypos = map(sensorValues[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
&lt;br /&gt;
    // figure out the y position for this particular graph:&lt;br /&gt;
    float graphBottom = i * height/numOfSensors;&lt;br /&gt;
    ypos = ypos + graphBottom;&lt;br /&gt;
&lt;br /&gt;
    // draw the graph bottoms:&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    line(0, graphBottom, width, graphBottom);&lt;br /&gt;
&lt;br /&gt;
    // draw the thresholds:&lt;br /&gt;
    stroke(200, 0, 0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    float redLine = map(sensorThresholds[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
    line(0, redLine + graphBottom, width, redLine + graphBottom);&lt;br /&gt;
&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(2);&lt;br /&gt;
    line(xpos, previousSensorValues[i], xpos+1, ypos);&lt;br /&gt;
&lt;br /&gt;
    previousSensorValues[i] = ypos;&lt;br /&gt;
&lt;br /&gt;
    // if you've drawn to the edge of the window, start at the beginning again:&lt;br /&gt;
    if (xpos &amp;gt;= width) {&lt;br /&gt;
      xpos = 0;&lt;br /&gt;
      background(215);&lt;br /&gt;
    } else xpos+=0.1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void serialEvent (Serial myPort) {&lt;br /&gt;
  // get the ASCII string:&lt;br /&gt;
  String inString = myPort.readStringUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  // if it's not empty:&lt;br /&gt;
  if (inString != null) {&lt;br /&gt;
    // trim off any whitespace:&lt;br /&gt;
    inString = trim(inString);&lt;br /&gt;
&lt;br /&gt;
    // convert to an array of ints:&lt;br /&gt;
    int incomingValues[] = int(split(inString, &amp;quot;\t&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
    if (incomingValues.length &amp;lt;= numOfSensors &amp;amp;&amp;amp; incomingValues.length &amp;gt; 0) {&lt;br /&gt;
      for (int i = 0; i &amp;lt; incomingValues.length; i++) {&lt;br /&gt;
        sensorValues[i] = incomingValues[i];&lt;br /&gt;
        print(sensorValues[i] + &amp;quot;\t&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      println();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 4: &lt;br /&gt;
    sound4.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 5: &lt;br /&gt;
    sound5.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the dating-dome ==&lt;br /&gt;
&lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the dating-dome&lt;br /&gt;
 &lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import ddf.minim.*;  &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
int delayTime = 800;&lt;br /&gt;
boolean w_released = true;&lt;br /&gt;
boolean d_released = true;&lt;br /&gt;
boolean s_released = true;&lt;br /&gt;
boolean a_released = true;&lt;br /&gt;
int maxCount = 3;&lt;br /&gt;
int w_count = 0;&lt;br /&gt;
int a_count = 0;&lt;br /&gt;
int s_count = 0;&lt;br /&gt;
int d_count = 0;&lt;br /&gt;
int szene = 0;&lt;br /&gt;
int previousSzene;&lt;br /&gt;
int soundChangeInterval = 5000;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(1000, 800);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  background(255);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  szene = minute() % 3;&lt;br /&gt;
  if (szene != previousSzene) {&lt;br /&gt;
    previousSzene = szene;&lt;br /&gt;
    println(szene);&lt;br /&gt;
&lt;br /&gt;
    if (szene == 0) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;be.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;come.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;together.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;withMe.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 1) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 2) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void keyPressed() {&lt;br /&gt;
  if ((key == 'w' || key == 'W') &amp;amp;&amp;amp; w_released == true &amp;amp;&amp;amp; w_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0);&lt;br /&gt;
    w_released = false;&lt;br /&gt;
    sound(0);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    w_count ++;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'a' || key == 'A') &amp;amp;&amp;amp; a_released == true &amp;amp;&amp;amp; a_count &amp;lt; maxCount) {&lt;br /&gt;
    background(200, 0, 0);&lt;br /&gt;
    a_released = false;&lt;br /&gt;
    sound(1);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    a_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 's' || key == 'S') &amp;amp;&amp;amp; s_released == true &amp;amp;&amp;amp; s_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 200, 0);&lt;br /&gt;
    s_released = false;&lt;br /&gt;
    sound(2);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    s_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'd' || key == 'D') &amp;amp;&amp;amp; d_released == true &amp;amp;&amp;amp; d_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 0, 200);&lt;br /&gt;
    d_released = false;&lt;br /&gt;
    sound(3);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    d_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void keyReleased() {&lt;br /&gt;
  if (key == 'd' || key == 'D') {&lt;br /&gt;
    d_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'a' || key == 'A') {&lt;br /&gt;
    a_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 's' || key == 'S') {&lt;br /&gt;
    s_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'w' || key == 'W') {&lt;br /&gt;
    w_released = true;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rodolfo.acostacastro</name></author>
	</entry>
	<entry>
		<id>http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2788</id>
		<title>Random Acts of Vulnerability</title>
		<link rel="alternate" type="text/html" href="http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2788"/>
		<updated>2021-12-01T20:11:06Z</updated>

		<summary type="html">&lt;p&gt;Rodolfo.acostacastro: /* DOME 3 MINI-DOM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Random Acts of Vulnerability ist ein immersives Spiel für vier Spieler*innen in vier Dimensionen.  Durch Erkundung und Dokumentation der jeweils eigenen Dimension, formen die Spieler*innen anhand des Gesammelten und Erlebten die Erzählungen selbst.&lt;br /&gt;
Auf ein installatives Netz aus experimentellen Materialen, soften Schaltkreisen, meditativen Klangwelten, grotesken Interfaces und verzerrten Output-Signalen aufbauend, werden Fragen nach Isolation, Einsamkeit, immaterieller und haptischer Vernetzung und der Herstellung von Verhandlungsgrundlagen gestellt.&lt;br /&gt;
&lt;br /&gt;
Eine Arbeit von: Zoe Lohmann, Ella Estrella Tischa Raetzer, Rodolfo Acosta Castro, Lena Böckmann&lt;br /&gt;
&lt;br /&gt;
Video: https://www.youtube.com/watch?v=850KCMYEAow&amp;amp;t=7s&lt;br /&gt;
&lt;br /&gt;
https://live.staticflickr.com/65535/51681534884_545f161fd9.jpg&lt;br /&gt;
&lt;br /&gt;
= dokumentation_JAM &amp;lt;span style='font-size:50px;'&amp;gt;&amp;amp;#128206;&amp;lt;/span&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:doku_nextLevel.jpg| thumb |Die Frage ist: wie stellt man eine Dokumentation?]]&lt;br /&gt;
&lt;br /&gt;
* Bilddokumentation sammelt und einordnen &lt;br /&gt;
* künstlerisch/ästhetisch mit dem Material umgehen&lt;br /&gt;
* Dokumentieren auch Fehler, persönliche Ansprüche und Gespräche, Unerwartetes genauso wie&lt;br /&gt;
* Code-Snippets, Schaltpläne, Materialen, Skizzen&lt;br /&gt;
* usw.&lt;br /&gt;
* let's go! &amp;amp;#128293; &lt;br /&gt;
&lt;br /&gt;
PS --&amp;gt; [https://www.w3schools.com/charsets/ref_emoji.asp how to display Emojis: ]&lt;br /&gt;
&lt;br /&gt;
= DOME 1 = &lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
*Stretch-Jersey&lt;br /&gt;
*Polymorph&lt;br /&gt;
*Audiojacks&lt;br /&gt;
*Aux-Kabel&lt;br /&gt;
*Kunstblumen&lt;br /&gt;
*Röhrenfernsehe&lt;br /&gt;
etc...&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
*Processing-Codes&lt;br /&gt;
*Fingerhäkeln: https://www.youtube.com/watch?v=vfScF5EQ3sU&lt;br /&gt;
&lt;br /&gt;
== Sound == &lt;br /&gt;
 &lt;br /&gt;
*Klangbeispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= DOME 2 =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
Watte, Silikon, Kunstblumen, LED-Kerzen....&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
== Sound/Klang == &lt;br /&gt;
&lt;br /&gt;
Beispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= DOME 3 MINI-DOM  =&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
Kunstrasen, Number pad, Bürstenroboter, ...&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
== Sound == &lt;br /&gt;
&lt;br /&gt;
Beispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= relevant links =&lt;br /&gt;
&lt;br /&gt;
ESP with Arduino: http://hyperdramatik.net/mediawiki/index.php?title=ESP32_mit_Arduino&lt;br /&gt;
&lt;br /&gt;
MQTT: http://hyperdramatik.net/mediawiki/index.php?title=Hauptseite#MQTT&lt;br /&gt;
&lt;br /&gt;
DOMEs: http://hyperdramatik.net/mediawiki/index.php?title=Dome_Pod_KIT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= code examples from the project =&lt;br /&gt;
&lt;br /&gt;
== Arduino code for sounds in the fishing-dome ==&lt;br /&gt;
&lt;br /&gt;
// running on an ESP [[Spaghetti Monster]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
&lt;br /&gt;
byte analogPins[] = {&lt;br /&gt;
36, 39, 34, 35, 32, 33&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    pinMode(analogPins[i], INPUT);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    Serial.print(analogRead(analogPins[i]));&lt;br /&gt;
    Serial.print(&amp;quot;\t&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  delay(20);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the fishing-dome ==&lt;br /&gt;
 &lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the fishing-dome&lt;br /&gt;
 &lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import processing.serial.*;&lt;br /&gt;
import ddf.minim.*;&lt;br /&gt;
Serial myPort;    &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
//change these:&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
int ADCmax = 4095; &lt;br /&gt;
//int ADCmax = 1023;&lt;br /&gt;
float[] sensorThresholds = {1000, 1000, 1000, 1000, 1000, 1000};//new float[numOfSensors];&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
float[] sensorValues = new float[numOfSensors];&lt;br /&gt;
float[] previousSensorValues = new float[numOfSensors];&lt;br /&gt;
float xpos = 0;&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(600, 400);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  background(255);&lt;br /&gt;
&lt;br /&gt;
  println(Serial.list());&lt;br /&gt;
  String portName = Serial.list()[1];&lt;br /&gt;
  myPort = new Serial(this, &amp;quot;/dev/cu.SLAB_USBtoUART&amp;quot;, 9600);&lt;br /&gt;
  myPort.clear();&lt;br /&gt;
  myPort.bufferUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  sound0 = minim.loadSample( &amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound1 = minim.loadSample(&amp;quot;crazyfrogbardcore.wav&amp;quot;, 512);&lt;br /&gt;
  sound2 = minim.loadSample(&amp;quot;musterfinal.wav&amp;quot;, 512);&lt;br /&gt;
  sound3 = minim.loadSample(&amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound4 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 512);&lt;br /&gt;
  sound5 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 512);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  graph();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void graph() {&lt;br /&gt;
  for (int i=0; i&amp;lt;numOfSensors; i++) {&lt;br /&gt;
    if (sensorValues[i] &amp;lt; sensorThresholds[i]) sound(i);&lt;br /&gt;
&lt;br /&gt;
    // map the incoming values to an appropriate range:&lt;br /&gt;
    float ypos = map(sensorValues[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
&lt;br /&gt;
    // figure out the y position for this particular graph:&lt;br /&gt;
    float graphBottom = i * height/numOfSensors;&lt;br /&gt;
    ypos = ypos + graphBottom;&lt;br /&gt;
&lt;br /&gt;
    // draw the graph bottoms:&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    line(0, graphBottom, width, graphBottom);&lt;br /&gt;
&lt;br /&gt;
    // draw the thresholds:&lt;br /&gt;
    stroke(200, 0, 0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    float redLine = map(sensorThresholds[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
    line(0, redLine + graphBottom, width, redLine + graphBottom);&lt;br /&gt;
&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(2);&lt;br /&gt;
    line(xpos, previousSensorValues[i], xpos+1, ypos);&lt;br /&gt;
&lt;br /&gt;
    previousSensorValues[i] = ypos;&lt;br /&gt;
&lt;br /&gt;
    // if you've drawn to the edge of the window, start at the beginning again:&lt;br /&gt;
    if (xpos &amp;gt;= width) {&lt;br /&gt;
      xpos = 0;&lt;br /&gt;
      background(215);&lt;br /&gt;
    } else xpos+=0.1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void serialEvent (Serial myPort) {&lt;br /&gt;
  // get the ASCII string:&lt;br /&gt;
  String inString = myPort.readStringUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  // if it's not empty:&lt;br /&gt;
  if (inString != null) {&lt;br /&gt;
    // trim off any whitespace:&lt;br /&gt;
    inString = trim(inString);&lt;br /&gt;
&lt;br /&gt;
    // convert to an array of ints:&lt;br /&gt;
    int incomingValues[] = int(split(inString, &amp;quot;\t&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
    if (incomingValues.length &amp;lt;= numOfSensors &amp;amp;&amp;amp; incomingValues.length &amp;gt; 0) {&lt;br /&gt;
      for (int i = 0; i &amp;lt; incomingValues.length; i++) {&lt;br /&gt;
        sensorValues[i] = incomingValues[i];&lt;br /&gt;
        print(sensorValues[i] + &amp;quot;\t&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      println();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 4: &lt;br /&gt;
    sound4.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 5: &lt;br /&gt;
    sound5.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the dating-dome ==&lt;br /&gt;
&lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the dating-dome&lt;br /&gt;
 &lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import ddf.minim.*;  &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
int delayTime = 800;&lt;br /&gt;
boolean w_released = true;&lt;br /&gt;
boolean d_released = true;&lt;br /&gt;
boolean s_released = true;&lt;br /&gt;
boolean a_released = true;&lt;br /&gt;
int maxCount = 3;&lt;br /&gt;
int w_count = 0;&lt;br /&gt;
int a_count = 0;&lt;br /&gt;
int s_count = 0;&lt;br /&gt;
int d_count = 0;&lt;br /&gt;
int szene = 0;&lt;br /&gt;
int previousSzene;&lt;br /&gt;
int soundChangeInterval = 5000;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(1000, 800);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  background(255);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  szene = minute() % 3;&lt;br /&gt;
  if (szene != previousSzene) {&lt;br /&gt;
    previousSzene = szene;&lt;br /&gt;
    println(szene);&lt;br /&gt;
&lt;br /&gt;
    if (szene == 0) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;be.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;come.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;together.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;withMe.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 1) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 2) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void keyPressed() {&lt;br /&gt;
  if ((key == 'w' || key == 'W') &amp;amp;&amp;amp; w_released == true &amp;amp;&amp;amp; w_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0);&lt;br /&gt;
    w_released = false;&lt;br /&gt;
    sound(0);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    w_count ++;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'a' || key == 'A') &amp;amp;&amp;amp; a_released == true &amp;amp;&amp;amp; a_count &amp;lt; maxCount) {&lt;br /&gt;
    background(200, 0, 0);&lt;br /&gt;
    a_released = false;&lt;br /&gt;
    sound(1);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    a_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 's' || key == 'S') &amp;amp;&amp;amp; s_released == true &amp;amp;&amp;amp; s_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 200, 0);&lt;br /&gt;
    s_released = false;&lt;br /&gt;
    sound(2);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    s_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'd' || key == 'D') &amp;amp;&amp;amp; d_released == true &amp;amp;&amp;amp; d_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 0, 200);&lt;br /&gt;
    d_released = false;&lt;br /&gt;
    sound(3);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    d_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void keyReleased() {&lt;br /&gt;
  if (key == 'd' || key == 'D') {&lt;br /&gt;
    d_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'a' || key == 'A') {&lt;br /&gt;
    a_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 's' || key == 'S') {&lt;br /&gt;
    s_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'w' || key == 'W') {&lt;br /&gt;
    w_released = true;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rodolfo.acostacastro</name></author>
	</entry>
	<entry>
		<id>http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2787</id>
		<title>Random Acts of Vulnerability</title>
		<link rel="alternate" type="text/html" href="http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2787"/>
		<updated>2021-12-01T20:08:16Z</updated>

		<summary type="html">&lt;p&gt;Rodolfo.acostacastro: /* dokumentation_JAM &amp;amp;#128206; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Random Acts of Vulnerability ist ein immersives Spiel für vier Spieler*innen in vier Dimensionen.  Durch Erkundung und Dokumentation der jeweils eigenen Dimension, formen die Spieler*innen anhand des Gesammelten und Erlebten die Erzählungen selbst.&lt;br /&gt;
Auf ein installatives Netz aus experimentellen Materialen, soften Schaltkreisen, meditativen Klangwelten, grotesken Interfaces und verzerrten Output-Signalen aufbauend, werden Fragen nach Isolation, Einsamkeit, immaterieller und haptischer Vernetzung und der Herstellung von Verhandlungsgrundlagen gestellt.&lt;br /&gt;
&lt;br /&gt;
Eine Arbeit von: Zoe Lohmann, Ella Estrella Tischa Raetzer, Rodolfo Acosta Castro, Lena Böckmann&lt;br /&gt;
&lt;br /&gt;
Video: https://www.youtube.com/watch?v=850KCMYEAow&amp;amp;t=7s&lt;br /&gt;
&lt;br /&gt;
https://live.staticflickr.com/65535/51681534884_545f161fd9.jpg&lt;br /&gt;
&lt;br /&gt;
= dokumentation_JAM &amp;lt;span style='font-size:50px;'&amp;gt;&amp;amp;#128206;&amp;lt;/span&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:doku_nextLevel.jpg| thumb |Die Frage ist: wie stellt man eine Dokumentation?]]&lt;br /&gt;
&lt;br /&gt;
* Bilddokumentation sammelt und einordnen &lt;br /&gt;
* künstlerisch/ästhetisch mit dem Material umgehen&lt;br /&gt;
* Dokumentieren auch Fehler, persönliche Ansprüche und Gespräche, Unerwartetes genauso wie&lt;br /&gt;
* Code-Snippets, Schaltpläne, Materialen, Skizzen&lt;br /&gt;
* usw.&lt;br /&gt;
* let's go! &amp;amp;#128293; &lt;br /&gt;
&lt;br /&gt;
PS --&amp;gt; [https://www.w3schools.com/charsets/ref_emoji.asp how to display Emojis: ]&lt;br /&gt;
&lt;br /&gt;
= DOME 1 = &lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
*Stretch-Jersey&lt;br /&gt;
*Polymorph&lt;br /&gt;
*Audiojacks&lt;br /&gt;
*Aux-Kabel&lt;br /&gt;
*Kunstblumen&lt;br /&gt;
*Röhrenfernsehe&lt;br /&gt;
etc...&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
*Processing-Codes&lt;br /&gt;
*Fingerhäkeln: https://www.youtube.com/watch?v=vfScF5EQ3sU&lt;br /&gt;
&lt;br /&gt;
== Sound == &lt;br /&gt;
 &lt;br /&gt;
*Klangbeispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= DOME 2 =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
Watte, Silikon, Kunstblumen, LED-Kerzen....&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
== Sound/Klang == &lt;br /&gt;
&lt;br /&gt;
Beispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= DOME 3 MINI-DOM  =&lt;br /&gt;
&lt;br /&gt;
= relevant links =&lt;br /&gt;
&lt;br /&gt;
ESP with Arduino: http://hyperdramatik.net/mediawiki/index.php?title=ESP32_mit_Arduino&lt;br /&gt;
&lt;br /&gt;
MQTT: http://hyperdramatik.net/mediawiki/index.php?title=Hauptseite#MQTT&lt;br /&gt;
&lt;br /&gt;
DOMEs: http://hyperdramatik.net/mediawiki/index.php?title=Dome_Pod_KIT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= code examples from the project =&lt;br /&gt;
&lt;br /&gt;
== Arduino code for sounds in the fishing-dome ==&lt;br /&gt;
&lt;br /&gt;
// running on an ESP [[Spaghetti Monster]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
&lt;br /&gt;
byte analogPins[] = {&lt;br /&gt;
36, 39, 34, 35, 32, 33&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    pinMode(analogPins[i], INPUT);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    Serial.print(analogRead(analogPins[i]));&lt;br /&gt;
    Serial.print(&amp;quot;\t&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  delay(20);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the fishing-dome ==&lt;br /&gt;
 &lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the fishing-dome&lt;br /&gt;
 &lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import processing.serial.*;&lt;br /&gt;
import ddf.minim.*;&lt;br /&gt;
Serial myPort;    &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
//change these:&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
int ADCmax = 4095; &lt;br /&gt;
//int ADCmax = 1023;&lt;br /&gt;
float[] sensorThresholds = {1000, 1000, 1000, 1000, 1000, 1000};//new float[numOfSensors];&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
float[] sensorValues = new float[numOfSensors];&lt;br /&gt;
float[] previousSensorValues = new float[numOfSensors];&lt;br /&gt;
float xpos = 0;&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(600, 400);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  background(255);&lt;br /&gt;
&lt;br /&gt;
  println(Serial.list());&lt;br /&gt;
  String portName = Serial.list()[1];&lt;br /&gt;
  myPort = new Serial(this, &amp;quot;/dev/cu.SLAB_USBtoUART&amp;quot;, 9600);&lt;br /&gt;
  myPort.clear();&lt;br /&gt;
  myPort.bufferUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  sound0 = minim.loadSample( &amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound1 = minim.loadSample(&amp;quot;crazyfrogbardcore.wav&amp;quot;, 512);&lt;br /&gt;
  sound2 = minim.loadSample(&amp;quot;musterfinal.wav&amp;quot;, 512);&lt;br /&gt;
  sound3 = minim.loadSample(&amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound4 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 512);&lt;br /&gt;
  sound5 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 512);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  graph();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void graph() {&lt;br /&gt;
  for (int i=0; i&amp;lt;numOfSensors; i++) {&lt;br /&gt;
    if (sensorValues[i] &amp;lt; sensorThresholds[i]) sound(i);&lt;br /&gt;
&lt;br /&gt;
    // map the incoming values to an appropriate range:&lt;br /&gt;
    float ypos = map(sensorValues[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
&lt;br /&gt;
    // figure out the y position for this particular graph:&lt;br /&gt;
    float graphBottom = i * height/numOfSensors;&lt;br /&gt;
    ypos = ypos + graphBottom;&lt;br /&gt;
&lt;br /&gt;
    // draw the graph bottoms:&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    line(0, graphBottom, width, graphBottom);&lt;br /&gt;
&lt;br /&gt;
    // draw the thresholds:&lt;br /&gt;
    stroke(200, 0, 0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    float redLine = map(sensorThresholds[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
    line(0, redLine + graphBottom, width, redLine + graphBottom);&lt;br /&gt;
&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(2);&lt;br /&gt;
    line(xpos, previousSensorValues[i], xpos+1, ypos);&lt;br /&gt;
&lt;br /&gt;
    previousSensorValues[i] = ypos;&lt;br /&gt;
&lt;br /&gt;
    // if you've drawn to the edge of the window, start at the beginning again:&lt;br /&gt;
    if (xpos &amp;gt;= width) {&lt;br /&gt;
      xpos = 0;&lt;br /&gt;
      background(215);&lt;br /&gt;
    } else xpos+=0.1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void serialEvent (Serial myPort) {&lt;br /&gt;
  // get the ASCII string:&lt;br /&gt;
  String inString = myPort.readStringUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  // if it's not empty:&lt;br /&gt;
  if (inString != null) {&lt;br /&gt;
    // trim off any whitespace:&lt;br /&gt;
    inString = trim(inString);&lt;br /&gt;
&lt;br /&gt;
    // convert to an array of ints:&lt;br /&gt;
    int incomingValues[] = int(split(inString, &amp;quot;\t&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
    if (incomingValues.length &amp;lt;= numOfSensors &amp;amp;&amp;amp; incomingValues.length &amp;gt; 0) {&lt;br /&gt;
      for (int i = 0; i &amp;lt; incomingValues.length; i++) {&lt;br /&gt;
        sensorValues[i] = incomingValues[i];&lt;br /&gt;
        print(sensorValues[i] + &amp;quot;\t&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      println();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 4: &lt;br /&gt;
    sound4.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 5: &lt;br /&gt;
    sound5.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the dating-dome ==&lt;br /&gt;
&lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the dating-dome&lt;br /&gt;
 &lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import ddf.minim.*;  &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
int delayTime = 800;&lt;br /&gt;
boolean w_released = true;&lt;br /&gt;
boolean d_released = true;&lt;br /&gt;
boolean s_released = true;&lt;br /&gt;
boolean a_released = true;&lt;br /&gt;
int maxCount = 3;&lt;br /&gt;
int w_count = 0;&lt;br /&gt;
int a_count = 0;&lt;br /&gt;
int s_count = 0;&lt;br /&gt;
int d_count = 0;&lt;br /&gt;
int szene = 0;&lt;br /&gt;
int previousSzene;&lt;br /&gt;
int soundChangeInterval = 5000;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(1000, 800);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  background(255);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  szene = minute() % 3;&lt;br /&gt;
  if (szene != previousSzene) {&lt;br /&gt;
    previousSzene = szene;&lt;br /&gt;
    println(szene);&lt;br /&gt;
&lt;br /&gt;
    if (szene == 0) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;be.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;come.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;together.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;withMe.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 1) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 2) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void keyPressed() {&lt;br /&gt;
  if ((key == 'w' || key == 'W') &amp;amp;&amp;amp; w_released == true &amp;amp;&amp;amp; w_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0);&lt;br /&gt;
    w_released = false;&lt;br /&gt;
    sound(0);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    w_count ++;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'a' || key == 'A') &amp;amp;&amp;amp; a_released == true &amp;amp;&amp;amp; a_count &amp;lt; maxCount) {&lt;br /&gt;
    background(200, 0, 0);&lt;br /&gt;
    a_released = false;&lt;br /&gt;
    sound(1);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    a_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 's' || key == 'S') &amp;amp;&amp;amp; s_released == true &amp;amp;&amp;amp; s_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 200, 0);&lt;br /&gt;
    s_released = false;&lt;br /&gt;
    sound(2);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    s_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'd' || key == 'D') &amp;amp;&amp;amp; d_released == true &amp;amp;&amp;amp; d_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 0, 200);&lt;br /&gt;
    d_released = false;&lt;br /&gt;
    sound(3);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    d_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void keyReleased() {&lt;br /&gt;
  if (key == 'd' || key == 'D') {&lt;br /&gt;
    d_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'a' || key == 'A') {&lt;br /&gt;
    a_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 's' || key == 'S') {&lt;br /&gt;
    s_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'w' || key == 'W') {&lt;br /&gt;
    w_released = true;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rodolfo.acostacastro</name></author>
	</entry>
	<entry>
		<id>http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2786</id>
		<title>Random Acts of Vulnerability</title>
		<link rel="alternate" type="text/html" href="http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2786"/>
		<updated>2021-12-01T20:05:38Z</updated>

		<summary type="html">&lt;p&gt;Rodolfo.acostacastro: /* dokumentation_JAM &amp;amp;#128206; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Random Acts of Vulnerability ist ein immersives Spiel für vier Spieler*innen in vier Dimensionen.  Durch Erkundung und Dokumentation der jeweils eigenen Dimension, formen die Spieler*innen anhand des Gesammelten und Erlebten die Erzählungen selbst.&lt;br /&gt;
Auf ein installatives Netz aus experimentellen Materialen, soften Schaltkreisen, meditativen Klangwelten, grotesken Interfaces und verzerrten Output-Signalen aufbauend, werden Fragen nach Isolation, Einsamkeit, immaterieller und haptischer Vernetzung und der Herstellung von Verhandlungsgrundlagen gestellt.&lt;br /&gt;
&lt;br /&gt;
Eine Arbeit von: Zoe Lohmann, Ella Estrella Tischa Raetzer, Rodolfo Acosta Castro, Lena Böckmann&lt;br /&gt;
&lt;br /&gt;
Video: https://www.youtube.com/watch?v=850KCMYEAow&amp;amp;t=7s&lt;br /&gt;
&lt;br /&gt;
https://live.staticflickr.com/65535/51681534884_545f161fd9.jpg&lt;br /&gt;
&lt;br /&gt;
= dokumentation_JAM &amp;lt;span style='font-size:50px;'&amp;gt;&amp;amp;#128206;&amp;lt;/span&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:doku_nextLevel.jpg| thumb |Die Frage ist: wie stellt man eine Dokumentation?]]&lt;br /&gt;
&lt;br /&gt;
* Bilddokumentation sammelt und einordnen &lt;br /&gt;
* künstlerisch/ästhetisch mit dem Material umgehen&lt;br /&gt;
* Dokumentieren auch Fehler, persönliche Ansprüche und Gespräche, Unerwartetes genauso wie&lt;br /&gt;
* Code-Snippets, Schaltpläne, Materialen, Skizzen&lt;br /&gt;
* usw.&lt;br /&gt;
* let's go! &amp;amp;#128293;&lt;br /&gt;
&lt;br /&gt;
PS --&amp;gt; [https://www.w3schools.com/charsets/ref_emoji.asp how to display Emojis: ]&lt;br /&gt;
&lt;br /&gt;
= DOME 1 = &lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
*Stretch-Jersey&lt;br /&gt;
*Polymorph&lt;br /&gt;
*Audiojacks&lt;br /&gt;
*Aux-Kabel&lt;br /&gt;
*Kunstblumen&lt;br /&gt;
*Röhrenfernsehe&lt;br /&gt;
etc...&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
*Processing-Codes&lt;br /&gt;
*Fingerhäkeln: https://www.youtube.com/watch?v=vfScF5EQ3sU&lt;br /&gt;
&lt;br /&gt;
== Sound == &lt;br /&gt;
 &lt;br /&gt;
*Klangbeispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= DOME 2 =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
Watte, Silikon, Kunstblumen, LED-Kerzen....&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
== Sound/Klang == &lt;br /&gt;
&lt;br /&gt;
Beispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= DOME 3 MINI-DOM  =&lt;br /&gt;
&lt;br /&gt;
= relevant links =&lt;br /&gt;
&lt;br /&gt;
ESP with Arduino: http://hyperdramatik.net/mediawiki/index.php?title=ESP32_mit_Arduino&lt;br /&gt;
&lt;br /&gt;
MQTT: http://hyperdramatik.net/mediawiki/index.php?title=Hauptseite#MQTT&lt;br /&gt;
&lt;br /&gt;
DOMEs: http://hyperdramatik.net/mediawiki/index.php?title=Dome_Pod_KIT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= code examples from the project =&lt;br /&gt;
&lt;br /&gt;
== Arduino code for sounds in the fishing-dome ==&lt;br /&gt;
&lt;br /&gt;
// running on an ESP [[Spaghetti Monster]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
&lt;br /&gt;
byte analogPins[] = {&lt;br /&gt;
36, 39, 34, 35, 32, 33&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    pinMode(analogPins[i], INPUT);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    Serial.print(analogRead(analogPins[i]));&lt;br /&gt;
    Serial.print(&amp;quot;\t&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  delay(20);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the fishing-dome ==&lt;br /&gt;
 &lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the fishing-dome&lt;br /&gt;
 &lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import processing.serial.*;&lt;br /&gt;
import ddf.minim.*;&lt;br /&gt;
Serial myPort;    &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
//change these:&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
int ADCmax = 4095; &lt;br /&gt;
//int ADCmax = 1023;&lt;br /&gt;
float[] sensorThresholds = {1000, 1000, 1000, 1000, 1000, 1000};//new float[numOfSensors];&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
float[] sensorValues = new float[numOfSensors];&lt;br /&gt;
float[] previousSensorValues = new float[numOfSensors];&lt;br /&gt;
float xpos = 0;&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(600, 400);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  background(255);&lt;br /&gt;
&lt;br /&gt;
  println(Serial.list());&lt;br /&gt;
  String portName = Serial.list()[1];&lt;br /&gt;
  myPort = new Serial(this, &amp;quot;/dev/cu.SLAB_USBtoUART&amp;quot;, 9600);&lt;br /&gt;
  myPort.clear();&lt;br /&gt;
  myPort.bufferUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  sound0 = minim.loadSample( &amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound1 = minim.loadSample(&amp;quot;crazyfrogbardcore.wav&amp;quot;, 512);&lt;br /&gt;
  sound2 = minim.loadSample(&amp;quot;musterfinal.wav&amp;quot;, 512);&lt;br /&gt;
  sound3 = minim.loadSample(&amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound4 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 512);&lt;br /&gt;
  sound5 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 512);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  graph();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void graph() {&lt;br /&gt;
  for (int i=0; i&amp;lt;numOfSensors; i++) {&lt;br /&gt;
    if (sensorValues[i] &amp;lt; sensorThresholds[i]) sound(i);&lt;br /&gt;
&lt;br /&gt;
    // map the incoming values to an appropriate range:&lt;br /&gt;
    float ypos = map(sensorValues[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
&lt;br /&gt;
    // figure out the y position for this particular graph:&lt;br /&gt;
    float graphBottom = i * height/numOfSensors;&lt;br /&gt;
    ypos = ypos + graphBottom;&lt;br /&gt;
&lt;br /&gt;
    // draw the graph bottoms:&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    line(0, graphBottom, width, graphBottom);&lt;br /&gt;
&lt;br /&gt;
    // draw the thresholds:&lt;br /&gt;
    stroke(200, 0, 0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    float redLine = map(sensorThresholds[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
    line(0, redLine + graphBottom, width, redLine + graphBottom);&lt;br /&gt;
&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(2);&lt;br /&gt;
    line(xpos, previousSensorValues[i], xpos+1, ypos);&lt;br /&gt;
&lt;br /&gt;
    previousSensorValues[i] = ypos;&lt;br /&gt;
&lt;br /&gt;
    // if you've drawn to the edge of the window, start at the beginning again:&lt;br /&gt;
    if (xpos &amp;gt;= width) {&lt;br /&gt;
      xpos = 0;&lt;br /&gt;
      background(215);&lt;br /&gt;
    } else xpos+=0.1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void serialEvent (Serial myPort) {&lt;br /&gt;
  // get the ASCII string:&lt;br /&gt;
  String inString = myPort.readStringUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  // if it's not empty:&lt;br /&gt;
  if (inString != null) {&lt;br /&gt;
    // trim off any whitespace:&lt;br /&gt;
    inString = trim(inString);&lt;br /&gt;
&lt;br /&gt;
    // convert to an array of ints:&lt;br /&gt;
    int incomingValues[] = int(split(inString, &amp;quot;\t&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
    if (incomingValues.length &amp;lt;= numOfSensors &amp;amp;&amp;amp; incomingValues.length &amp;gt; 0) {&lt;br /&gt;
      for (int i = 0; i &amp;lt; incomingValues.length; i++) {&lt;br /&gt;
        sensorValues[i] = incomingValues[i];&lt;br /&gt;
        print(sensorValues[i] + &amp;quot;\t&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      println();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 4: &lt;br /&gt;
    sound4.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 5: &lt;br /&gt;
    sound5.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the dating-dome ==&lt;br /&gt;
&lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the dating-dome&lt;br /&gt;
 &lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import ddf.minim.*;  &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
int delayTime = 800;&lt;br /&gt;
boolean w_released = true;&lt;br /&gt;
boolean d_released = true;&lt;br /&gt;
boolean s_released = true;&lt;br /&gt;
boolean a_released = true;&lt;br /&gt;
int maxCount = 3;&lt;br /&gt;
int w_count = 0;&lt;br /&gt;
int a_count = 0;&lt;br /&gt;
int s_count = 0;&lt;br /&gt;
int d_count = 0;&lt;br /&gt;
int szene = 0;&lt;br /&gt;
int previousSzene;&lt;br /&gt;
int soundChangeInterval = 5000;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(1000, 800);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  background(255);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  szene = minute() % 3;&lt;br /&gt;
  if (szene != previousSzene) {&lt;br /&gt;
    previousSzene = szene;&lt;br /&gt;
    println(szene);&lt;br /&gt;
&lt;br /&gt;
    if (szene == 0) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;be.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;come.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;together.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;withMe.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 1) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 2) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void keyPressed() {&lt;br /&gt;
  if ((key == 'w' || key == 'W') &amp;amp;&amp;amp; w_released == true &amp;amp;&amp;amp; w_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0);&lt;br /&gt;
    w_released = false;&lt;br /&gt;
    sound(0);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    w_count ++;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'a' || key == 'A') &amp;amp;&amp;amp; a_released == true &amp;amp;&amp;amp; a_count &amp;lt; maxCount) {&lt;br /&gt;
    background(200, 0, 0);&lt;br /&gt;
    a_released = false;&lt;br /&gt;
    sound(1);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    a_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 's' || key == 'S') &amp;amp;&amp;amp; s_released == true &amp;amp;&amp;amp; s_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 200, 0);&lt;br /&gt;
    s_released = false;&lt;br /&gt;
    sound(2);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    s_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'd' || key == 'D') &amp;amp;&amp;amp; d_released == true &amp;amp;&amp;amp; d_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 0, 200);&lt;br /&gt;
    d_released = false;&lt;br /&gt;
    sound(3);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    d_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void keyReleased() {&lt;br /&gt;
  if (key == 'd' || key == 'D') {&lt;br /&gt;
    d_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'a' || key == 'A') {&lt;br /&gt;
    a_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 's' || key == 'S') {&lt;br /&gt;
    s_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'w' || key == 'W') {&lt;br /&gt;
    w_released = true;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rodolfo.acostacastro</name></author>
	</entry>
	<entry>
		<id>http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2785</id>
		<title>Random Acts of Vulnerability</title>
		<link rel="alternate" type="text/html" href="http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2785"/>
		<updated>2021-12-01T20:03:05Z</updated>

		<summary type="html">&lt;p&gt;Rodolfo.acostacastro: /* dokumentation_JAM &amp;amp;#128206; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Random Acts of Vulnerability ist ein immersives Spiel für vier Spieler*innen in vier Dimensionen.  Durch Erkundung und Dokumentation der jeweils eigenen Dimension, formen die Spieler*innen anhand des Gesammelten und Erlebten die Erzählungen selbst.&lt;br /&gt;
Auf ein installatives Netz aus experimentellen Materialen, soften Schaltkreisen, meditativen Klangwelten, grotesken Interfaces und verzerrten Output-Signalen aufbauend, werden Fragen nach Isolation, Einsamkeit, immaterieller und haptischer Vernetzung und der Herstellung von Verhandlungsgrundlagen gestellt.&lt;br /&gt;
&lt;br /&gt;
Eine Arbeit von: Zoe Lohmann, Ella Estrella Tischa Raetzer, Rodolfo Acosta Castro, Lena Böckmann&lt;br /&gt;
&lt;br /&gt;
Video: https://www.youtube.com/watch?v=850KCMYEAow&amp;amp;t=7s&lt;br /&gt;
&lt;br /&gt;
https://live.staticflickr.com/65535/51681534884_545f161fd9.jpg&lt;br /&gt;
&lt;br /&gt;
= dokumentation_JAM &amp;lt;span style='font-size:50px;'&amp;gt;&amp;amp;#128206;&amp;lt;/span&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:doku_nextLevel.jpg| thumb |Die Frage ist: wie stellt man eine Dokumentation?]]&lt;br /&gt;
&lt;br /&gt;
* Bilddokumentation sammelt und einordnen &lt;br /&gt;
* künstlerisch/ästhetisch mit dem Material umgehen&lt;br /&gt;
* Dokumentieren auch Fehler, persönliche Ansprüche und Gespräche, Unerwartetes genauso wie&lt;br /&gt;
* Code-Snippets, Schaltpläne, Materialen, Skizzen&lt;br /&gt;
* usw.&lt;br /&gt;
* let´s go!&lt;br /&gt;
&lt;br /&gt;
PS --&amp;gt; [https://www.w3schools.com/charsets/ref_emoji.asp how to display Emojis: ]&lt;br /&gt;
&lt;br /&gt;
= DOME 1 = &lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
*Stretch-Jersey&lt;br /&gt;
*Polymorph&lt;br /&gt;
*Audiojacks&lt;br /&gt;
*Aux-Kabel&lt;br /&gt;
*Kunstblumen&lt;br /&gt;
*Röhrenfernsehe&lt;br /&gt;
etc...&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
*Processing-Codes&lt;br /&gt;
*Fingerhäkeln: https://www.youtube.com/watch?v=vfScF5EQ3sU&lt;br /&gt;
&lt;br /&gt;
== Sound == &lt;br /&gt;
 &lt;br /&gt;
*Klangbeispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= DOME 2 =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
Watte, Silikon, Kunstblumen, LED-Kerzen....&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
== Sound/Klang == &lt;br /&gt;
&lt;br /&gt;
Beispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= DOME 3 MINI-DOM  =&lt;br /&gt;
&lt;br /&gt;
= relevant links =&lt;br /&gt;
&lt;br /&gt;
ESP with Arduino: http://hyperdramatik.net/mediawiki/index.php?title=ESP32_mit_Arduino&lt;br /&gt;
&lt;br /&gt;
MQTT: http://hyperdramatik.net/mediawiki/index.php?title=Hauptseite#MQTT&lt;br /&gt;
&lt;br /&gt;
DOMEs: http://hyperdramatik.net/mediawiki/index.php?title=Dome_Pod_KIT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= code examples from the project =&lt;br /&gt;
&lt;br /&gt;
== Arduino code for sounds in the fishing-dome ==&lt;br /&gt;
&lt;br /&gt;
// running on an ESP [[Spaghetti Monster]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
&lt;br /&gt;
byte analogPins[] = {&lt;br /&gt;
36, 39, 34, 35, 32, 33&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    pinMode(analogPins[i], INPUT);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    Serial.print(analogRead(analogPins[i]));&lt;br /&gt;
    Serial.print(&amp;quot;\t&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  delay(20);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the fishing-dome ==&lt;br /&gt;
 &lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the fishing-dome&lt;br /&gt;
 &lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import processing.serial.*;&lt;br /&gt;
import ddf.minim.*;&lt;br /&gt;
Serial myPort;    &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
//change these:&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
int ADCmax = 4095; &lt;br /&gt;
//int ADCmax = 1023;&lt;br /&gt;
float[] sensorThresholds = {1000, 1000, 1000, 1000, 1000, 1000};//new float[numOfSensors];&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
float[] sensorValues = new float[numOfSensors];&lt;br /&gt;
float[] previousSensorValues = new float[numOfSensors];&lt;br /&gt;
float xpos = 0;&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(600, 400);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  background(255);&lt;br /&gt;
&lt;br /&gt;
  println(Serial.list());&lt;br /&gt;
  String portName = Serial.list()[1];&lt;br /&gt;
  myPort = new Serial(this, &amp;quot;/dev/cu.SLAB_USBtoUART&amp;quot;, 9600);&lt;br /&gt;
  myPort.clear();&lt;br /&gt;
  myPort.bufferUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  sound0 = minim.loadSample( &amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound1 = minim.loadSample(&amp;quot;crazyfrogbardcore.wav&amp;quot;, 512);&lt;br /&gt;
  sound2 = minim.loadSample(&amp;quot;musterfinal.wav&amp;quot;, 512);&lt;br /&gt;
  sound3 = minim.loadSample(&amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound4 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 512);&lt;br /&gt;
  sound5 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 512);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  graph();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void graph() {&lt;br /&gt;
  for (int i=0; i&amp;lt;numOfSensors; i++) {&lt;br /&gt;
    if (sensorValues[i] &amp;lt; sensorThresholds[i]) sound(i);&lt;br /&gt;
&lt;br /&gt;
    // map the incoming values to an appropriate range:&lt;br /&gt;
    float ypos = map(sensorValues[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
&lt;br /&gt;
    // figure out the y position for this particular graph:&lt;br /&gt;
    float graphBottom = i * height/numOfSensors;&lt;br /&gt;
    ypos = ypos + graphBottom;&lt;br /&gt;
&lt;br /&gt;
    // draw the graph bottoms:&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    line(0, graphBottom, width, graphBottom);&lt;br /&gt;
&lt;br /&gt;
    // draw the thresholds:&lt;br /&gt;
    stroke(200, 0, 0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    float redLine = map(sensorThresholds[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
    line(0, redLine + graphBottom, width, redLine + graphBottom);&lt;br /&gt;
&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(2);&lt;br /&gt;
    line(xpos, previousSensorValues[i], xpos+1, ypos);&lt;br /&gt;
&lt;br /&gt;
    previousSensorValues[i] = ypos;&lt;br /&gt;
&lt;br /&gt;
    // if you've drawn to the edge of the window, start at the beginning again:&lt;br /&gt;
    if (xpos &amp;gt;= width) {&lt;br /&gt;
      xpos = 0;&lt;br /&gt;
      background(215);&lt;br /&gt;
    } else xpos+=0.1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void serialEvent (Serial myPort) {&lt;br /&gt;
  // get the ASCII string:&lt;br /&gt;
  String inString = myPort.readStringUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  // if it's not empty:&lt;br /&gt;
  if (inString != null) {&lt;br /&gt;
    // trim off any whitespace:&lt;br /&gt;
    inString = trim(inString);&lt;br /&gt;
&lt;br /&gt;
    // convert to an array of ints:&lt;br /&gt;
    int incomingValues[] = int(split(inString, &amp;quot;\t&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
    if (incomingValues.length &amp;lt;= numOfSensors &amp;amp;&amp;amp; incomingValues.length &amp;gt; 0) {&lt;br /&gt;
      for (int i = 0; i &amp;lt; incomingValues.length; i++) {&lt;br /&gt;
        sensorValues[i] = incomingValues[i];&lt;br /&gt;
        print(sensorValues[i] + &amp;quot;\t&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      println();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 4: &lt;br /&gt;
    sound4.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 5: &lt;br /&gt;
    sound5.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the dating-dome ==&lt;br /&gt;
&lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the dating-dome&lt;br /&gt;
 &lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import ddf.minim.*;  &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
int delayTime = 800;&lt;br /&gt;
boolean w_released = true;&lt;br /&gt;
boolean d_released = true;&lt;br /&gt;
boolean s_released = true;&lt;br /&gt;
boolean a_released = true;&lt;br /&gt;
int maxCount = 3;&lt;br /&gt;
int w_count = 0;&lt;br /&gt;
int a_count = 0;&lt;br /&gt;
int s_count = 0;&lt;br /&gt;
int d_count = 0;&lt;br /&gt;
int szene = 0;&lt;br /&gt;
int previousSzene;&lt;br /&gt;
int soundChangeInterval = 5000;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(1000, 800);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  background(255);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  szene = minute() % 3;&lt;br /&gt;
  if (szene != previousSzene) {&lt;br /&gt;
    previousSzene = szene;&lt;br /&gt;
    println(szene);&lt;br /&gt;
&lt;br /&gt;
    if (szene == 0) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;be.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;come.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;together.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;withMe.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 1) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 2) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void keyPressed() {&lt;br /&gt;
  if ((key == 'w' || key == 'W') &amp;amp;&amp;amp; w_released == true &amp;amp;&amp;amp; w_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0);&lt;br /&gt;
    w_released = false;&lt;br /&gt;
    sound(0);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    w_count ++;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'a' || key == 'A') &amp;amp;&amp;amp; a_released == true &amp;amp;&amp;amp; a_count &amp;lt; maxCount) {&lt;br /&gt;
    background(200, 0, 0);&lt;br /&gt;
    a_released = false;&lt;br /&gt;
    sound(1);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    a_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 's' || key == 'S') &amp;amp;&amp;amp; s_released == true &amp;amp;&amp;amp; s_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 200, 0);&lt;br /&gt;
    s_released = false;&lt;br /&gt;
    sound(2);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    s_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'd' || key == 'D') &amp;amp;&amp;amp; d_released == true &amp;amp;&amp;amp; d_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 0, 200);&lt;br /&gt;
    d_released = false;&lt;br /&gt;
    sound(3);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    d_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void keyReleased() {&lt;br /&gt;
  if (key == 'd' || key == 'D') {&lt;br /&gt;
    d_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'a' || key == 'A') {&lt;br /&gt;
    a_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 's' || key == 'S') {&lt;br /&gt;
    s_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'w' || key == 'W') {&lt;br /&gt;
    w_released = true;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rodolfo.acostacastro</name></author>
	</entry>
	<entry>
		<id>http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2784</id>
		<title>Random Acts of Vulnerability</title>
		<link rel="alternate" type="text/html" href="http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2784"/>
		<updated>2021-12-01T20:02:41Z</updated>

		<summary type="html">&lt;p&gt;Rodolfo.acostacastro: /* dokumentation_JAM &amp;amp;#128206; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Random Acts of Vulnerability ist ein immersives Spiel für vier Spieler*innen in vier Dimensionen.  Durch Erkundung und Dokumentation der jeweils eigenen Dimension, formen die Spieler*innen anhand des Gesammelten und Erlebten die Erzählungen selbst.&lt;br /&gt;
Auf ein installatives Netz aus experimentellen Materialen, soften Schaltkreisen, meditativen Klangwelten, grotesken Interfaces und verzerrten Output-Signalen aufbauend, werden Fragen nach Isolation, Einsamkeit, immaterieller und haptischer Vernetzung und der Herstellung von Verhandlungsgrundlagen gestellt.&lt;br /&gt;
&lt;br /&gt;
Eine Arbeit von: Zoe Lohmann, Ella Estrella Tischa Raetzer, Rodolfo Acosta Castro, Lena Böckmann&lt;br /&gt;
&lt;br /&gt;
Video: https://www.youtube.com/watch?v=850KCMYEAow&amp;amp;t=7s&lt;br /&gt;
&lt;br /&gt;
https://live.staticflickr.com/65535/51681534884_545f161fd9.jpg&lt;br /&gt;
&lt;br /&gt;
= dokumentation_JAM &amp;lt;span style='font-size:50px;'&amp;gt;&amp;amp;#128206;&amp;lt;/span&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:doku_nextLevel.jpg| thumb |Die Frage ist: wie stellt man eine Dokumentation?]]&lt;br /&gt;
&lt;br /&gt;
* Bilddokumentation sammelt und einordnen &lt;br /&gt;
* künstlerisch/ästhetisch mit dem Material umgehen&lt;br /&gt;
* Dokumentieren auch Fehler, persönliche Ansprüche und Gespräche, Unerwartetes genauso wie&lt;br /&gt;
* Code-Snippets, Schaltpläne, Materialen, Skizzen&lt;br /&gt;
* usw.&lt;br /&gt;
* let´s go!&lt;br /&gt;
&lt;br /&gt;
PS --&amp;gt;  [[https://www.w3schools.com/charsets/ref_emoji.asp how to display Emojis: ]]&lt;br /&gt;
&lt;br /&gt;
= DOME 1 = &lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
*Stretch-Jersey&lt;br /&gt;
*Polymorph&lt;br /&gt;
*Audiojacks&lt;br /&gt;
*Aux-Kabel&lt;br /&gt;
*Kunstblumen&lt;br /&gt;
*Röhrenfernsehe&lt;br /&gt;
etc...&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
*Processing-Codes&lt;br /&gt;
*Fingerhäkeln: https://www.youtube.com/watch?v=vfScF5EQ3sU&lt;br /&gt;
&lt;br /&gt;
== Sound == &lt;br /&gt;
 &lt;br /&gt;
*Klangbeispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= DOME 2 =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
Watte, Silikon, Kunstblumen, LED-Kerzen....&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
== Sound/Klang == &lt;br /&gt;
&lt;br /&gt;
Beispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= DOME 3 MINI-DOM  =&lt;br /&gt;
&lt;br /&gt;
= relevant links =&lt;br /&gt;
&lt;br /&gt;
ESP with Arduino: http://hyperdramatik.net/mediawiki/index.php?title=ESP32_mit_Arduino&lt;br /&gt;
&lt;br /&gt;
MQTT: http://hyperdramatik.net/mediawiki/index.php?title=Hauptseite#MQTT&lt;br /&gt;
&lt;br /&gt;
DOMEs: http://hyperdramatik.net/mediawiki/index.php?title=Dome_Pod_KIT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= code examples from the project =&lt;br /&gt;
&lt;br /&gt;
== Arduino code for sounds in the fishing-dome ==&lt;br /&gt;
&lt;br /&gt;
// running on an ESP [[Spaghetti Monster]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
&lt;br /&gt;
byte analogPins[] = {&lt;br /&gt;
36, 39, 34, 35, 32, 33&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    pinMode(analogPins[i], INPUT);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    Serial.print(analogRead(analogPins[i]));&lt;br /&gt;
    Serial.print(&amp;quot;\t&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  delay(20);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the fishing-dome ==&lt;br /&gt;
 &lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the fishing-dome&lt;br /&gt;
 &lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import processing.serial.*;&lt;br /&gt;
import ddf.minim.*;&lt;br /&gt;
Serial myPort;    &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
//change these:&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
int ADCmax = 4095; &lt;br /&gt;
//int ADCmax = 1023;&lt;br /&gt;
float[] sensorThresholds = {1000, 1000, 1000, 1000, 1000, 1000};//new float[numOfSensors];&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
float[] sensorValues = new float[numOfSensors];&lt;br /&gt;
float[] previousSensorValues = new float[numOfSensors];&lt;br /&gt;
float xpos = 0;&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(600, 400);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  background(255);&lt;br /&gt;
&lt;br /&gt;
  println(Serial.list());&lt;br /&gt;
  String portName = Serial.list()[1];&lt;br /&gt;
  myPort = new Serial(this, &amp;quot;/dev/cu.SLAB_USBtoUART&amp;quot;, 9600);&lt;br /&gt;
  myPort.clear();&lt;br /&gt;
  myPort.bufferUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  sound0 = minim.loadSample( &amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound1 = minim.loadSample(&amp;quot;crazyfrogbardcore.wav&amp;quot;, 512);&lt;br /&gt;
  sound2 = minim.loadSample(&amp;quot;musterfinal.wav&amp;quot;, 512);&lt;br /&gt;
  sound3 = minim.loadSample(&amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound4 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 512);&lt;br /&gt;
  sound5 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 512);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  graph();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void graph() {&lt;br /&gt;
  for (int i=0; i&amp;lt;numOfSensors; i++) {&lt;br /&gt;
    if (sensorValues[i] &amp;lt; sensorThresholds[i]) sound(i);&lt;br /&gt;
&lt;br /&gt;
    // map the incoming values to an appropriate range:&lt;br /&gt;
    float ypos = map(sensorValues[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
&lt;br /&gt;
    // figure out the y position for this particular graph:&lt;br /&gt;
    float graphBottom = i * height/numOfSensors;&lt;br /&gt;
    ypos = ypos + graphBottom;&lt;br /&gt;
&lt;br /&gt;
    // draw the graph bottoms:&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    line(0, graphBottom, width, graphBottom);&lt;br /&gt;
&lt;br /&gt;
    // draw the thresholds:&lt;br /&gt;
    stroke(200, 0, 0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    float redLine = map(sensorThresholds[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
    line(0, redLine + graphBottom, width, redLine + graphBottom);&lt;br /&gt;
&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(2);&lt;br /&gt;
    line(xpos, previousSensorValues[i], xpos+1, ypos);&lt;br /&gt;
&lt;br /&gt;
    previousSensorValues[i] = ypos;&lt;br /&gt;
&lt;br /&gt;
    // if you've drawn to the edge of the window, start at the beginning again:&lt;br /&gt;
    if (xpos &amp;gt;= width) {&lt;br /&gt;
      xpos = 0;&lt;br /&gt;
      background(215);&lt;br /&gt;
    } else xpos+=0.1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void serialEvent (Serial myPort) {&lt;br /&gt;
  // get the ASCII string:&lt;br /&gt;
  String inString = myPort.readStringUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  // if it's not empty:&lt;br /&gt;
  if (inString != null) {&lt;br /&gt;
    // trim off any whitespace:&lt;br /&gt;
    inString = trim(inString);&lt;br /&gt;
&lt;br /&gt;
    // convert to an array of ints:&lt;br /&gt;
    int incomingValues[] = int(split(inString, &amp;quot;\t&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
    if (incomingValues.length &amp;lt;= numOfSensors &amp;amp;&amp;amp; incomingValues.length &amp;gt; 0) {&lt;br /&gt;
      for (int i = 0; i &amp;lt; incomingValues.length; i++) {&lt;br /&gt;
        sensorValues[i] = incomingValues[i];&lt;br /&gt;
        print(sensorValues[i] + &amp;quot;\t&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      println();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 4: &lt;br /&gt;
    sound4.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 5: &lt;br /&gt;
    sound5.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the dating-dome ==&lt;br /&gt;
&lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the dating-dome&lt;br /&gt;
 &lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import ddf.minim.*;  &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
int delayTime = 800;&lt;br /&gt;
boolean w_released = true;&lt;br /&gt;
boolean d_released = true;&lt;br /&gt;
boolean s_released = true;&lt;br /&gt;
boolean a_released = true;&lt;br /&gt;
int maxCount = 3;&lt;br /&gt;
int w_count = 0;&lt;br /&gt;
int a_count = 0;&lt;br /&gt;
int s_count = 0;&lt;br /&gt;
int d_count = 0;&lt;br /&gt;
int szene = 0;&lt;br /&gt;
int previousSzene;&lt;br /&gt;
int soundChangeInterval = 5000;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(1000, 800);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  background(255);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  szene = minute() % 3;&lt;br /&gt;
  if (szene != previousSzene) {&lt;br /&gt;
    previousSzene = szene;&lt;br /&gt;
    println(szene);&lt;br /&gt;
&lt;br /&gt;
    if (szene == 0) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;be.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;come.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;together.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;withMe.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 1) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 2) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void keyPressed() {&lt;br /&gt;
  if ((key == 'w' || key == 'W') &amp;amp;&amp;amp; w_released == true &amp;amp;&amp;amp; w_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0);&lt;br /&gt;
    w_released = false;&lt;br /&gt;
    sound(0);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    w_count ++;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'a' || key == 'A') &amp;amp;&amp;amp; a_released == true &amp;amp;&amp;amp; a_count &amp;lt; maxCount) {&lt;br /&gt;
    background(200, 0, 0);&lt;br /&gt;
    a_released = false;&lt;br /&gt;
    sound(1);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    a_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 's' || key == 'S') &amp;amp;&amp;amp; s_released == true &amp;amp;&amp;amp; s_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 200, 0);&lt;br /&gt;
    s_released = false;&lt;br /&gt;
    sound(2);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    s_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'd' || key == 'D') &amp;amp;&amp;amp; d_released == true &amp;amp;&amp;amp; d_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 0, 200);&lt;br /&gt;
    d_released = false;&lt;br /&gt;
    sound(3);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    d_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void keyReleased() {&lt;br /&gt;
  if (key == 'd' || key == 'D') {&lt;br /&gt;
    d_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'a' || key == 'A') {&lt;br /&gt;
    a_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 's' || key == 'S') {&lt;br /&gt;
    s_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'w' || key == 'W') {&lt;br /&gt;
    w_released = true;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rodolfo.acostacastro</name></author>
	</entry>
	<entry>
		<id>http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2783</id>
		<title>Random Acts of Vulnerability</title>
		<link rel="alternate" type="text/html" href="http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2783"/>
		<updated>2021-12-01T19:59:10Z</updated>

		<summary type="html">&lt;p&gt;Rodolfo.acostacastro: /* dokumentation_JAM &amp;amp;#128206; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Random Acts of Vulnerability ist ein immersives Spiel für vier Spieler*innen in vier Dimensionen.  Durch Erkundung und Dokumentation der jeweils eigenen Dimension, formen die Spieler*innen anhand des Gesammelten und Erlebten die Erzählungen selbst.&lt;br /&gt;
Auf ein installatives Netz aus experimentellen Materialen, soften Schaltkreisen, meditativen Klangwelten, grotesken Interfaces und verzerrten Output-Signalen aufbauend, werden Fragen nach Isolation, Einsamkeit, immaterieller und haptischer Vernetzung und der Herstellung von Verhandlungsgrundlagen gestellt.&lt;br /&gt;
&lt;br /&gt;
Eine Arbeit von: Zoe Lohmann, Ella Estrella Tischa Raetzer, Rodolfo Acosta Castro, Lena Böckmann&lt;br /&gt;
&lt;br /&gt;
Video: https://www.youtube.com/watch?v=850KCMYEAow&amp;amp;t=7s&lt;br /&gt;
&lt;br /&gt;
https://live.staticflickr.com/65535/51681534884_545f161fd9.jpg&lt;br /&gt;
&lt;br /&gt;
= dokumentation_JAM &amp;lt;span style='font-size:50px;'&amp;gt;&amp;amp;#128206;&amp;lt;/span&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:doku_nextLevel.jpg| thumb |Die Frage ist: wie stellt man eine Dokumentation?]]&lt;br /&gt;
&lt;br /&gt;
* Bilddokumentation sammelt und einordnen &lt;br /&gt;
* künstlerisch/ästhetisch mit dem Material umgehen&lt;br /&gt;
* Dokumentieren auch Fehler, persönliche Ansprüche und Gespräche, Unerwartetes genauso wie&lt;br /&gt;
* Code-Snippets, Schaltpläne, Materialen, Skizzen&lt;br /&gt;
* usw.&lt;br /&gt;
* let´s go!&lt;br /&gt;
&lt;br /&gt;
PS --&amp;gt;  [[how to display Emojis: https://www.w3schools.com/charsets/ref_emoji.asp]]&lt;br /&gt;
&lt;br /&gt;
= DOME 1 = &lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
*Stretch-Jersey&lt;br /&gt;
*Polymorph&lt;br /&gt;
*Audiojacks&lt;br /&gt;
*Aux-Kabel&lt;br /&gt;
*Kunstblumen&lt;br /&gt;
*Röhrenfernsehe&lt;br /&gt;
etc...&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
*Processing-Codes&lt;br /&gt;
*Fingerhäkeln: https://www.youtube.com/watch?v=vfScF5EQ3sU&lt;br /&gt;
&lt;br /&gt;
== Sound == &lt;br /&gt;
 &lt;br /&gt;
*Klangbeispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= DOME 2 =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
Watte, Silikon, Kunstblumen, LED-Kerzen....&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
== Sound/Klang == &lt;br /&gt;
&lt;br /&gt;
Beispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= DOME 3 MINI-DOM  =&lt;br /&gt;
&lt;br /&gt;
= relevant links =&lt;br /&gt;
&lt;br /&gt;
ESP with Arduino: http://hyperdramatik.net/mediawiki/index.php?title=ESP32_mit_Arduino&lt;br /&gt;
&lt;br /&gt;
MQTT: http://hyperdramatik.net/mediawiki/index.php?title=Hauptseite#MQTT&lt;br /&gt;
&lt;br /&gt;
DOMEs: http://hyperdramatik.net/mediawiki/index.php?title=Dome_Pod_KIT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= code examples from the project =&lt;br /&gt;
&lt;br /&gt;
== Arduino code for sounds in the fishing-dome ==&lt;br /&gt;
&lt;br /&gt;
// running on an ESP [[Spaghetti Monster]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
&lt;br /&gt;
byte analogPins[] = {&lt;br /&gt;
36, 39, 34, 35, 32, 33&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    pinMode(analogPins[i], INPUT);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    Serial.print(analogRead(analogPins[i]));&lt;br /&gt;
    Serial.print(&amp;quot;\t&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  delay(20);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the fishing-dome ==&lt;br /&gt;
 &lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the fishing-dome&lt;br /&gt;
 &lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import processing.serial.*;&lt;br /&gt;
import ddf.minim.*;&lt;br /&gt;
Serial myPort;    &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
//change these:&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
int ADCmax = 4095; &lt;br /&gt;
//int ADCmax = 1023;&lt;br /&gt;
float[] sensorThresholds = {1000, 1000, 1000, 1000, 1000, 1000};//new float[numOfSensors];&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
float[] sensorValues = new float[numOfSensors];&lt;br /&gt;
float[] previousSensorValues = new float[numOfSensors];&lt;br /&gt;
float xpos = 0;&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(600, 400);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  background(255);&lt;br /&gt;
&lt;br /&gt;
  println(Serial.list());&lt;br /&gt;
  String portName = Serial.list()[1];&lt;br /&gt;
  myPort = new Serial(this, &amp;quot;/dev/cu.SLAB_USBtoUART&amp;quot;, 9600);&lt;br /&gt;
  myPort.clear();&lt;br /&gt;
  myPort.bufferUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  sound0 = minim.loadSample( &amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound1 = minim.loadSample(&amp;quot;crazyfrogbardcore.wav&amp;quot;, 512);&lt;br /&gt;
  sound2 = minim.loadSample(&amp;quot;musterfinal.wav&amp;quot;, 512);&lt;br /&gt;
  sound3 = minim.loadSample(&amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound4 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 512);&lt;br /&gt;
  sound5 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 512);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  graph();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void graph() {&lt;br /&gt;
  for (int i=0; i&amp;lt;numOfSensors; i++) {&lt;br /&gt;
    if (sensorValues[i] &amp;lt; sensorThresholds[i]) sound(i);&lt;br /&gt;
&lt;br /&gt;
    // map the incoming values to an appropriate range:&lt;br /&gt;
    float ypos = map(sensorValues[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
&lt;br /&gt;
    // figure out the y position for this particular graph:&lt;br /&gt;
    float graphBottom = i * height/numOfSensors;&lt;br /&gt;
    ypos = ypos + graphBottom;&lt;br /&gt;
&lt;br /&gt;
    // draw the graph bottoms:&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    line(0, graphBottom, width, graphBottom);&lt;br /&gt;
&lt;br /&gt;
    // draw the thresholds:&lt;br /&gt;
    stroke(200, 0, 0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    float redLine = map(sensorThresholds[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
    line(0, redLine + graphBottom, width, redLine + graphBottom);&lt;br /&gt;
&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(2);&lt;br /&gt;
    line(xpos, previousSensorValues[i], xpos+1, ypos);&lt;br /&gt;
&lt;br /&gt;
    previousSensorValues[i] = ypos;&lt;br /&gt;
&lt;br /&gt;
    // if you've drawn to the edge of the window, start at the beginning again:&lt;br /&gt;
    if (xpos &amp;gt;= width) {&lt;br /&gt;
      xpos = 0;&lt;br /&gt;
      background(215);&lt;br /&gt;
    } else xpos+=0.1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void serialEvent (Serial myPort) {&lt;br /&gt;
  // get the ASCII string:&lt;br /&gt;
  String inString = myPort.readStringUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  // if it's not empty:&lt;br /&gt;
  if (inString != null) {&lt;br /&gt;
    // trim off any whitespace:&lt;br /&gt;
    inString = trim(inString);&lt;br /&gt;
&lt;br /&gt;
    // convert to an array of ints:&lt;br /&gt;
    int incomingValues[] = int(split(inString, &amp;quot;\t&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
    if (incomingValues.length &amp;lt;= numOfSensors &amp;amp;&amp;amp; incomingValues.length &amp;gt; 0) {&lt;br /&gt;
      for (int i = 0; i &amp;lt; incomingValues.length; i++) {&lt;br /&gt;
        sensorValues[i] = incomingValues[i];&lt;br /&gt;
        print(sensorValues[i] + &amp;quot;\t&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      println();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 4: &lt;br /&gt;
    sound4.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 5: &lt;br /&gt;
    sound5.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the dating-dome ==&lt;br /&gt;
&lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the dating-dome&lt;br /&gt;
 &lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import ddf.minim.*;  &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
int delayTime = 800;&lt;br /&gt;
boolean w_released = true;&lt;br /&gt;
boolean d_released = true;&lt;br /&gt;
boolean s_released = true;&lt;br /&gt;
boolean a_released = true;&lt;br /&gt;
int maxCount = 3;&lt;br /&gt;
int w_count = 0;&lt;br /&gt;
int a_count = 0;&lt;br /&gt;
int s_count = 0;&lt;br /&gt;
int d_count = 0;&lt;br /&gt;
int szene = 0;&lt;br /&gt;
int previousSzene;&lt;br /&gt;
int soundChangeInterval = 5000;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(1000, 800);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  background(255);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  szene = minute() % 3;&lt;br /&gt;
  if (szene != previousSzene) {&lt;br /&gt;
    previousSzene = szene;&lt;br /&gt;
    println(szene);&lt;br /&gt;
&lt;br /&gt;
    if (szene == 0) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;be.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;come.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;together.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;withMe.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 1) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 2) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void keyPressed() {&lt;br /&gt;
  if ((key == 'w' || key == 'W') &amp;amp;&amp;amp; w_released == true &amp;amp;&amp;amp; w_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0);&lt;br /&gt;
    w_released = false;&lt;br /&gt;
    sound(0);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    w_count ++;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'a' || key == 'A') &amp;amp;&amp;amp; a_released == true &amp;amp;&amp;amp; a_count &amp;lt; maxCount) {&lt;br /&gt;
    background(200, 0, 0);&lt;br /&gt;
    a_released = false;&lt;br /&gt;
    sound(1);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    a_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 's' || key == 'S') &amp;amp;&amp;amp; s_released == true &amp;amp;&amp;amp; s_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 200, 0);&lt;br /&gt;
    s_released = false;&lt;br /&gt;
    sound(2);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    s_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'd' || key == 'D') &amp;amp;&amp;amp; d_released == true &amp;amp;&amp;amp; d_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 0, 200);&lt;br /&gt;
    d_released = false;&lt;br /&gt;
    sound(3);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    d_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void keyReleased() {&lt;br /&gt;
  if (key == 'd' || key == 'D') {&lt;br /&gt;
    d_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'a' || key == 'A') {&lt;br /&gt;
    a_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 's' || key == 'S') {&lt;br /&gt;
    s_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'w' || key == 'W') {&lt;br /&gt;
    w_released = true;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rodolfo.acostacastro</name></author>
	</entry>
	<entry>
		<id>http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2782</id>
		<title>Random Acts of Vulnerability</title>
		<link rel="alternate" type="text/html" href="http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2782"/>
		<updated>2021-12-01T19:58:43Z</updated>

		<summary type="html">&lt;p&gt;Rodolfo.acostacastro: /* dokumentation_JAM &amp;amp;#128206; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Random Acts of Vulnerability ist ein immersives Spiel für vier Spieler*innen in vier Dimensionen.  Durch Erkundung und Dokumentation der jeweils eigenen Dimension, formen die Spieler*innen anhand des Gesammelten und Erlebten die Erzählungen selbst.&lt;br /&gt;
Auf ein installatives Netz aus experimentellen Materialen, soften Schaltkreisen, meditativen Klangwelten, grotesken Interfaces und verzerrten Output-Signalen aufbauend, werden Fragen nach Isolation, Einsamkeit, immaterieller und haptischer Vernetzung und der Herstellung von Verhandlungsgrundlagen gestellt.&lt;br /&gt;
&lt;br /&gt;
Eine Arbeit von: Zoe Lohmann, Ella Estrella Tischa Raetzer, Rodolfo Acosta Castro, Lena Böckmann&lt;br /&gt;
&lt;br /&gt;
Video: https://www.youtube.com/watch?v=850KCMYEAow&amp;amp;t=7s&lt;br /&gt;
&lt;br /&gt;
https://live.staticflickr.com/65535/51681534884_545f161fd9.jpg&lt;br /&gt;
&lt;br /&gt;
= dokumentation_JAM &amp;lt;span style='font-size:50px;'&amp;gt;&amp;amp;#128206;&amp;lt;/span&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:doku_nextLevel.jpg| thumb |Die Frage ist: wie stellt man eine Dokumentation?]]&lt;br /&gt;
&lt;br /&gt;
* Bilddokumentation sammelt und einordnen &lt;br /&gt;
* künstlerisch/ästhetisch mit dem Material umgehen&lt;br /&gt;
* Dokumentieren auch Fehler, persönliche Ansprüche und Gespräche, Unerwartetes genauso wie&lt;br /&gt;
* Code-Snippets, Schaltpläne, Materialen, Skizzen&lt;br /&gt;
* usw.&lt;br /&gt;
* let´s go!&lt;br /&gt;
&lt;br /&gt;
PS --&amp;gt; how to display Emojis [[Special: https://www.w3schools.com/charsets/ref_emoji.asp]]&lt;br /&gt;
&lt;br /&gt;
= DOME 1 = &lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
*Stretch-Jersey&lt;br /&gt;
*Polymorph&lt;br /&gt;
*Audiojacks&lt;br /&gt;
*Aux-Kabel&lt;br /&gt;
*Kunstblumen&lt;br /&gt;
*Röhrenfernsehe&lt;br /&gt;
etc...&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
*Processing-Codes&lt;br /&gt;
*Fingerhäkeln: https://www.youtube.com/watch?v=vfScF5EQ3sU&lt;br /&gt;
&lt;br /&gt;
== Sound == &lt;br /&gt;
 &lt;br /&gt;
*Klangbeispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= DOME 2 =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
Watte, Silikon, Kunstblumen, LED-Kerzen....&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
== Sound/Klang == &lt;br /&gt;
&lt;br /&gt;
Beispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= DOME 3 MINI-DOM  =&lt;br /&gt;
&lt;br /&gt;
= relevant links =&lt;br /&gt;
&lt;br /&gt;
ESP with Arduino: http://hyperdramatik.net/mediawiki/index.php?title=ESP32_mit_Arduino&lt;br /&gt;
&lt;br /&gt;
MQTT: http://hyperdramatik.net/mediawiki/index.php?title=Hauptseite#MQTT&lt;br /&gt;
&lt;br /&gt;
DOMEs: http://hyperdramatik.net/mediawiki/index.php?title=Dome_Pod_KIT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= code examples from the project =&lt;br /&gt;
&lt;br /&gt;
== Arduino code for sounds in the fishing-dome ==&lt;br /&gt;
&lt;br /&gt;
// running on an ESP [[Spaghetti Monster]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
&lt;br /&gt;
byte analogPins[] = {&lt;br /&gt;
36, 39, 34, 35, 32, 33&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    pinMode(analogPins[i], INPUT);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    Serial.print(analogRead(analogPins[i]));&lt;br /&gt;
    Serial.print(&amp;quot;\t&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  delay(20);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the fishing-dome ==&lt;br /&gt;
 &lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the fishing-dome&lt;br /&gt;
 &lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import processing.serial.*;&lt;br /&gt;
import ddf.minim.*;&lt;br /&gt;
Serial myPort;    &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
//change these:&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
int ADCmax = 4095; &lt;br /&gt;
//int ADCmax = 1023;&lt;br /&gt;
float[] sensorThresholds = {1000, 1000, 1000, 1000, 1000, 1000};//new float[numOfSensors];&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
float[] sensorValues = new float[numOfSensors];&lt;br /&gt;
float[] previousSensorValues = new float[numOfSensors];&lt;br /&gt;
float xpos = 0;&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(600, 400);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  background(255);&lt;br /&gt;
&lt;br /&gt;
  println(Serial.list());&lt;br /&gt;
  String portName = Serial.list()[1];&lt;br /&gt;
  myPort = new Serial(this, &amp;quot;/dev/cu.SLAB_USBtoUART&amp;quot;, 9600);&lt;br /&gt;
  myPort.clear();&lt;br /&gt;
  myPort.bufferUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  sound0 = minim.loadSample( &amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound1 = minim.loadSample(&amp;quot;crazyfrogbardcore.wav&amp;quot;, 512);&lt;br /&gt;
  sound2 = minim.loadSample(&amp;quot;musterfinal.wav&amp;quot;, 512);&lt;br /&gt;
  sound3 = minim.loadSample(&amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound4 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 512);&lt;br /&gt;
  sound5 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 512);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  graph();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void graph() {&lt;br /&gt;
  for (int i=0; i&amp;lt;numOfSensors; i++) {&lt;br /&gt;
    if (sensorValues[i] &amp;lt; sensorThresholds[i]) sound(i);&lt;br /&gt;
&lt;br /&gt;
    // map the incoming values to an appropriate range:&lt;br /&gt;
    float ypos = map(sensorValues[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
&lt;br /&gt;
    // figure out the y position for this particular graph:&lt;br /&gt;
    float graphBottom = i * height/numOfSensors;&lt;br /&gt;
    ypos = ypos + graphBottom;&lt;br /&gt;
&lt;br /&gt;
    // draw the graph bottoms:&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    line(0, graphBottom, width, graphBottom);&lt;br /&gt;
&lt;br /&gt;
    // draw the thresholds:&lt;br /&gt;
    stroke(200, 0, 0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    float redLine = map(sensorThresholds[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
    line(0, redLine + graphBottom, width, redLine + graphBottom);&lt;br /&gt;
&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(2);&lt;br /&gt;
    line(xpos, previousSensorValues[i], xpos+1, ypos);&lt;br /&gt;
&lt;br /&gt;
    previousSensorValues[i] = ypos;&lt;br /&gt;
&lt;br /&gt;
    // if you've drawn to the edge of the window, start at the beginning again:&lt;br /&gt;
    if (xpos &amp;gt;= width) {&lt;br /&gt;
      xpos = 0;&lt;br /&gt;
      background(215);&lt;br /&gt;
    } else xpos+=0.1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void serialEvent (Serial myPort) {&lt;br /&gt;
  // get the ASCII string:&lt;br /&gt;
  String inString = myPort.readStringUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  // if it's not empty:&lt;br /&gt;
  if (inString != null) {&lt;br /&gt;
    // trim off any whitespace:&lt;br /&gt;
    inString = trim(inString);&lt;br /&gt;
&lt;br /&gt;
    // convert to an array of ints:&lt;br /&gt;
    int incomingValues[] = int(split(inString, &amp;quot;\t&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
    if (incomingValues.length &amp;lt;= numOfSensors &amp;amp;&amp;amp; incomingValues.length &amp;gt; 0) {&lt;br /&gt;
      for (int i = 0; i &amp;lt; incomingValues.length; i++) {&lt;br /&gt;
        sensorValues[i] = incomingValues[i];&lt;br /&gt;
        print(sensorValues[i] + &amp;quot;\t&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      println();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 4: &lt;br /&gt;
    sound4.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 5: &lt;br /&gt;
    sound5.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the dating-dome ==&lt;br /&gt;
&lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the dating-dome&lt;br /&gt;
 &lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import ddf.minim.*;  &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
int delayTime = 800;&lt;br /&gt;
boolean w_released = true;&lt;br /&gt;
boolean d_released = true;&lt;br /&gt;
boolean s_released = true;&lt;br /&gt;
boolean a_released = true;&lt;br /&gt;
int maxCount = 3;&lt;br /&gt;
int w_count = 0;&lt;br /&gt;
int a_count = 0;&lt;br /&gt;
int s_count = 0;&lt;br /&gt;
int d_count = 0;&lt;br /&gt;
int szene = 0;&lt;br /&gt;
int previousSzene;&lt;br /&gt;
int soundChangeInterval = 5000;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(1000, 800);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  background(255);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  szene = minute() % 3;&lt;br /&gt;
  if (szene != previousSzene) {&lt;br /&gt;
    previousSzene = szene;&lt;br /&gt;
    println(szene);&lt;br /&gt;
&lt;br /&gt;
    if (szene == 0) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;be.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;come.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;together.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;withMe.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 1) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 2) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void keyPressed() {&lt;br /&gt;
  if ((key == 'w' || key == 'W') &amp;amp;&amp;amp; w_released == true &amp;amp;&amp;amp; w_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0);&lt;br /&gt;
    w_released = false;&lt;br /&gt;
    sound(0);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    w_count ++;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'a' || key == 'A') &amp;amp;&amp;amp; a_released == true &amp;amp;&amp;amp; a_count &amp;lt; maxCount) {&lt;br /&gt;
    background(200, 0, 0);&lt;br /&gt;
    a_released = false;&lt;br /&gt;
    sound(1);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    a_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 's' || key == 'S') &amp;amp;&amp;amp; s_released == true &amp;amp;&amp;amp; s_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 200, 0);&lt;br /&gt;
    s_released = false;&lt;br /&gt;
    sound(2);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    s_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'd' || key == 'D') &amp;amp;&amp;amp; d_released == true &amp;amp;&amp;amp; d_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 0, 200);&lt;br /&gt;
    d_released = false;&lt;br /&gt;
    sound(3);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    d_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void keyReleased() {&lt;br /&gt;
  if (key == 'd' || key == 'D') {&lt;br /&gt;
    d_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'a' || key == 'A') {&lt;br /&gt;
    a_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 's' || key == 'S') {&lt;br /&gt;
    s_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'w' || key == 'W') {&lt;br /&gt;
    w_released = true;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rodolfo.acostacastro</name></author>
	</entry>
	<entry>
		<id>http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2781</id>
		<title>Random Acts of Vulnerability</title>
		<link rel="alternate" type="text/html" href="http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2781"/>
		<updated>2021-12-01T19:53:22Z</updated>

		<summary type="html">&lt;p&gt;Rodolfo.acostacastro: /* dokumentation_JAM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Random Acts of Vulnerability ist ein immersives Spiel für vier Spieler*innen in vier Dimensionen.  Durch Erkundung und Dokumentation der jeweils eigenen Dimension, formen die Spieler*innen anhand des Gesammelten und Erlebten die Erzählungen selbst.&lt;br /&gt;
Auf ein installatives Netz aus experimentellen Materialen, soften Schaltkreisen, meditativen Klangwelten, grotesken Interfaces und verzerrten Output-Signalen aufbauend, werden Fragen nach Isolation, Einsamkeit, immaterieller und haptischer Vernetzung und der Herstellung von Verhandlungsgrundlagen gestellt.&lt;br /&gt;
&lt;br /&gt;
Eine Arbeit von: Zoe Lohmann, Ella Estrella Tischa Raetzer, Rodolfo Acosta Castro, Lena Böckmann&lt;br /&gt;
&lt;br /&gt;
Video: https://www.youtube.com/watch?v=850KCMYEAow&amp;amp;t=7s&lt;br /&gt;
&lt;br /&gt;
https://live.staticflickr.com/65535/51681534884_545f161fd9.jpg&lt;br /&gt;
&lt;br /&gt;
= dokumentation_JAM &amp;lt;span style='font-size:50px;'&amp;gt;&amp;amp;#128206;&amp;lt;/span&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:doku_nextLevel.jpg| thumb |Die Frage ist: wie stellt man eine Dokumentation?]]&lt;br /&gt;
&lt;br /&gt;
* Bilddokumentation sammelt und einordnen &lt;br /&gt;
* künstlerisch/ästhetisch mit dem Material umgehen&lt;br /&gt;
* Dokumentieren auch Fehler, persönliche Ansprüche und Gespräche, Unerwartetes genauso wie&lt;br /&gt;
* Code-Snippets, Schaltpläne, Materialen, Skizzen&lt;br /&gt;
* usw.&lt;br /&gt;
* let´s go!&lt;br /&gt;
&lt;br /&gt;
= DOME 1 = &lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
*Stretch-Jersey&lt;br /&gt;
*Polymorph&lt;br /&gt;
*Audiojacks&lt;br /&gt;
*Aux-Kabel&lt;br /&gt;
*Kunstblumen&lt;br /&gt;
*Röhrenfernsehe&lt;br /&gt;
etc...&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
*Processing-Codes&lt;br /&gt;
*Fingerhäkeln: https://www.youtube.com/watch?v=vfScF5EQ3sU&lt;br /&gt;
&lt;br /&gt;
== Sound == &lt;br /&gt;
 &lt;br /&gt;
*Klangbeispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= DOME 2 =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
Watte, Silikon, Kunstblumen, LED-Kerzen....&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
== Sound/Klang == &lt;br /&gt;
&lt;br /&gt;
Beispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= DOME 3 MINI-DOM  =&lt;br /&gt;
&lt;br /&gt;
= relevant links =&lt;br /&gt;
&lt;br /&gt;
ESP with Arduino: http://hyperdramatik.net/mediawiki/index.php?title=ESP32_mit_Arduino&lt;br /&gt;
&lt;br /&gt;
MQTT: http://hyperdramatik.net/mediawiki/index.php?title=Hauptseite#MQTT&lt;br /&gt;
&lt;br /&gt;
DOMEs: http://hyperdramatik.net/mediawiki/index.php?title=Dome_Pod_KIT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= code examples from the project =&lt;br /&gt;
&lt;br /&gt;
== Arduino code for sounds in the fishing-dome ==&lt;br /&gt;
&lt;br /&gt;
// running on an ESP [[Spaghetti Monster]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
&lt;br /&gt;
byte analogPins[] = {&lt;br /&gt;
36, 39, 34, 35, 32, 33&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    pinMode(analogPins[i], INPUT);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    Serial.print(analogRead(analogPins[i]));&lt;br /&gt;
    Serial.print(&amp;quot;\t&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  delay(20);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the fishing-dome ==&lt;br /&gt;
 &lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the fishing-dome&lt;br /&gt;
 &lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import processing.serial.*;&lt;br /&gt;
import ddf.minim.*;&lt;br /&gt;
Serial myPort;    &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
//change these:&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
int ADCmax = 4095; &lt;br /&gt;
//int ADCmax = 1023;&lt;br /&gt;
float[] sensorThresholds = {1000, 1000, 1000, 1000, 1000, 1000};//new float[numOfSensors];&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
float[] sensorValues = new float[numOfSensors];&lt;br /&gt;
float[] previousSensorValues = new float[numOfSensors];&lt;br /&gt;
float xpos = 0;&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(600, 400);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  background(255);&lt;br /&gt;
&lt;br /&gt;
  println(Serial.list());&lt;br /&gt;
  String portName = Serial.list()[1];&lt;br /&gt;
  myPort = new Serial(this, &amp;quot;/dev/cu.SLAB_USBtoUART&amp;quot;, 9600);&lt;br /&gt;
  myPort.clear();&lt;br /&gt;
  myPort.bufferUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  sound0 = minim.loadSample( &amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound1 = minim.loadSample(&amp;quot;crazyfrogbardcore.wav&amp;quot;, 512);&lt;br /&gt;
  sound2 = minim.loadSample(&amp;quot;musterfinal.wav&amp;quot;, 512);&lt;br /&gt;
  sound3 = minim.loadSample(&amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound4 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 512);&lt;br /&gt;
  sound5 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 512);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  graph();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void graph() {&lt;br /&gt;
  for (int i=0; i&amp;lt;numOfSensors; i++) {&lt;br /&gt;
    if (sensorValues[i] &amp;lt; sensorThresholds[i]) sound(i);&lt;br /&gt;
&lt;br /&gt;
    // map the incoming values to an appropriate range:&lt;br /&gt;
    float ypos = map(sensorValues[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
&lt;br /&gt;
    // figure out the y position for this particular graph:&lt;br /&gt;
    float graphBottom = i * height/numOfSensors;&lt;br /&gt;
    ypos = ypos + graphBottom;&lt;br /&gt;
&lt;br /&gt;
    // draw the graph bottoms:&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    line(0, graphBottom, width, graphBottom);&lt;br /&gt;
&lt;br /&gt;
    // draw the thresholds:&lt;br /&gt;
    stroke(200, 0, 0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    float redLine = map(sensorThresholds[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
    line(0, redLine + graphBottom, width, redLine + graphBottom);&lt;br /&gt;
&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(2);&lt;br /&gt;
    line(xpos, previousSensorValues[i], xpos+1, ypos);&lt;br /&gt;
&lt;br /&gt;
    previousSensorValues[i] = ypos;&lt;br /&gt;
&lt;br /&gt;
    // if you've drawn to the edge of the window, start at the beginning again:&lt;br /&gt;
    if (xpos &amp;gt;= width) {&lt;br /&gt;
      xpos = 0;&lt;br /&gt;
      background(215);&lt;br /&gt;
    } else xpos+=0.1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void serialEvent (Serial myPort) {&lt;br /&gt;
  // get the ASCII string:&lt;br /&gt;
  String inString = myPort.readStringUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  // if it's not empty:&lt;br /&gt;
  if (inString != null) {&lt;br /&gt;
    // trim off any whitespace:&lt;br /&gt;
    inString = trim(inString);&lt;br /&gt;
&lt;br /&gt;
    // convert to an array of ints:&lt;br /&gt;
    int incomingValues[] = int(split(inString, &amp;quot;\t&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
    if (incomingValues.length &amp;lt;= numOfSensors &amp;amp;&amp;amp; incomingValues.length &amp;gt; 0) {&lt;br /&gt;
      for (int i = 0; i &amp;lt; incomingValues.length; i++) {&lt;br /&gt;
        sensorValues[i] = incomingValues[i];&lt;br /&gt;
        print(sensorValues[i] + &amp;quot;\t&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      println();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 4: &lt;br /&gt;
    sound4.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 5: &lt;br /&gt;
    sound5.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the dating-dome ==&lt;br /&gt;
&lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the dating-dome&lt;br /&gt;
 &lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import ddf.minim.*;  &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
int delayTime = 800;&lt;br /&gt;
boolean w_released = true;&lt;br /&gt;
boolean d_released = true;&lt;br /&gt;
boolean s_released = true;&lt;br /&gt;
boolean a_released = true;&lt;br /&gt;
int maxCount = 3;&lt;br /&gt;
int w_count = 0;&lt;br /&gt;
int a_count = 0;&lt;br /&gt;
int s_count = 0;&lt;br /&gt;
int d_count = 0;&lt;br /&gt;
int szene = 0;&lt;br /&gt;
int previousSzene;&lt;br /&gt;
int soundChangeInterval = 5000;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(1000, 800);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  background(255);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  szene = minute() % 3;&lt;br /&gt;
  if (szene != previousSzene) {&lt;br /&gt;
    previousSzene = szene;&lt;br /&gt;
    println(szene);&lt;br /&gt;
&lt;br /&gt;
    if (szene == 0) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;be.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;come.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;together.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;withMe.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 1) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 2) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void keyPressed() {&lt;br /&gt;
  if ((key == 'w' || key == 'W') &amp;amp;&amp;amp; w_released == true &amp;amp;&amp;amp; w_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0);&lt;br /&gt;
    w_released = false;&lt;br /&gt;
    sound(0);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    w_count ++;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'a' || key == 'A') &amp;amp;&amp;amp; a_released == true &amp;amp;&amp;amp; a_count &amp;lt; maxCount) {&lt;br /&gt;
    background(200, 0, 0);&lt;br /&gt;
    a_released = false;&lt;br /&gt;
    sound(1);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    a_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 's' || key == 'S') &amp;amp;&amp;amp; s_released == true &amp;amp;&amp;amp; s_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 200, 0);&lt;br /&gt;
    s_released = false;&lt;br /&gt;
    sound(2);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    s_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'd' || key == 'D') &amp;amp;&amp;amp; d_released == true &amp;amp;&amp;amp; d_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 0, 200);&lt;br /&gt;
    d_released = false;&lt;br /&gt;
    sound(3);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    d_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void keyReleased() {&lt;br /&gt;
  if (key == 'd' || key == 'D') {&lt;br /&gt;
    d_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'a' || key == 'A') {&lt;br /&gt;
    a_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 's' || key == 'S') {&lt;br /&gt;
    s_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'w' || key == 'W') {&lt;br /&gt;
    w_released = true;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rodolfo.acostacastro</name></author>
	</entry>
	<entry>
		<id>http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2780</id>
		<title>Random Acts of Vulnerability</title>
		<link rel="alternate" type="text/html" href="http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2780"/>
		<updated>2021-12-01T19:52:59Z</updated>

		<summary type="html">&lt;p&gt;Rodolfo.acostacastro: /* dokumentation_JAM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Random Acts of Vulnerability ist ein immersives Spiel für vier Spieler*innen in vier Dimensionen.  Durch Erkundung und Dokumentation der jeweils eigenen Dimension, formen die Spieler*innen anhand des Gesammelten und Erlebten die Erzählungen selbst.&lt;br /&gt;
Auf ein installatives Netz aus experimentellen Materialen, soften Schaltkreisen, meditativen Klangwelten, grotesken Interfaces und verzerrten Output-Signalen aufbauend, werden Fragen nach Isolation, Einsamkeit, immaterieller und haptischer Vernetzung und der Herstellung von Verhandlungsgrundlagen gestellt.&lt;br /&gt;
&lt;br /&gt;
Eine Arbeit von: Zoe Lohmann, Ella Estrella Tischa Raetzer, Rodolfo Acosta Castro, Lena Böckmann&lt;br /&gt;
&lt;br /&gt;
Video: https://www.youtube.com/watch?v=850KCMYEAow&amp;amp;t=7s&lt;br /&gt;
&lt;br /&gt;
https://live.staticflickr.com/65535/51681534884_545f161fd9.jpg&lt;br /&gt;
&lt;br /&gt;
= dokumentation_JAM =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style='font-size:50px;'&amp;gt;&amp;amp;#128206;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:doku_nextLevel.jpg| thumb |Die Frage ist: wie stellt man eine Dokumentation?]]&lt;br /&gt;
&lt;br /&gt;
* Bilddokumentation sammelt und einordnen &lt;br /&gt;
* künstlerisch/ästhetisch mit dem Material umgehen&lt;br /&gt;
* Dokumentieren auch Fehler, persönliche Ansprüche und Gespräche, Unerwartetes genauso wie&lt;br /&gt;
* Code-Snippets, Schaltpläne, Materialen, Skizzen&lt;br /&gt;
* usw.&lt;br /&gt;
* let´s go!&lt;br /&gt;
&lt;br /&gt;
= DOME 1 = &lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
*Stretch-Jersey&lt;br /&gt;
*Polymorph&lt;br /&gt;
*Audiojacks&lt;br /&gt;
*Aux-Kabel&lt;br /&gt;
*Kunstblumen&lt;br /&gt;
*Röhrenfernsehe&lt;br /&gt;
etc...&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
*Processing-Codes&lt;br /&gt;
*Fingerhäkeln: https://www.youtube.com/watch?v=vfScF5EQ3sU&lt;br /&gt;
&lt;br /&gt;
== Sound == &lt;br /&gt;
 &lt;br /&gt;
*Klangbeispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= DOME 2 =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
Watte, Silikon, Kunstblumen, LED-Kerzen....&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
== Sound/Klang == &lt;br /&gt;
&lt;br /&gt;
Beispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= DOME 3 MINI-DOM  =&lt;br /&gt;
&lt;br /&gt;
= relevant links =&lt;br /&gt;
&lt;br /&gt;
ESP with Arduino: http://hyperdramatik.net/mediawiki/index.php?title=ESP32_mit_Arduino&lt;br /&gt;
&lt;br /&gt;
MQTT: http://hyperdramatik.net/mediawiki/index.php?title=Hauptseite#MQTT&lt;br /&gt;
&lt;br /&gt;
DOMEs: http://hyperdramatik.net/mediawiki/index.php?title=Dome_Pod_KIT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= code examples from the project =&lt;br /&gt;
&lt;br /&gt;
== Arduino code for sounds in the fishing-dome ==&lt;br /&gt;
&lt;br /&gt;
// running on an ESP [[Spaghetti Monster]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
&lt;br /&gt;
byte analogPins[] = {&lt;br /&gt;
36, 39, 34, 35, 32, 33&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    pinMode(analogPins[i], INPUT);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    Serial.print(analogRead(analogPins[i]));&lt;br /&gt;
    Serial.print(&amp;quot;\t&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  delay(20);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the fishing-dome ==&lt;br /&gt;
 &lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the fishing-dome&lt;br /&gt;
 &lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import processing.serial.*;&lt;br /&gt;
import ddf.minim.*;&lt;br /&gt;
Serial myPort;    &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
//change these:&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
int ADCmax = 4095; &lt;br /&gt;
//int ADCmax = 1023;&lt;br /&gt;
float[] sensorThresholds = {1000, 1000, 1000, 1000, 1000, 1000};//new float[numOfSensors];&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
float[] sensorValues = new float[numOfSensors];&lt;br /&gt;
float[] previousSensorValues = new float[numOfSensors];&lt;br /&gt;
float xpos = 0;&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(600, 400);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  background(255);&lt;br /&gt;
&lt;br /&gt;
  println(Serial.list());&lt;br /&gt;
  String portName = Serial.list()[1];&lt;br /&gt;
  myPort = new Serial(this, &amp;quot;/dev/cu.SLAB_USBtoUART&amp;quot;, 9600);&lt;br /&gt;
  myPort.clear();&lt;br /&gt;
  myPort.bufferUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  sound0 = minim.loadSample( &amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound1 = minim.loadSample(&amp;quot;crazyfrogbardcore.wav&amp;quot;, 512);&lt;br /&gt;
  sound2 = minim.loadSample(&amp;quot;musterfinal.wav&amp;quot;, 512);&lt;br /&gt;
  sound3 = minim.loadSample(&amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound4 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 512);&lt;br /&gt;
  sound5 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 512);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  graph();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void graph() {&lt;br /&gt;
  for (int i=0; i&amp;lt;numOfSensors; i++) {&lt;br /&gt;
    if (sensorValues[i] &amp;lt; sensorThresholds[i]) sound(i);&lt;br /&gt;
&lt;br /&gt;
    // map the incoming values to an appropriate range:&lt;br /&gt;
    float ypos = map(sensorValues[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
&lt;br /&gt;
    // figure out the y position for this particular graph:&lt;br /&gt;
    float graphBottom = i * height/numOfSensors;&lt;br /&gt;
    ypos = ypos + graphBottom;&lt;br /&gt;
&lt;br /&gt;
    // draw the graph bottoms:&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    line(0, graphBottom, width, graphBottom);&lt;br /&gt;
&lt;br /&gt;
    // draw the thresholds:&lt;br /&gt;
    stroke(200, 0, 0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    float redLine = map(sensorThresholds[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
    line(0, redLine + graphBottom, width, redLine + graphBottom);&lt;br /&gt;
&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(2);&lt;br /&gt;
    line(xpos, previousSensorValues[i], xpos+1, ypos);&lt;br /&gt;
&lt;br /&gt;
    previousSensorValues[i] = ypos;&lt;br /&gt;
&lt;br /&gt;
    // if you've drawn to the edge of the window, start at the beginning again:&lt;br /&gt;
    if (xpos &amp;gt;= width) {&lt;br /&gt;
      xpos = 0;&lt;br /&gt;
      background(215);&lt;br /&gt;
    } else xpos+=0.1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void serialEvent (Serial myPort) {&lt;br /&gt;
  // get the ASCII string:&lt;br /&gt;
  String inString = myPort.readStringUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  // if it's not empty:&lt;br /&gt;
  if (inString != null) {&lt;br /&gt;
    // trim off any whitespace:&lt;br /&gt;
    inString = trim(inString);&lt;br /&gt;
&lt;br /&gt;
    // convert to an array of ints:&lt;br /&gt;
    int incomingValues[] = int(split(inString, &amp;quot;\t&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
    if (incomingValues.length &amp;lt;= numOfSensors &amp;amp;&amp;amp; incomingValues.length &amp;gt; 0) {&lt;br /&gt;
      for (int i = 0; i &amp;lt; incomingValues.length; i++) {&lt;br /&gt;
        sensorValues[i] = incomingValues[i];&lt;br /&gt;
        print(sensorValues[i] + &amp;quot;\t&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      println();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 4: &lt;br /&gt;
    sound4.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 5: &lt;br /&gt;
    sound5.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the dating-dome ==&lt;br /&gt;
&lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the dating-dome&lt;br /&gt;
 &lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import ddf.minim.*;  &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
int delayTime = 800;&lt;br /&gt;
boolean w_released = true;&lt;br /&gt;
boolean d_released = true;&lt;br /&gt;
boolean s_released = true;&lt;br /&gt;
boolean a_released = true;&lt;br /&gt;
int maxCount = 3;&lt;br /&gt;
int w_count = 0;&lt;br /&gt;
int a_count = 0;&lt;br /&gt;
int s_count = 0;&lt;br /&gt;
int d_count = 0;&lt;br /&gt;
int szene = 0;&lt;br /&gt;
int previousSzene;&lt;br /&gt;
int soundChangeInterval = 5000;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(1000, 800);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  background(255);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  szene = minute() % 3;&lt;br /&gt;
  if (szene != previousSzene) {&lt;br /&gt;
    previousSzene = szene;&lt;br /&gt;
    println(szene);&lt;br /&gt;
&lt;br /&gt;
    if (szene == 0) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;be.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;come.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;together.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;withMe.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 1) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 2) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void keyPressed() {&lt;br /&gt;
  if ((key == 'w' || key == 'W') &amp;amp;&amp;amp; w_released == true &amp;amp;&amp;amp; w_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0);&lt;br /&gt;
    w_released = false;&lt;br /&gt;
    sound(0);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    w_count ++;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'a' || key == 'A') &amp;amp;&amp;amp; a_released == true &amp;amp;&amp;amp; a_count &amp;lt; maxCount) {&lt;br /&gt;
    background(200, 0, 0);&lt;br /&gt;
    a_released = false;&lt;br /&gt;
    sound(1);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    a_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 's' || key == 'S') &amp;amp;&amp;amp; s_released == true &amp;amp;&amp;amp; s_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 200, 0);&lt;br /&gt;
    s_released = false;&lt;br /&gt;
    sound(2);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    s_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'd' || key == 'D') &amp;amp;&amp;amp; d_released == true &amp;amp;&amp;amp; d_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 0, 200);&lt;br /&gt;
    d_released = false;&lt;br /&gt;
    sound(3);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    d_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void keyReleased() {&lt;br /&gt;
  if (key == 'd' || key == 'D') {&lt;br /&gt;
    d_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'a' || key == 'A') {&lt;br /&gt;
    a_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 's' || key == 'S') {&lt;br /&gt;
    s_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'w' || key == 'W') {&lt;br /&gt;
    w_released = true;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rodolfo.acostacastro</name></author>
	</entry>
	<entry>
		<id>http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2779</id>
		<title>Random Acts of Vulnerability</title>
		<link rel="alternate" type="text/html" href="http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2779"/>
		<updated>2021-12-01T19:52:28Z</updated>

		<summary type="html">&lt;p&gt;Rodolfo.acostacastro: /* dokumentation_JAM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Random Acts of Vulnerability ist ein immersives Spiel für vier Spieler*innen in vier Dimensionen.  Durch Erkundung und Dokumentation der jeweils eigenen Dimension, formen die Spieler*innen anhand des Gesammelten und Erlebten die Erzählungen selbst.&lt;br /&gt;
Auf ein installatives Netz aus experimentellen Materialen, soften Schaltkreisen, meditativen Klangwelten, grotesken Interfaces und verzerrten Output-Signalen aufbauend, werden Fragen nach Isolation, Einsamkeit, immaterieller und haptischer Vernetzung und der Herstellung von Verhandlungsgrundlagen gestellt.&lt;br /&gt;
&lt;br /&gt;
Eine Arbeit von: Zoe Lohmann, Ella Estrella Tischa Raetzer, Rodolfo Acosta Castro, Lena Böckmann&lt;br /&gt;
&lt;br /&gt;
Video: https://www.youtube.com/watch?v=850KCMYEAow&amp;amp;t=7s&lt;br /&gt;
&lt;br /&gt;
https://live.staticflickr.com/65535/51681534884_545f161fd9.jpg&lt;br /&gt;
&lt;br /&gt;
= dokumentation_JAM =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style='font-size:100px;'&amp;gt;&amp;amp;#128206;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:doku_nextLevel.jpg| thumb |Die Frage ist: wie stellt man eine Dokumentation?]]&lt;br /&gt;
&lt;br /&gt;
* Bilddokumentation sammelt und einordnen &lt;br /&gt;
* künstlerisch/ästhetisch mit dem Material umgehen&lt;br /&gt;
* Dokumentieren auch Fehler, persönliche Ansprüche und Gespräche, Unerwartetes genauso wie&lt;br /&gt;
* Code-Snippets, Schaltpläne, Materialen, Skizzen&lt;br /&gt;
* usw.&lt;br /&gt;
* let´s go!&lt;br /&gt;
&lt;br /&gt;
= DOME 1 = &lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
*Stretch-Jersey&lt;br /&gt;
*Polymorph&lt;br /&gt;
*Audiojacks&lt;br /&gt;
*Aux-Kabel&lt;br /&gt;
*Kunstblumen&lt;br /&gt;
*Röhrenfernsehe&lt;br /&gt;
etc...&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
*Processing-Codes&lt;br /&gt;
*Fingerhäkeln: https://www.youtube.com/watch?v=vfScF5EQ3sU&lt;br /&gt;
&lt;br /&gt;
== Sound == &lt;br /&gt;
 &lt;br /&gt;
*Klangbeispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= DOME 2 =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
Watte, Silikon, Kunstblumen, LED-Kerzen....&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
== Sound/Klang == &lt;br /&gt;
&lt;br /&gt;
Beispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= DOME 3 MINI-DOM  =&lt;br /&gt;
&lt;br /&gt;
= relevant links =&lt;br /&gt;
&lt;br /&gt;
ESP with Arduino: http://hyperdramatik.net/mediawiki/index.php?title=ESP32_mit_Arduino&lt;br /&gt;
&lt;br /&gt;
MQTT: http://hyperdramatik.net/mediawiki/index.php?title=Hauptseite#MQTT&lt;br /&gt;
&lt;br /&gt;
DOMEs: http://hyperdramatik.net/mediawiki/index.php?title=Dome_Pod_KIT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= code examples from the project =&lt;br /&gt;
&lt;br /&gt;
== Arduino code for sounds in the fishing-dome ==&lt;br /&gt;
&lt;br /&gt;
// running on an ESP [[Spaghetti Monster]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
&lt;br /&gt;
byte analogPins[] = {&lt;br /&gt;
36, 39, 34, 35, 32, 33&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    pinMode(analogPins[i], INPUT);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    Serial.print(analogRead(analogPins[i]));&lt;br /&gt;
    Serial.print(&amp;quot;\t&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  delay(20);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the fishing-dome ==&lt;br /&gt;
 &lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the fishing-dome&lt;br /&gt;
 &lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import processing.serial.*;&lt;br /&gt;
import ddf.minim.*;&lt;br /&gt;
Serial myPort;    &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
//change these:&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
int ADCmax = 4095; &lt;br /&gt;
//int ADCmax = 1023;&lt;br /&gt;
float[] sensorThresholds = {1000, 1000, 1000, 1000, 1000, 1000};//new float[numOfSensors];&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
float[] sensorValues = new float[numOfSensors];&lt;br /&gt;
float[] previousSensorValues = new float[numOfSensors];&lt;br /&gt;
float xpos = 0;&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(600, 400);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  background(255);&lt;br /&gt;
&lt;br /&gt;
  println(Serial.list());&lt;br /&gt;
  String portName = Serial.list()[1];&lt;br /&gt;
  myPort = new Serial(this, &amp;quot;/dev/cu.SLAB_USBtoUART&amp;quot;, 9600);&lt;br /&gt;
  myPort.clear();&lt;br /&gt;
  myPort.bufferUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  sound0 = minim.loadSample( &amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound1 = minim.loadSample(&amp;quot;crazyfrogbardcore.wav&amp;quot;, 512);&lt;br /&gt;
  sound2 = minim.loadSample(&amp;quot;musterfinal.wav&amp;quot;, 512);&lt;br /&gt;
  sound3 = minim.loadSample(&amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound4 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 512);&lt;br /&gt;
  sound5 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 512);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  graph();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void graph() {&lt;br /&gt;
  for (int i=0; i&amp;lt;numOfSensors; i++) {&lt;br /&gt;
    if (sensorValues[i] &amp;lt; sensorThresholds[i]) sound(i);&lt;br /&gt;
&lt;br /&gt;
    // map the incoming values to an appropriate range:&lt;br /&gt;
    float ypos = map(sensorValues[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
&lt;br /&gt;
    // figure out the y position for this particular graph:&lt;br /&gt;
    float graphBottom = i * height/numOfSensors;&lt;br /&gt;
    ypos = ypos + graphBottom;&lt;br /&gt;
&lt;br /&gt;
    // draw the graph bottoms:&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    line(0, graphBottom, width, graphBottom);&lt;br /&gt;
&lt;br /&gt;
    // draw the thresholds:&lt;br /&gt;
    stroke(200, 0, 0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    float redLine = map(sensorThresholds[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
    line(0, redLine + graphBottom, width, redLine + graphBottom);&lt;br /&gt;
&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(2);&lt;br /&gt;
    line(xpos, previousSensorValues[i], xpos+1, ypos);&lt;br /&gt;
&lt;br /&gt;
    previousSensorValues[i] = ypos;&lt;br /&gt;
&lt;br /&gt;
    // if you've drawn to the edge of the window, start at the beginning again:&lt;br /&gt;
    if (xpos &amp;gt;= width) {&lt;br /&gt;
      xpos = 0;&lt;br /&gt;
      background(215);&lt;br /&gt;
    } else xpos+=0.1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void serialEvent (Serial myPort) {&lt;br /&gt;
  // get the ASCII string:&lt;br /&gt;
  String inString = myPort.readStringUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  // if it's not empty:&lt;br /&gt;
  if (inString != null) {&lt;br /&gt;
    // trim off any whitespace:&lt;br /&gt;
    inString = trim(inString);&lt;br /&gt;
&lt;br /&gt;
    // convert to an array of ints:&lt;br /&gt;
    int incomingValues[] = int(split(inString, &amp;quot;\t&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
    if (incomingValues.length &amp;lt;= numOfSensors &amp;amp;&amp;amp; incomingValues.length &amp;gt; 0) {&lt;br /&gt;
      for (int i = 0; i &amp;lt; incomingValues.length; i++) {&lt;br /&gt;
        sensorValues[i] = incomingValues[i];&lt;br /&gt;
        print(sensorValues[i] + &amp;quot;\t&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      println();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 4: &lt;br /&gt;
    sound4.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 5: &lt;br /&gt;
    sound5.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the dating-dome ==&lt;br /&gt;
&lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the dating-dome&lt;br /&gt;
 &lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import ddf.minim.*;  &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
int delayTime = 800;&lt;br /&gt;
boolean w_released = true;&lt;br /&gt;
boolean d_released = true;&lt;br /&gt;
boolean s_released = true;&lt;br /&gt;
boolean a_released = true;&lt;br /&gt;
int maxCount = 3;&lt;br /&gt;
int w_count = 0;&lt;br /&gt;
int a_count = 0;&lt;br /&gt;
int s_count = 0;&lt;br /&gt;
int d_count = 0;&lt;br /&gt;
int szene = 0;&lt;br /&gt;
int previousSzene;&lt;br /&gt;
int soundChangeInterval = 5000;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(1000, 800);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  background(255);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  szene = minute() % 3;&lt;br /&gt;
  if (szene != previousSzene) {&lt;br /&gt;
    previousSzene = szene;&lt;br /&gt;
    println(szene);&lt;br /&gt;
&lt;br /&gt;
    if (szene == 0) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;be.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;come.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;together.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;withMe.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 1) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 2) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void keyPressed() {&lt;br /&gt;
  if ((key == 'w' || key == 'W') &amp;amp;&amp;amp; w_released == true &amp;amp;&amp;amp; w_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0);&lt;br /&gt;
    w_released = false;&lt;br /&gt;
    sound(0);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    w_count ++;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'a' || key == 'A') &amp;amp;&amp;amp; a_released == true &amp;amp;&amp;amp; a_count &amp;lt; maxCount) {&lt;br /&gt;
    background(200, 0, 0);&lt;br /&gt;
    a_released = false;&lt;br /&gt;
    sound(1);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    a_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 's' || key == 'S') &amp;amp;&amp;amp; s_released == true &amp;amp;&amp;amp; s_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 200, 0);&lt;br /&gt;
    s_released = false;&lt;br /&gt;
    sound(2);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    s_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'd' || key == 'D') &amp;amp;&amp;amp; d_released == true &amp;amp;&amp;amp; d_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 0, 200);&lt;br /&gt;
    d_released = false;&lt;br /&gt;
    sound(3);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    d_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void keyReleased() {&lt;br /&gt;
  if (key == 'd' || key == 'D') {&lt;br /&gt;
    d_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'a' || key == 'A') {&lt;br /&gt;
    a_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 's' || key == 'S') {&lt;br /&gt;
    s_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'w' || key == 'W') {&lt;br /&gt;
    w_released = true;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rodolfo.acostacastro</name></author>
	</entry>
	<entry>
		<id>http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2778</id>
		<title>Random Acts of Vulnerability</title>
		<link rel="alternate" type="text/html" href="http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2778"/>
		<updated>2021-12-01T19:52:12Z</updated>

		<summary type="html">&lt;p&gt;Rodolfo.acostacastro: /* dokumentation_JAM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Random Acts of Vulnerability ist ein immersives Spiel für vier Spieler*innen in vier Dimensionen.  Durch Erkundung und Dokumentation der jeweils eigenen Dimension, formen die Spieler*innen anhand des Gesammelten und Erlebten die Erzählungen selbst.&lt;br /&gt;
Auf ein installatives Netz aus experimentellen Materialen, soften Schaltkreisen, meditativen Klangwelten, grotesken Interfaces und verzerrten Output-Signalen aufbauend, werden Fragen nach Isolation, Einsamkeit, immaterieller und haptischer Vernetzung und der Herstellung von Verhandlungsgrundlagen gestellt.&lt;br /&gt;
&lt;br /&gt;
Eine Arbeit von: Zoe Lohmann, Ella Estrella Tischa Raetzer, Rodolfo Acosta Castro, Lena Böckmann&lt;br /&gt;
&lt;br /&gt;
Video: https://www.youtube.com/watch?v=850KCMYEAow&amp;amp;t=7s&lt;br /&gt;
&lt;br /&gt;
https://live.staticflickr.com/65535/51681534884_545f161fd9.jpg&lt;br /&gt;
&lt;br /&gt;
= dokumentation_JAM =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:doku_nextLevel.jpg| thumb |Die Frage ist: wie stellt man eine Dokumentation?]]&lt;br /&gt;
&lt;br /&gt;
* Bilddokumentation sammelt und einordnen &lt;br /&gt;
&amp;lt;span style='font-size:100px;'&amp;gt;&amp;amp;#128206;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* künstlerisch/ästhetisch mit dem Material umgehen&lt;br /&gt;
* Dokumentieren auch Fehler, persönliche Ansprüche und Gespräche, Unerwartetes genauso wie&lt;br /&gt;
* Code-Snippets, Schaltpläne, Materialen, Skizzen&lt;br /&gt;
* usw.&lt;br /&gt;
* let´s go!&lt;br /&gt;
&lt;br /&gt;
= DOME 1 = &lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
*Stretch-Jersey&lt;br /&gt;
*Polymorph&lt;br /&gt;
*Audiojacks&lt;br /&gt;
*Aux-Kabel&lt;br /&gt;
*Kunstblumen&lt;br /&gt;
*Röhrenfernsehe&lt;br /&gt;
etc...&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
*Processing-Codes&lt;br /&gt;
*Fingerhäkeln: https://www.youtube.com/watch?v=vfScF5EQ3sU&lt;br /&gt;
&lt;br /&gt;
== Sound == &lt;br /&gt;
 &lt;br /&gt;
*Klangbeispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= DOME 2 =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
Watte, Silikon, Kunstblumen, LED-Kerzen....&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
== Sound/Klang == &lt;br /&gt;
&lt;br /&gt;
Beispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= DOME 3 MINI-DOM  =&lt;br /&gt;
&lt;br /&gt;
= relevant links =&lt;br /&gt;
&lt;br /&gt;
ESP with Arduino: http://hyperdramatik.net/mediawiki/index.php?title=ESP32_mit_Arduino&lt;br /&gt;
&lt;br /&gt;
MQTT: http://hyperdramatik.net/mediawiki/index.php?title=Hauptseite#MQTT&lt;br /&gt;
&lt;br /&gt;
DOMEs: http://hyperdramatik.net/mediawiki/index.php?title=Dome_Pod_KIT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= code examples from the project =&lt;br /&gt;
&lt;br /&gt;
== Arduino code for sounds in the fishing-dome ==&lt;br /&gt;
&lt;br /&gt;
// running on an ESP [[Spaghetti Monster]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
&lt;br /&gt;
byte analogPins[] = {&lt;br /&gt;
36, 39, 34, 35, 32, 33&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    pinMode(analogPins[i], INPUT);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    Serial.print(analogRead(analogPins[i]));&lt;br /&gt;
    Serial.print(&amp;quot;\t&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  delay(20);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the fishing-dome ==&lt;br /&gt;
 &lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the fishing-dome&lt;br /&gt;
 &lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import processing.serial.*;&lt;br /&gt;
import ddf.minim.*;&lt;br /&gt;
Serial myPort;    &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
//change these:&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
int ADCmax = 4095; &lt;br /&gt;
//int ADCmax = 1023;&lt;br /&gt;
float[] sensorThresholds = {1000, 1000, 1000, 1000, 1000, 1000};//new float[numOfSensors];&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
float[] sensorValues = new float[numOfSensors];&lt;br /&gt;
float[] previousSensorValues = new float[numOfSensors];&lt;br /&gt;
float xpos = 0;&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(600, 400);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  background(255);&lt;br /&gt;
&lt;br /&gt;
  println(Serial.list());&lt;br /&gt;
  String portName = Serial.list()[1];&lt;br /&gt;
  myPort = new Serial(this, &amp;quot;/dev/cu.SLAB_USBtoUART&amp;quot;, 9600);&lt;br /&gt;
  myPort.clear();&lt;br /&gt;
  myPort.bufferUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  sound0 = minim.loadSample( &amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound1 = minim.loadSample(&amp;quot;crazyfrogbardcore.wav&amp;quot;, 512);&lt;br /&gt;
  sound2 = minim.loadSample(&amp;quot;musterfinal.wav&amp;quot;, 512);&lt;br /&gt;
  sound3 = minim.loadSample(&amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound4 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 512);&lt;br /&gt;
  sound5 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 512);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  graph();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void graph() {&lt;br /&gt;
  for (int i=0; i&amp;lt;numOfSensors; i++) {&lt;br /&gt;
    if (sensorValues[i] &amp;lt; sensorThresholds[i]) sound(i);&lt;br /&gt;
&lt;br /&gt;
    // map the incoming values to an appropriate range:&lt;br /&gt;
    float ypos = map(sensorValues[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
&lt;br /&gt;
    // figure out the y position for this particular graph:&lt;br /&gt;
    float graphBottom = i * height/numOfSensors;&lt;br /&gt;
    ypos = ypos + graphBottom;&lt;br /&gt;
&lt;br /&gt;
    // draw the graph bottoms:&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    line(0, graphBottom, width, graphBottom);&lt;br /&gt;
&lt;br /&gt;
    // draw the thresholds:&lt;br /&gt;
    stroke(200, 0, 0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    float redLine = map(sensorThresholds[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
    line(0, redLine + graphBottom, width, redLine + graphBottom);&lt;br /&gt;
&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(2);&lt;br /&gt;
    line(xpos, previousSensorValues[i], xpos+1, ypos);&lt;br /&gt;
&lt;br /&gt;
    previousSensorValues[i] = ypos;&lt;br /&gt;
&lt;br /&gt;
    // if you've drawn to the edge of the window, start at the beginning again:&lt;br /&gt;
    if (xpos &amp;gt;= width) {&lt;br /&gt;
      xpos = 0;&lt;br /&gt;
      background(215);&lt;br /&gt;
    } else xpos+=0.1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void serialEvent (Serial myPort) {&lt;br /&gt;
  // get the ASCII string:&lt;br /&gt;
  String inString = myPort.readStringUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  // if it's not empty:&lt;br /&gt;
  if (inString != null) {&lt;br /&gt;
    // trim off any whitespace:&lt;br /&gt;
    inString = trim(inString);&lt;br /&gt;
&lt;br /&gt;
    // convert to an array of ints:&lt;br /&gt;
    int incomingValues[] = int(split(inString, &amp;quot;\t&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
    if (incomingValues.length &amp;lt;= numOfSensors &amp;amp;&amp;amp; incomingValues.length &amp;gt; 0) {&lt;br /&gt;
      for (int i = 0; i &amp;lt; incomingValues.length; i++) {&lt;br /&gt;
        sensorValues[i] = incomingValues[i];&lt;br /&gt;
        print(sensorValues[i] + &amp;quot;\t&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      println();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 4: &lt;br /&gt;
    sound4.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 5: &lt;br /&gt;
    sound5.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the dating-dome ==&lt;br /&gt;
&lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the dating-dome&lt;br /&gt;
 &lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import ddf.minim.*;  &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
int delayTime = 800;&lt;br /&gt;
boolean w_released = true;&lt;br /&gt;
boolean d_released = true;&lt;br /&gt;
boolean s_released = true;&lt;br /&gt;
boolean a_released = true;&lt;br /&gt;
int maxCount = 3;&lt;br /&gt;
int w_count = 0;&lt;br /&gt;
int a_count = 0;&lt;br /&gt;
int s_count = 0;&lt;br /&gt;
int d_count = 0;&lt;br /&gt;
int szene = 0;&lt;br /&gt;
int previousSzene;&lt;br /&gt;
int soundChangeInterval = 5000;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(1000, 800);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  background(255);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  szene = minute() % 3;&lt;br /&gt;
  if (szene != previousSzene) {&lt;br /&gt;
    previousSzene = szene;&lt;br /&gt;
    println(szene);&lt;br /&gt;
&lt;br /&gt;
    if (szene == 0) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;be.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;come.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;together.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;withMe.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 1) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 2) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void keyPressed() {&lt;br /&gt;
  if ((key == 'w' || key == 'W') &amp;amp;&amp;amp; w_released == true &amp;amp;&amp;amp; w_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0);&lt;br /&gt;
    w_released = false;&lt;br /&gt;
    sound(0);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    w_count ++;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'a' || key == 'A') &amp;amp;&amp;amp; a_released == true &amp;amp;&amp;amp; a_count &amp;lt; maxCount) {&lt;br /&gt;
    background(200, 0, 0);&lt;br /&gt;
    a_released = false;&lt;br /&gt;
    sound(1);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    a_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 's' || key == 'S') &amp;amp;&amp;amp; s_released == true &amp;amp;&amp;amp; s_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 200, 0);&lt;br /&gt;
    s_released = false;&lt;br /&gt;
    sound(2);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    s_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'd' || key == 'D') &amp;amp;&amp;amp; d_released == true &amp;amp;&amp;amp; d_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 0, 200);&lt;br /&gt;
    d_released = false;&lt;br /&gt;
    sound(3);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    d_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void keyReleased() {&lt;br /&gt;
  if (key == 'd' || key == 'D') {&lt;br /&gt;
    d_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'a' || key == 'A') {&lt;br /&gt;
    a_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 's' || key == 'S') {&lt;br /&gt;
    s_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'w' || key == 'W') {&lt;br /&gt;
    w_released = true;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rodolfo.acostacastro</name></author>
	</entry>
	<entry>
		<id>http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2777</id>
		<title>Random Acts of Vulnerability</title>
		<link rel="alternate" type="text/html" href="http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2777"/>
		<updated>2021-12-01T19:48:52Z</updated>

		<summary type="html">&lt;p&gt;Rodolfo.acostacastro: /* dokumentation_JAM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Random Acts of Vulnerability ist ein immersives Spiel für vier Spieler*innen in vier Dimensionen.  Durch Erkundung und Dokumentation der jeweils eigenen Dimension, formen die Spieler*innen anhand des Gesammelten und Erlebten die Erzählungen selbst.&lt;br /&gt;
Auf ein installatives Netz aus experimentellen Materialen, soften Schaltkreisen, meditativen Klangwelten, grotesken Interfaces und verzerrten Output-Signalen aufbauend, werden Fragen nach Isolation, Einsamkeit, immaterieller und haptischer Vernetzung und der Herstellung von Verhandlungsgrundlagen gestellt.&lt;br /&gt;
&lt;br /&gt;
Eine Arbeit von: Zoe Lohmann, Ella Estrella Tischa Raetzer, Rodolfo Acosta Castro, Lena Böckmann&lt;br /&gt;
&lt;br /&gt;
Video: https://www.youtube.com/watch?v=850KCMYEAow&amp;amp;t=7s&lt;br /&gt;
&lt;br /&gt;
https://live.staticflickr.com/65535/51681534884_545f161fd9.jpg&lt;br /&gt;
&lt;br /&gt;
= dokumentation_JAM =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:doku_nextLevel.jpg| thumb |Die Frage ist: wie stellt man eine Dokumentation?]]&lt;br /&gt;
&lt;br /&gt;
* Bilddokumentation sammelt und einordnen  &amp;amp;#129409;&lt;br /&gt;
* künstlerisch/ästhetisch mit dem Material umgehen&lt;br /&gt;
* Dokumentieren auch Fehler, persönliche Ansprüche und Gespräche, Unerwartetes genauso wie&lt;br /&gt;
* Code-Snippets, Schaltpläne, Materialen, Skizzen&lt;br /&gt;
* usw.&lt;br /&gt;
* let´s go!&lt;br /&gt;
&lt;br /&gt;
= DOME 1 = &lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
*Stretch-Jersey&lt;br /&gt;
*Polymorph&lt;br /&gt;
*Audiojacks&lt;br /&gt;
*Aux-Kabel&lt;br /&gt;
*Kunstblumen&lt;br /&gt;
*Röhrenfernsehe&lt;br /&gt;
etc...&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
*Processing-Codes&lt;br /&gt;
*Fingerhäkeln: https://www.youtube.com/watch?v=vfScF5EQ3sU&lt;br /&gt;
&lt;br /&gt;
== Sound == &lt;br /&gt;
 &lt;br /&gt;
*Klangbeispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= DOME 2 =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
Watte, Silikon, Kunstblumen, LED-Kerzen....&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
== Sound/Klang == &lt;br /&gt;
&lt;br /&gt;
Beispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= DOME 3 MINI-DOM  =&lt;br /&gt;
&lt;br /&gt;
= relevant links =&lt;br /&gt;
&lt;br /&gt;
ESP with Arduino: http://hyperdramatik.net/mediawiki/index.php?title=ESP32_mit_Arduino&lt;br /&gt;
&lt;br /&gt;
MQTT: http://hyperdramatik.net/mediawiki/index.php?title=Hauptseite#MQTT&lt;br /&gt;
&lt;br /&gt;
DOMEs: http://hyperdramatik.net/mediawiki/index.php?title=Dome_Pod_KIT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= code examples from the project =&lt;br /&gt;
&lt;br /&gt;
== Arduino code for sounds in the fishing-dome ==&lt;br /&gt;
&lt;br /&gt;
// running on an ESP [[Spaghetti Monster]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
&lt;br /&gt;
byte analogPins[] = {&lt;br /&gt;
36, 39, 34, 35, 32, 33&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    pinMode(analogPins[i], INPUT);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    Serial.print(analogRead(analogPins[i]));&lt;br /&gt;
    Serial.print(&amp;quot;\t&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  delay(20);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the fishing-dome ==&lt;br /&gt;
 &lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the fishing-dome&lt;br /&gt;
 &lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import processing.serial.*;&lt;br /&gt;
import ddf.minim.*;&lt;br /&gt;
Serial myPort;    &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
//change these:&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
int ADCmax = 4095; &lt;br /&gt;
//int ADCmax = 1023;&lt;br /&gt;
float[] sensorThresholds = {1000, 1000, 1000, 1000, 1000, 1000};//new float[numOfSensors];&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
float[] sensorValues = new float[numOfSensors];&lt;br /&gt;
float[] previousSensorValues = new float[numOfSensors];&lt;br /&gt;
float xpos = 0;&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(600, 400);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  background(255);&lt;br /&gt;
&lt;br /&gt;
  println(Serial.list());&lt;br /&gt;
  String portName = Serial.list()[1];&lt;br /&gt;
  myPort = new Serial(this, &amp;quot;/dev/cu.SLAB_USBtoUART&amp;quot;, 9600);&lt;br /&gt;
  myPort.clear();&lt;br /&gt;
  myPort.bufferUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  sound0 = minim.loadSample( &amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound1 = minim.loadSample(&amp;quot;crazyfrogbardcore.wav&amp;quot;, 512);&lt;br /&gt;
  sound2 = minim.loadSample(&amp;quot;musterfinal.wav&amp;quot;, 512);&lt;br /&gt;
  sound3 = minim.loadSample(&amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound4 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 512);&lt;br /&gt;
  sound5 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 512);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  graph();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void graph() {&lt;br /&gt;
  for (int i=0; i&amp;lt;numOfSensors; i++) {&lt;br /&gt;
    if (sensorValues[i] &amp;lt; sensorThresholds[i]) sound(i);&lt;br /&gt;
&lt;br /&gt;
    // map the incoming values to an appropriate range:&lt;br /&gt;
    float ypos = map(sensorValues[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
&lt;br /&gt;
    // figure out the y position for this particular graph:&lt;br /&gt;
    float graphBottom = i * height/numOfSensors;&lt;br /&gt;
    ypos = ypos + graphBottom;&lt;br /&gt;
&lt;br /&gt;
    // draw the graph bottoms:&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    line(0, graphBottom, width, graphBottom);&lt;br /&gt;
&lt;br /&gt;
    // draw the thresholds:&lt;br /&gt;
    stroke(200, 0, 0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    float redLine = map(sensorThresholds[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
    line(0, redLine + graphBottom, width, redLine + graphBottom);&lt;br /&gt;
&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(2);&lt;br /&gt;
    line(xpos, previousSensorValues[i], xpos+1, ypos);&lt;br /&gt;
&lt;br /&gt;
    previousSensorValues[i] = ypos;&lt;br /&gt;
&lt;br /&gt;
    // if you've drawn to the edge of the window, start at the beginning again:&lt;br /&gt;
    if (xpos &amp;gt;= width) {&lt;br /&gt;
      xpos = 0;&lt;br /&gt;
      background(215);&lt;br /&gt;
    } else xpos+=0.1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void serialEvent (Serial myPort) {&lt;br /&gt;
  // get the ASCII string:&lt;br /&gt;
  String inString = myPort.readStringUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  // if it's not empty:&lt;br /&gt;
  if (inString != null) {&lt;br /&gt;
    // trim off any whitespace:&lt;br /&gt;
    inString = trim(inString);&lt;br /&gt;
&lt;br /&gt;
    // convert to an array of ints:&lt;br /&gt;
    int incomingValues[] = int(split(inString, &amp;quot;\t&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
    if (incomingValues.length &amp;lt;= numOfSensors &amp;amp;&amp;amp; incomingValues.length &amp;gt; 0) {&lt;br /&gt;
      for (int i = 0; i &amp;lt; incomingValues.length; i++) {&lt;br /&gt;
        sensorValues[i] = incomingValues[i];&lt;br /&gt;
        print(sensorValues[i] + &amp;quot;\t&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      println();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 4: &lt;br /&gt;
    sound4.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 5: &lt;br /&gt;
    sound5.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the dating-dome ==&lt;br /&gt;
&lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the dating-dome&lt;br /&gt;
 &lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import ddf.minim.*;  &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
int delayTime = 800;&lt;br /&gt;
boolean w_released = true;&lt;br /&gt;
boolean d_released = true;&lt;br /&gt;
boolean s_released = true;&lt;br /&gt;
boolean a_released = true;&lt;br /&gt;
int maxCount = 3;&lt;br /&gt;
int w_count = 0;&lt;br /&gt;
int a_count = 0;&lt;br /&gt;
int s_count = 0;&lt;br /&gt;
int d_count = 0;&lt;br /&gt;
int szene = 0;&lt;br /&gt;
int previousSzene;&lt;br /&gt;
int soundChangeInterval = 5000;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(1000, 800);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  background(255);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  szene = minute() % 3;&lt;br /&gt;
  if (szene != previousSzene) {&lt;br /&gt;
    previousSzene = szene;&lt;br /&gt;
    println(szene);&lt;br /&gt;
&lt;br /&gt;
    if (szene == 0) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;be.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;come.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;together.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;withMe.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 1) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 2) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void keyPressed() {&lt;br /&gt;
  if ((key == 'w' || key == 'W') &amp;amp;&amp;amp; w_released == true &amp;amp;&amp;amp; w_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0);&lt;br /&gt;
    w_released = false;&lt;br /&gt;
    sound(0);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    w_count ++;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'a' || key == 'A') &amp;amp;&amp;amp; a_released == true &amp;amp;&amp;amp; a_count &amp;lt; maxCount) {&lt;br /&gt;
    background(200, 0, 0);&lt;br /&gt;
    a_released = false;&lt;br /&gt;
    sound(1);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    a_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 's' || key == 'S') &amp;amp;&amp;amp; s_released == true &amp;amp;&amp;amp; s_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 200, 0);&lt;br /&gt;
    s_released = false;&lt;br /&gt;
    sound(2);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    s_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'd' || key == 'D') &amp;amp;&amp;amp; d_released == true &amp;amp;&amp;amp; d_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 0, 200);&lt;br /&gt;
    d_released = false;&lt;br /&gt;
    sound(3);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    d_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void keyReleased() {&lt;br /&gt;
  if (key == 'd' || key == 'D') {&lt;br /&gt;
    d_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'a' || key == 'A') {&lt;br /&gt;
    a_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 's' || key == 'S') {&lt;br /&gt;
    s_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'w' || key == 'W') {&lt;br /&gt;
    w_released = true;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rodolfo.acostacastro</name></author>
	</entry>
	<entry>
		<id>http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2776</id>
		<title>Random Acts of Vulnerability</title>
		<link rel="alternate" type="text/html" href="http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2776"/>
		<updated>2021-12-01T19:48:32Z</updated>

		<summary type="html">&lt;p&gt;Rodolfo.acostacastro: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Random Acts of Vulnerability ist ein immersives Spiel für vier Spieler*innen in vier Dimensionen.  Durch Erkundung und Dokumentation der jeweils eigenen Dimension, formen die Spieler*innen anhand des Gesammelten und Erlebten die Erzählungen selbst.&lt;br /&gt;
Auf ein installatives Netz aus experimentellen Materialen, soften Schaltkreisen, meditativen Klangwelten, grotesken Interfaces und verzerrten Output-Signalen aufbauend, werden Fragen nach Isolation, Einsamkeit, immaterieller und haptischer Vernetzung und der Herstellung von Verhandlungsgrundlagen gestellt.&lt;br /&gt;
&lt;br /&gt;
Eine Arbeit von: Zoe Lohmann, Ella Estrella Tischa Raetzer, Rodolfo Acosta Castro, Lena Böckmann&lt;br /&gt;
&lt;br /&gt;
Video: https://www.youtube.com/watch?v=850KCMYEAow&amp;amp;t=7s&lt;br /&gt;
&lt;br /&gt;
https://live.staticflickr.com/65535/51681534884_545f161fd9.jpg&lt;br /&gt;
&lt;br /&gt;
= dokumentation_JAM =&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;#129409;&lt;br /&gt;
&lt;br /&gt;
[[File:doku_nextLevel.jpg| thumb |Die Frage ist: wie stellt man eine Dokumentation?]]&lt;br /&gt;
&lt;br /&gt;
* Bilddokumentation sammelt und einordnen&lt;br /&gt;
* künstlerisch/ästhetisch mit dem Material umgehen&lt;br /&gt;
* Dokumentieren auch Fehler, persönliche Ansprüche und Gespräche, Unerwartetes genauso wie&lt;br /&gt;
* Code-Snippets, Schaltpläne, Materialen, Skizzen&lt;br /&gt;
* usw.&lt;br /&gt;
* let´s go!&lt;br /&gt;
&lt;br /&gt;
= DOME 1 = &lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
*Stretch-Jersey&lt;br /&gt;
*Polymorph&lt;br /&gt;
*Audiojacks&lt;br /&gt;
*Aux-Kabel&lt;br /&gt;
*Kunstblumen&lt;br /&gt;
*Röhrenfernsehe&lt;br /&gt;
etc...&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
*Processing-Codes&lt;br /&gt;
*Fingerhäkeln: https://www.youtube.com/watch?v=vfScF5EQ3sU&lt;br /&gt;
&lt;br /&gt;
== Sound == &lt;br /&gt;
 &lt;br /&gt;
*Klangbeispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= DOME 2 =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
Watte, Silikon, Kunstblumen, LED-Kerzen....&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
== Sound/Klang == &lt;br /&gt;
&lt;br /&gt;
Beispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= DOME 3 MINI-DOM  =&lt;br /&gt;
&lt;br /&gt;
= relevant links =&lt;br /&gt;
&lt;br /&gt;
ESP with Arduino: http://hyperdramatik.net/mediawiki/index.php?title=ESP32_mit_Arduino&lt;br /&gt;
&lt;br /&gt;
MQTT: http://hyperdramatik.net/mediawiki/index.php?title=Hauptseite#MQTT&lt;br /&gt;
&lt;br /&gt;
DOMEs: http://hyperdramatik.net/mediawiki/index.php?title=Dome_Pod_KIT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= code examples from the project =&lt;br /&gt;
&lt;br /&gt;
== Arduino code for sounds in the fishing-dome ==&lt;br /&gt;
&lt;br /&gt;
// running on an ESP [[Spaghetti Monster]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
&lt;br /&gt;
byte analogPins[] = {&lt;br /&gt;
36, 39, 34, 35, 32, 33&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    pinMode(analogPins[i], INPUT);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    Serial.print(analogRead(analogPins[i]));&lt;br /&gt;
    Serial.print(&amp;quot;\t&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  delay(20);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the fishing-dome ==&lt;br /&gt;
 &lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the fishing-dome&lt;br /&gt;
 &lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import processing.serial.*;&lt;br /&gt;
import ddf.minim.*;&lt;br /&gt;
Serial myPort;    &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
//change these:&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
int ADCmax = 4095; &lt;br /&gt;
//int ADCmax = 1023;&lt;br /&gt;
float[] sensorThresholds = {1000, 1000, 1000, 1000, 1000, 1000};//new float[numOfSensors];&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
float[] sensorValues = new float[numOfSensors];&lt;br /&gt;
float[] previousSensorValues = new float[numOfSensors];&lt;br /&gt;
float xpos = 0;&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(600, 400);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  background(255);&lt;br /&gt;
&lt;br /&gt;
  println(Serial.list());&lt;br /&gt;
  String portName = Serial.list()[1];&lt;br /&gt;
  myPort = new Serial(this, &amp;quot;/dev/cu.SLAB_USBtoUART&amp;quot;, 9600);&lt;br /&gt;
  myPort.clear();&lt;br /&gt;
  myPort.bufferUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  sound0 = minim.loadSample( &amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound1 = minim.loadSample(&amp;quot;crazyfrogbardcore.wav&amp;quot;, 512);&lt;br /&gt;
  sound2 = minim.loadSample(&amp;quot;musterfinal.wav&amp;quot;, 512);&lt;br /&gt;
  sound3 = minim.loadSample(&amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound4 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 512);&lt;br /&gt;
  sound5 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 512);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  graph();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void graph() {&lt;br /&gt;
  for (int i=0; i&amp;lt;numOfSensors; i++) {&lt;br /&gt;
    if (sensorValues[i] &amp;lt; sensorThresholds[i]) sound(i);&lt;br /&gt;
&lt;br /&gt;
    // map the incoming values to an appropriate range:&lt;br /&gt;
    float ypos = map(sensorValues[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
&lt;br /&gt;
    // figure out the y position for this particular graph:&lt;br /&gt;
    float graphBottom = i * height/numOfSensors;&lt;br /&gt;
    ypos = ypos + graphBottom;&lt;br /&gt;
&lt;br /&gt;
    // draw the graph bottoms:&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    line(0, graphBottom, width, graphBottom);&lt;br /&gt;
&lt;br /&gt;
    // draw the thresholds:&lt;br /&gt;
    stroke(200, 0, 0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    float redLine = map(sensorThresholds[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
    line(0, redLine + graphBottom, width, redLine + graphBottom);&lt;br /&gt;
&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(2);&lt;br /&gt;
    line(xpos, previousSensorValues[i], xpos+1, ypos);&lt;br /&gt;
&lt;br /&gt;
    previousSensorValues[i] = ypos;&lt;br /&gt;
&lt;br /&gt;
    // if you've drawn to the edge of the window, start at the beginning again:&lt;br /&gt;
    if (xpos &amp;gt;= width) {&lt;br /&gt;
      xpos = 0;&lt;br /&gt;
      background(215);&lt;br /&gt;
    } else xpos+=0.1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void serialEvent (Serial myPort) {&lt;br /&gt;
  // get the ASCII string:&lt;br /&gt;
  String inString = myPort.readStringUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  // if it's not empty:&lt;br /&gt;
  if (inString != null) {&lt;br /&gt;
    // trim off any whitespace:&lt;br /&gt;
    inString = trim(inString);&lt;br /&gt;
&lt;br /&gt;
    // convert to an array of ints:&lt;br /&gt;
    int incomingValues[] = int(split(inString, &amp;quot;\t&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
    if (incomingValues.length &amp;lt;= numOfSensors &amp;amp;&amp;amp; incomingValues.length &amp;gt; 0) {&lt;br /&gt;
      for (int i = 0; i &amp;lt; incomingValues.length; i++) {&lt;br /&gt;
        sensorValues[i] = incomingValues[i];&lt;br /&gt;
        print(sensorValues[i] + &amp;quot;\t&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      println();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 4: &lt;br /&gt;
    sound4.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 5: &lt;br /&gt;
    sound5.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the dating-dome ==&lt;br /&gt;
&lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the dating-dome&lt;br /&gt;
 &lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import ddf.minim.*;  &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
int delayTime = 800;&lt;br /&gt;
boolean w_released = true;&lt;br /&gt;
boolean d_released = true;&lt;br /&gt;
boolean s_released = true;&lt;br /&gt;
boolean a_released = true;&lt;br /&gt;
int maxCount = 3;&lt;br /&gt;
int w_count = 0;&lt;br /&gt;
int a_count = 0;&lt;br /&gt;
int s_count = 0;&lt;br /&gt;
int d_count = 0;&lt;br /&gt;
int szene = 0;&lt;br /&gt;
int previousSzene;&lt;br /&gt;
int soundChangeInterval = 5000;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(1000, 800);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  background(255);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  szene = minute() % 3;&lt;br /&gt;
  if (szene != previousSzene) {&lt;br /&gt;
    previousSzene = szene;&lt;br /&gt;
    println(szene);&lt;br /&gt;
&lt;br /&gt;
    if (szene == 0) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;be.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;come.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;together.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;withMe.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 1) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 2) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void keyPressed() {&lt;br /&gt;
  if ((key == 'w' || key == 'W') &amp;amp;&amp;amp; w_released == true &amp;amp;&amp;amp; w_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0);&lt;br /&gt;
    w_released = false;&lt;br /&gt;
    sound(0);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    w_count ++;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'a' || key == 'A') &amp;amp;&amp;amp; a_released == true &amp;amp;&amp;amp; a_count &amp;lt; maxCount) {&lt;br /&gt;
    background(200, 0, 0);&lt;br /&gt;
    a_released = false;&lt;br /&gt;
    sound(1);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    a_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 's' || key == 'S') &amp;amp;&amp;amp; s_released == true &amp;amp;&amp;amp; s_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 200, 0);&lt;br /&gt;
    s_released = false;&lt;br /&gt;
    sound(2);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    s_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'd' || key == 'D') &amp;amp;&amp;amp; d_released == true &amp;amp;&amp;amp; d_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 0, 200);&lt;br /&gt;
    d_released = false;&lt;br /&gt;
    sound(3);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    d_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void keyReleased() {&lt;br /&gt;
  if (key == 'd' || key == 'D') {&lt;br /&gt;
    d_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'a' || key == 'A') {&lt;br /&gt;
    a_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 's' || key == 'S') {&lt;br /&gt;
    s_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'w' || key == 'W') {&lt;br /&gt;
    w_released = true;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rodolfo.acostacastro</name></author>
	</entry>
	<entry>
		<id>http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2775</id>
		<title>Random Acts of Vulnerability</title>
		<link rel="alternate" type="text/html" href="http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2775"/>
		<updated>2021-12-01T19:47:26Z</updated>

		<summary type="html">&lt;p&gt;Rodolfo.acostacastro: /* dokumentation_JAM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Random Acts of Vulnerability ist ein immersives Spiel für vier Spieler*innen in vier Dimensionen.  Durch Erkundung und Dokumentation der jeweils eigenen Dimension, formen die Spieler*innen anhand des Gesammelten und Erlebten die Erzählungen selbst.&lt;br /&gt;
Auf ein installatives Netz aus experimentellen Materialen, soften Schaltkreisen, meditativen Klangwelten, grotesken Interfaces und verzerrten Output-Signalen aufbauend, werden Fragen nach Isolation, Einsamkeit, immaterieller und haptischer Vernetzung und der Herstellung von Verhandlungsgrundlagen gestellt.&lt;br /&gt;
&lt;br /&gt;
Eine Arbeit von: Zoe Lohmann, Ella Estrella Tischa Raetzer, Rodolfo Acosta Castro, Lena Böckmann&lt;br /&gt;
&lt;br /&gt;
Video: https://www.youtube.com/watch?v=850KCMYEAow&amp;amp;t=7s&lt;br /&gt;
&lt;br /&gt;
https://live.staticflickr.com/65535/51681534884_545f161fd9.jpg&lt;br /&gt;
&lt;br /&gt;
= dokumentation_JAM = &amp;amp;#129409;&lt;br /&gt;
&lt;br /&gt;
[[File:doku_nextLevel.jpg| thumb |Die Frage ist: wie stellt man eine Dokumentation?]]&lt;br /&gt;
&lt;br /&gt;
* Bilddokumentation sammelt und einordnen&lt;br /&gt;
* künstlerisch/ästhetisch mit dem Material umgehen&lt;br /&gt;
* Dokumentieren auch Fehler, persönliche Ansprüche und Gespräche, Unerwartetes genauso wie&lt;br /&gt;
* Code-Snippets, Schaltpläne, Materialen, Skizzen&lt;br /&gt;
* usw.&lt;br /&gt;
* let´s go!&lt;br /&gt;
&lt;br /&gt;
= DOME 1 = &lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
*Stretch-Jersey&lt;br /&gt;
*Polymorph&lt;br /&gt;
*Audiojacks&lt;br /&gt;
*Aux-Kabel&lt;br /&gt;
*Kunstblumen&lt;br /&gt;
*Röhrenfernsehe&lt;br /&gt;
etc...&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
*Processing-Codes&lt;br /&gt;
*Fingerhäkeln: https://www.youtube.com/watch?v=vfScF5EQ3sU&lt;br /&gt;
&lt;br /&gt;
== Sound == &lt;br /&gt;
 &lt;br /&gt;
*Klangbeispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= DOME 2 =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
Watte, Silikon, Kunstblumen, LED-Kerzen....&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
== Sound/Klang == &lt;br /&gt;
&lt;br /&gt;
Beispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= DOME 3 MINI-DOM  =&lt;br /&gt;
&lt;br /&gt;
= relevant links =&lt;br /&gt;
&lt;br /&gt;
ESP with Arduino: http://hyperdramatik.net/mediawiki/index.php?title=ESP32_mit_Arduino&lt;br /&gt;
&lt;br /&gt;
MQTT: http://hyperdramatik.net/mediawiki/index.php?title=Hauptseite#MQTT&lt;br /&gt;
&lt;br /&gt;
DOMEs: http://hyperdramatik.net/mediawiki/index.php?title=Dome_Pod_KIT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= code examples from the project =&lt;br /&gt;
&lt;br /&gt;
== Arduino code for sounds in the fishing-dome ==&lt;br /&gt;
&lt;br /&gt;
// running on an ESP [[Spaghetti Monster]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
&lt;br /&gt;
byte analogPins[] = {&lt;br /&gt;
36, 39, 34, 35, 32, 33&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    pinMode(analogPins[i], INPUT);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    Serial.print(analogRead(analogPins[i]));&lt;br /&gt;
    Serial.print(&amp;quot;\t&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  delay(20);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the fishing-dome ==&lt;br /&gt;
 &lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the fishing-dome&lt;br /&gt;
 &lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import processing.serial.*;&lt;br /&gt;
import ddf.minim.*;&lt;br /&gt;
Serial myPort;    &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
//change these:&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
int ADCmax = 4095; &lt;br /&gt;
//int ADCmax = 1023;&lt;br /&gt;
float[] sensorThresholds = {1000, 1000, 1000, 1000, 1000, 1000};//new float[numOfSensors];&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
float[] sensorValues = new float[numOfSensors];&lt;br /&gt;
float[] previousSensorValues = new float[numOfSensors];&lt;br /&gt;
float xpos = 0;&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(600, 400);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  background(255);&lt;br /&gt;
&lt;br /&gt;
  println(Serial.list());&lt;br /&gt;
  String portName = Serial.list()[1];&lt;br /&gt;
  myPort = new Serial(this, &amp;quot;/dev/cu.SLAB_USBtoUART&amp;quot;, 9600);&lt;br /&gt;
  myPort.clear();&lt;br /&gt;
  myPort.bufferUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  sound0 = minim.loadSample( &amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound1 = minim.loadSample(&amp;quot;crazyfrogbardcore.wav&amp;quot;, 512);&lt;br /&gt;
  sound2 = minim.loadSample(&amp;quot;musterfinal.wav&amp;quot;, 512);&lt;br /&gt;
  sound3 = minim.loadSample(&amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound4 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 512);&lt;br /&gt;
  sound5 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 512);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  graph();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void graph() {&lt;br /&gt;
  for (int i=0; i&amp;lt;numOfSensors; i++) {&lt;br /&gt;
    if (sensorValues[i] &amp;lt; sensorThresholds[i]) sound(i);&lt;br /&gt;
&lt;br /&gt;
    // map the incoming values to an appropriate range:&lt;br /&gt;
    float ypos = map(sensorValues[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
&lt;br /&gt;
    // figure out the y position for this particular graph:&lt;br /&gt;
    float graphBottom = i * height/numOfSensors;&lt;br /&gt;
    ypos = ypos + graphBottom;&lt;br /&gt;
&lt;br /&gt;
    // draw the graph bottoms:&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    line(0, graphBottom, width, graphBottom);&lt;br /&gt;
&lt;br /&gt;
    // draw the thresholds:&lt;br /&gt;
    stroke(200, 0, 0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    float redLine = map(sensorThresholds[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
    line(0, redLine + graphBottom, width, redLine + graphBottom);&lt;br /&gt;
&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(2);&lt;br /&gt;
    line(xpos, previousSensorValues[i], xpos+1, ypos);&lt;br /&gt;
&lt;br /&gt;
    previousSensorValues[i] = ypos;&lt;br /&gt;
&lt;br /&gt;
    // if you've drawn to the edge of the window, start at the beginning again:&lt;br /&gt;
    if (xpos &amp;gt;= width) {&lt;br /&gt;
      xpos = 0;&lt;br /&gt;
      background(215);&lt;br /&gt;
    } else xpos+=0.1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void serialEvent (Serial myPort) {&lt;br /&gt;
  // get the ASCII string:&lt;br /&gt;
  String inString = myPort.readStringUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  // if it's not empty:&lt;br /&gt;
  if (inString != null) {&lt;br /&gt;
    // trim off any whitespace:&lt;br /&gt;
    inString = trim(inString);&lt;br /&gt;
&lt;br /&gt;
    // convert to an array of ints:&lt;br /&gt;
    int incomingValues[] = int(split(inString, &amp;quot;\t&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
    if (incomingValues.length &amp;lt;= numOfSensors &amp;amp;&amp;amp; incomingValues.length &amp;gt; 0) {&lt;br /&gt;
      for (int i = 0; i &amp;lt; incomingValues.length; i++) {&lt;br /&gt;
        sensorValues[i] = incomingValues[i];&lt;br /&gt;
        print(sensorValues[i] + &amp;quot;\t&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      println();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 4: &lt;br /&gt;
    sound4.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 5: &lt;br /&gt;
    sound5.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the dating-dome ==&lt;br /&gt;
&lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the dating-dome&lt;br /&gt;
 &lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import ddf.minim.*;  &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
int delayTime = 800;&lt;br /&gt;
boolean w_released = true;&lt;br /&gt;
boolean d_released = true;&lt;br /&gt;
boolean s_released = true;&lt;br /&gt;
boolean a_released = true;&lt;br /&gt;
int maxCount = 3;&lt;br /&gt;
int w_count = 0;&lt;br /&gt;
int a_count = 0;&lt;br /&gt;
int s_count = 0;&lt;br /&gt;
int d_count = 0;&lt;br /&gt;
int szene = 0;&lt;br /&gt;
int previousSzene;&lt;br /&gt;
int soundChangeInterval = 5000;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(1000, 800);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  background(255);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  szene = minute() % 3;&lt;br /&gt;
  if (szene != previousSzene) {&lt;br /&gt;
    previousSzene = szene;&lt;br /&gt;
    println(szene);&lt;br /&gt;
&lt;br /&gt;
    if (szene == 0) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;be.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;come.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;together.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;withMe.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 1) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 2) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void keyPressed() {&lt;br /&gt;
  if ((key == 'w' || key == 'W') &amp;amp;&amp;amp; w_released == true &amp;amp;&amp;amp; w_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0);&lt;br /&gt;
    w_released = false;&lt;br /&gt;
    sound(0);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    w_count ++;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'a' || key == 'A') &amp;amp;&amp;amp; a_released == true &amp;amp;&amp;amp; a_count &amp;lt; maxCount) {&lt;br /&gt;
    background(200, 0, 0);&lt;br /&gt;
    a_released = false;&lt;br /&gt;
    sound(1);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    a_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 's' || key == 'S') &amp;amp;&amp;amp; s_released == true &amp;amp;&amp;amp; s_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 200, 0);&lt;br /&gt;
    s_released = false;&lt;br /&gt;
    sound(2);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    s_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'd' || key == 'D') &amp;amp;&amp;amp; d_released == true &amp;amp;&amp;amp; d_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 0, 200);&lt;br /&gt;
    d_released = false;&lt;br /&gt;
    sound(3);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    d_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void keyReleased() {&lt;br /&gt;
  if (key == 'd' || key == 'D') {&lt;br /&gt;
    d_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'a' || key == 'A') {&lt;br /&gt;
    a_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 's' || key == 'S') {&lt;br /&gt;
    s_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'w' || key == 'W') {&lt;br /&gt;
    w_released = true;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rodolfo.acostacastro</name></author>
	</entry>
	<entry>
		<id>http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2774</id>
		<title>Random Acts of Vulnerability</title>
		<link rel="alternate" type="text/html" href="http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2774"/>
		<updated>2021-12-01T19:44:45Z</updated>

		<summary type="html">&lt;p&gt;Rodolfo.acostacastro: /* dokumentation_JAM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Random Acts of Vulnerability ist ein immersives Spiel für vier Spieler*innen in vier Dimensionen.  Durch Erkundung und Dokumentation der jeweils eigenen Dimension, formen die Spieler*innen anhand des Gesammelten und Erlebten die Erzählungen selbst.&lt;br /&gt;
Auf ein installatives Netz aus experimentellen Materialen, soften Schaltkreisen, meditativen Klangwelten, grotesken Interfaces und verzerrten Output-Signalen aufbauend, werden Fragen nach Isolation, Einsamkeit, immaterieller und haptischer Vernetzung und der Herstellung von Verhandlungsgrundlagen gestellt.&lt;br /&gt;
&lt;br /&gt;
Eine Arbeit von: Zoe Lohmann, Ella Estrella Tischa Raetzer, Rodolfo Acosta Castro, Lena Böckmann&lt;br /&gt;
&lt;br /&gt;
Video: https://www.youtube.com/watch?v=850KCMYEAow&amp;amp;t=7s&lt;br /&gt;
&lt;br /&gt;
https://live.staticflickr.com/65535/51681534884_545f161fd9.jpg&lt;br /&gt;
&lt;br /&gt;
= dokumentation_JAM =&lt;br /&gt;
&lt;br /&gt;
[[File:doku_nextLevel.jpg| thumb |Die Frage ist: wie stellt man eine Dokumentation?]]&lt;br /&gt;
&lt;br /&gt;
* Bilddokumentation sammelt und einordnen&lt;br /&gt;
* künstlerisch/ästhetisch mit dem Material umgehen&lt;br /&gt;
* Dokumentieren auch Fehler, persönliche Ansprüche und Gespräche, Unerwartetes genauso wie&lt;br /&gt;
* Code-Snippets, Schaltpläne, Materialen, Skizzen&lt;br /&gt;
* usw.&lt;br /&gt;
* let´s go!&lt;br /&gt;
&lt;br /&gt;
= DOME 1 = &lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
*Stretch-Jersey&lt;br /&gt;
*Polymorph&lt;br /&gt;
*Audiojacks&lt;br /&gt;
*Aux-Kabel&lt;br /&gt;
*Kunstblumen&lt;br /&gt;
*Röhrenfernsehe&lt;br /&gt;
etc...&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
*Processing-Codes&lt;br /&gt;
*Fingerhäkeln: https://www.youtube.com/watch?v=vfScF5EQ3sU&lt;br /&gt;
&lt;br /&gt;
== Sound == &lt;br /&gt;
 &lt;br /&gt;
*Klangbeispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= DOME 2 =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
Watte, Silikon, Kunstblumen, LED-Kerzen....&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
== Sound/Klang == &lt;br /&gt;
&lt;br /&gt;
Beispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= DOME 3 MINI-DOM  =&lt;br /&gt;
&lt;br /&gt;
= relevant links =&lt;br /&gt;
&lt;br /&gt;
ESP with Arduino: http://hyperdramatik.net/mediawiki/index.php?title=ESP32_mit_Arduino&lt;br /&gt;
&lt;br /&gt;
MQTT: http://hyperdramatik.net/mediawiki/index.php?title=Hauptseite#MQTT&lt;br /&gt;
&lt;br /&gt;
DOMEs: http://hyperdramatik.net/mediawiki/index.php?title=Dome_Pod_KIT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= code examples from the project =&lt;br /&gt;
&lt;br /&gt;
== Arduino code for sounds in the fishing-dome ==&lt;br /&gt;
&lt;br /&gt;
// running on an ESP [[Spaghetti Monster]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
&lt;br /&gt;
byte analogPins[] = {&lt;br /&gt;
36, 39, 34, 35, 32, 33&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    pinMode(analogPins[i], INPUT);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    Serial.print(analogRead(analogPins[i]));&lt;br /&gt;
    Serial.print(&amp;quot;\t&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  delay(20);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the fishing-dome ==&lt;br /&gt;
 &lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the fishing-dome&lt;br /&gt;
 &lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import processing.serial.*;&lt;br /&gt;
import ddf.minim.*;&lt;br /&gt;
Serial myPort;    &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
//change these:&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
int ADCmax = 4095; &lt;br /&gt;
//int ADCmax = 1023;&lt;br /&gt;
float[] sensorThresholds = {1000, 1000, 1000, 1000, 1000, 1000};//new float[numOfSensors];&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
float[] sensorValues = new float[numOfSensors];&lt;br /&gt;
float[] previousSensorValues = new float[numOfSensors];&lt;br /&gt;
float xpos = 0;&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(600, 400);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  background(255);&lt;br /&gt;
&lt;br /&gt;
  println(Serial.list());&lt;br /&gt;
  String portName = Serial.list()[1];&lt;br /&gt;
  myPort = new Serial(this, &amp;quot;/dev/cu.SLAB_USBtoUART&amp;quot;, 9600);&lt;br /&gt;
  myPort.clear();&lt;br /&gt;
  myPort.bufferUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  sound0 = minim.loadSample( &amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound1 = minim.loadSample(&amp;quot;crazyfrogbardcore.wav&amp;quot;, 512);&lt;br /&gt;
  sound2 = minim.loadSample(&amp;quot;musterfinal.wav&amp;quot;, 512);&lt;br /&gt;
  sound3 = minim.loadSample(&amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound4 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 512);&lt;br /&gt;
  sound5 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 512);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  graph();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void graph() {&lt;br /&gt;
  for (int i=0; i&amp;lt;numOfSensors; i++) {&lt;br /&gt;
    if (sensorValues[i] &amp;lt; sensorThresholds[i]) sound(i);&lt;br /&gt;
&lt;br /&gt;
    // map the incoming values to an appropriate range:&lt;br /&gt;
    float ypos = map(sensorValues[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
&lt;br /&gt;
    // figure out the y position for this particular graph:&lt;br /&gt;
    float graphBottom = i * height/numOfSensors;&lt;br /&gt;
    ypos = ypos + graphBottom;&lt;br /&gt;
&lt;br /&gt;
    // draw the graph bottoms:&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    line(0, graphBottom, width, graphBottom);&lt;br /&gt;
&lt;br /&gt;
    // draw the thresholds:&lt;br /&gt;
    stroke(200, 0, 0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    float redLine = map(sensorThresholds[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
    line(0, redLine + graphBottom, width, redLine + graphBottom);&lt;br /&gt;
&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(2);&lt;br /&gt;
    line(xpos, previousSensorValues[i], xpos+1, ypos);&lt;br /&gt;
&lt;br /&gt;
    previousSensorValues[i] = ypos;&lt;br /&gt;
&lt;br /&gt;
    // if you've drawn to the edge of the window, start at the beginning again:&lt;br /&gt;
    if (xpos &amp;gt;= width) {&lt;br /&gt;
      xpos = 0;&lt;br /&gt;
      background(215);&lt;br /&gt;
    } else xpos+=0.1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void serialEvent (Serial myPort) {&lt;br /&gt;
  // get the ASCII string:&lt;br /&gt;
  String inString = myPort.readStringUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  // if it's not empty:&lt;br /&gt;
  if (inString != null) {&lt;br /&gt;
    // trim off any whitespace:&lt;br /&gt;
    inString = trim(inString);&lt;br /&gt;
&lt;br /&gt;
    // convert to an array of ints:&lt;br /&gt;
    int incomingValues[] = int(split(inString, &amp;quot;\t&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
    if (incomingValues.length &amp;lt;= numOfSensors &amp;amp;&amp;amp; incomingValues.length &amp;gt; 0) {&lt;br /&gt;
      for (int i = 0; i &amp;lt; incomingValues.length; i++) {&lt;br /&gt;
        sensorValues[i] = incomingValues[i];&lt;br /&gt;
        print(sensorValues[i] + &amp;quot;\t&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      println();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 4: &lt;br /&gt;
    sound4.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 5: &lt;br /&gt;
    sound5.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the dating-dome ==&lt;br /&gt;
&lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the dating-dome&lt;br /&gt;
 &lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import ddf.minim.*;  &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
int delayTime = 800;&lt;br /&gt;
boolean w_released = true;&lt;br /&gt;
boolean d_released = true;&lt;br /&gt;
boolean s_released = true;&lt;br /&gt;
boolean a_released = true;&lt;br /&gt;
int maxCount = 3;&lt;br /&gt;
int w_count = 0;&lt;br /&gt;
int a_count = 0;&lt;br /&gt;
int s_count = 0;&lt;br /&gt;
int d_count = 0;&lt;br /&gt;
int szene = 0;&lt;br /&gt;
int previousSzene;&lt;br /&gt;
int soundChangeInterval = 5000;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(1000, 800);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  background(255);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  szene = minute() % 3;&lt;br /&gt;
  if (szene != previousSzene) {&lt;br /&gt;
    previousSzene = szene;&lt;br /&gt;
    println(szene);&lt;br /&gt;
&lt;br /&gt;
    if (szene == 0) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;be.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;come.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;together.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;withMe.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 1) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 2) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void keyPressed() {&lt;br /&gt;
  if ((key == 'w' || key == 'W') &amp;amp;&amp;amp; w_released == true &amp;amp;&amp;amp; w_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0);&lt;br /&gt;
    w_released = false;&lt;br /&gt;
    sound(0);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    w_count ++;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'a' || key == 'A') &amp;amp;&amp;amp; a_released == true &amp;amp;&amp;amp; a_count &amp;lt; maxCount) {&lt;br /&gt;
    background(200, 0, 0);&lt;br /&gt;
    a_released = false;&lt;br /&gt;
    sound(1);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    a_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 's' || key == 'S') &amp;amp;&amp;amp; s_released == true &amp;amp;&amp;amp; s_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 200, 0);&lt;br /&gt;
    s_released = false;&lt;br /&gt;
    sound(2);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    s_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'd' || key == 'D') &amp;amp;&amp;amp; d_released == true &amp;amp;&amp;amp; d_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 0, 200);&lt;br /&gt;
    d_released = false;&lt;br /&gt;
    sound(3);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    d_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void keyReleased() {&lt;br /&gt;
  if (key == 'd' || key == 'D') {&lt;br /&gt;
    d_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'a' || key == 'A') {&lt;br /&gt;
    a_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 's' || key == 'S') {&lt;br /&gt;
    s_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'w' || key == 'W') {&lt;br /&gt;
    w_released = true;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rodolfo.acostacastro</name></author>
	</entry>
	<entry>
		<id>http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2773</id>
		<title>Random Acts of Vulnerability</title>
		<link rel="alternate" type="text/html" href="http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2773"/>
		<updated>2021-12-01T19:38:13Z</updated>

		<summary type="html">&lt;p&gt;Rodolfo.acostacastro: /* MINI-DOME */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Random Acts of Vulnerability ist ein immersives Spiel für vier Spieler*innen in vier Dimensionen.  Durch Erkundung und Dokumentation der jeweils eigenen Dimension, formen die Spieler*innen anhand des Gesammelten und Erlebten die Erzählungen selbst.&lt;br /&gt;
Auf ein installatives Netz aus experimentellen Materialen, soften Schaltkreisen, meditativen Klangwelten, grotesken Interfaces und verzerrten Output-Signalen aufbauend, werden Fragen nach Isolation, Einsamkeit, immaterieller und haptischer Vernetzung und der Herstellung von Verhandlungsgrundlagen gestellt.&lt;br /&gt;
&lt;br /&gt;
Eine Arbeit von: Zoe Lohmann, Ella Estrella Tischa Raetzer, Rodolfo Acosta Castro, Lena Böckmann&lt;br /&gt;
&lt;br /&gt;
Video: https://www.youtube.com/watch?v=850KCMYEAow&amp;amp;t=7s&lt;br /&gt;
&lt;br /&gt;
https://live.staticflickr.com/65535/51681534884_545f161fd9.jpg&lt;br /&gt;
&lt;br /&gt;
= dokumentation_JAM =&lt;br /&gt;
&lt;br /&gt;
[[File:doku_nextLevel.jpg| thumb |Die Frage ist: wie stellt man eine Dokumentation?]]&lt;br /&gt;
&lt;br /&gt;
* Bilddokumentation sammelt und einordnen&lt;br /&gt;
* künstlerisch/ästhetisch mit dem Material umgehen&lt;br /&gt;
* Dokumentieren auch Fehler, persönliche Ansprüche und Gespräche, Unerwartetes genauso wie&lt;br /&gt;
* Code-Snippets, Schaltpläne, Materialen, Skizzen&lt;br /&gt;
* usw.&lt;br /&gt;
*let´s go!&lt;br /&gt;
&lt;br /&gt;
= DOME 1 = &lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
*Stretch-Jersey&lt;br /&gt;
*Polymorph&lt;br /&gt;
*Audiojacks&lt;br /&gt;
*Aux-Kabel&lt;br /&gt;
*Kunstblumen&lt;br /&gt;
*Röhrenfernsehe&lt;br /&gt;
etc...&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
*Processing-Codes&lt;br /&gt;
*Fingerhäkeln: https://www.youtube.com/watch?v=vfScF5EQ3sU&lt;br /&gt;
&lt;br /&gt;
== Sound == &lt;br /&gt;
 &lt;br /&gt;
*Klangbeispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= DOME 2 =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
Watte, Silikon, Kunstblumen, LED-Kerzen....&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
== Sound/Klang == &lt;br /&gt;
&lt;br /&gt;
Beispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= DOME 3 MINI-DOM  =&lt;br /&gt;
&lt;br /&gt;
= relevant links =&lt;br /&gt;
&lt;br /&gt;
ESP with Arduino: http://hyperdramatik.net/mediawiki/index.php?title=ESP32_mit_Arduino&lt;br /&gt;
&lt;br /&gt;
MQTT: http://hyperdramatik.net/mediawiki/index.php?title=Hauptseite#MQTT&lt;br /&gt;
&lt;br /&gt;
DOMEs: http://hyperdramatik.net/mediawiki/index.php?title=Dome_Pod_KIT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= code examples from the project =&lt;br /&gt;
&lt;br /&gt;
== Arduino code for sounds in the fishing-dome ==&lt;br /&gt;
&lt;br /&gt;
// running on an ESP [[Spaghetti Monster]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
&lt;br /&gt;
byte analogPins[] = {&lt;br /&gt;
36, 39, 34, 35, 32, 33&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    pinMode(analogPins[i], INPUT);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    Serial.print(analogRead(analogPins[i]));&lt;br /&gt;
    Serial.print(&amp;quot;\t&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  delay(20);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the fishing-dome ==&lt;br /&gt;
 &lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the fishing-dome&lt;br /&gt;
 &lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import processing.serial.*;&lt;br /&gt;
import ddf.minim.*;&lt;br /&gt;
Serial myPort;    &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
//change these:&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
int ADCmax = 4095; &lt;br /&gt;
//int ADCmax = 1023;&lt;br /&gt;
float[] sensorThresholds = {1000, 1000, 1000, 1000, 1000, 1000};//new float[numOfSensors];&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
float[] sensorValues = new float[numOfSensors];&lt;br /&gt;
float[] previousSensorValues = new float[numOfSensors];&lt;br /&gt;
float xpos = 0;&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(600, 400);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  background(255);&lt;br /&gt;
&lt;br /&gt;
  println(Serial.list());&lt;br /&gt;
  String portName = Serial.list()[1];&lt;br /&gt;
  myPort = new Serial(this, &amp;quot;/dev/cu.SLAB_USBtoUART&amp;quot;, 9600);&lt;br /&gt;
  myPort.clear();&lt;br /&gt;
  myPort.bufferUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  sound0 = minim.loadSample( &amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound1 = minim.loadSample(&amp;quot;crazyfrogbardcore.wav&amp;quot;, 512);&lt;br /&gt;
  sound2 = minim.loadSample(&amp;quot;musterfinal.wav&amp;quot;, 512);&lt;br /&gt;
  sound3 = minim.loadSample(&amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound4 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 512);&lt;br /&gt;
  sound5 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 512);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  graph();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void graph() {&lt;br /&gt;
  for (int i=0; i&amp;lt;numOfSensors; i++) {&lt;br /&gt;
    if (sensorValues[i] &amp;lt; sensorThresholds[i]) sound(i);&lt;br /&gt;
&lt;br /&gt;
    // map the incoming values to an appropriate range:&lt;br /&gt;
    float ypos = map(sensorValues[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
&lt;br /&gt;
    // figure out the y position for this particular graph:&lt;br /&gt;
    float graphBottom = i * height/numOfSensors;&lt;br /&gt;
    ypos = ypos + graphBottom;&lt;br /&gt;
&lt;br /&gt;
    // draw the graph bottoms:&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    line(0, graphBottom, width, graphBottom);&lt;br /&gt;
&lt;br /&gt;
    // draw the thresholds:&lt;br /&gt;
    stroke(200, 0, 0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    float redLine = map(sensorThresholds[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
    line(0, redLine + graphBottom, width, redLine + graphBottom);&lt;br /&gt;
&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(2);&lt;br /&gt;
    line(xpos, previousSensorValues[i], xpos+1, ypos);&lt;br /&gt;
&lt;br /&gt;
    previousSensorValues[i] = ypos;&lt;br /&gt;
&lt;br /&gt;
    // if you've drawn to the edge of the window, start at the beginning again:&lt;br /&gt;
    if (xpos &amp;gt;= width) {&lt;br /&gt;
      xpos = 0;&lt;br /&gt;
      background(215);&lt;br /&gt;
    } else xpos+=0.1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void serialEvent (Serial myPort) {&lt;br /&gt;
  // get the ASCII string:&lt;br /&gt;
  String inString = myPort.readStringUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  // if it's not empty:&lt;br /&gt;
  if (inString != null) {&lt;br /&gt;
    // trim off any whitespace:&lt;br /&gt;
    inString = trim(inString);&lt;br /&gt;
&lt;br /&gt;
    // convert to an array of ints:&lt;br /&gt;
    int incomingValues[] = int(split(inString, &amp;quot;\t&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
    if (incomingValues.length &amp;lt;= numOfSensors &amp;amp;&amp;amp; incomingValues.length &amp;gt; 0) {&lt;br /&gt;
      for (int i = 0; i &amp;lt; incomingValues.length; i++) {&lt;br /&gt;
        sensorValues[i] = incomingValues[i];&lt;br /&gt;
        print(sensorValues[i] + &amp;quot;\t&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      println();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 4: &lt;br /&gt;
    sound4.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 5: &lt;br /&gt;
    sound5.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the dating-dome ==&lt;br /&gt;
&lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the dating-dome&lt;br /&gt;
 &lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import ddf.minim.*;  &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
int delayTime = 800;&lt;br /&gt;
boolean w_released = true;&lt;br /&gt;
boolean d_released = true;&lt;br /&gt;
boolean s_released = true;&lt;br /&gt;
boolean a_released = true;&lt;br /&gt;
int maxCount = 3;&lt;br /&gt;
int w_count = 0;&lt;br /&gt;
int a_count = 0;&lt;br /&gt;
int s_count = 0;&lt;br /&gt;
int d_count = 0;&lt;br /&gt;
int szene = 0;&lt;br /&gt;
int previousSzene;&lt;br /&gt;
int soundChangeInterval = 5000;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(1000, 800);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  background(255);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  szene = minute() % 3;&lt;br /&gt;
  if (szene != previousSzene) {&lt;br /&gt;
    previousSzene = szene;&lt;br /&gt;
    println(szene);&lt;br /&gt;
&lt;br /&gt;
    if (szene == 0) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;be.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;come.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;together.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;withMe.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 1) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 2) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void keyPressed() {&lt;br /&gt;
  if ((key == 'w' || key == 'W') &amp;amp;&amp;amp; w_released == true &amp;amp;&amp;amp; w_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0);&lt;br /&gt;
    w_released = false;&lt;br /&gt;
    sound(0);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    w_count ++;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'a' || key == 'A') &amp;amp;&amp;amp; a_released == true &amp;amp;&amp;amp; a_count &amp;lt; maxCount) {&lt;br /&gt;
    background(200, 0, 0);&lt;br /&gt;
    a_released = false;&lt;br /&gt;
    sound(1);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    a_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 's' || key == 'S') &amp;amp;&amp;amp; s_released == true &amp;amp;&amp;amp; s_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 200, 0);&lt;br /&gt;
    s_released = false;&lt;br /&gt;
    sound(2);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    s_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'd' || key == 'D') &amp;amp;&amp;amp; d_released == true &amp;amp;&amp;amp; d_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 0, 200);&lt;br /&gt;
    d_released = false;&lt;br /&gt;
    sound(3);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    d_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void keyReleased() {&lt;br /&gt;
  if (key == 'd' || key == 'D') {&lt;br /&gt;
    d_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'a' || key == 'A') {&lt;br /&gt;
    a_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 's' || key == 'S') {&lt;br /&gt;
    s_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'w' || key == 'W') {&lt;br /&gt;
    w_released = true;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rodolfo.acostacastro</name></author>
	</entry>
	<entry>
		<id>http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2712</id>
		<title>Random Acts of Vulnerability</title>
		<link rel="alternate" type="text/html" href="http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2712"/>
		<updated>2021-12-01T13:32:49Z</updated>

		<summary type="html">&lt;p&gt;Rodolfo.acostacastro: /* DOME 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Random Acts of Vulnerability ist ein immersives Spiel für vier Spieler*innen in vier Dimensionen.  Durch Erkundung und Dokumentation der jeweils eigenen Dimension, formen die Spieler*innen anhand des Gesammelten und Erlebten die Erzählungen selbst.&lt;br /&gt;
Auf ein installatives Netz aus experimentellen Materialen, soften Schaltkreisen, meditativen Klangwelten, grotesken Interfaces und verzerrten Output-Signalen aufbauend, werden Fragen nach Isolation, Einsamkeit, immaterieller und haptischer Vernetzung und der Herstellung von Verhandlungsgrundlagen gestellt.&lt;br /&gt;
&lt;br /&gt;
Eine Arbeit von: Zoe Lohmann, Ella Estrella Tischa Raetzer, Rodolfo Acosta Castro, Lena Böckmann&lt;br /&gt;
&lt;br /&gt;
Video: https://www.youtube.com/watch?v=850KCMYEAow&amp;amp;t=7s&lt;br /&gt;
&lt;br /&gt;
https://live.staticflickr.com/65535/51681534884_545f161fd9.jpg&lt;br /&gt;
&lt;br /&gt;
= dokumentation_JAM =&lt;br /&gt;
&lt;br /&gt;
[[File:doku_nextLevel.jpg| thumb |Die Frage ist: wie stellt man eine Dokumentation?]]&lt;br /&gt;
&lt;br /&gt;
* Bilddokumentation sammelt und einordnen&lt;br /&gt;
* künstlerisch/ästhetisch mit dem Material umgehen&lt;br /&gt;
* Dokumentieren auch Fehler, persönliche Ansprüche und Gespräche, Unerwartetes genauso wie&lt;br /&gt;
* Code-Snippets, Schaltpläne, Materialen, Skizzen&lt;br /&gt;
* usw.&lt;br /&gt;
*let´s go!&lt;br /&gt;
&lt;br /&gt;
= DOME 1 = &lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
Polymorph, Kunstrasen, Audiojacks, Aux-Kabel, Kunstblumen, Röhrenfernseher, Jersey, etc...&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
Codes Processing&lt;br /&gt;
&lt;br /&gt;
== Sound == &lt;br /&gt;
 &lt;br /&gt;
Klangbeispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= DOME 2 =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
Watte, Silikon, Kunstblumen, LED-Kerzen....&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
== Sound/Klang == &lt;br /&gt;
&lt;br /&gt;
Beispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= MINI-DOME  =&lt;br /&gt;
&lt;br /&gt;
= relevant links =&lt;br /&gt;
&lt;br /&gt;
ESP with Arduino: http://hyperdramatik.net/mediawiki/index.php?title=ESP32_mit_Arduino&lt;br /&gt;
&lt;br /&gt;
MQTT: http://hyperdramatik.net/mediawiki/index.php?title=Hauptseite#MQTT&lt;br /&gt;
&lt;br /&gt;
DOMEs: http://hyperdramatik.net/mediawiki/index.php?title=Dome_Pod_KIT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= code examples from the project =&lt;br /&gt;
&lt;br /&gt;
== Arduino code for sounds in the fishing-dome ==&lt;br /&gt;
&lt;br /&gt;
// running on an ESP [[Spaghetti Monster]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
&lt;br /&gt;
byte analogPins[] = {&lt;br /&gt;
36, 39, 34, 35, 32, 33&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    pinMode(analogPins[i], INPUT);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    Serial.print(analogRead(analogPins[i]));&lt;br /&gt;
    Serial.print(&amp;quot;\t&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  delay(20);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the fishing-dome ==&lt;br /&gt;
 &lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the fishing-dome&lt;br /&gt;
 &lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import processing.serial.*;&lt;br /&gt;
import ddf.minim.*;&lt;br /&gt;
Serial myPort;    &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
//change these:&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
int ADCmax = 4095; &lt;br /&gt;
//int ADCmax = 1023;&lt;br /&gt;
float[] sensorThresholds = {1000, 1000, 1000, 1000, 1000, 1000};//new float[numOfSensors];&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
float[] sensorValues = new float[numOfSensors];&lt;br /&gt;
float[] previousSensorValues = new float[numOfSensors];&lt;br /&gt;
float xpos = 0;&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(600, 400);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  background(255);&lt;br /&gt;
&lt;br /&gt;
  println(Serial.list());&lt;br /&gt;
  String portName = Serial.list()[1];&lt;br /&gt;
  myPort = new Serial(this, &amp;quot;/dev/cu.SLAB_USBtoUART&amp;quot;, 9600);&lt;br /&gt;
  myPort.clear();&lt;br /&gt;
  myPort.bufferUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  sound0 = minim.loadSample( &amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound1 = minim.loadSample(&amp;quot;crazyfrogbardcore.wav&amp;quot;, 512);&lt;br /&gt;
  sound2 = minim.loadSample(&amp;quot;musterfinal.wav&amp;quot;, 512);&lt;br /&gt;
  sound3 = minim.loadSample(&amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound4 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 512);&lt;br /&gt;
  sound5 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 512);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  graph();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void graph() {&lt;br /&gt;
  for (int i=0; i&amp;lt;numOfSensors; i++) {&lt;br /&gt;
    if (sensorValues[i] &amp;lt; sensorThresholds[i]) sound(i);&lt;br /&gt;
&lt;br /&gt;
    // map the incoming values to an appropriate range:&lt;br /&gt;
    float ypos = map(sensorValues[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
&lt;br /&gt;
    // figure out the y position for this particular graph:&lt;br /&gt;
    float graphBottom = i * height/numOfSensors;&lt;br /&gt;
    ypos = ypos + graphBottom;&lt;br /&gt;
&lt;br /&gt;
    // draw the graph bottoms:&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    line(0, graphBottom, width, graphBottom);&lt;br /&gt;
&lt;br /&gt;
    // draw the thresholds:&lt;br /&gt;
    stroke(200, 0, 0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    float redLine = map(sensorThresholds[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
    line(0, redLine + graphBottom, width, redLine + graphBottom);&lt;br /&gt;
&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(2);&lt;br /&gt;
    line(xpos, previousSensorValues[i], xpos+1, ypos);&lt;br /&gt;
&lt;br /&gt;
    previousSensorValues[i] = ypos;&lt;br /&gt;
&lt;br /&gt;
    // if you've drawn to the edge of the window, start at the beginning again:&lt;br /&gt;
    if (xpos &amp;gt;= width) {&lt;br /&gt;
      xpos = 0;&lt;br /&gt;
      background(215);&lt;br /&gt;
    } else xpos+=0.1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void serialEvent (Serial myPort) {&lt;br /&gt;
  // get the ASCII string:&lt;br /&gt;
  String inString = myPort.readStringUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  // if it's not empty:&lt;br /&gt;
  if (inString != null) {&lt;br /&gt;
    // trim off any whitespace:&lt;br /&gt;
    inString = trim(inString);&lt;br /&gt;
&lt;br /&gt;
    // convert to an array of ints:&lt;br /&gt;
    int incomingValues[] = int(split(inString, &amp;quot;\t&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
    if (incomingValues.length &amp;lt;= numOfSensors &amp;amp;&amp;amp; incomingValues.length &amp;gt; 0) {&lt;br /&gt;
      for (int i = 0; i &amp;lt; incomingValues.length; i++) {&lt;br /&gt;
        sensorValues[i] = incomingValues[i];&lt;br /&gt;
        print(sensorValues[i] + &amp;quot;\t&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      println();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 4: &lt;br /&gt;
    sound4.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 5: &lt;br /&gt;
    sound5.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the dating-dome ==&lt;br /&gt;
&lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the dating-dome&lt;br /&gt;
 &lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import ddf.minim.*;  &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
int delayTime = 800;&lt;br /&gt;
boolean w_released = true;&lt;br /&gt;
boolean d_released = true;&lt;br /&gt;
boolean s_released = true;&lt;br /&gt;
boolean a_released = true;&lt;br /&gt;
int maxCount = 3;&lt;br /&gt;
int w_count = 0;&lt;br /&gt;
int a_count = 0;&lt;br /&gt;
int s_count = 0;&lt;br /&gt;
int d_count = 0;&lt;br /&gt;
int szene = 0;&lt;br /&gt;
int previousSzene;&lt;br /&gt;
int soundChangeInterval = 5000;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(1000, 800);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  background(255);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  szene = minute() % 3;&lt;br /&gt;
  if (szene != previousSzene) {&lt;br /&gt;
    previousSzene = szene;&lt;br /&gt;
    println(szene);&lt;br /&gt;
&lt;br /&gt;
    if (szene == 0) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;be.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;come.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;together.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;withMe.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 1) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 2) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void keyPressed() {&lt;br /&gt;
  if ((key == 'w' || key == 'W') &amp;amp;&amp;amp; w_released == true &amp;amp;&amp;amp; w_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0);&lt;br /&gt;
    w_released = false;&lt;br /&gt;
    sound(0);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    w_count ++;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'a' || key == 'A') &amp;amp;&amp;amp; a_released == true &amp;amp;&amp;amp; a_count &amp;lt; maxCount) {&lt;br /&gt;
    background(200, 0, 0);&lt;br /&gt;
    a_released = false;&lt;br /&gt;
    sound(1);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    a_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 's' || key == 'S') &amp;amp;&amp;amp; s_released == true &amp;amp;&amp;amp; s_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 200, 0);&lt;br /&gt;
    s_released = false;&lt;br /&gt;
    sound(2);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    s_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'd' || key == 'D') &amp;amp;&amp;amp; d_released == true &amp;amp;&amp;amp; d_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 0, 200);&lt;br /&gt;
    d_released = false;&lt;br /&gt;
    sound(3);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    d_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void keyReleased() {&lt;br /&gt;
  if (key == 'd' || key == 'D') {&lt;br /&gt;
    d_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'a' || key == 'A') {&lt;br /&gt;
    a_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 's' || key == 'S') {&lt;br /&gt;
    s_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'w' || key == 'W') {&lt;br /&gt;
    w_released = true;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rodolfo.acostacastro</name></author>
	</entry>
	<entry>
		<id>http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2711</id>
		<title>Random Acts of Vulnerability</title>
		<link rel="alternate" type="text/html" href="http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2711"/>
		<updated>2021-12-01T13:32:34Z</updated>

		<summary type="html">&lt;p&gt;Rodolfo.acostacastro: /* DOME 3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Random Acts of Vulnerability ist ein immersives Spiel für vier Spieler*innen in vier Dimensionen.  Durch Erkundung und Dokumentation der jeweils eigenen Dimension, formen die Spieler*innen anhand des Gesammelten und Erlebten die Erzählungen selbst.&lt;br /&gt;
Auf ein installatives Netz aus experimentellen Materialen, soften Schaltkreisen, meditativen Klangwelten, grotesken Interfaces und verzerrten Output-Signalen aufbauend, werden Fragen nach Isolation, Einsamkeit, immaterieller und haptischer Vernetzung und der Herstellung von Verhandlungsgrundlagen gestellt.&lt;br /&gt;
&lt;br /&gt;
Eine Arbeit von: Zoe Lohmann, Ella Estrella Tischa Raetzer, Rodolfo Acosta Castro, Lena Böckmann&lt;br /&gt;
&lt;br /&gt;
Video: https://www.youtube.com/watch?v=850KCMYEAow&amp;amp;t=7s&lt;br /&gt;
&lt;br /&gt;
https://live.staticflickr.com/65535/51681534884_545f161fd9.jpg&lt;br /&gt;
&lt;br /&gt;
= dokumentation_JAM =&lt;br /&gt;
&lt;br /&gt;
[[File:doku_nextLevel.jpg| thumb |Die Frage ist: wie stellt man eine Dokumentation?]]&lt;br /&gt;
&lt;br /&gt;
* Bilddokumentation sammelt und einordnen&lt;br /&gt;
* künstlerisch/ästhetisch mit dem Material umgehen&lt;br /&gt;
* Dokumentieren auch Fehler, persönliche Ansprüche und Gespräche, Unerwartetes genauso wie&lt;br /&gt;
* Code-Snippets, Schaltpläne, Materialen, Skizzen&lt;br /&gt;
* usw.&lt;br /&gt;
*let´s go!&lt;br /&gt;
&lt;br /&gt;
= DOME 1 = &lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
Polymorph, Kunstrasen, Audiojacks, Aux-Kabel, Kunstblumen, Röhrenfernseher, Jersey, etc...&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
Codes Processing&lt;br /&gt;
&lt;br /&gt;
== Sound == &lt;br /&gt;
 &lt;br /&gt;
Klangbeispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= DOME 2 =&lt;br /&gt;
&lt;br /&gt;
= MINI-DOME  =&lt;br /&gt;
&lt;br /&gt;
= relevant links =&lt;br /&gt;
&lt;br /&gt;
ESP with Arduino: http://hyperdramatik.net/mediawiki/index.php?title=ESP32_mit_Arduino&lt;br /&gt;
&lt;br /&gt;
MQTT: http://hyperdramatik.net/mediawiki/index.php?title=Hauptseite#MQTT&lt;br /&gt;
&lt;br /&gt;
DOMEs: http://hyperdramatik.net/mediawiki/index.php?title=Dome_Pod_KIT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= code examples from the project =&lt;br /&gt;
&lt;br /&gt;
== Arduino code for sounds in the fishing-dome ==&lt;br /&gt;
&lt;br /&gt;
// running on an ESP [[Spaghetti Monster]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
&lt;br /&gt;
byte analogPins[] = {&lt;br /&gt;
36, 39, 34, 35, 32, 33&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    pinMode(analogPins[i], INPUT);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    Serial.print(analogRead(analogPins[i]));&lt;br /&gt;
    Serial.print(&amp;quot;\t&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  delay(20);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the fishing-dome ==&lt;br /&gt;
 &lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the fishing-dome&lt;br /&gt;
 &lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import processing.serial.*;&lt;br /&gt;
import ddf.minim.*;&lt;br /&gt;
Serial myPort;    &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
//change these:&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
int ADCmax = 4095; &lt;br /&gt;
//int ADCmax = 1023;&lt;br /&gt;
float[] sensorThresholds = {1000, 1000, 1000, 1000, 1000, 1000};//new float[numOfSensors];&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
float[] sensorValues = new float[numOfSensors];&lt;br /&gt;
float[] previousSensorValues = new float[numOfSensors];&lt;br /&gt;
float xpos = 0;&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(600, 400);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  background(255);&lt;br /&gt;
&lt;br /&gt;
  println(Serial.list());&lt;br /&gt;
  String portName = Serial.list()[1];&lt;br /&gt;
  myPort = new Serial(this, &amp;quot;/dev/cu.SLAB_USBtoUART&amp;quot;, 9600);&lt;br /&gt;
  myPort.clear();&lt;br /&gt;
  myPort.bufferUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  sound0 = minim.loadSample( &amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound1 = minim.loadSample(&amp;quot;crazyfrogbardcore.wav&amp;quot;, 512);&lt;br /&gt;
  sound2 = minim.loadSample(&amp;quot;musterfinal.wav&amp;quot;, 512);&lt;br /&gt;
  sound3 = minim.loadSample(&amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound4 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 512);&lt;br /&gt;
  sound5 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 512);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  graph();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void graph() {&lt;br /&gt;
  for (int i=0; i&amp;lt;numOfSensors; i++) {&lt;br /&gt;
    if (sensorValues[i] &amp;lt; sensorThresholds[i]) sound(i);&lt;br /&gt;
&lt;br /&gt;
    // map the incoming values to an appropriate range:&lt;br /&gt;
    float ypos = map(sensorValues[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
&lt;br /&gt;
    // figure out the y position for this particular graph:&lt;br /&gt;
    float graphBottom = i * height/numOfSensors;&lt;br /&gt;
    ypos = ypos + graphBottom;&lt;br /&gt;
&lt;br /&gt;
    // draw the graph bottoms:&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    line(0, graphBottom, width, graphBottom);&lt;br /&gt;
&lt;br /&gt;
    // draw the thresholds:&lt;br /&gt;
    stroke(200, 0, 0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    float redLine = map(sensorThresholds[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
    line(0, redLine + graphBottom, width, redLine + graphBottom);&lt;br /&gt;
&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(2);&lt;br /&gt;
    line(xpos, previousSensorValues[i], xpos+1, ypos);&lt;br /&gt;
&lt;br /&gt;
    previousSensorValues[i] = ypos;&lt;br /&gt;
&lt;br /&gt;
    // if you've drawn to the edge of the window, start at the beginning again:&lt;br /&gt;
    if (xpos &amp;gt;= width) {&lt;br /&gt;
      xpos = 0;&lt;br /&gt;
      background(215);&lt;br /&gt;
    } else xpos+=0.1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void serialEvent (Serial myPort) {&lt;br /&gt;
  // get the ASCII string:&lt;br /&gt;
  String inString = myPort.readStringUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  // if it's not empty:&lt;br /&gt;
  if (inString != null) {&lt;br /&gt;
    // trim off any whitespace:&lt;br /&gt;
    inString = trim(inString);&lt;br /&gt;
&lt;br /&gt;
    // convert to an array of ints:&lt;br /&gt;
    int incomingValues[] = int(split(inString, &amp;quot;\t&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
    if (incomingValues.length &amp;lt;= numOfSensors &amp;amp;&amp;amp; incomingValues.length &amp;gt; 0) {&lt;br /&gt;
      for (int i = 0; i &amp;lt; incomingValues.length; i++) {&lt;br /&gt;
        sensorValues[i] = incomingValues[i];&lt;br /&gt;
        print(sensorValues[i] + &amp;quot;\t&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      println();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 4: &lt;br /&gt;
    sound4.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 5: &lt;br /&gt;
    sound5.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the dating-dome ==&lt;br /&gt;
&lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the dating-dome&lt;br /&gt;
 &lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import ddf.minim.*;  &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
int delayTime = 800;&lt;br /&gt;
boolean w_released = true;&lt;br /&gt;
boolean d_released = true;&lt;br /&gt;
boolean s_released = true;&lt;br /&gt;
boolean a_released = true;&lt;br /&gt;
int maxCount = 3;&lt;br /&gt;
int w_count = 0;&lt;br /&gt;
int a_count = 0;&lt;br /&gt;
int s_count = 0;&lt;br /&gt;
int d_count = 0;&lt;br /&gt;
int szene = 0;&lt;br /&gt;
int previousSzene;&lt;br /&gt;
int soundChangeInterval = 5000;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(1000, 800);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  background(255);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  szene = minute() % 3;&lt;br /&gt;
  if (szene != previousSzene) {&lt;br /&gt;
    previousSzene = szene;&lt;br /&gt;
    println(szene);&lt;br /&gt;
&lt;br /&gt;
    if (szene == 0) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;be.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;come.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;together.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;withMe.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 1) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 2) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void keyPressed() {&lt;br /&gt;
  if ((key == 'w' || key == 'W') &amp;amp;&amp;amp; w_released == true &amp;amp;&amp;amp; w_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0);&lt;br /&gt;
    w_released = false;&lt;br /&gt;
    sound(0);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    w_count ++;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'a' || key == 'A') &amp;amp;&amp;amp; a_released == true &amp;amp;&amp;amp; a_count &amp;lt; maxCount) {&lt;br /&gt;
    background(200, 0, 0);&lt;br /&gt;
    a_released = false;&lt;br /&gt;
    sound(1);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    a_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 's' || key == 'S') &amp;amp;&amp;amp; s_released == true &amp;amp;&amp;amp; s_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 200, 0);&lt;br /&gt;
    s_released = false;&lt;br /&gt;
    sound(2);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    s_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'd' || key == 'D') &amp;amp;&amp;amp; d_released == true &amp;amp;&amp;amp; d_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 0, 200);&lt;br /&gt;
    d_released = false;&lt;br /&gt;
    sound(3);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    d_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void keyReleased() {&lt;br /&gt;
  if (key == 'd' || key == 'D') {&lt;br /&gt;
    d_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'a' || key == 'A') {&lt;br /&gt;
    a_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 's' || key == 'S') {&lt;br /&gt;
    s_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'w' || key == 'W') {&lt;br /&gt;
    w_released = true;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rodolfo.acostacastro</name></author>
	</entry>
	<entry>
		<id>http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2710</id>
		<title>Random Acts of Vulnerability</title>
		<link rel="alternate" type="text/html" href="http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2710"/>
		<updated>2021-12-01T13:32:14Z</updated>

		<summary type="html">&lt;p&gt;Rodolfo.acostacastro: /* DOME 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Random Acts of Vulnerability ist ein immersives Spiel für vier Spieler*innen in vier Dimensionen.  Durch Erkundung und Dokumentation der jeweils eigenen Dimension, formen die Spieler*innen anhand des Gesammelten und Erlebten die Erzählungen selbst.&lt;br /&gt;
Auf ein installatives Netz aus experimentellen Materialen, soften Schaltkreisen, meditativen Klangwelten, grotesken Interfaces und verzerrten Output-Signalen aufbauend, werden Fragen nach Isolation, Einsamkeit, immaterieller und haptischer Vernetzung und der Herstellung von Verhandlungsgrundlagen gestellt.&lt;br /&gt;
&lt;br /&gt;
Eine Arbeit von: Zoe Lohmann, Ella Estrella Tischa Raetzer, Rodolfo Acosta Castro, Lena Böckmann&lt;br /&gt;
&lt;br /&gt;
Video: https://www.youtube.com/watch?v=850KCMYEAow&amp;amp;t=7s&lt;br /&gt;
&lt;br /&gt;
https://live.staticflickr.com/65535/51681534884_545f161fd9.jpg&lt;br /&gt;
&lt;br /&gt;
= dokumentation_JAM =&lt;br /&gt;
&lt;br /&gt;
[[File:doku_nextLevel.jpg| thumb |Die Frage ist: wie stellt man eine Dokumentation?]]&lt;br /&gt;
&lt;br /&gt;
* Bilddokumentation sammelt und einordnen&lt;br /&gt;
* künstlerisch/ästhetisch mit dem Material umgehen&lt;br /&gt;
* Dokumentieren auch Fehler, persönliche Ansprüche und Gespräche, Unerwartetes genauso wie&lt;br /&gt;
* Code-Snippets, Schaltpläne, Materialen, Skizzen&lt;br /&gt;
* usw.&lt;br /&gt;
*let´s go!&lt;br /&gt;
&lt;br /&gt;
= DOME 1 = &lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
Polymorph, Kunstrasen, Audiojacks, Aux-Kabel, Kunstblumen, Röhrenfernseher, Jersey, etc...&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
Codes Processing&lt;br /&gt;
&lt;br /&gt;
== Sound == &lt;br /&gt;
 &lt;br /&gt;
Klangbeispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= DOME 2 =&lt;br /&gt;
&lt;br /&gt;
= DOME 3 = &lt;br /&gt;
&lt;br /&gt;
== Harte Materialien ==&lt;br /&gt;
&lt;br /&gt;
Watte, Silikon, Kunstblumen, LED-Kerzen....&lt;br /&gt;
&lt;br /&gt;
== Softe Materialien == &lt;br /&gt;
&lt;br /&gt;
== Sound/Klang == &lt;br /&gt;
&lt;br /&gt;
Beispiele hochladen&lt;br /&gt;
&lt;br /&gt;
= relevant links =&lt;br /&gt;
&lt;br /&gt;
ESP with Arduino: http://hyperdramatik.net/mediawiki/index.php?title=ESP32_mit_Arduino&lt;br /&gt;
&lt;br /&gt;
MQTT: http://hyperdramatik.net/mediawiki/index.php?title=Hauptseite#MQTT&lt;br /&gt;
&lt;br /&gt;
DOMEs: http://hyperdramatik.net/mediawiki/index.php?title=Dome_Pod_KIT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= code examples from the project =&lt;br /&gt;
&lt;br /&gt;
== Arduino code for sounds in the fishing-dome ==&lt;br /&gt;
&lt;br /&gt;
// running on an ESP [[Spaghetti Monster]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
&lt;br /&gt;
byte analogPins[] = {&lt;br /&gt;
36, 39, 34, 35, 32, 33&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    pinMode(analogPins[i], INPUT);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    Serial.print(analogRead(analogPins[i]));&lt;br /&gt;
    Serial.print(&amp;quot;\t&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  delay(20);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the fishing-dome ==&lt;br /&gt;
 &lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the fishing-dome&lt;br /&gt;
 &lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import processing.serial.*;&lt;br /&gt;
import ddf.minim.*;&lt;br /&gt;
Serial myPort;    &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
//change these:&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
int ADCmax = 4095; &lt;br /&gt;
//int ADCmax = 1023;&lt;br /&gt;
float[] sensorThresholds = {1000, 1000, 1000, 1000, 1000, 1000};//new float[numOfSensors];&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
float[] sensorValues = new float[numOfSensors];&lt;br /&gt;
float[] previousSensorValues = new float[numOfSensors];&lt;br /&gt;
float xpos = 0;&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(600, 400);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  background(255);&lt;br /&gt;
&lt;br /&gt;
  println(Serial.list());&lt;br /&gt;
  String portName = Serial.list()[1];&lt;br /&gt;
  myPort = new Serial(this, &amp;quot;/dev/cu.SLAB_USBtoUART&amp;quot;, 9600);&lt;br /&gt;
  myPort.clear();&lt;br /&gt;
  myPort.bufferUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  sound0 = minim.loadSample( &amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound1 = minim.loadSample(&amp;quot;crazyfrogbardcore.wav&amp;quot;, 512);&lt;br /&gt;
  sound2 = minim.loadSample(&amp;quot;musterfinal.wav&amp;quot;, 512);&lt;br /&gt;
  sound3 = minim.loadSample(&amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound4 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 512);&lt;br /&gt;
  sound5 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 512);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  graph();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void graph() {&lt;br /&gt;
  for (int i=0; i&amp;lt;numOfSensors; i++) {&lt;br /&gt;
    if (sensorValues[i] &amp;lt; sensorThresholds[i]) sound(i);&lt;br /&gt;
&lt;br /&gt;
    // map the incoming values to an appropriate range:&lt;br /&gt;
    float ypos = map(sensorValues[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
&lt;br /&gt;
    // figure out the y position for this particular graph:&lt;br /&gt;
    float graphBottom = i * height/numOfSensors;&lt;br /&gt;
    ypos = ypos + graphBottom;&lt;br /&gt;
&lt;br /&gt;
    // draw the graph bottoms:&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    line(0, graphBottom, width, graphBottom);&lt;br /&gt;
&lt;br /&gt;
    // draw the thresholds:&lt;br /&gt;
    stroke(200, 0, 0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    float redLine = map(sensorThresholds[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
    line(0, redLine + graphBottom, width, redLine + graphBottom);&lt;br /&gt;
&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(2);&lt;br /&gt;
    line(xpos, previousSensorValues[i], xpos+1, ypos);&lt;br /&gt;
&lt;br /&gt;
    previousSensorValues[i] = ypos;&lt;br /&gt;
&lt;br /&gt;
    // if you've drawn to the edge of the window, start at the beginning again:&lt;br /&gt;
    if (xpos &amp;gt;= width) {&lt;br /&gt;
      xpos = 0;&lt;br /&gt;
      background(215);&lt;br /&gt;
    } else xpos+=0.1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void serialEvent (Serial myPort) {&lt;br /&gt;
  // get the ASCII string:&lt;br /&gt;
  String inString = myPort.readStringUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  // if it's not empty:&lt;br /&gt;
  if (inString != null) {&lt;br /&gt;
    // trim off any whitespace:&lt;br /&gt;
    inString = trim(inString);&lt;br /&gt;
&lt;br /&gt;
    // convert to an array of ints:&lt;br /&gt;
    int incomingValues[] = int(split(inString, &amp;quot;\t&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
    if (incomingValues.length &amp;lt;= numOfSensors &amp;amp;&amp;amp; incomingValues.length &amp;gt; 0) {&lt;br /&gt;
      for (int i = 0; i &amp;lt; incomingValues.length; i++) {&lt;br /&gt;
        sensorValues[i] = incomingValues[i];&lt;br /&gt;
        print(sensorValues[i] + &amp;quot;\t&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      println();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 4: &lt;br /&gt;
    sound4.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 5: &lt;br /&gt;
    sound5.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the dating-dome ==&lt;br /&gt;
&lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the dating-dome&lt;br /&gt;
 &lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import ddf.minim.*;  &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
int delayTime = 800;&lt;br /&gt;
boolean w_released = true;&lt;br /&gt;
boolean d_released = true;&lt;br /&gt;
boolean s_released = true;&lt;br /&gt;
boolean a_released = true;&lt;br /&gt;
int maxCount = 3;&lt;br /&gt;
int w_count = 0;&lt;br /&gt;
int a_count = 0;&lt;br /&gt;
int s_count = 0;&lt;br /&gt;
int d_count = 0;&lt;br /&gt;
int szene = 0;&lt;br /&gt;
int previousSzene;&lt;br /&gt;
int soundChangeInterval = 5000;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(1000, 800);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  background(255);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  szene = minute() % 3;&lt;br /&gt;
  if (szene != previousSzene) {&lt;br /&gt;
    previousSzene = szene;&lt;br /&gt;
    println(szene);&lt;br /&gt;
&lt;br /&gt;
    if (szene == 0) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;be.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;come.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;together.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;withMe.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 1) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 2) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void keyPressed() {&lt;br /&gt;
  if ((key == 'w' || key == 'W') &amp;amp;&amp;amp; w_released == true &amp;amp;&amp;amp; w_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0);&lt;br /&gt;
    w_released = false;&lt;br /&gt;
    sound(0);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    w_count ++;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'a' || key == 'A') &amp;amp;&amp;amp; a_released == true &amp;amp;&amp;amp; a_count &amp;lt; maxCount) {&lt;br /&gt;
    background(200, 0, 0);&lt;br /&gt;
    a_released = false;&lt;br /&gt;
    sound(1);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    a_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 's' || key == 'S') &amp;amp;&amp;amp; s_released == true &amp;amp;&amp;amp; s_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 200, 0);&lt;br /&gt;
    s_released = false;&lt;br /&gt;
    sound(2);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    s_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'd' || key == 'D') &amp;amp;&amp;amp; d_released == true &amp;amp;&amp;amp; d_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 0, 200);&lt;br /&gt;
    d_released = false;&lt;br /&gt;
    sound(3);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    d_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void keyReleased() {&lt;br /&gt;
  if (key == 'd' || key == 'D') {&lt;br /&gt;
    d_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'a' || key == 'A') {&lt;br /&gt;
    a_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 's' || key == 'S') {&lt;br /&gt;
    s_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'w' || key == 'W') {&lt;br /&gt;
    w_released = true;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rodolfo.acostacastro</name></author>
	</entry>
	<entry>
		<id>http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2695</id>
		<title>Random Acts of Vulnerability</title>
		<link rel="alternate" type="text/html" href="http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2695"/>
		<updated>2021-12-01T12:06:59Z</updated>

		<summary type="html">&lt;p&gt;Rodolfo.acostacastro: /* Dokumentation_JAM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Random Acts of Vulnerability ist ein immersives Spiel für vier Spieler*innen in vier Dimensionen.  Durch Erkundung und Dokumentation der jeweils eigenen Dimension, formen die Spieler*innen anhand des Gesammelten und Erlebten die Erzählungen selbst.&lt;br /&gt;
Auf ein installatives Netz aus experimentellen Materialen, soften Schaltkreisen, meditativen Klangwelten, grotesken Interfaces und verzerrten Output-Signalen aufbauend, werden Fragen nach Isolation, Einsamkeit, immaterieller und haptischer Vernetzung und der Herstellung von Verhandlungsgrundlagen gestellt.&lt;br /&gt;
&lt;br /&gt;
Eine Arbeit von: Zoe Lohmann, Ella Estrella Tischa Raetzer, Rodolfo Acosta Castro, Lena Böckmann&lt;br /&gt;
&lt;br /&gt;
Video: https://www.youtube.com/watch?v=850KCMYEAow&amp;amp;t=7s&lt;br /&gt;
&lt;br /&gt;
https://live.staticflickr.com/65535/51681534884_545f161fd9.jpg&lt;br /&gt;
&lt;br /&gt;
= dokumentation_JAM =&lt;br /&gt;
&lt;br /&gt;
[[File:doku_nextLevel.jpg| thumb |Die Frage ist: wie stellt man eine Dokumentation?]]&lt;br /&gt;
&lt;br /&gt;
* Bilddokumentation sammelt und einordnen&lt;br /&gt;
* künstlerisch/ästhetisch mit dem Material umgehen&lt;br /&gt;
* Dokumentieren auch Fehler, persönliche Ansprüche und Gespräche, Unerwartetes genauso wie&lt;br /&gt;
* Code-Snippets, Schaltpläne, Materialen, Skizzen&lt;br /&gt;
* usw.&lt;br /&gt;
*let´s go!&lt;br /&gt;
&lt;br /&gt;
= relevant links =&lt;br /&gt;
&lt;br /&gt;
ESP with Arduino: http://hyperdramatik.net/mediawiki/index.php?title=ESP32_mit_Arduino&lt;br /&gt;
&lt;br /&gt;
MQTT: http://hyperdramatik.net/mediawiki/index.php?title=Hauptseite#MQTT&lt;br /&gt;
&lt;br /&gt;
DOMEs: http://hyperdramatik.net/mediawiki/index.php?title=Dome_Pod_KIT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= code examples from the project =&lt;br /&gt;
&lt;br /&gt;
== Arduino code for sounds in the fishing-dome ==&lt;br /&gt;
&lt;br /&gt;
// running on an ESP [[Spaghetti Monster]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
&lt;br /&gt;
byte analogPins[] = {&lt;br /&gt;
36, 39, 34, 35, 32, 33&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    pinMode(analogPins[i], INPUT);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    Serial.print(analogRead(analogPins[i]));&lt;br /&gt;
    Serial.print(&amp;quot;\t&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  delay(20);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the fishing-dome ==&lt;br /&gt;
 &lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the fishing-dome&lt;br /&gt;
 &lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import processing.serial.*;&lt;br /&gt;
import ddf.minim.*;&lt;br /&gt;
Serial myPort;    &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
//change these:&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
int ADCmax = 4095; &lt;br /&gt;
//int ADCmax = 1023;&lt;br /&gt;
float[] sensorThresholds = {1000, 1000, 1000, 1000, 1000, 1000};//new float[numOfSensors];&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
float[] sensorValues = new float[numOfSensors];&lt;br /&gt;
float[] previousSensorValues = new float[numOfSensors];&lt;br /&gt;
float xpos = 0;&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(600, 400);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  background(255);&lt;br /&gt;
&lt;br /&gt;
  println(Serial.list());&lt;br /&gt;
  String portName = Serial.list()[1];&lt;br /&gt;
  myPort = new Serial(this, &amp;quot;/dev/cu.SLAB_USBtoUART&amp;quot;, 9600);&lt;br /&gt;
  myPort.clear();&lt;br /&gt;
  myPort.bufferUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  sound0 = minim.loadSample( &amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound1 = minim.loadSample(&amp;quot;crazyfrogbardcore.wav&amp;quot;, 512);&lt;br /&gt;
  sound2 = minim.loadSample(&amp;quot;musterfinal.wav&amp;quot;, 512);&lt;br /&gt;
  sound3 = minim.loadSample(&amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound4 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 512);&lt;br /&gt;
  sound5 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 512);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  graph();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void graph() {&lt;br /&gt;
  for (int i=0; i&amp;lt;numOfSensors; i++) {&lt;br /&gt;
    if (sensorValues[i] &amp;lt; sensorThresholds[i]) sound(i);&lt;br /&gt;
&lt;br /&gt;
    // map the incoming values to an appropriate range:&lt;br /&gt;
    float ypos = map(sensorValues[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
&lt;br /&gt;
    // figure out the y position for this particular graph:&lt;br /&gt;
    float graphBottom = i * height/numOfSensors;&lt;br /&gt;
    ypos = ypos + graphBottom;&lt;br /&gt;
&lt;br /&gt;
    // draw the graph bottoms:&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    line(0, graphBottom, width, graphBottom);&lt;br /&gt;
&lt;br /&gt;
    // draw the thresholds:&lt;br /&gt;
    stroke(200, 0, 0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    float redLine = map(sensorThresholds[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
    line(0, redLine + graphBottom, width, redLine + graphBottom);&lt;br /&gt;
&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(2);&lt;br /&gt;
    line(xpos, previousSensorValues[i], xpos+1, ypos);&lt;br /&gt;
&lt;br /&gt;
    previousSensorValues[i] = ypos;&lt;br /&gt;
&lt;br /&gt;
    // if you've drawn to the edge of the window, start at the beginning again:&lt;br /&gt;
    if (xpos &amp;gt;= width) {&lt;br /&gt;
      xpos = 0;&lt;br /&gt;
      background(215);&lt;br /&gt;
    } else xpos+=0.1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void serialEvent (Serial myPort) {&lt;br /&gt;
  // get the ASCII string:&lt;br /&gt;
  String inString = myPort.readStringUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  // if it's not empty:&lt;br /&gt;
  if (inString != null) {&lt;br /&gt;
    // trim off any whitespace:&lt;br /&gt;
    inString = trim(inString);&lt;br /&gt;
&lt;br /&gt;
    // convert to an array of ints:&lt;br /&gt;
    int incomingValues[] = int(split(inString, &amp;quot;\t&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
    if (incomingValues.length &amp;lt;= numOfSensors &amp;amp;&amp;amp; incomingValues.length &amp;gt; 0) {&lt;br /&gt;
      for (int i = 0; i &amp;lt; incomingValues.length; i++) {&lt;br /&gt;
        sensorValues[i] = incomingValues[i];&lt;br /&gt;
        print(sensorValues[i] + &amp;quot;\t&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      println();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 4: &lt;br /&gt;
    sound4.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 5: &lt;br /&gt;
    sound5.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the dating-dome ==&lt;br /&gt;
&lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the dating-dome&lt;br /&gt;
 &lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import ddf.minim.*;  &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
int delayTime = 800;&lt;br /&gt;
boolean w_released = true;&lt;br /&gt;
boolean d_released = true;&lt;br /&gt;
boolean s_released = true;&lt;br /&gt;
boolean a_released = true;&lt;br /&gt;
int maxCount = 3;&lt;br /&gt;
int w_count = 0;&lt;br /&gt;
int a_count = 0;&lt;br /&gt;
int s_count = 0;&lt;br /&gt;
int d_count = 0;&lt;br /&gt;
int szene = 0;&lt;br /&gt;
int previousSzene;&lt;br /&gt;
int soundChangeInterval = 5000;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(1000, 800);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  background(255);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  szene = minute() % 3;&lt;br /&gt;
  if (szene != previousSzene) {&lt;br /&gt;
    previousSzene = szene;&lt;br /&gt;
    println(szene);&lt;br /&gt;
&lt;br /&gt;
    if (szene == 0) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;be.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;come.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;together.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;withMe.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 1) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 2) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void keyPressed() {&lt;br /&gt;
  if ((key == 'w' || key == 'W') &amp;amp;&amp;amp; w_released == true &amp;amp;&amp;amp; w_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0);&lt;br /&gt;
    w_released = false;&lt;br /&gt;
    sound(0);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    w_count ++;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'a' || key == 'A') &amp;amp;&amp;amp; a_released == true &amp;amp;&amp;amp; a_count &amp;lt; maxCount) {&lt;br /&gt;
    background(200, 0, 0);&lt;br /&gt;
    a_released = false;&lt;br /&gt;
    sound(1);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    a_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 's' || key == 'S') &amp;amp;&amp;amp; s_released == true &amp;amp;&amp;amp; s_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 200, 0);&lt;br /&gt;
    s_released = false;&lt;br /&gt;
    sound(2);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    s_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'd' || key == 'D') &amp;amp;&amp;amp; d_released == true &amp;amp;&amp;amp; d_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 0, 200);&lt;br /&gt;
    d_released = false;&lt;br /&gt;
    sound(3);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    d_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void keyReleased() {&lt;br /&gt;
  if (key == 'd' || key == 'D') {&lt;br /&gt;
    d_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'a' || key == 'A') {&lt;br /&gt;
    a_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 's' || key == 'S') {&lt;br /&gt;
    s_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'w' || key == 'W') {&lt;br /&gt;
    w_released = true;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rodolfo.acostacastro</name></author>
	</entry>
	<entry>
		<id>http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2694</id>
		<title>Random Acts of Vulnerability</title>
		<link rel="alternate" type="text/html" href="http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2694"/>
		<updated>2021-12-01T12:06:41Z</updated>

		<summary type="html">&lt;p&gt;Rodolfo.acostacastro: /* Dokumentation_JAM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Random Acts of Vulnerability ist ein immersives Spiel für vier Spieler*innen in vier Dimensionen.  Durch Erkundung und Dokumentation der jeweils eigenen Dimension, formen die Spieler*innen anhand des Gesammelten und Erlebten die Erzählungen selbst.&lt;br /&gt;
Auf ein installatives Netz aus experimentellen Materialen, soften Schaltkreisen, meditativen Klangwelten, grotesken Interfaces und verzerrten Output-Signalen aufbauend, werden Fragen nach Isolation, Einsamkeit, immaterieller und haptischer Vernetzung und der Herstellung von Verhandlungsgrundlagen gestellt.&lt;br /&gt;
&lt;br /&gt;
Eine Arbeit von: Zoe Lohmann, Ella Estrella Tischa Raetzer, Rodolfo Acosta Castro, Lena Böckmann&lt;br /&gt;
&lt;br /&gt;
Video: https://www.youtube.com/watch?v=850KCMYEAow&amp;amp;t=7s&lt;br /&gt;
&lt;br /&gt;
https://live.staticflickr.com/65535/51681534884_545f161fd9.jpg&lt;br /&gt;
&lt;br /&gt;
= Dokumentation_JAM =&lt;br /&gt;
&lt;br /&gt;
[[File:doku_nextLevel.jpg| thumb |Die Frage ist: wie stellt man eine Dokumentation?]]&lt;br /&gt;
&lt;br /&gt;
* Bilddokumentation sammelt und einordnen&lt;br /&gt;
* künstlerisch/ästhetisch mit dem Material umgehen&lt;br /&gt;
* Dokumentieren auch Fehler, persönliche Ansprüche und Gespräche, Unerwartetes genauso wie&lt;br /&gt;
* Code-Snippets, Schaltpläne, Materialen, Skizzen&lt;br /&gt;
* usw.&lt;br /&gt;
*let´s go!&lt;br /&gt;
&lt;br /&gt;
= relevant links =&lt;br /&gt;
&lt;br /&gt;
ESP with Arduino: http://hyperdramatik.net/mediawiki/index.php?title=ESP32_mit_Arduino&lt;br /&gt;
&lt;br /&gt;
MQTT: http://hyperdramatik.net/mediawiki/index.php?title=Hauptseite#MQTT&lt;br /&gt;
&lt;br /&gt;
DOMEs: http://hyperdramatik.net/mediawiki/index.php?title=Dome_Pod_KIT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= code examples from the project =&lt;br /&gt;
&lt;br /&gt;
== Arduino code for sounds in the fishing-dome ==&lt;br /&gt;
&lt;br /&gt;
// running on an ESP [[Spaghetti Monster]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
&lt;br /&gt;
byte analogPins[] = {&lt;br /&gt;
36, 39, 34, 35, 32, 33&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    pinMode(analogPins[i], INPUT);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    Serial.print(analogRead(analogPins[i]));&lt;br /&gt;
    Serial.print(&amp;quot;\t&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  delay(20);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the fishing-dome ==&lt;br /&gt;
 &lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the fishing-dome&lt;br /&gt;
 &lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import processing.serial.*;&lt;br /&gt;
import ddf.minim.*;&lt;br /&gt;
Serial myPort;    &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
//change these:&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
int ADCmax = 4095; &lt;br /&gt;
//int ADCmax = 1023;&lt;br /&gt;
float[] sensorThresholds = {1000, 1000, 1000, 1000, 1000, 1000};//new float[numOfSensors];&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
float[] sensorValues = new float[numOfSensors];&lt;br /&gt;
float[] previousSensorValues = new float[numOfSensors];&lt;br /&gt;
float xpos = 0;&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(600, 400);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  background(255);&lt;br /&gt;
&lt;br /&gt;
  println(Serial.list());&lt;br /&gt;
  String portName = Serial.list()[1];&lt;br /&gt;
  myPort = new Serial(this, &amp;quot;/dev/cu.SLAB_USBtoUART&amp;quot;, 9600);&lt;br /&gt;
  myPort.clear();&lt;br /&gt;
  myPort.bufferUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  sound0 = minim.loadSample( &amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound1 = minim.loadSample(&amp;quot;crazyfrogbardcore.wav&amp;quot;, 512);&lt;br /&gt;
  sound2 = minim.loadSample(&amp;quot;musterfinal.wav&amp;quot;, 512);&lt;br /&gt;
  sound3 = minim.loadSample(&amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound4 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 512);&lt;br /&gt;
  sound5 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 512);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  graph();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void graph() {&lt;br /&gt;
  for (int i=0; i&amp;lt;numOfSensors; i++) {&lt;br /&gt;
    if (sensorValues[i] &amp;lt; sensorThresholds[i]) sound(i);&lt;br /&gt;
&lt;br /&gt;
    // map the incoming values to an appropriate range:&lt;br /&gt;
    float ypos = map(sensorValues[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
&lt;br /&gt;
    // figure out the y position for this particular graph:&lt;br /&gt;
    float graphBottom = i * height/numOfSensors;&lt;br /&gt;
    ypos = ypos + graphBottom;&lt;br /&gt;
&lt;br /&gt;
    // draw the graph bottoms:&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    line(0, graphBottom, width, graphBottom);&lt;br /&gt;
&lt;br /&gt;
    // draw the thresholds:&lt;br /&gt;
    stroke(200, 0, 0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    float redLine = map(sensorThresholds[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
    line(0, redLine + graphBottom, width, redLine + graphBottom);&lt;br /&gt;
&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(2);&lt;br /&gt;
    line(xpos, previousSensorValues[i], xpos+1, ypos);&lt;br /&gt;
&lt;br /&gt;
    previousSensorValues[i] = ypos;&lt;br /&gt;
&lt;br /&gt;
    // if you've drawn to the edge of the window, start at the beginning again:&lt;br /&gt;
    if (xpos &amp;gt;= width) {&lt;br /&gt;
      xpos = 0;&lt;br /&gt;
      background(215);&lt;br /&gt;
    } else xpos+=0.1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void serialEvent (Serial myPort) {&lt;br /&gt;
  // get the ASCII string:&lt;br /&gt;
  String inString = myPort.readStringUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  // if it's not empty:&lt;br /&gt;
  if (inString != null) {&lt;br /&gt;
    // trim off any whitespace:&lt;br /&gt;
    inString = trim(inString);&lt;br /&gt;
&lt;br /&gt;
    // convert to an array of ints:&lt;br /&gt;
    int incomingValues[] = int(split(inString, &amp;quot;\t&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
    if (incomingValues.length &amp;lt;= numOfSensors &amp;amp;&amp;amp; incomingValues.length &amp;gt; 0) {&lt;br /&gt;
      for (int i = 0; i &amp;lt; incomingValues.length; i++) {&lt;br /&gt;
        sensorValues[i] = incomingValues[i];&lt;br /&gt;
        print(sensorValues[i] + &amp;quot;\t&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      println();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 4: &lt;br /&gt;
    sound4.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 5: &lt;br /&gt;
    sound5.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the dating-dome ==&lt;br /&gt;
&lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the dating-dome&lt;br /&gt;
 &lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import ddf.minim.*;  &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
int delayTime = 800;&lt;br /&gt;
boolean w_released = true;&lt;br /&gt;
boolean d_released = true;&lt;br /&gt;
boolean s_released = true;&lt;br /&gt;
boolean a_released = true;&lt;br /&gt;
int maxCount = 3;&lt;br /&gt;
int w_count = 0;&lt;br /&gt;
int a_count = 0;&lt;br /&gt;
int s_count = 0;&lt;br /&gt;
int d_count = 0;&lt;br /&gt;
int szene = 0;&lt;br /&gt;
int previousSzene;&lt;br /&gt;
int soundChangeInterval = 5000;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(1000, 800);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  background(255);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  szene = minute() % 3;&lt;br /&gt;
  if (szene != previousSzene) {&lt;br /&gt;
    previousSzene = szene;&lt;br /&gt;
    println(szene);&lt;br /&gt;
&lt;br /&gt;
    if (szene == 0) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;be.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;come.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;together.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;withMe.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 1) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 2) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void keyPressed() {&lt;br /&gt;
  if ((key == 'w' || key == 'W') &amp;amp;&amp;amp; w_released == true &amp;amp;&amp;amp; w_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0);&lt;br /&gt;
    w_released = false;&lt;br /&gt;
    sound(0);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    w_count ++;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'a' || key == 'A') &amp;amp;&amp;amp; a_released == true &amp;amp;&amp;amp; a_count &amp;lt; maxCount) {&lt;br /&gt;
    background(200, 0, 0);&lt;br /&gt;
    a_released = false;&lt;br /&gt;
    sound(1);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    a_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 's' || key == 'S') &amp;amp;&amp;amp; s_released == true &amp;amp;&amp;amp; s_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 200, 0);&lt;br /&gt;
    s_released = false;&lt;br /&gt;
    sound(2);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    s_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'd' || key == 'D') &amp;amp;&amp;amp; d_released == true &amp;amp;&amp;amp; d_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 0, 200);&lt;br /&gt;
    d_released = false;&lt;br /&gt;
    sound(3);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    d_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void keyReleased() {&lt;br /&gt;
  if (key == 'd' || key == 'D') {&lt;br /&gt;
    d_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'a' || key == 'A') {&lt;br /&gt;
    a_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 's' || key == 'S') {&lt;br /&gt;
    s_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'w' || key == 'W') {&lt;br /&gt;
    w_released = true;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rodolfo.acostacastro</name></author>
	</entry>
	<entry>
		<id>http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2693</id>
		<title>Random Acts of Vulnerability</title>
		<link rel="alternate" type="text/html" href="http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2693"/>
		<updated>2021-12-01T12:06:19Z</updated>

		<summary type="html">&lt;p&gt;Rodolfo.acostacastro: /* Meta-Dokumentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Random Acts of Vulnerability ist ein immersives Spiel für vier Spieler*innen in vier Dimensionen.  Durch Erkundung und Dokumentation der jeweils eigenen Dimension, formen die Spieler*innen anhand des Gesammelten und Erlebten die Erzählungen selbst.&lt;br /&gt;
Auf ein installatives Netz aus experimentellen Materialen, soften Schaltkreisen, meditativen Klangwelten, grotesken Interfaces und verzerrten Output-Signalen aufbauend, werden Fragen nach Isolation, Einsamkeit, immaterieller und haptischer Vernetzung und der Herstellung von Verhandlungsgrundlagen gestellt.&lt;br /&gt;
&lt;br /&gt;
Eine Arbeit von: Zoe Lohmann, Ella Estrella Tischa Raetzer, Rodolfo Acosta Castro, Lena Böckmann&lt;br /&gt;
&lt;br /&gt;
Video: https://www.youtube.com/watch?v=850KCMYEAow&amp;amp;t=7s&lt;br /&gt;
&lt;br /&gt;
https://live.staticflickr.com/65535/51681534884_545f161fd9.jpg&lt;br /&gt;
&lt;br /&gt;
= Dokumentation_JAM =&lt;br /&gt;
&lt;br /&gt;
[[File:doku_nextLevel.jpg| thumb |Die Frage ist: wie stellt man eine Dokumentation?]]&lt;br /&gt;
&lt;br /&gt;
* Bilddokumentation sammelt und einordnen&lt;br /&gt;
* künstlerisch/ästhetisch mit dem Material umgehen&lt;br /&gt;
* Dokumentieren auch Fehler, persönliche Ansprüche und Gespräche, Unerwartetes genauso wie&lt;br /&gt;
* Code-Snippets, Schaltpläne, Materialen, Skizzen&lt;br /&gt;
* usw.&lt;br /&gt;
&lt;br /&gt;
= relevant links =&lt;br /&gt;
&lt;br /&gt;
ESP with Arduino: http://hyperdramatik.net/mediawiki/index.php?title=ESP32_mit_Arduino&lt;br /&gt;
&lt;br /&gt;
MQTT: http://hyperdramatik.net/mediawiki/index.php?title=Hauptseite#MQTT&lt;br /&gt;
&lt;br /&gt;
DOMEs: http://hyperdramatik.net/mediawiki/index.php?title=Dome_Pod_KIT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= code examples from the project =&lt;br /&gt;
&lt;br /&gt;
== Arduino code for sounds in the fishing-dome ==&lt;br /&gt;
&lt;br /&gt;
// running on an ESP [[Spaghetti Monster]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
&lt;br /&gt;
byte analogPins[] = {&lt;br /&gt;
36, 39, 34, 35, 32, 33&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    pinMode(analogPins[i], INPUT);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    Serial.print(analogRead(analogPins[i]));&lt;br /&gt;
    Serial.print(&amp;quot;\t&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  delay(20);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the fishing-dome ==&lt;br /&gt;
 &lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the fishing-dome&lt;br /&gt;
 &lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import processing.serial.*;&lt;br /&gt;
import ddf.minim.*;&lt;br /&gt;
Serial myPort;    &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
//change these:&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
int ADCmax = 4095; &lt;br /&gt;
//int ADCmax = 1023;&lt;br /&gt;
float[] sensorThresholds = {1000, 1000, 1000, 1000, 1000, 1000};//new float[numOfSensors];&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
float[] sensorValues = new float[numOfSensors];&lt;br /&gt;
float[] previousSensorValues = new float[numOfSensors];&lt;br /&gt;
float xpos = 0;&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(600, 400);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  background(255);&lt;br /&gt;
&lt;br /&gt;
  println(Serial.list());&lt;br /&gt;
  String portName = Serial.list()[1];&lt;br /&gt;
  myPort = new Serial(this, &amp;quot;/dev/cu.SLAB_USBtoUART&amp;quot;, 9600);&lt;br /&gt;
  myPort.clear();&lt;br /&gt;
  myPort.bufferUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  sound0 = minim.loadSample( &amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound1 = minim.loadSample(&amp;quot;crazyfrogbardcore.wav&amp;quot;, 512);&lt;br /&gt;
  sound2 = minim.loadSample(&amp;quot;musterfinal.wav&amp;quot;, 512);&lt;br /&gt;
  sound3 = minim.loadSample(&amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound4 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 512);&lt;br /&gt;
  sound5 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 512);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  graph();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void graph() {&lt;br /&gt;
  for (int i=0; i&amp;lt;numOfSensors; i++) {&lt;br /&gt;
    if (sensorValues[i] &amp;lt; sensorThresholds[i]) sound(i);&lt;br /&gt;
&lt;br /&gt;
    // map the incoming values to an appropriate range:&lt;br /&gt;
    float ypos = map(sensorValues[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
&lt;br /&gt;
    // figure out the y position for this particular graph:&lt;br /&gt;
    float graphBottom = i * height/numOfSensors;&lt;br /&gt;
    ypos = ypos + graphBottom;&lt;br /&gt;
&lt;br /&gt;
    // draw the graph bottoms:&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    line(0, graphBottom, width, graphBottom);&lt;br /&gt;
&lt;br /&gt;
    // draw the thresholds:&lt;br /&gt;
    stroke(200, 0, 0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    float redLine = map(sensorThresholds[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
    line(0, redLine + graphBottom, width, redLine + graphBottom);&lt;br /&gt;
&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(2);&lt;br /&gt;
    line(xpos, previousSensorValues[i], xpos+1, ypos);&lt;br /&gt;
&lt;br /&gt;
    previousSensorValues[i] = ypos;&lt;br /&gt;
&lt;br /&gt;
    // if you've drawn to the edge of the window, start at the beginning again:&lt;br /&gt;
    if (xpos &amp;gt;= width) {&lt;br /&gt;
      xpos = 0;&lt;br /&gt;
      background(215);&lt;br /&gt;
    } else xpos+=0.1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void serialEvent (Serial myPort) {&lt;br /&gt;
  // get the ASCII string:&lt;br /&gt;
  String inString = myPort.readStringUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  // if it's not empty:&lt;br /&gt;
  if (inString != null) {&lt;br /&gt;
    // trim off any whitespace:&lt;br /&gt;
    inString = trim(inString);&lt;br /&gt;
&lt;br /&gt;
    // convert to an array of ints:&lt;br /&gt;
    int incomingValues[] = int(split(inString, &amp;quot;\t&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
    if (incomingValues.length &amp;lt;= numOfSensors &amp;amp;&amp;amp; incomingValues.length &amp;gt; 0) {&lt;br /&gt;
      for (int i = 0; i &amp;lt; incomingValues.length; i++) {&lt;br /&gt;
        sensorValues[i] = incomingValues[i];&lt;br /&gt;
        print(sensorValues[i] + &amp;quot;\t&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      println();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 4: &lt;br /&gt;
    sound4.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 5: &lt;br /&gt;
    sound5.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the dating-dome ==&lt;br /&gt;
&lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the dating-dome&lt;br /&gt;
 &lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import ddf.minim.*;  &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
int delayTime = 800;&lt;br /&gt;
boolean w_released = true;&lt;br /&gt;
boolean d_released = true;&lt;br /&gt;
boolean s_released = true;&lt;br /&gt;
boolean a_released = true;&lt;br /&gt;
int maxCount = 3;&lt;br /&gt;
int w_count = 0;&lt;br /&gt;
int a_count = 0;&lt;br /&gt;
int s_count = 0;&lt;br /&gt;
int d_count = 0;&lt;br /&gt;
int szene = 0;&lt;br /&gt;
int previousSzene;&lt;br /&gt;
int soundChangeInterval = 5000;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(1000, 800);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  background(255);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  szene = minute() % 3;&lt;br /&gt;
  if (szene != previousSzene) {&lt;br /&gt;
    previousSzene = szene;&lt;br /&gt;
    println(szene);&lt;br /&gt;
&lt;br /&gt;
    if (szene == 0) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;be.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;come.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;together.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;withMe.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 1) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 2) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void keyPressed() {&lt;br /&gt;
  if ((key == 'w' || key == 'W') &amp;amp;&amp;amp; w_released == true &amp;amp;&amp;amp; w_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0);&lt;br /&gt;
    w_released = false;&lt;br /&gt;
    sound(0);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    w_count ++;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'a' || key == 'A') &amp;amp;&amp;amp; a_released == true &amp;amp;&amp;amp; a_count &amp;lt; maxCount) {&lt;br /&gt;
    background(200, 0, 0);&lt;br /&gt;
    a_released = false;&lt;br /&gt;
    sound(1);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    a_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 's' || key == 'S') &amp;amp;&amp;amp; s_released == true &amp;amp;&amp;amp; s_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 200, 0);&lt;br /&gt;
    s_released = false;&lt;br /&gt;
    sound(2);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    s_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'd' || key == 'D') &amp;amp;&amp;amp; d_released == true &amp;amp;&amp;amp; d_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 0, 200);&lt;br /&gt;
    d_released = false;&lt;br /&gt;
    sound(3);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    d_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void keyReleased() {&lt;br /&gt;
  if (key == 'd' || key == 'D') {&lt;br /&gt;
    d_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'a' || key == 'A') {&lt;br /&gt;
    a_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 's' || key == 'S') {&lt;br /&gt;
    s_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'w' || key == 'W') {&lt;br /&gt;
    w_released = true;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rodolfo.acostacastro</name></author>
	</entry>
	<entry>
		<id>http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2692</id>
		<title>Random Acts of Vulnerability</title>
		<link rel="alternate" type="text/html" href="http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2692"/>
		<updated>2021-12-01T12:05:34Z</updated>

		<summary type="html">&lt;p&gt;Rodolfo.acostacastro: /* Meta-Dokumentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Random Acts of Vulnerability ist ein immersives Spiel für vier Spieler*innen in vier Dimensionen.  Durch Erkundung und Dokumentation der jeweils eigenen Dimension, formen die Spieler*innen anhand des Gesammelten und Erlebten die Erzählungen selbst.&lt;br /&gt;
Auf ein installatives Netz aus experimentellen Materialen, soften Schaltkreisen, meditativen Klangwelten, grotesken Interfaces und verzerrten Output-Signalen aufbauend, werden Fragen nach Isolation, Einsamkeit, immaterieller und haptischer Vernetzung und der Herstellung von Verhandlungsgrundlagen gestellt.&lt;br /&gt;
&lt;br /&gt;
Eine Arbeit von: Zoe Lohmann, Ella Estrella Tischa Raetzer, Rodolfo Acosta Castro, Lena Böckmann&lt;br /&gt;
&lt;br /&gt;
Video: https://www.youtube.com/watch?v=850KCMYEAow&amp;amp;t=7s&lt;br /&gt;
&lt;br /&gt;
https://live.staticflickr.com/65535/51681534884_545f161fd9.jpg&lt;br /&gt;
&lt;br /&gt;
= Meta-Dokumentation =&lt;br /&gt;
&lt;br /&gt;
[[File:doku_nextLevel.jpg| thumb |Die Frage ist: wie stellt man eine Dokumentation?]]&lt;br /&gt;
&lt;br /&gt;
* Bilddokumentation sammelt und einordnen&lt;br /&gt;
* künstlerisch/ästhetisch mit dem Material umgehen&lt;br /&gt;
* Dokumentieren auch Fehler, persönliche Ansprüche und Gespräche, Unerwartetes genauso wie&lt;br /&gt;
* Code-Snippets, Schaltpläne, Materialen, Skizzen&lt;br /&gt;
* usw.&lt;br /&gt;
&lt;br /&gt;
= relevant links =&lt;br /&gt;
&lt;br /&gt;
ESP with Arduino: http://hyperdramatik.net/mediawiki/index.php?title=ESP32_mit_Arduino&lt;br /&gt;
&lt;br /&gt;
MQTT: http://hyperdramatik.net/mediawiki/index.php?title=Hauptseite#MQTT&lt;br /&gt;
&lt;br /&gt;
DOMEs: http://hyperdramatik.net/mediawiki/index.php?title=Dome_Pod_KIT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= code examples from the project =&lt;br /&gt;
&lt;br /&gt;
== Arduino code for sounds in the fishing-dome ==&lt;br /&gt;
&lt;br /&gt;
// running on an ESP [[Spaghetti Monster]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
&lt;br /&gt;
byte analogPins[] = {&lt;br /&gt;
36, 39, 34, 35, 32, 33&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    pinMode(analogPins[i], INPUT);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    Serial.print(analogRead(analogPins[i]));&lt;br /&gt;
    Serial.print(&amp;quot;\t&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  delay(20);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the fishing-dome ==&lt;br /&gt;
 &lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the fishing-dome&lt;br /&gt;
 &lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import processing.serial.*;&lt;br /&gt;
import ddf.minim.*;&lt;br /&gt;
Serial myPort;    &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
//change these:&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
int ADCmax = 4095; &lt;br /&gt;
//int ADCmax = 1023;&lt;br /&gt;
float[] sensorThresholds = {1000, 1000, 1000, 1000, 1000, 1000};//new float[numOfSensors];&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
float[] sensorValues = new float[numOfSensors];&lt;br /&gt;
float[] previousSensorValues = new float[numOfSensors];&lt;br /&gt;
float xpos = 0;&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(600, 400);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  background(255);&lt;br /&gt;
&lt;br /&gt;
  println(Serial.list());&lt;br /&gt;
  String portName = Serial.list()[1];&lt;br /&gt;
  myPort = new Serial(this, &amp;quot;/dev/cu.SLAB_USBtoUART&amp;quot;, 9600);&lt;br /&gt;
  myPort.clear();&lt;br /&gt;
  myPort.bufferUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  sound0 = minim.loadSample( &amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound1 = minim.loadSample(&amp;quot;crazyfrogbardcore.wav&amp;quot;, 512);&lt;br /&gt;
  sound2 = minim.loadSample(&amp;quot;musterfinal.wav&amp;quot;, 512);&lt;br /&gt;
  sound3 = minim.loadSample(&amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound4 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 512);&lt;br /&gt;
  sound5 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 512);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  graph();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void graph() {&lt;br /&gt;
  for (int i=0; i&amp;lt;numOfSensors; i++) {&lt;br /&gt;
    if (sensorValues[i] &amp;lt; sensorThresholds[i]) sound(i);&lt;br /&gt;
&lt;br /&gt;
    // map the incoming values to an appropriate range:&lt;br /&gt;
    float ypos = map(sensorValues[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
&lt;br /&gt;
    // figure out the y position for this particular graph:&lt;br /&gt;
    float graphBottom = i * height/numOfSensors;&lt;br /&gt;
    ypos = ypos + graphBottom;&lt;br /&gt;
&lt;br /&gt;
    // draw the graph bottoms:&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    line(0, graphBottom, width, graphBottom);&lt;br /&gt;
&lt;br /&gt;
    // draw the thresholds:&lt;br /&gt;
    stroke(200, 0, 0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    float redLine = map(sensorThresholds[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
    line(0, redLine + graphBottom, width, redLine + graphBottom);&lt;br /&gt;
&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(2);&lt;br /&gt;
    line(xpos, previousSensorValues[i], xpos+1, ypos);&lt;br /&gt;
&lt;br /&gt;
    previousSensorValues[i] = ypos;&lt;br /&gt;
&lt;br /&gt;
    // if you've drawn to the edge of the window, start at the beginning again:&lt;br /&gt;
    if (xpos &amp;gt;= width) {&lt;br /&gt;
      xpos = 0;&lt;br /&gt;
      background(215);&lt;br /&gt;
    } else xpos+=0.1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void serialEvent (Serial myPort) {&lt;br /&gt;
  // get the ASCII string:&lt;br /&gt;
  String inString = myPort.readStringUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  // if it's not empty:&lt;br /&gt;
  if (inString != null) {&lt;br /&gt;
    // trim off any whitespace:&lt;br /&gt;
    inString = trim(inString);&lt;br /&gt;
&lt;br /&gt;
    // convert to an array of ints:&lt;br /&gt;
    int incomingValues[] = int(split(inString, &amp;quot;\t&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
    if (incomingValues.length &amp;lt;= numOfSensors &amp;amp;&amp;amp; incomingValues.length &amp;gt; 0) {&lt;br /&gt;
      for (int i = 0; i &amp;lt; incomingValues.length; i++) {&lt;br /&gt;
        sensorValues[i] = incomingValues[i];&lt;br /&gt;
        print(sensorValues[i] + &amp;quot;\t&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      println();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 4: &lt;br /&gt;
    sound4.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 5: &lt;br /&gt;
    sound5.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the dating-dome ==&lt;br /&gt;
&lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the dating-dome&lt;br /&gt;
 &lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import ddf.minim.*;  &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
int delayTime = 800;&lt;br /&gt;
boolean w_released = true;&lt;br /&gt;
boolean d_released = true;&lt;br /&gt;
boolean s_released = true;&lt;br /&gt;
boolean a_released = true;&lt;br /&gt;
int maxCount = 3;&lt;br /&gt;
int w_count = 0;&lt;br /&gt;
int a_count = 0;&lt;br /&gt;
int s_count = 0;&lt;br /&gt;
int d_count = 0;&lt;br /&gt;
int szene = 0;&lt;br /&gt;
int previousSzene;&lt;br /&gt;
int soundChangeInterval = 5000;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(1000, 800);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  background(255);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  szene = minute() % 3;&lt;br /&gt;
  if (szene != previousSzene) {&lt;br /&gt;
    previousSzene = szene;&lt;br /&gt;
    println(szene);&lt;br /&gt;
&lt;br /&gt;
    if (szene == 0) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;be.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;come.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;together.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;withMe.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 1) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 2) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void keyPressed() {&lt;br /&gt;
  if ((key == 'w' || key == 'W') &amp;amp;&amp;amp; w_released == true &amp;amp;&amp;amp; w_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0);&lt;br /&gt;
    w_released = false;&lt;br /&gt;
    sound(0);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    w_count ++;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'a' || key == 'A') &amp;amp;&amp;amp; a_released == true &amp;amp;&amp;amp; a_count &amp;lt; maxCount) {&lt;br /&gt;
    background(200, 0, 0);&lt;br /&gt;
    a_released = false;&lt;br /&gt;
    sound(1);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    a_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 's' || key == 'S') &amp;amp;&amp;amp; s_released == true &amp;amp;&amp;amp; s_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 200, 0);&lt;br /&gt;
    s_released = false;&lt;br /&gt;
    sound(2);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    s_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'd' || key == 'D') &amp;amp;&amp;amp; d_released == true &amp;amp;&amp;amp; d_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 0, 200);&lt;br /&gt;
    d_released = false;&lt;br /&gt;
    sound(3);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    d_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void keyReleased() {&lt;br /&gt;
  if (key == 'd' || key == 'D') {&lt;br /&gt;
    d_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'a' || key == 'A') {&lt;br /&gt;
    a_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 's' || key == 'S') {&lt;br /&gt;
    s_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'w' || key == 'W') {&lt;br /&gt;
    w_released = true;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rodolfo.acostacastro</name></author>
	</entry>
	<entry>
		<id>http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2691</id>
		<title>Random Acts of Vulnerability</title>
		<link rel="alternate" type="text/html" href="http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2691"/>
		<updated>2021-12-01T12:05:12Z</updated>

		<summary type="html">&lt;p&gt;Rodolfo.acostacastro: /* Meta-Dokumentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Random Acts of Vulnerability ist ein immersives Spiel für vier Spieler*innen in vier Dimensionen.  Durch Erkundung und Dokumentation der jeweils eigenen Dimension, formen die Spieler*innen anhand des Gesammelten und Erlebten die Erzählungen selbst.&lt;br /&gt;
Auf ein installatives Netz aus experimentellen Materialen, soften Schaltkreisen, meditativen Klangwelten, grotesken Interfaces und verzerrten Output-Signalen aufbauend, werden Fragen nach Isolation, Einsamkeit, immaterieller und haptischer Vernetzung und der Herstellung von Verhandlungsgrundlagen gestellt.&lt;br /&gt;
&lt;br /&gt;
Eine Arbeit von: Zoe Lohmann, Ella Estrella Tischa Raetzer, Rodolfo Acosta Castro, Lena Böckmann&lt;br /&gt;
&lt;br /&gt;
Video: https://www.youtube.com/watch?v=850KCMYEAow&amp;amp;t=7s&lt;br /&gt;
&lt;br /&gt;
https://live.staticflickr.com/65535/51681534884_545f161fd9.jpg&lt;br /&gt;
&lt;br /&gt;
= Meta-Dokumentation =&lt;br /&gt;
&lt;br /&gt;
* Bilddokumentation sammelt und einordnen&lt;br /&gt;
* künstlerisch/ästhetisch mit dem Material umgehen&lt;br /&gt;
* Dokumentieren auch Fehler, persönliche Ansprüche und Gespräche, Unerwartetes genauso wie&lt;br /&gt;
* Code-Snippets, Schaltpläne, Materialen, Skizzen&lt;br /&gt;
* usw. &lt;br /&gt;
&lt;br /&gt;
[[File:doku_nextLevel.jpg| thumb |Die Frage ist: wie stellt man eine Dokumentation?]]&lt;br /&gt;
&lt;br /&gt;
= relevant links =&lt;br /&gt;
&lt;br /&gt;
ESP with Arduino: http://hyperdramatik.net/mediawiki/index.php?title=ESP32_mit_Arduino&lt;br /&gt;
&lt;br /&gt;
MQTT: http://hyperdramatik.net/mediawiki/index.php?title=Hauptseite#MQTT&lt;br /&gt;
&lt;br /&gt;
DOMEs: http://hyperdramatik.net/mediawiki/index.php?title=Dome_Pod_KIT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= code examples from the project =&lt;br /&gt;
&lt;br /&gt;
== Arduino code for sounds in the fishing-dome ==&lt;br /&gt;
&lt;br /&gt;
// running on an ESP [[Spaghetti Monster]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
&lt;br /&gt;
byte analogPins[] = {&lt;br /&gt;
36, 39, 34, 35, 32, 33&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    pinMode(analogPins[i], INPUT);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    Serial.print(analogRead(analogPins[i]));&lt;br /&gt;
    Serial.print(&amp;quot;\t&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  delay(20);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the fishing-dome ==&lt;br /&gt;
 &lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the fishing-dome&lt;br /&gt;
 &lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import processing.serial.*;&lt;br /&gt;
import ddf.minim.*;&lt;br /&gt;
Serial myPort;    &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
//change these:&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
int ADCmax = 4095; &lt;br /&gt;
//int ADCmax = 1023;&lt;br /&gt;
float[] sensorThresholds = {1000, 1000, 1000, 1000, 1000, 1000};//new float[numOfSensors];&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
float[] sensorValues = new float[numOfSensors];&lt;br /&gt;
float[] previousSensorValues = new float[numOfSensors];&lt;br /&gt;
float xpos = 0;&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(600, 400);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  background(255);&lt;br /&gt;
&lt;br /&gt;
  println(Serial.list());&lt;br /&gt;
  String portName = Serial.list()[1];&lt;br /&gt;
  myPort = new Serial(this, &amp;quot;/dev/cu.SLAB_USBtoUART&amp;quot;, 9600);&lt;br /&gt;
  myPort.clear();&lt;br /&gt;
  myPort.bufferUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  sound0 = minim.loadSample( &amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound1 = minim.loadSample(&amp;quot;crazyfrogbardcore.wav&amp;quot;, 512);&lt;br /&gt;
  sound2 = minim.loadSample(&amp;quot;musterfinal.wav&amp;quot;, 512);&lt;br /&gt;
  sound3 = minim.loadSample(&amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound4 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 512);&lt;br /&gt;
  sound5 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 512);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  graph();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void graph() {&lt;br /&gt;
  for (int i=0; i&amp;lt;numOfSensors; i++) {&lt;br /&gt;
    if (sensorValues[i] &amp;lt; sensorThresholds[i]) sound(i);&lt;br /&gt;
&lt;br /&gt;
    // map the incoming values to an appropriate range:&lt;br /&gt;
    float ypos = map(sensorValues[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
&lt;br /&gt;
    // figure out the y position for this particular graph:&lt;br /&gt;
    float graphBottom = i * height/numOfSensors;&lt;br /&gt;
    ypos = ypos + graphBottom;&lt;br /&gt;
&lt;br /&gt;
    // draw the graph bottoms:&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    line(0, graphBottom, width, graphBottom);&lt;br /&gt;
&lt;br /&gt;
    // draw the thresholds:&lt;br /&gt;
    stroke(200, 0, 0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    float redLine = map(sensorThresholds[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
    line(0, redLine + graphBottom, width, redLine + graphBottom);&lt;br /&gt;
&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(2);&lt;br /&gt;
    line(xpos, previousSensorValues[i], xpos+1, ypos);&lt;br /&gt;
&lt;br /&gt;
    previousSensorValues[i] = ypos;&lt;br /&gt;
&lt;br /&gt;
    // if you've drawn to the edge of the window, start at the beginning again:&lt;br /&gt;
    if (xpos &amp;gt;= width) {&lt;br /&gt;
      xpos = 0;&lt;br /&gt;
      background(215);&lt;br /&gt;
    } else xpos+=0.1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void serialEvent (Serial myPort) {&lt;br /&gt;
  // get the ASCII string:&lt;br /&gt;
  String inString = myPort.readStringUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  // if it's not empty:&lt;br /&gt;
  if (inString != null) {&lt;br /&gt;
    // trim off any whitespace:&lt;br /&gt;
    inString = trim(inString);&lt;br /&gt;
&lt;br /&gt;
    // convert to an array of ints:&lt;br /&gt;
    int incomingValues[] = int(split(inString, &amp;quot;\t&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
    if (incomingValues.length &amp;lt;= numOfSensors &amp;amp;&amp;amp; incomingValues.length &amp;gt; 0) {&lt;br /&gt;
      for (int i = 0; i &amp;lt; incomingValues.length; i++) {&lt;br /&gt;
        sensorValues[i] = incomingValues[i];&lt;br /&gt;
        print(sensorValues[i] + &amp;quot;\t&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      println();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 4: &lt;br /&gt;
    sound4.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 5: &lt;br /&gt;
    sound5.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the dating-dome ==&lt;br /&gt;
&lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the dating-dome&lt;br /&gt;
 &lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import ddf.minim.*;  &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
int delayTime = 800;&lt;br /&gt;
boolean w_released = true;&lt;br /&gt;
boolean d_released = true;&lt;br /&gt;
boolean s_released = true;&lt;br /&gt;
boolean a_released = true;&lt;br /&gt;
int maxCount = 3;&lt;br /&gt;
int w_count = 0;&lt;br /&gt;
int a_count = 0;&lt;br /&gt;
int s_count = 0;&lt;br /&gt;
int d_count = 0;&lt;br /&gt;
int szene = 0;&lt;br /&gt;
int previousSzene;&lt;br /&gt;
int soundChangeInterval = 5000;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(1000, 800);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  background(255);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  szene = minute() % 3;&lt;br /&gt;
  if (szene != previousSzene) {&lt;br /&gt;
    previousSzene = szene;&lt;br /&gt;
    println(szene);&lt;br /&gt;
&lt;br /&gt;
    if (szene == 0) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;be.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;come.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;together.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;withMe.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 1) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 2) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void keyPressed() {&lt;br /&gt;
  if ((key == 'w' || key == 'W') &amp;amp;&amp;amp; w_released == true &amp;amp;&amp;amp; w_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0);&lt;br /&gt;
    w_released = false;&lt;br /&gt;
    sound(0);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    w_count ++;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'a' || key == 'A') &amp;amp;&amp;amp; a_released == true &amp;amp;&amp;amp; a_count &amp;lt; maxCount) {&lt;br /&gt;
    background(200, 0, 0);&lt;br /&gt;
    a_released = false;&lt;br /&gt;
    sound(1);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    a_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 's' || key == 'S') &amp;amp;&amp;amp; s_released == true &amp;amp;&amp;amp; s_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 200, 0);&lt;br /&gt;
    s_released = false;&lt;br /&gt;
    sound(2);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    s_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'd' || key == 'D') &amp;amp;&amp;amp; d_released == true &amp;amp;&amp;amp; d_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 0, 200);&lt;br /&gt;
    d_released = false;&lt;br /&gt;
    sound(3);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    d_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void keyReleased() {&lt;br /&gt;
  if (key == 'd' || key == 'D') {&lt;br /&gt;
    d_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'a' || key == 'A') {&lt;br /&gt;
    a_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 's' || key == 'S') {&lt;br /&gt;
    s_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'w' || key == 'W') {&lt;br /&gt;
    w_released = true;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rodolfo.acostacastro</name></author>
	</entry>
	<entry>
		<id>http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2690</id>
		<title>Random Acts of Vulnerability</title>
		<link rel="alternate" type="text/html" href="http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2690"/>
		<updated>2021-12-01T12:04:58Z</updated>

		<summary type="html">&lt;p&gt;Rodolfo.acostacastro: /* Meta-Dokumentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Random Acts of Vulnerability ist ein immersives Spiel für vier Spieler*innen in vier Dimensionen.  Durch Erkundung und Dokumentation der jeweils eigenen Dimension, formen die Spieler*innen anhand des Gesammelten und Erlebten die Erzählungen selbst.&lt;br /&gt;
Auf ein installatives Netz aus experimentellen Materialen, soften Schaltkreisen, meditativen Klangwelten, grotesken Interfaces und verzerrten Output-Signalen aufbauend, werden Fragen nach Isolation, Einsamkeit, immaterieller und haptischer Vernetzung und der Herstellung von Verhandlungsgrundlagen gestellt.&lt;br /&gt;
&lt;br /&gt;
Eine Arbeit von: Zoe Lohmann, Ella Estrella Tischa Raetzer, Rodolfo Acosta Castro, Lena Böckmann&lt;br /&gt;
&lt;br /&gt;
Video: https://www.youtube.com/watch?v=850KCMYEAow&amp;amp;t=7s&lt;br /&gt;
&lt;br /&gt;
https://live.staticflickr.com/65535/51681534884_545f161fd9.jpg&lt;br /&gt;
&lt;br /&gt;
= Meta-Dokumentation =&lt;br /&gt;
&lt;br /&gt;
* Bilddokumentation sammelt und einordnen&lt;br /&gt;
* künstlerisch/ästhetisch mit dem Material umgehen&lt;br /&gt;
* Dokumentieren auch Fehler, persönliche Ansprüche und Gespräche, Unerwartetes genauso wie&lt;br /&gt;
* Code-Snippets, Schaltpläne, Materialen, Skizzen&lt;br /&gt;
* usw. &lt;br /&gt;
&lt;br /&gt;
[[File:doku_nextLevel.jpg| thumb |Die Frage ist: wie stellt man eine Dokumentation?]]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= relevant links =&lt;br /&gt;
&lt;br /&gt;
ESP with Arduino: http://hyperdramatik.net/mediawiki/index.php?title=ESP32_mit_Arduino&lt;br /&gt;
&lt;br /&gt;
MQTT: http://hyperdramatik.net/mediawiki/index.php?title=Hauptseite#MQTT&lt;br /&gt;
&lt;br /&gt;
DOMEs: http://hyperdramatik.net/mediawiki/index.php?title=Dome_Pod_KIT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= code examples from the project =&lt;br /&gt;
&lt;br /&gt;
== Arduino code for sounds in the fishing-dome ==&lt;br /&gt;
&lt;br /&gt;
// running on an ESP [[Spaghetti Monster]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
&lt;br /&gt;
byte analogPins[] = {&lt;br /&gt;
36, 39, 34, 35, 32, 33&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    pinMode(analogPins[i], INPUT);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    Serial.print(analogRead(analogPins[i]));&lt;br /&gt;
    Serial.print(&amp;quot;\t&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  delay(20);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the fishing-dome ==&lt;br /&gt;
 &lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the fishing-dome&lt;br /&gt;
 &lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import processing.serial.*;&lt;br /&gt;
import ddf.minim.*;&lt;br /&gt;
Serial myPort;    &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
//change these:&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
int ADCmax = 4095; &lt;br /&gt;
//int ADCmax = 1023;&lt;br /&gt;
float[] sensorThresholds = {1000, 1000, 1000, 1000, 1000, 1000};//new float[numOfSensors];&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
float[] sensorValues = new float[numOfSensors];&lt;br /&gt;
float[] previousSensorValues = new float[numOfSensors];&lt;br /&gt;
float xpos = 0;&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(600, 400);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  background(255);&lt;br /&gt;
&lt;br /&gt;
  println(Serial.list());&lt;br /&gt;
  String portName = Serial.list()[1];&lt;br /&gt;
  myPort = new Serial(this, &amp;quot;/dev/cu.SLAB_USBtoUART&amp;quot;, 9600);&lt;br /&gt;
  myPort.clear();&lt;br /&gt;
  myPort.bufferUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  sound0 = minim.loadSample( &amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound1 = minim.loadSample(&amp;quot;crazyfrogbardcore.wav&amp;quot;, 512);&lt;br /&gt;
  sound2 = minim.loadSample(&amp;quot;musterfinal.wav&amp;quot;, 512);&lt;br /&gt;
  sound3 = minim.loadSample(&amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound4 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 512);&lt;br /&gt;
  sound5 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 512);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  graph();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void graph() {&lt;br /&gt;
  for (int i=0; i&amp;lt;numOfSensors; i++) {&lt;br /&gt;
    if (sensorValues[i] &amp;lt; sensorThresholds[i]) sound(i);&lt;br /&gt;
&lt;br /&gt;
    // map the incoming values to an appropriate range:&lt;br /&gt;
    float ypos = map(sensorValues[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
&lt;br /&gt;
    // figure out the y position for this particular graph:&lt;br /&gt;
    float graphBottom = i * height/numOfSensors;&lt;br /&gt;
    ypos = ypos + graphBottom;&lt;br /&gt;
&lt;br /&gt;
    // draw the graph bottoms:&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    line(0, graphBottom, width, graphBottom);&lt;br /&gt;
&lt;br /&gt;
    // draw the thresholds:&lt;br /&gt;
    stroke(200, 0, 0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    float redLine = map(sensorThresholds[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
    line(0, redLine + graphBottom, width, redLine + graphBottom);&lt;br /&gt;
&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(2);&lt;br /&gt;
    line(xpos, previousSensorValues[i], xpos+1, ypos);&lt;br /&gt;
&lt;br /&gt;
    previousSensorValues[i] = ypos;&lt;br /&gt;
&lt;br /&gt;
    // if you've drawn to the edge of the window, start at the beginning again:&lt;br /&gt;
    if (xpos &amp;gt;= width) {&lt;br /&gt;
      xpos = 0;&lt;br /&gt;
      background(215);&lt;br /&gt;
    } else xpos+=0.1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void serialEvent (Serial myPort) {&lt;br /&gt;
  // get the ASCII string:&lt;br /&gt;
  String inString = myPort.readStringUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  // if it's not empty:&lt;br /&gt;
  if (inString != null) {&lt;br /&gt;
    // trim off any whitespace:&lt;br /&gt;
    inString = trim(inString);&lt;br /&gt;
&lt;br /&gt;
    // convert to an array of ints:&lt;br /&gt;
    int incomingValues[] = int(split(inString, &amp;quot;\t&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
    if (incomingValues.length &amp;lt;= numOfSensors &amp;amp;&amp;amp; incomingValues.length &amp;gt; 0) {&lt;br /&gt;
      for (int i = 0; i &amp;lt; incomingValues.length; i++) {&lt;br /&gt;
        sensorValues[i] = incomingValues[i];&lt;br /&gt;
        print(sensorValues[i] + &amp;quot;\t&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      println();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 4: &lt;br /&gt;
    sound4.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 5: &lt;br /&gt;
    sound5.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the dating-dome ==&lt;br /&gt;
&lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the dating-dome&lt;br /&gt;
 &lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import ddf.minim.*;  &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
int delayTime = 800;&lt;br /&gt;
boolean w_released = true;&lt;br /&gt;
boolean d_released = true;&lt;br /&gt;
boolean s_released = true;&lt;br /&gt;
boolean a_released = true;&lt;br /&gt;
int maxCount = 3;&lt;br /&gt;
int w_count = 0;&lt;br /&gt;
int a_count = 0;&lt;br /&gt;
int s_count = 0;&lt;br /&gt;
int d_count = 0;&lt;br /&gt;
int szene = 0;&lt;br /&gt;
int previousSzene;&lt;br /&gt;
int soundChangeInterval = 5000;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(1000, 800);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  background(255);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  szene = minute() % 3;&lt;br /&gt;
  if (szene != previousSzene) {&lt;br /&gt;
    previousSzene = szene;&lt;br /&gt;
    println(szene);&lt;br /&gt;
&lt;br /&gt;
    if (szene == 0) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;be.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;come.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;together.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;withMe.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 1) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 2) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void keyPressed() {&lt;br /&gt;
  if ((key == 'w' || key == 'W') &amp;amp;&amp;amp; w_released == true &amp;amp;&amp;amp; w_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0);&lt;br /&gt;
    w_released = false;&lt;br /&gt;
    sound(0);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    w_count ++;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'a' || key == 'A') &amp;amp;&amp;amp; a_released == true &amp;amp;&amp;amp; a_count &amp;lt; maxCount) {&lt;br /&gt;
    background(200, 0, 0);&lt;br /&gt;
    a_released = false;&lt;br /&gt;
    sound(1);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    a_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 's' || key == 'S') &amp;amp;&amp;amp; s_released == true &amp;amp;&amp;amp; s_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 200, 0);&lt;br /&gt;
    s_released = false;&lt;br /&gt;
    sound(2);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    s_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'd' || key == 'D') &amp;amp;&amp;amp; d_released == true &amp;amp;&amp;amp; d_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 0, 200);&lt;br /&gt;
    d_released = false;&lt;br /&gt;
    sound(3);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    d_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void keyReleased() {&lt;br /&gt;
  if (key == 'd' || key == 'D') {&lt;br /&gt;
    d_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'a' || key == 'A') {&lt;br /&gt;
    a_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 's' || key == 'S') {&lt;br /&gt;
    s_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'w' || key == 'W') {&lt;br /&gt;
    w_released = true;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rodolfo.acostacastro</name></author>
	</entry>
	<entry>
		<id>http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2689</id>
		<title>Random Acts of Vulnerability</title>
		<link rel="alternate" type="text/html" href="http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2689"/>
		<updated>2021-12-01T12:04:43Z</updated>

		<summary type="html">&lt;p&gt;Rodolfo.acostacastro: /* Meta-Dokumentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Random Acts of Vulnerability ist ein immersives Spiel für vier Spieler*innen in vier Dimensionen.  Durch Erkundung und Dokumentation der jeweils eigenen Dimension, formen die Spieler*innen anhand des Gesammelten und Erlebten die Erzählungen selbst.&lt;br /&gt;
Auf ein installatives Netz aus experimentellen Materialen, soften Schaltkreisen, meditativen Klangwelten, grotesken Interfaces und verzerrten Output-Signalen aufbauend, werden Fragen nach Isolation, Einsamkeit, immaterieller und haptischer Vernetzung und der Herstellung von Verhandlungsgrundlagen gestellt.&lt;br /&gt;
&lt;br /&gt;
Eine Arbeit von: Zoe Lohmann, Ella Estrella Tischa Raetzer, Rodolfo Acosta Castro, Lena Böckmann&lt;br /&gt;
&lt;br /&gt;
Video: https://www.youtube.com/watch?v=850KCMYEAow&amp;amp;t=7s&lt;br /&gt;
&lt;br /&gt;
https://live.staticflickr.com/65535/51681534884_545f161fd9.jpg&lt;br /&gt;
&lt;br /&gt;
= Meta-Dokumentation =&lt;br /&gt;
&lt;br /&gt;
* Bilddokumentation sammelt und einordnen&lt;br /&gt;
* künstlerisch/ästhetisch mit dem Material umgehen&lt;br /&gt;
* Dokumentieren auch Fehler, persönliche Ansprüche und Gespräche, Unerwartetes genauso wie&lt;br /&gt;
* Code-Snippets, Schaltpläne, Materialen, Skizzen&lt;br /&gt;
* usw. &lt;br /&gt;
----&lt;br /&gt;
[[File:doku_nextLevel.jpg| thumb |Die Frage ist: wie stellt man eine Dokumentation?]]&lt;br /&gt;
&lt;br /&gt;
= relevant links =&lt;br /&gt;
&lt;br /&gt;
ESP with Arduino: http://hyperdramatik.net/mediawiki/index.php?title=ESP32_mit_Arduino&lt;br /&gt;
&lt;br /&gt;
MQTT: http://hyperdramatik.net/mediawiki/index.php?title=Hauptseite#MQTT&lt;br /&gt;
&lt;br /&gt;
DOMEs: http://hyperdramatik.net/mediawiki/index.php?title=Dome_Pod_KIT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= code examples from the project =&lt;br /&gt;
&lt;br /&gt;
== Arduino code for sounds in the fishing-dome ==&lt;br /&gt;
&lt;br /&gt;
// running on an ESP [[Spaghetti Monster]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
&lt;br /&gt;
byte analogPins[] = {&lt;br /&gt;
36, 39, 34, 35, 32, 33&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    pinMode(analogPins[i], INPUT);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    Serial.print(analogRead(analogPins[i]));&lt;br /&gt;
    Serial.print(&amp;quot;\t&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  delay(20);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the fishing-dome ==&lt;br /&gt;
 &lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the fishing-dome&lt;br /&gt;
 &lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import processing.serial.*;&lt;br /&gt;
import ddf.minim.*;&lt;br /&gt;
Serial myPort;    &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
//change these:&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
int ADCmax = 4095; &lt;br /&gt;
//int ADCmax = 1023;&lt;br /&gt;
float[] sensorThresholds = {1000, 1000, 1000, 1000, 1000, 1000};//new float[numOfSensors];&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
float[] sensorValues = new float[numOfSensors];&lt;br /&gt;
float[] previousSensorValues = new float[numOfSensors];&lt;br /&gt;
float xpos = 0;&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(600, 400);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  background(255);&lt;br /&gt;
&lt;br /&gt;
  println(Serial.list());&lt;br /&gt;
  String portName = Serial.list()[1];&lt;br /&gt;
  myPort = new Serial(this, &amp;quot;/dev/cu.SLAB_USBtoUART&amp;quot;, 9600);&lt;br /&gt;
  myPort.clear();&lt;br /&gt;
  myPort.bufferUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  sound0 = minim.loadSample( &amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound1 = minim.loadSample(&amp;quot;crazyfrogbardcore.wav&amp;quot;, 512);&lt;br /&gt;
  sound2 = minim.loadSample(&amp;quot;musterfinal.wav&amp;quot;, 512);&lt;br /&gt;
  sound3 = minim.loadSample(&amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound4 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 512);&lt;br /&gt;
  sound5 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 512);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  graph();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void graph() {&lt;br /&gt;
  for (int i=0; i&amp;lt;numOfSensors; i++) {&lt;br /&gt;
    if (sensorValues[i] &amp;lt; sensorThresholds[i]) sound(i);&lt;br /&gt;
&lt;br /&gt;
    // map the incoming values to an appropriate range:&lt;br /&gt;
    float ypos = map(sensorValues[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
&lt;br /&gt;
    // figure out the y position for this particular graph:&lt;br /&gt;
    float graphBottom = i * height/numOfSensors;&lt;br /&gt;
    ypos = ypos + graphBottom;&lt;br /&gt;
&lt;br /&gt;
    // draw the graph bottoms:&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    line(0, graphBottom, width, graphBottom);&lt;br /&gt;
&lt;br /&gt;
    // draw the thresholds:&lt;br /&gt;
    stroke(200, 0, 0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    float redLine = map(sensorThresholds[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
    line(0, redLine + graphBottom, width, redLine + graphBottom);&lt;br /&gt;
&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(2);&lt;br /&gt;
    line(xpos, previousSensorValues[i], xpos+1, ypos);&lt;br /&gt;
&lt;br /&gt;
    previousSensorValues[i] = ypos;&lt;br /&gt;
&lt;br /&gt;
    // if you've drawn to the edge of the window, start at the beginning again:&lt;br /&gt;
    if (xpos &amp;gt;= width) {&lt;br /&gt;
      xpos = 0;&lt;br /&gt;
      background(215);&lt;br /&gt;
    } else xpos+=0.1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void serialEvent (Serial myPort) {&lt;br /&gt;
  // get the ASCII string:&lt;br /&gt;
  String inString = myPort.readStringUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  // if it's not empty:&lt;br /&gt;
  if (inString != null) {&lt;br /&gt;
    // trim off any whitespace:&lt;br /&gt;
    inString = trim(inString);&lt;br /&gt;
&lt;br /&gt;
    // convert to an array of ints:&lt;br /&gt;
    int incomingValues[] = int(split(inString, &amp;quot;\t&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
    if (incomingValues.length &amp;lt;= numOfSensors &amp;amp;&amp;amp; incomingValues.length &amp;gt; 0) {&lt;br /&gt;
      for (int i = 0; i &amp;lt; incomingValues.length; i++) {&lt;br /&gt;
        sensorValues[i] = incomingValues[i];&lt;br /&gt;
        print(sensorValues[i] + &amp;quot;\t&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      println();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 4: &lt;br /&gt;
    sound4.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 5: &lt;br /&gt;
    sound5.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the dating-dome ==&lt;br /&gt;
&lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the dating-dome&lt;br /&gt;
 &lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import ddf.minim.*;  &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
int delayTime = 800;&lt;br /&gt;
boolean w_released = true;&lt;br /&gt;
boolean d_released = true;&lt;br /&gt;
boolean s_released = true;&lt;br /&gt;
boolean a_released = true;&lt;br /&gt;
int maxCount = 3;&lt;br /&gt;
int w_count = 0;&lt;br /&gt;
int a_count = 0;&lt;br /&gt;
int s_count = 0;&lt;br /&gt;
int d_count = 0;&lt;br /&gt;
int szene = 0;&lt;br /&gt;
int previousSzene;&lt;br /&gt;
int soundChangeInterval = 5000;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(1000, 800);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  background(255);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  szene = minute() % 3;&lt;br /&gt;
  if (szene != previousSzene) {&lt;br /&gt;
    previousSzene = szene;&lt;br /&gt;
    println(szene);&lt;br /&gt;
&lt;br /&gt;
    if (szene == 0) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;be.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;come.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;together.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;withMe.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 1) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 2) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void keyPressed() {&lt;br /&gt;
  if ((key == 'w' || key == 'W') &amp;amp;&amp;amp; w_released == true &amp;amp;&amp;amp; w_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0);&lt;br /&gt;
    w_released = false;&lt;br /&gt;
    sound(0);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    w_count ++;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'a' || key == 'A') &amp;amp;&amp;amp; a_released == true &amp;amp;&amp;amp; a_count &amp;lt; maxCount) {&lt;br /&gt;
    background(200, 0, 0);&lt;br /&gt;
    a_released = false;&lt;br /&gt;
    sound(1);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    a_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 's' || key == 'S') &amp;amp;&amp;amp; s_released == true &amp;amp;&amp;amp; s_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 200, 0);&lt;br /&gt;
    s_released = false;&lt;br /&gt;
    sound(2);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    s_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'd' || key == 'D') &amp;amp;&amp;amp; d_released == true &amp;amp;&amp;amp; d_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 0, 200);&lt;br /&gt;
    d_released = false;&lt;br /&gt;
    sound(3);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    d_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void keyReleased() {&lt;br /&gt;
  if (key == 'd' || key == 'D') {&lt;br /&gt;
    d_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'a' || key == 'A') {&lt;br /&gt;
    a_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 's' || key == 'S') {&lt;br /&gt;
    s_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'w' || key == 'W') {&lt;br /&gt;
    w_released = true;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rodolfo.acostacastro</name></author>
	</entry>
	<entry>
		<id>http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2688</id>
		<title>Random Acts of Vulnerability</title>
		<link rel="alternate" type="text/html" href="http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2688"/>
		<updated>2021-12-01T12:03:22Z</updated>

		<summary type="html">&lt;p&gt;Rodolfo.acostacastro: /* Meta-Dokumentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Random Acts of Vulnerability ist ein immersives Spiel für vier Spieler*innen in vier Dimensionen.  Durch Erkundung und Dokumentation der jeweils eigenen Dimension, formen die Spieler*innen anhand des Gesammelten und Erlebten die Erzählungen selbst.&lt;br /&gt;
Auf ein installatives Netz aus experimentellen Materialen, soften Schaltkreisen, meditativen Klangwelten, grotesken Interfaces und verzerrten Output-Signalen aufbauend, werden Fragen nach Isolation, Einsamkeit, immaterieller und haptischer Vernetzung und der Herstellung von Verhandlungsgrundlagen gestellt.&lt;br /&gt;
&lt;br /&gt;
Eine Arbeit von: Zoe Lohmann, Ella Estrella Tischa Raetzer, Rodolfo Acosta Castro, Lena Böckmann&lt;br /&gt;
&lt;br /&gt;
Video: https://www.youtube.com/watch?v=850KCMYEAow&amp;amp;t=7s&lt;br /&gt;
&lt;br /&gt;
https://live.staticflickr.com/65535/51681534884_545f161fd9.jpg&lt;br /&gt;
&lt;br /&gt;
= Meta-Dokumentation =&lt;br /&gt;
&lt;br /&gt;
- Bilddokumentation sammelt und einordnen&lt;br /&gt;
- künstlerisch/ästhetisch mit dem Material umgehen&lt;br /&gt;
- Dokumentieren auch Fehler, persönliche Ansprüche und Gespräche, Unerwartetes genauso wie&lt;br /&gt;
- Code-Snippets, Schaltpläne, Materialen, Skizzen&lt;br /&gt;
- usw. &lt;br /&gt;
[[File:doku_nextLevel.jpg| thumb |Die Frage ist: wie stellt man eine Dokumentation?]]&lt;br /&gt;
&lt;br /&gt;
= relevant links =&lt;br /&gt;
&lt;br /&gt;
ESP with Arduino: http://hyperdramatik.net/mediawiki/index.php?title=ESP32_mit_Arduino&lt;br /&gt;
&lt;br /&gt;
MQTT: http://hyperdramatik.net/mediawiki/index.php?title=Hauptseite#MQTT&lt;br /&gt;
&lt;br /&gt;
DOMEs: http://hyperdramatik.net/mediawiki/index.php?title=Dome_Pod_KIT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= code examples from the project =&lt;br /&gt;
&lt;br /&gt;
== Arduino code for sounds in the fishing-dome ==&lt;br /&gt;
&lt;br /&gt;
// running on an ESP [[Spaghetti Monster]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
&lt;br /&gt;
byte analogPins[] = {&lt;br /&gt;
36, 39, 34, 35, 32, 33&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    pinMode(analogPins[i], INPUT);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    Serial.print(analogRead(analogPins[i]));&lt;br /&gt;
    Serial.print(&amp;quot;\t&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  delay(20);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the fishing-dome ==&lt;br /&gt;
 &lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the fishing-dome&lt;br /&gt;
 &lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import processing.serial.*;&lt;br /&gt;
import ddf.minim.*;&lt;br /&gt;
Serial myPort;    &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
//change these:&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
int ADCmax = 4095; &lt;br /&gt;
//int ADCmax = 1023;&lt;br /&gt;
float[] sensorThresholds = {1000, 1000, 1000, 1000, 1000, 1000};//new float[numOfSensors];&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
float[] sensorValues = new float[numOfSensors];&lt;br /&gt;
float[] previousSensorValues = new float[numOfSensors];&lt;br /&gt;
float xpos = 0;&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(600, 400);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  background(255);&lt;br /&gt;
&lt;br /&gt;
  println(Serial.list());&lt;br /&gt;
  String portName = Serial.list()[1];&lt;br /&gt;
  myPort = new Serial(this, &amp;quot;/dev/cu.SLAB_USBtoUART&amp;quot;, 9600);&lt;br /&gt;
  myPort.clear();&lt;br /&gt;
  myPort.bufferUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  sound0 = minim.loadSample( &amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound1 = minim.loadSample(&amp;quot;crazyfrogbardcore.wav&amp;quot;, 512);&lt;br /&gt;
  sound2 = minim.loadSample(&amp;quot;musterfinal.wav&amp;quot;, 512);&lt;br /&gt;
  sound3 = minim.loadSample(&amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound4 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 512);&lt;br /&gt;
  sound5 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 512);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  graph();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void graph() {&lt;br /&gt;
  for (int i=0; i&amp;lt;numOfSensors; i++) {&lt;br /&gt;
    if (sensorValues[i] &amp;lt; sensorThresholds[i]) sound(i);&lt;br /&gt;
&lt;br /&gt;
    // map the incoming values to an appropriate range:&lt;br /&gt;
    float ypos = map(sensorValues[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
&lt;br /&gt;
    // figure out the y position for this particular graph:&lt;br /&gt;
    float graphBottom = i * height/numOfSensors;&lt;br /&gt;
    ypos = ypos + graphBottom;&lt;br /&gt;
&lt;br /&gt;
    // draw the graph bottoms:&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    line(0, graphBottom, width, graphBottom);&lt;br /&gt;
&lt;br /&gt;
    // draw the thresholds:&lt;br /&gt;
    stroke(200, 0, 0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    float redLine = map(sensorThresholds[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
    line(0, redLine + graphBottom, width, redLine + graphBottom);&lt;br /&gt;
&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(2);&lt;br /&gt;
    line(xpos, previousSensorValues[i], xpos+1, ypos);&lt;br /&gt;
&lt;br /&gt;
    previousSensorValues[i] = ypos;&lt;br /&gt;
&lt;br /&gt;
    // if you've drawn to the edge of the window, start at the beginning again:&lt;br /&gt;
    if (xpos &amp;gt;= width) {&lt;br /&gt;
      xpos = 0;&lt;br /&gt;
      background(215);&lt;br /&gt;
    } else xpos+=0.1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void serialEvent (Serial myPort) {&lt;br /&gt;
  // get the ASCII string:&lt;br /&gt;
  String inString = myPort.readStringUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  // if it's not empty:&lt;br /&gt;
  if (inString != null) {&lt;br /&gt;
    // trim off any whitespace:&lt;br /&gt;
    inString = trim(inString);&lt;br /&gt;
&lt;br /&gt;
    // convert to an array of ints:&lt;br /&gt;
    int incomingValues[] = int(split(inString, &amp;quot;\t&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
    if (incomingValues.length &amp;lt;= numOfSensors &amp;amp;&amp;amp; incomingValues.length &amp;gt; 0) {&lt;br /&gt;
      for (int i = 0; i &amp;lt; incomingValues.length; i++) {&lt;br /&gt;
        sensorValues[i] = incomingValues[i];&lt;br /&gt;
        print(sensorValues[i] + &amp;quot;\t&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      println();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 4: &lt;br /&gt;
    sound4.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 5: &lt;br /&gt;
    sound5.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the dating-dome ==&lt;br /&gt;
&lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the dating-dome&lt;br /&gt;
 &lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import ddf.minim.*;  &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
int delayTime = 800;&lt;br /&gt;
boolean w_released = true;&lt;br /&gt;
boolean d_released = true;&lt;br /&gt;
boolean s_released = true;&lt;br /&gt;
boolean a_released = true;&lt;br /&gt;
int maxCount = 3;&lt;br /&gt;
int w_count = 0;&lt;br /&gt;
int a_count = 0;&lt;br /&gt;
int s_count = 0;&lt;br /&gt;
int d_count = 0;&lt;br /&gt;
int szene = 0;&lt;br /&gt;
int previousSzene;&lt;br /&gt;
int soundChangeInterval = 5000;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(1000, 800);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  background(255);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  szene = minute() % 3;&lt;br /&gt;
  if (szene != previousSzene) {&lt;br /&gt;
    previousSzene = szene;&lt;br /&gt;
    println(szene);&lt;br /&gt;
&lt;br /&gt;
    if (szene == 0) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;be.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;come.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;together.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;withMe.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 1) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 2) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void keyPressed() {&lt;br /&gt;
  if ((key == 'w' || key == 'W') &amp;amp;&amp;amp; w_released == true &amp;amp;&amp;amp; w_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0);&lt;br /&gt;
    w_released = false;&lt;br /&gt;
    sound(0);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    w_count ++;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'a' || key == 'A') &amp;amp;&amp;amp; a_released == true &amp;amp;&amp;amp; a_count &amp;lt; maxCount) {&lt;br /&gt;
    background(200, 0, 0);&lt;br /&gt;
    a_released = false;&lt;br /&gt;
    sound(1);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    a_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 's' || key == 'S') &amp;amp;&amp;amp; s_released == true &amp;amp;&amp;amp; s_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 200, 0);&lt;br /&gt;
    s_released = false;&lt;br /&gt;
    sound(2);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    s_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'd' || key == 'D') &amp;amp;&amp;amp; d_released == true &amp;amp;&amp;amp; d_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 0, 200);&lt;br /&gt;
    d_released = false;&lt;br /&gt;
    sound(3);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    d_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void keyReleased() {&lt;br /&gt;
  if (key == 'd' || key == 'D') {&lt;br /&gt;
    d_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'a' || key == 'A') {&lt;br /&gt;
    a_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 's' || key == 'S') {&lt;br /&gt;
    s_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'w' || key == 'W') {&lt;br /&gt;
    w_released = true;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rodolfo.acostacastro</name></author>
	</entry>
	<entry>
		<id>http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2687</id>
		<title>Random Acts of Vulnerability</title>
		<link rel="alternate" type="text/html" href="http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2687"/>
		<updated>2021-12-01T11:59:15Z</updated>

		<summary type="html">&lt;p&gt;Rodolfo.acostacastro: /* Meta-Dokumentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Random Acts of Vulnerability ist ein immersives Spiel für vier Spieler*innen in vier Dimensionen.  Durch Erkundung und Dokumentation der jeweils eigenen Dimension, formen die Spieler*innen anhand des Gesammelten und Erlebten die Erzählungen selbst.&lt;br /&gt;
Auf ein installatives Netz aus experimentellen Materialen, soften Schaltkreisen, meditativen Klangwelten, grotesken Interfaces und verzerrten Output-Signalen aufbauend, werden Fragen nach Isolation, Einsamkeit, immaterieller und haptischer Vernetzung und der Herstellung von Verhandlungsgrundlagen gestellt.&lt;br /&gt;
&lt;br /&gt;
Eine Arbeit von: Zoe Lohmann, Ella Estrella Tischa Raetzer, Rodolfo Acosta Castro, Lena Böckmann&lt;br /&gt;
&lt;br /&gt;
Video: https://www.youtube.com/watch?v=850KCMYEAow&amp;amp;t=7s&lt;br /&gt;
&lt;br /&gt;
https://live.staticflickr.com/65535/51681534884_545f161fd9.jpg&lt;br /&gt;
&lt;br /&gt;
= Meta-Dokumentation =&lt;br /&gt;
&lt;br /&gt;
Text text text text &lt;br /&gt;
[[File:doku_nextLevel.jpg| thumb |Die Frage ist: wie stellt man eine Dokumentation?]]&lt;br /&gt;
&lt;br /&gt;
= relevant links =&lt;br /&gt;
&lt;br /&gt;
ESP with Arduino: http://hyperdramatik.net/mediawiki/index.php?title=ESP32_mit_Arduino&lt;br /&gt;
&lt;br /&gt;
MQTT: http://hyperdramatik.net/mediawiki/index.php?title=Hauptseite#MQTT&lt;br /&gt;
&lt;br /&gt;
DOMEs: http://hyperdramatik.net/mediawiki/index.php?title=Dome_Pod_KIT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= code examples from the project =&lt;br /&gt;
&lt;br /&gt;
== Arduino code for sounds in the fishing-dome ==&lt;br /&gt;
&lt;br /&gt;
// running on an ESP [[Spaghetti Monster]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
&lt;br /&gt;
byte analogPins[] = {&lt;br /&gt;
36, 39, 34, 35, 32, 33&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    pinMode(analogPins[i], INPUT);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    Serial.print(analogRead(analogPins[i]));&lt;br /&gt;
    Serial.print(&amp;quot;\t&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  delay(20);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the fishing-dome ==&lt;br /&gt;
 &lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the fishing-dome&lt;br /&gt;
 &lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import processing.serial.*;&lt;br /&gt;
import ddf.minim.*;&lt;br /&gt;
Serial myPort;    &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
//change these:&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
int ADCmax = 4095; &lt;br /&gt;
//int ADCmax = 1023;&lt;br /&gt;
float[] sensorThresholds = {1000, 1000, 1000, 1000, 1000, 1000};//new float[numOfSensors];&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
float[] sensorValues = new float[numOfSensors];&lt;br /&gt;
float[] previousSensorValues = new float[numOfSensors];&lt;br /&gt;
float xpos = 0;&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(600, 400);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  background(255);&lt;br /&gt;
&lt;br /&gt;
  println(Serial.list());&lt;br /&gt;
  String portName = Serial.list()[1];&lt;br /&gt;
  myPort = new Serial(this, &amp;quot;/dev/cu.SLAB_USBtoUART&amp;quot;, 9600);&lt;br /&gt;
  myPort.clear();&lt;br /&gt;
  myPort.bufferUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  sound0 = minim.loadSample( &amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound1 = minim.loadSample(&amp;quot;crazyfrogbardcore.wav&amp;quot;, 512);&lt;br /&gt;
  sound2 = minim.loadSample(&amp;quot;musterfinal.wav&amp;quot;, 512);&lt;br /&gt;
  sound3 = minim.loadSample(&amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound4 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 512);&lt;br /&gt;
  sound5 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 512);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  graph();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void graph() {&lt;br /&gt;
  for (int i=0; i&amp;lt;numOfSensors; i++) {&lt;br /&gt;
    if (sensorValues[i] &amp;lt; sensorThresholds[i]) sound(i);&lt;br /&gt;
&lt;br /&gt;
    // map the incoming values to an appropriate range:&lt;br /&gt;
    float ypos = map(sensorValues[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
&lt;br /&gt;
    // figure out the y position for this particular graph:&lt;br /&gt;
    float graphBottom = i * height/numOfSensors;&lt;br /&gt;
    ypos = ypos + graphBottom;&lt;br /&gt;
&lt;br /&gt;
    // draw the graph bottoms:&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    line(0, graphBottom, width, graphBottom);&lt;br /&gt;
&lt;br /&gt;
    // draw the thresholds:&lt;br /&gt;
    stroke(200, 0, 0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    float redLine = map(sensorThresholds[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
    line(0, redLine + graphBottom, width, redLine + graphBottom);&lt;br /&gt;
&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(2);&lt;br /&gt;
    line(xpos, previousSensorValues[i], xpos+1, ypos);&lt;br /&gt;
&lt;br /&gt;
    previousSensorValues[i] = ypos;&lt;br /&gt;
&lt;br /&gt;
    // if you've drawn to the edge of the window, start at the beginning again:&lt;br /&gt;
    if (xpos &amp;gt;= width) {&lt;br /&gt;
      xpos = 0;&lt;br /&gt;
      background(215);&lt;br /&gt;
    } else xpos+=0.1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void serialEvent (Serial myPort) {&lt;br /&gt;
  // get the ASCII string:&lt;br /&gt;
  String inString = myPort.readStringUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  // if it's not empty:&lt;br /&gt;
  if (inString != null) {&lt;br /&gt;
    // trim off any whitespace:&lt;br /&gt;
    inString = trim(inString);&lt;br /&gt;
&lt;br /&gt;
    // convert to an array of ints:&lt;br /&gt;
    int incomingValues[] = int(split(inString, &amp;quot;\t&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
    if (incomingValues.length &amp;lt;= numOfSensors &amp;amp;&amp;amp; incomingValues.length &amp;gt; 0) {&lt;br /&gt;
      for (int i = 0; i &amp;lt; incomingValues.length; i++) {&lt;br /&gt;
        sensorValues[i] = incomingValues[i];&lt;br /&gt;
        print(sensorValues[i] + &amp;quot;\t&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      println();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 4: &lt;br /&gt;
    sound4.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 5: &lt;br /&gt;
    sound5.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the dating-dome ==&lt;br /&gt;
&lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the dating-dome&lt;br /&gt;
 &lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import ddf.minim.*;  &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
int delayTime = 800;&lt;br /&gt;
boolean w_released = true;&lt;br /&gt;
boolean d_released = true;&lt;br /&gt;
boolean s_released = true;&lt;br /&gt;
boolean a_released = true;&lt;br /&gt;
int maxCount = 3;&lt;br /&gt;
int w_count = 0;&lt;br /&gt;
int a_count = 0;&lt;br /&gt;
int s_count = 0;&lt;br /&gt;
int d_count = 0;&lt;br /&gt;
int szene = 0;&lt;br /&gt;
int previousSzene;&lt;br /&gt;
int soundChangeInterval = 5000;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(1000, 800);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  background(255);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  szene = minute() % 3;&lt;br /&gt;
  if (szene != previousSzene) {&lt;br /&gt;
    previousSzene = szene;&lt;br /&gt;
    println(szene);&lt;br /&gt;
&lt;br /&gt;
    if (szene == 0) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;be.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;come.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;together.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;withMe.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 1) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 2) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void keyPressed() {&lt;br /&gt;
  if ((key == 'w' || key == 'W') &amp;amp;&amp;amp; w_released == true &amp;amp;&amp;amp; w_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0);&lt;br /&gt;
    w_released = false;&lt;br /&gt;
    sound(0);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    w_count ++;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'a' || key == 'A') &amp;amp;&amp;amp; a_released == true &amp;amp;&amp;amp; a_count &amp;lt; maxCount) {&lt;br /&gt;
    background(200, 0, 0);&lt;br /&gt;
    a_released = false;&lt;br /&gt;
    sound(1);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    a_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 's' || key == 'S') &amp;amp;&amp;amp; s_released == true &amp;amp;&amp;amp; s_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 200, 0);&lt;br /&gt;
    s_released = false;&lt;br /&gt;
    sound(2);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    s_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'd' || key == 'D') &amp;amp;&amp;amp; d_released == true &amp;amp;&amp;amp; d_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 0, 200);&lt;br /&gt;
    d_released = false;&lt;br /&gt;
    sound(3);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    d_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void keyReleased() {&lt;br /&gt;
  if (key == 'd' || key == 'D') {&lt;br /&gt;
    d_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'a' || key == 'A') {&lt;br /&gt;
    a_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 's' || key == 'S') {&lt;br /&gt;
    s_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'w' || key == 'W') {&lt;br /&gt;
    w_released = true;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rodolfo.acostacastro</name></author>
	</entry>
	<entry>
		<id>http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2686</id>
		<title>Random Acts of Vulnerability</title>
		<link rel="alternate" type="text/html" href="http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2686"/>
		<updated>2021-12-01T11:58:26Z</updated>

		<summary type="html">&lt;p&gt;Rodolfo.acostacastro: /* Meta-Dokumentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Random Acts of Vulnerability ist ein immersives Spiel für vier Spieler*innen in vier Dimensionen.  Durch Erkundung und Dokumentation der jeweils eigenen Dimension, formen die Spieler*innen anhand des Gesammelten und Erlebten die Erzählungen selbst.&lt;br /&gt;
Auf ein installatives Netz aus experimentellen Materialen, soften Schaltkreisen, meditativen Klangwelten, grotesken Interfaces und verzerrten Output-Signalen aufbauend, werden Fragen nach Isolation, Einsamkeit, immaterieller und haptischer Vernetzung und der Herstellung von Verhandlungsgrundlagen gestellt.&lt;br /&gt;
&lt;br /&gt;
Eine Arbeit von: Zoe Lohmann, Ella Estrella Tischa Raetzer, Rodolfo Acosta Castro, Lena Böckmann&lt;br /&gt;
&lt;br /&gt;
Video: https://www.youtube.com/watch?v=850KCMYEAow&amp;amp;t=7s&lt;br /&gt;
&lt;br /&gt;
https://live.staticflickr.com/65535/51681534884_545f161fd9.jpg&lt;br /&gt;
&lt;br /&gt;
= Meta-Dokumentation =&lt;br /&gt;
&lt;br /&gt;
Text text text text &lt;br /&gt;
[[File:doku_nextLevel.jpg| thumb |caption]] wie stellt man eine Dokumentation?&lt;br /&gt;
&lt;br /&gt;
= relevant links =&lt;br /&gt;
&lt;br /&gt;
ESP with Arduino: http://hyperdramatik.net/mediawiki/index.php?title=ESP32_mit_Arduino&lt;br /&gt;
&lt;br /&gt;
MQTT: http://hyperdramatik.net/mediawiki/index.php?title=Hauptseite#MQTT&lt;br /&gt;
&lt;br /&gt;
DOMEs: http://hyperdramatik.net/mediawiki/index.php?title=Dome_Pod_KIT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= code examples from the project =&lt;br /&gt;
&lt;br /&gt;
== Arduino code for sounds in the fishing-dome ==&lt;br /&gt;
&lt;br /&gt;
// running on an ESP [[Spaghetti Monster]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
&lt;br /&gt;
byte analogPins[] = {&lt;br /&gt;
36, 39, 34, 35, 32, 33&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    pinMode(analogPins[i], INPUT);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    Serial.print(analogRead(analogPins[i]));&lt;br /&gt;
    Serial.print(&amp;quot;\t&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  delay(20);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the fishing-dome ==&lt;br /&gt;
 &lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the fishing-dome&lt;br /&gt;
 &lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import processing.serial.*;&lt;br /&gt;
import ddf.minim.*;&lt;br /&gt;
Serial myPort;    &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
//change these:&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
int ADCmax = 4095; &lt;br /&gt;
//int ADCmax = 1023;&lt;br /&gt;
float[] sensorThresholds = {1000, 1000, 1000, 1000, 1000, 1000};//new float[numOfSensors];&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
float[] sensorValues = new float[numOfSensors];&lt;br /&gt;
float[] previousSensorValues = new float[numOfSensors];&lt;br /&gt;
float xpos = 0;&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(600, 400);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  background(255);&lt;br /&gt;
&lt;br /&gt;
  println(Serial.list());&lt;br /&gt;
  String portName = Serial.list()[1];&lt;br /&gt;
  myPort = new Serial(this, &amp;quot;/dev/cu.SLAB_USBtoUART&amp;quot;, 9600);&lt;br /&gt;
  myPort.clear();&lt;br /&gt;
  myPort.bufferUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  sound0 = minim.loadSample( &amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound1 = minim.loadSample(&amp;quot;crazyfrogbardcore.wav&amp;quot;, 512);&lt;br /&gt;
  sound2 = minim.loadSample(&amp;quot;musterfinal.wav&amp;quot;, 512);&lt;br /&gt;
  sound3 = minim.loadSample(&amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound4 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 512);&lt;br /&gt;
  sound5 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 512);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  graph();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void graph() {&lt;br /&gt;
  for (int i=0; i&amp;lt;numOfSensors; i++) {&lt;br /&gt;
    if (sensorValues[i] &amp;lt; sensorThresholds[i]) sound(i);&lt;br /&gt;
&lt;br /&gt;
    // map the incoming values to an appropriate range:&lt;br /&gt;
    float ypos = map(sensorValues[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
&lt;br /&gt;
    // figure out the y position for this particular graph:&lt;br /&gt;
    float graphBottom = i * height/numOfSensors;&lt;br /&gt;
    ypos = ypos + graphBottom;&lt;br /&gt;
&lt;br /&gt;
    // draw the graph bottoms:&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    line(0, graphBottom, width, graphBottom);&lt;br /&gt;
&lt;br /&gt;
    // draw the thresholds:&lt;br /&gt;
    stroke(200, 0, 0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    float redLine = map(sensorThresholds[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
    line(0, redLine + graphBottom, width, redLine + graphBottom);&lt;br /&gt;
&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(2);&lt;br /&gt;
    line(xpos, previousSensorValues[i], xpos+1, ypos);&lt;br /&gt;
&lt;br /&gt;
    previousSensorValues[i] = ypos;&lt;br /&gt;
&lt;br /&gt;
    // if you've drawn to the edge of the window, start at the beginning again:&lt;br /&gt;
    if (xpos &amp;gt;= width) {&lt;br /&gt;
      xpos = 0;&lt;br /&gt;
      background(215);&lt;br /&gt;
    } else xpos+=0.1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void serialEvent (Serial myPort) {&lt;br /&gt;
  // get the ASCII string:&lt;br /&gt;
  String inString = myPort.readStringUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  // if it's not empty:&lt;br /&gt;
  if (inString != null) {&lt;br /&gt;
    // trim off any whitespace:&lt;br /&gt;
    inString = trim(inString);&lt;br /&gt;
&lt;br /&gt;
    // convert to an array of ints:&lt;br /&gt;
    int incomingValues[] = int(split(inString, &amp;quot;\t&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
    if (incomingValues.length &amp;lt;= numOfSensors &amp;amp;&amp;amp; incomingValues.length &amp;gt; 0) {&lt;br /&gt;
      for (int i = 0; i &amp;lt; incomingValues.length; i++) {&lt;br /&gt;
        sensorValues[i] = incomingValues[i];&lt;br /&gt;
        print(sensorValues[i] + &amp;quot;\t&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      println();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 4: &lt;br /&gt;
    sound4.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 5: &lt;br /&gt;
    sound5.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the dating-dome ==&lt;br /&gt;
&lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the dating-dome&lt;br /&gt;
 &lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import ddf.minim.*;  &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
int delayTime = 800;&lt;br /&gt;
boolean w_released = true;&lt;br /&gt;
boolean d_released = true;&lt;br /&gt;
boolean s_released = true;&lt;br /&gt;
boolean a_released = true;&lt;br /&gt;
int maxCount = 3;&lt;br /&gt;
int w_count = 0;&lt;br /&gt;
int a_count = 0;&lt;br /&gt;
int s_count = 0;&lt;br /&gt;
int d_count = 0;&lt;br /&gt;
int szene = 0;&lt;br /&gt;
int previousSzene;&lt;br /&gt;
int soundChangeInterval = 5000;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(1000, 800);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  background(255);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  szene = minute() % 3;&lt;br /&gt;
  if (szene != previousSzene) {&lt;br /&gt;
    previousSzene = szene;&lt;br /&gt;
    println(szene);&lt;br /&gt;
&lt;br /&gt;
    if (szene == 0) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;be.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;come.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;together.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;withMe.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 1) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 2) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void keyPressed() {&lt;br /&gt;
  if ((key == 'w' || key == 'W') &amp;amp;&amp;amp; w_released == true &amp;amp;&amp;amp; w_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0);&lt;br /&gt;
    w_released = false;&lt;br /&gt;
    sound(0);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    w_count ++;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'a' || key == 'A') &amp;amp;&amp;amp; a_released == true &amp;amp;&amp;amp; a_count &amp;lt; maxCount) {&lt;br /&gt;
    background(200, 0, 0);&lt;br /&gt;
    a_released = false;&lt;br /&gt;
    sound(1);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    a_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 's' || key == 'S') &amp;amp;&amp;amp; s_released == true &amp;amp;&amp;amp; s_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 200, 0);&lt;br /&gt;
    s_released = false;&lt;br /&gt;
    sound(2);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    s_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'd' || key == 'D') &amp;amp;&amp;amp; d_released == true &amp;amp;&amp;amp; d_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 0, 200);&lt;br /&gt;
    d_released = false;&lt;br /&gt;
    sound(3);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    d_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void keyReleased() {&lt;br /&gt;
  if (key == 'd' || key == 'D') {&lt;br /&gt;
    d_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'a' || key == 'A') {&lt;br /&gt;
    a_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 's' || key == 'S') {&lt;br /&gt;
    s_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'w' || key == 'W') {&lt;br /&gt;
    w_released = true;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rodolfo.acostacastro</name></author>
	</entry>
	<entry>
		<id>http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2685</id>
		<title>Random Acts of Vulnerability</title>
		<link rel="alternate" type="text/html" href="http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2685"/>
		<updated>2021-12-01T11:57:25Z</updated>

		<summary type="html">&lt;p&gt;Rodolfo.acostacastro: /* Meta-Dokumentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Random Acts of Vulnerability ist ein immersives Spiel für vier Spieler*innen in vier Dimensionen.  Durch Erkundung und Dokumentation der jeweils eigenen Dimension, formen die Spieler*innen anhand des Gesammelten und Erlebten die Erzählungen selbst.&lt;br /&gt;
Auf ein installatives Netz aus experimentellen Materialen, soften Schaltkreisen, meditativen Klangwelten, grotesken Interfaces und verzerrten Output-Signalen aufbauend, werden Fragen nach Isolation, Einsamkeit, immaterieller und haptischer Vernetzung und der Herstellung von Verhandlungsgrundlagen gestellt.&lt;br /&gt;
&lt;br /&gt;
Eine Arbeit von: Zoe Lohmann, Ella Estrella Tischa Raetzer, Rodolfo Acosta Castro, Lena Böckmann&lt;br /&gt;
&lt;br /&gt;
Video: https://www.youtube.com/watch?v=850KCMYEAow&amp;amp;t=7s&lt;br /&gt;
&lt;br /&gt;
https://live.staticflickr.com/65535/51681534884_545f161fd9.jpg&lt;br /&gt;
&lt;br /&gt;
= Meta-Dokumentation =&lt;br /&gt;
&lt;br /&gt;
Text text text text &lt;br /&gt;
[[File:doku_nextLevel.jpg|frameless|border|caption]] wie stellt man eine Dokumentation?&lt;br /&gt;
&lt;br /&gt;
= relevant links =&lt;br /&gt;
&lt;br /&gt;
ESP with Arduino: http://hyperdramatik.net/mediawiki/index.php?title=ESP32_mit_Arduino&lt;br /&gt;
&lt;br /&gt;
MQTT: http://hyperdramatik.net/mediawiki/index.php?title=Hauptseite#MQTT&lt;br /&gt;
&lt;br /&gt;
DOMEs: http://hyperdramatik.net/mediawiki/index.php?title=Dome_Pod_KIT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= code examples from the project =&lt;br /&gt;
&lt;br /&gt;
== Arduino code for sounds in the fishing-dome ==&lt;br /&gt;
&lt;br /&gt;
// running on an ESP [[Spaghetti Monster]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
&lt;br /&gt;
byte analogPins[] = {&lt;br /&gt;
36, 39, 34, 35, 32, 33&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    pinMode(analogPins[i], INPUT);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    Serial.print(analogRead(analogPins[i]));&lt;br /&gt;
    Serial.print(&amp;quot;\t&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  delay(20);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the fishing-dome ==&lt;br /&gt;
 &lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the fishing-dome&lt;br /&gt;
 &lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import processing.serial.*;&lt;br /&gt;
import ddf.minim.*;&lt;br /&gt;
Serial myPort;    &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
//change these:&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
int ADCmax = 4095; &lt;br /&gt;
//int ADCmax = 1023;&lt;br /&gt;
float[] sensorThresholds = {1000, 1000, 1000, 1000, 1000, 1000};//new float[numOfSensors];&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
float[] sensorValues = new float[numOfSensors];&lt;br /&gt;
float[] previousSensorValues = new float[numOfSensors];&lt;br /&gt;
float xpos = 0;&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(600, 400);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  background(255);&lt;br /&gt;
&lt;br /&gt;
  println(Serial.list());&lt;br /&gt;
  String portName = Serial.list()[1];&lt;br /&gt;
  myPort = new Serial(this, &amp;quot;/dev/cu.SLAB_USBtoUART&amp;quot;, 9600);&lt;br /&gt;
  myPort.clear();&lt;br /&gt;
  myPort.bufferUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  sound0 = minim.loadSample( &amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound1 = minim.loadSample(&amp;quot;crazyfrogbardcore.wav&amp;quot;, 512);&lt;br /&gt;
  sound2 = minim.loadSample(&amp;quot;musterfinal.wav&amp;quot;, 512);&lt;br /&gt;
  sound3 = minim.loadSample(&amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound4 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 512);&lt;br /&gt;
  sound5 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 512);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  graph();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void graph() {&lt;br /&gt;
  for (int i=0; i&amp;lt;numOfSensors; i++) {&lt;br /&gt;
    if (sensorValues[i] &amp;lt; sensorThresholds[i]) sound(i);&lt;br /&gt;
&lt;br /&gt;
    // map the incoming values to an appropriate range:&lt;br /&gt;
    float ypos = map(sensorValues[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
&lt;br /&gt;
    // figure out the y position for this particular graph:&lt;br /&gt;
    float graphBottom = i * height/numOfSensors;&lt;br /&gt;
    ypos = ypos + graphBottom;&lt;br /&gt;
&lt;br /&gt;
    // draw the graph bottoms:&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    line(0, graphBottom, width, graphBottom);&lt;br /&gt;
&lt;br /&gt;
    // draw the thresholds:&lt;br /&gt;
    stroke(200, 0, 0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    float redLine = map(sensorThresholds[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
    line(0, redLine + graphBottom, width, redLine + graphBottom);&lt;br /&gt;
&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(2);&lt;br /&gt;
    line(xpos, previousSensorValues[i], xpos+1, ypos);&lt;br /&gt;
&lt;br /&gt;
    previousSensorValues[i] = ypos;&lt;br /&gt;
&lt;br /&gt;
    // if you've drawn to the edge of the window, start at the beginning again:&lt;br /&gt;
    if (xpos &amp;gt;= width) {&lt;br /&gt;
      xpos = 0;&lt;br /&gt;
      background(215);&lt;br /&gt;
    } else xpos+=0.1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void serialEvent (Serial myPort) {&lt;br /&gt;
  // get the ASCII string:&lt;br /&gt;
  String inString = myPort.readStringUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  // if it's not empty:&lt;br /&gt;
  if (inString != null) {&lt;br /&gt;
    // trim off any whitespace:&lt;br /&gt;
    inString = trim(inString);&lt;br /&gt;
&lt;br /&gt;
    // convert to an array of ints:&lt;br /&gt;
    int incomingValues[] = int(split(inString, &amp;quot;\t&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
    if (incomingValues.length &amp;lt;= numOfSensors &amp;amp;&amp;amp; incomingValues.length &amp;gt; 0) {&lt;br /&gt;
      for (int i = 0; i &amp;lt; incomingValues.length; i++) {&lt;br /&gt;
        sensorValues[i] = incomingValues[i];&lt;br /&gt;
        print(sensorValues[i] + &amp;quot;\t&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      println();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 4: &lt;br /&gt;
    sound4.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 5: &lt;br /&gt;
    sound5.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the dating-dome ==&lt;br /&gt;
&lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the dating-dome&lt;br /&gt;
 &lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import ddf.minim.*;  &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
int delayTime = 800;&lt;br /&gt;
boolean w_released = true;&lt;br /&gt;
boolean d_released = true;&lt;br /&gt;
boolean s_released = true;&lt;br /&gt;
boolean a_released = true;&lt;br /&gt;
int maxCount = 3;&lt;br /&gt;
int w_count = 0;&lt;br /&gt;
int a_count = 0;&lt;br /&gt;
int s_count = 0;&lt;br /&gt;
int d_count = 0;&lt;br /&gt;
int szene = 0;&lt;br /&gt;
int previousSzene;&lt;br /&gt;
int soundChangeInterval = 5000;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(1000, 800);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  background(255);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  szene = minute() % 3;&lt;br /&gt;
  if (szene != previousSzene) {&lt;br /&gt;
    previousSzene = szene;&lt;br /&gt;
    println(szene);&lt;br /&gt;
&lt;br /&gt;
    if (szene == 0) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;be.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;come.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;together.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;withMe.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 1) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 2) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void keyPressed() {&lt;br /&gt;
  if ((key == 'w' || key == 'W') &amp;amp;&amp;amp; w_released == true &amp;amp;&amp;amp; w_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0);&lt;br /&gt;
    w_released = false;&lt;br /&gt;
    sound(0);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    w_count ++;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'a' || key == 'A') &amp;amp;&amp;amp; a_released == true &amp;amp;&amp;amp; a_count &amp;lt; maxCount) {&lt;br /&gt;
    background(200, 0, 0);&lt;br /&gt;
    a_released = false;&lt;br /&gt;
    sound(1);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    a_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 's' || key == 'S') &amp;amp;&amp;amp; s_released == true &amp;amp;&amp;amp; s_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 200, 0);&lt;br /&gt;
    s_released = false;&lt;br /&gt;
    sound(2);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    s_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'd' || key == 'D') &amp;amp;&amp;amp; d_released == true &amp;amp;&amp;amp; d_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 0, 200);&lt;br /&gt;
    d_released = false;&lt;br /&gt;
    sound(3);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    d_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void keyReleased() {&lt;br /&gt;
  if (key == 'd' || key == 'D') {&lt;br /&gt;
    d_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'a' || key == 'A') {&lt;br /&gt;
    a_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 's' || key == 'S') {&lt;br /&gt;
    s_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'w' || key == 'W') {&lt;br /&gt;
    w_released = true;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rodolfo.acostacastro</name></author>
	</entry>
	<entry>
		<id>http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2684</id>
		<title>Random Acts of Vulnerability</title>
		<link rel="alternate" type="text/html" href="http://hyperdramatik.net/mediawiki/index.php?title=Random_Acts_of_Vulnerability&amp;diff=2684"/>
		<updated>2021-12-01T11:56:22Z</updated>

		<summary type="html">&lt;p&gt;Rodolfo.acostacastro: /* Meta-Dokumentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Random Acts of Vulnerability ist ein immersives Spiel für vier Spieler*innen in vier Dimensionen.  Durch Erkundung und Dokumentation der jeweils eigenen Dimension, formen die Spieler*innen anhand des Gesammelten und Erlebten die Erzählungen selbst.&lt;br /&gt;
Auf ein installatives Netz aus experimentellen Materialen, soften Schaltkreisen, meditativen Klangwelten, grotesken Interfaces und verzerrten Output-Signalen aufbauend, werden Fragen nach Isolation, Einsamkeit, immaterieller und haptischer Vernetzung und der Herstellung von Verhandlungsgrundlagen gestellt.&lt;br /&gt;
&lt;br /&gt;
Eine Arbeit von: Zoe Lohmann, Ella Estrella Tischa Raetzer, Rodolfo Acosta Castro, Lena Böckmann&lt;br /&gt;
&lt;br /&gt;
Video: https://www.youtube.com/watch?v=850KCMYEAow&amp;amp;t=7s&lt;br /&gt;
&lt;br /&gt;
https://live.staticflickr.com/65535/51681534884_545f161fd9.jpg&lt;br /&gt;
&lt;br /&gt;
= Meta-Dokumentation =&lt;br /&gt;
&lt;br /&gt;
[[File:doku_nextLevel.jpg|frameless|border|caption]]&lt;br /&gt;
&lt;br /&gt;
= relevant links =&lt;br /&gt;
&lt;br /&gt;
ESP with Arduino: http://hyperdramatik.net/mediawiki/index.php?title=ESP32_mit_Arduino&lt;br /&gt;
&lt;br /&gt;
MQTT: http://hyperdramatik.net/mediawiki/index.php?title=Hauptseite#MQTT&lt;br /&gt;
&lt;br /&gt;
DOMEs: http://hyperdramatik.net/mediawiki/index.php?title=Dome_Pod_KIT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= code examples from the project =&lt;br /&gt;
&lt;br /&gt;
== Arduino code for sounds in the fishing-dome ==&lt;br /&gt;
&lt;br /&gt;
// running on an ESP [[Spaghetti Monster]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
&lt;br /&gt;
byte analogPins[] = {&lt;br /&gt;
36, 39, 34, 35, 32, 33&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    pinMode(analogPins[i], INPUT);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  for (int i = 0; i &amp;lt; numOfSensors; i++) {&lt;br /&gt;
    Serial.print(analogRead(analogPins[i]));&lt;br /&gt;
    Serial.print(&amp;quot;\t&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  delay(20);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the fishing-dome ==&lt;br /&gt;
 &lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the fishing-dome&lt;br /&gt;
 &lt;br /&gt;
 6 textile stretch sensors trigger&lt;br /&gt;
 6 different sounds &lt;br /&gt;
 when they pass a threshold.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import processing.serial.*;&lt;br /&gt;
import ddf.minim.*;&lt;br /&gt;
Serial myPort;    &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
//change these:&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
int numOfSensors = 6;&lt;br /&gt;
int ADCmax = 4095; &lt;br /&gt;
//int ADCmax = 1023;&lt;br /&gt;
float[] sensorThresholds = {1000, 1000, 1000, 1000, 1000, 1000};//new float[numOfSensors];&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
float[] sensorValues = new float[numOfSensors];&lt;br /&gt;
float[] previousSensorValues = new float[numOfSensors];&lt;br /&gt;
float xpos = 0;&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(600, 400);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  background(255);&lt;br /&gt;
&lt;br /&gt;
  println(Serial.list());&lt;br /&gt;
  String portName = Serial.list()[1];&lt;br /&gt;
  myPort = new Serial(this, &amp;quot;/dev/cu.SLAB_USBtoUART&amp;quot;, 9600);&lt;br /&gt;
  myPort.clear();&lt;br /&gt;
  myPort.bufferUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  sound0 = minim.loadSample( &amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound1 = minim.loadSample(&amp;quot;crazyfrogbardcore.wav&amp;quot;, 512);&lt;br /&gt;
  sound2 = minim.loadSample(&amp;quot;musterfinal.wav&amp;quot;, 512);&lt;br /&gt;
  sound3 = minim.loadSample(&amp;quot;harddisc_grummeln_kurz.wav&amp;quot;, 512);&lt;br /&gt;
  sound4 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 512);&lt;br /&gt;
  sound5 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 512);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  graph();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void graph() {&lt;br /&gt;
  for (int i=0; i&amp;lt;numOfSensors; i++) {&lt;br /&gt;
    if (sensorValues[i] &amp;lt; sensorThresholds[i]) sound(i);&lt;br /&gt;
&lt;br /&gt;
    // map the incoming values to an appropriate range:&lt;br /&gt;
    float ypos = map(sensorValues[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
&lt;br /&gt;
    // figure out the y position for this particular graph:&lt;br /&gt;
    float graphBottom = i * height/numOfSensors;&lt;br /&gt;
    ypos = ypos + graphBottom;&lt;br /&gt;
&lt;br /&gt;
    // draw the graph bottoms:&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    line(0, graphBottom, width, graphBottom);&lt;br /&gt;
&lt;br /&gt;
    // draw the thresholds:&lt;br /&gt;
    stroke(200, 0, 0);&lt;br /&gt;
    strokeWeight(1);&lt;br /&gt;
    float redLine = map(sensorThresholds[i], ADCmax, 0, 0, height/numOfSensors);&lt;br /&gt;
    line(0, redLine + graphBottom, width, redLine + graphBottom);&lt;br /&gt;
&lt;br /&gt;
    stroke(0);&lt;br /&gt;
    strokeWeight(2);&lt;br /&gt;
    line(xpos, previousSensorValues[i], xpos+1, ypos);&lt;br /&gt;
&lt;br /&gt;
    previousSensorValues[i] = ypos;&lt;br /&gt;
&lt;br /&gt;
    // if you've drawn to the edge of the window, start at the beginning again:&lt;br /&gt;
    if (xpos &amp;gt;= width) {&lt;br /&gt;
      xpos = 0;&lt;br /&gt;
      background(215);&lt;br /&gt;
    } else xpos+=0.1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void serialEvent (Serial myPort) {&lt;br /&gt;
  // get the ASCII string:&lt;br /&gt;
  String inString = myPort.readStringUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  // if it's not empty:&lt;br /&gt;
  if (inString != null) {&lt;br /&gt;
    // trim off any whitespace:&lt;br /&gt;
    inString = trim(inString);&lt;br /&gt;
&lt;br /&gt;
    // convert to an array of ints:&lt;br /&gt;
    int incomingValues[] = int(split(inString, &amp;quot;\t&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
    if (incomingValues.length &amp;lt;= numOfSensors &amp;amp;&amp;amp; incomingValues.length &amp;gt; 0) {&lt;br /&gt;
      for (int i = 0; i &amp;lt; incomingValues.length; i++) {&lt;br /&gt;
        sensorValues[i] = incomingValues[i];&lt;br /&gt;
        print(sensorValues[i] + &amp;quot;\t&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      println();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 4: &lt;br /&gt;
    sound4.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 5: &lt;br /&gt;
    sound5.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Processing code for sounds in the dating-dome ==&lt;br /&gt;
&lt;br /&gt;
 CODE DESCRIPTION:&lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 RANDOM ACTS OF VULNERABILITY&lt;br /&gt;
 code for sounds in the dating-dome&lt;br /&gt;
 &lt;br /&gt;
 4 very sensitive &amp;quot;balloon-pushbuttons&amp;quot; &lt;br /&gt;
 on a makey makey trigger sound files.&lt;br /&gt;
 every minute there is a scene change &lt;br /&gt;
 and the sound files are updated.&lt;br /&gt;
 sound files should be stored in a folder&lt;br /&gt;
 called &amp;quot;data&amp;quot; within the sketch folder.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import ddf.minim.*;  &lt;br /&gt;
&lt;br /&gt;
Minim minim;&lt;br /&gt;
AudioSample sound0;&lt;br /&gt;
AudioSample sound1;&lt;br /&gt;
AudioSample sound2;&lt;br /&gt;
AudioSample sound3;&lt;br /&gt;
AudioSample sound4;&lt;br /&gt;
AudioSample sound5;&lt;br /&gt;
&lt;br /&gt;
int delayTime = 800;&lt;br /&gt;
boolean w_released = true;&lt;br /&gt;
boolean d_released = true;&lt;br /&gt;
boolean s_released = true;&lt;br /&gt;
boolean a_released = true;&lt;br /&gt;
int maxCount = 3;&lt;br /&gt;
int w_count = 0;&lt;br /&gt;
int a_count = 0;&lt;br /&gt;
int s_count = 0;&lt;br /&gt;
int d_count = 0;&lt;br /&gt;
int szene = 0;&lt;br /&gt;
int previousSzene;&lt;br /&gt;
int soundChangeInterval = 5000;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup () {&lt;br /&gt;
  size(1000, 800);        &lt;br /&gt;
  smooth();&lt;br /&gt;
  minim = new Minim(this);&lt;br /&gt;
  background(255);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw () {&lt;br /&gt;
  szene = minute() % 3;&lt;br /&gt;
  if (szene != previousSzene) {&lt;br /&gt;
    previousSzene = szene;&lt;br /&gt;
    println(szene);&lt;br /&gt;
&lt;br /&gt;
    if (szene == 0) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;be.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;come.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;together.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;withMe.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 1) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;hihat_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
    if (szene == 2) {&lt;br /&gt;
      sound0 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound1 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound2 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
      sound3 = minim.loadSample(&amp;quot;kick_single.wav&amp;quot;, 1000);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void keyPressed() {&lt;br /&gt;
  if ((key == 'w' || key == 'W') &amp;amp;&amp;amp; w_released == true &amp;amp;&amp;amp; w_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0);&lt;br /&gt;
    w_released = false;&lt;br /&gt;
    sound(0);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    w_count ++;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'a' || key == 'A') &amp;amp;&amp;amp; a_released == true &amp;amp;&amp;amp; a_count &amp;lt; maxCount) {&lt;br /&gt;
    background(200, 0, 0);&lt;br /&gt;
    a_released = false;&lt;br /&gt;
    sound(1);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    a_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 's' || key == 'S') &amp;amp;&amp;amp; s_released == true &amp;amp;&amp;amp; s_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 200, 0);&lt;br /&gt;
    s_released = false;&lt;br /&gt;
    sound(2);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    s_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    d_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ((key == 'd' || key == 'D') &amp;amp;&amp;amp; d_released == true &amp;amp;&amp;amp; d_count &amp;lt; maxCount) {&lt;br /&gt;
    background(0, 0, 200);&lt;br /&gt;
    d_released = false;&lt;br /&gt;
    sound(3);&lt;br /&gt;
    delay(delayTime);&lt;br /&gt;
    d_count ++;&lt;br /&gt;
    w_count = 0;&lt;br /&gt;
    a_count = 0;&lt;br /&gt;
    s_count = 0;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void keyReleased() {&lt;br /&gt;
  if (key == 'd' || key == 'D') {&lt;br /&gt;
    d_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'a' || key == 'A') {&lt;br /&gt;
    a_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 's' || key == 'S') {&lt;br /&gt;
    s_released = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (key == 'w' || key == 'W') {&lt;br /&gt;
    w_released = true;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void sound(int soundSample) &lt;br /&gt;
{&lt;br /&gt;
  switch(soundSample) {&lt;br /&gt;
  case 0: &lt;br /&gt;
    sound0.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 1: &lt;br /&gt;
    sound1.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 2: &lt;br /&gt;
    sound2.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  case 3: &lt;br /&gt;
    sound3.trigger();&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rodolfo.acostacastro</name></author>
	</entry>
</feed>