Incom ist die Kommunikations-Plattform der Fachhochschule Potsdam

In seiner Funktionalität auf die Lehre in gestalterischen Studiengängen zugeschnitten... Schnittstelle für die moderne Lehre

Incom ist die Kommunikations-Plattform der Fachhochschule Potsdam mehr erfahren

Alea64

Alea64 ist ein Musical-Interface, das mithilfe des Zufalls Musik arrangiert.

Die Idee

Musik, wie sie in der Regel konsumiert wird, besteht aus einem fertig komponierten Lied. Parameter wie u. a. Instrumentierung, Dauer, Tonhöhen, Dynamik sind vom Komponisten festgelegt. Inspiriert durch [John Cage](http://de.wikipedia.org/wiki/John_Cage „John Cage“) und weitere Komponisten der Aleatorik wollte ich ein Musical-Interface entwickeln, welches den Parameter Zufall mit in die Entstehung eines Musikstücks einbringt.

Das Konzept

Musik soll durch den Spielverlauf eines Brettspiels arrangiert werden.

Verschiedene Felder auf einem Spielfeld dienen als Schaltflächen, die eine Abfolge von Tönen oder Geräuschen an- bzw. ausschalten. Somit erklingt während des Spiels ein ganz individuelles Musikstück, ganz der Dynamik der Partie entsprechend.

Die Umsetzung

Nach intensiver Suche nach dem richtigen Spielfeld habe ich mich für das [Schachspiel](http://de.wikipedia.org/wiki/Schach „Schach“) entschieden, ein einfaches Spielfeld mit einer 8x8-Matrix und unzähligen Möglichkeiten, die Figuren darauf anzuordnen. Dies ergibt genug Potential, um eine hohe Bandbreite an verschiedenen Musikstücken zu erzeugen.

Von Anfang an war mir bewusst, dass der Erfolg des Projekts von den zuvor komponierten Sequenzen abhängt. Da ein einzelnes Schachspiel mitunter mehrere Stunden dauern kann, war es mir wichtig, auch die einzelnen Tonabfolgen und Geräusche so zu komponieren, dass sie durch ihre unterschiedliche Kombination auch nach einigen Stunden nicht langweilig werden oder die Spieler ablenken.

Im Kurs und von Freunden kam vermehrt der Vorschlag einzelnen Figuren, Spielzügen oder Feldern bestimmte Töne oder Funktionen zuzuweisen. Diese Ideen habe ich aber nach einiger Zeit wieder verworfen, da sie zum einen an der von mir verwendeten Technik scheitern - ich müsste zum Beispiel die Figuren tracken können -, zum anderen aber auch das Konzept zu stark ausweiten, ohne einen allzugroßen Mehrwert zu bieten.

Prototyp

IMG_3959_small_web.jpgIMG_3959_small_web.jpg

IMG_3963_small_web.jpgIMG_3963_small_web.jpg
IMG_3973_small_web.jpgIMG_3973_small_web.jpg

Die Technik

Als „Hülle“ für das Interface dient ein altes Schachbrett aus Holz. Auf der Unterseite sind Magnetschalter angebracht, die durch mit Magneten versehenen Figuren auf dem Brett betätigt werden. Die Anzahl der Schalter ist durch das verwendete Teensy auf 24 limitiert.

Angebracht sind die Schalter im Zentrum des Brettes. Hier hatte ich unter anderem auch überlegt, die Schalter anders zu verteilen, zum Beispiel dem Königs-Feld einen speziellen Effekt zuzuweisen. Aber das hat sich nach Betrachten einer [Heat-Map](http://www.flickr.com/photos/stevefaeembra/5565448824/ „Heat-Map“) als nicht sinnvoll herausgestellt, da der König sehr häufig auch ohne Gefahr verschoben wird, um eine Rochade zu bilden.

Fritzingsketch

Bildschirmfoto 2013-02-28 um 16.53.30.pngBildschirmfoto 2013-02-28 um 16.53.30.png
Bildschirmfoto 2013-02-28 um 16.53.46.pngBildschirmfoto 2013-02-28 um 16.53.46.png

Quellcode

#include „MIDIControl.h“
#include „FSR.h“
#include „Bounce.h“

Bounce bouncer0 (0, 100);
FSR fsr0 (0, bouncer0);
MIDIControl midiControl0 (fsr0, 55);

Bounce bouncer1 (1, 100);
FSR fsr1 (1, bouncer1);
MIDIControl midiControl1 (fsr1, 56);

Bounce bouncer2 (2, 100);
FSR fsr2 (2, bouncer2);
MIDIControl midiControl2 (fsr2, 57);

Bounce bouncer3 (3, 100);
FSR fsr3 (3, bouncer3);
MIDIControl midiControl3 (fsr3, 58);

Bounce bouncer4 (4, 100);
FSR fsr4 (4, bouncer4);
MIDIControl midiControl4 (fsr4, 59);

Bounce bouncer5 (5, 100);
FSR fsr5 (5, bouncer5);
MIDIControl midiControl5 (fsr5, 60);

Bounce bouncer6 (6, 100);
FSR fsr6 (6, bouncer6);
MIDIControl midiControl6 (fsr6, 61);

Bounce bouncer7 (7, 100);
FSR fsr7 (7, bouncer7);
MIDIControl midiControl7 (fsr7, 62);

Bounce bouncer8 (8, 100);
FSR fsr8 (8, bouncer8);
MIDIControl midiControl8 (fsr8, 63);

Bounce bouncer9 (9, 100);
FSR fsr9 (9, bouncer9);
MIDIControl midiControl9 (fsr9, 64);

Bounce bouncer10 (10, 100);
FSR fsr10 (10, bouncer10);
MIDIControl midiControl10 (fsr10, 65);

Bounce bouncer11 (11, 100);
FSR fsr11 (11, bouncer11);
MIDIControl midiControl11 (fsr11, 66);

Bounce bouncer12 (12, 100);
FSR fsr12 (12, bouncer12);
MIDIControl midiControl12 (fsr12, 67);

Bounce bouncer13 (13, 100);
FSR fsr13 (13, bouncer13);
MIDIControl midiControl13 (fsr13, 68);

Bounce bouncer14 (14, 100);
FSR fsr14 (14, bouncer14);
MIDIControl midiControl14 (fsr14, 69);

Bounce bouncer15 (15, 100);
FSR fsr15 (15, bouncer15);
MIDIControl midiControl15 (fsr15, 70);

Bounce bouncer16 (16, 100);
FSR fsr16 (16, bouncer16);
MIDIControl midiControl16 (fsr16, 71);

Bounce bouncer17 (17, 100);
FSR fsr17 (17, bouncer17);
MIDIControl midiControl17 (fsr17, 72);

Bounce bouncer18 (18, 100);
FSR fsr18 (18, bouncer18);
MIDIControl midiControl18 (fsr18, 73);

Bounce bouncer19 (19, 100);
FSR fsr19 (19, bouncer19);
MIDIControl midiControl19 (fsr19, 74);

Bounce bouncer20 (20, 100);
FSR fsr20 (20, bouncer20);
MIDIControl midiControl20 (fsr20, 75);

Bounce bouncer21 (21, 100);
FSR fsr21 (21, bouncer21);
MIDIControl midiControl21 (fsr21, 76);

Bounce bouncer22 (22, 100);
FSR fsr22 (22, bouncer22);
MIDIControl midiControl22 (fsr22, 77);

Bounce bouncer23 (23, 100);
FSR fsr23 (23, bouncer23);
MIDIControl midiControl23 (fsr23, 78);


void setup() {
 pinMode(0, INPUT_PULLUP);
 pinMode(1, INPUT_PULLUP);
 pinMode(2, INPUT_PULLUP);
 pinMode(3, INPUT_PULLUP);
 pinMode(4, INPUT_PULLUP);
 pinMode(5, INPUT_PULLUP);
 pinMode(6, INPUT_PULLUP);
 pinMode(7, INPUT_PULLUP);
 pinMode(8, INPUT_PULLUP);
 pinMode(9, INPUT_PULLUP);
 pinMode(10, INPUT_PULLUP);
 pinMode(11, INPUT_PULLUP);
 pinMode(12, INPUT_PULLUP);
 pinMode(13, INPUT_PULLUP);
 pinMode(14, INPUT_PULLUP);
 pinMode(15, INPUT_PULLUP);
 pinMode(16, INPUT_PULLUP);
 pinMode(17, INPUT_PULLUP);
 pinMode(18, INPUT_PULLUP);
 pinMode(19, INPUT_PULLUP);
 pinMode(20, INPUT_PULLUP);
 pinMode(21, INPUT_PULLUP);
 pinMode(22, INPUT_PULLUP);
 pinMode(23, INPUT_PULLUP);
}

void loop() {

  midiControl0.update();
  midiControl1.update();
  midiControl2.update();
  midiControl3.update();
  midiControl4.update();
  midiControl5.update();
  midiControl6.update();
  midiControl7.update();
  midiControl8.update();
  midiControl9.update();
  midiControl10.update();
  midiControl11.update();
  midiControl12.update();
  midiControl13.update();
  midiControl14.update();
  midiControl15.update();
  midiControl16.update();
  midiControl17.update();
  midiControl18.update();
  midiControl19.update();
  midiControl20.update();
  midiControl21.update();
  midiControl22.update();
  midiControl23.update();   
}

Schluss

Mit dem Ergebnis bin ich sehr zufrieden. Allerdings hatte ich mir in der Vorbereitung auf dieses Projekt andere Musik vorgestellt, als ich sie letztendlich komponiert habe. Das liegt aber an meinen noch mangelhaften kompositorischen Fähigkeiten in Ableton Live. Mir schwebte sehr minimale Klaviermusik vor.

Vielen Dank an Stefan für diesen interessanten und lehrreichen Kurs.

Ein Projekt von

Fachgruppe

Interfacedesign

Art des Projekts

Studienarbeit im ersten Studienabschnitt

Betreuung

foto: Stefan Hermann

Entstehungszeitraum

Wintersemester 2012 / 2013