André Gräf, Eystathios Klotsikas, Philip Kretschmann, …

ROB

Remote Over Bluetooth

Gewinner Digital Sparks Award 2006

ROB-Logo [Trailerausschnitt]

ROB-Logo [Trailerausschnitt]

Dateien

Technische Beschreibung

Die Implementierung von Server und Client wurde in Java vorgenommen, d.h. mit Hilfe der Java 2 Standard Edition (J2SE) und der Java 2 Micro Edition (J2ME, für das Handy). Die Bluetooth-Kommunikation wurde mit Hilfe des Java Specification Requests 82 (Link siehe unten) umgesetzt, der speziell dafür von einer Expert Group bestehend aus Firmen wie Nokia, Motorola, IBM und Symbian (und weitere) entworfen wurde.

Ein großes Problem bestand in der Abwicklung der Bluetooth-Kommunikation des Servers, da die aktuelle J2SE noch keine Bibliotheken dafür bereitstellt. Dafür wurde die "BlueCove-API", eine Open Source Bibliothek verwendet, die eine auf die J2SE portierte Version des JSR-82 darstellt.

Die vom Handy empfangenen Daten werden im Server als OSC-Messages in Datagrammen verpackt und über das Datagram Protocol (kurz UDP) verbindungslos an die Zielsoftware versendet. Verbindungslos bedeutet dabei lediglich, dass nicht erst eine Verbindung zum Gegenüber aufgebaut werden muss ein Handshake findet nicht statt.

Wie aus der der Grafik (ROB-Kommunikationsmodell) ersichtlich, basiert die Kommunikation zwischen Client, Server und Zielsoftware thread-basiert. Nur durch die nebenläufige Abwicklung der Datenübertragung wird eine performante Echtzeitsteuerung möglich.

Das Instrumenten-Ensemble, das ebenfalls auf der ROB-Website zum Download bereitsteht, wurde mit Hilfe von "Reaktor" von der Firma Native Instruments entwickelt. Dieses Programm ermöglicht die Entwicklung komplexester Klangmodule wie z.B. Synthesizer und Sampler mit Hilfe eines leicht verständlichen grafischen Editors. Dabei werden atomare Bausteine wie z.B. ANDs und ORs aber auch Oszillatoren, Filter oder Hüllkurvengeneratoren logisch miteinander verschaltet. Auch die Benutzeroberfläche der so entstehenden virtuellen Instrumente lässt sich größtenteils frei gestalten, sodass der User nur die gewohnten Regler und Displays zu sehen bekommt.

JSR-82:
http://www.jcp.org/en/jsr/detail?id=82

BlueCove-API:
http://sourceforge.net/projects/bluecove/

OSC:
http://www.cnmat.berkeley.edu/~adrian/

Reaktor:
http://www.native-instruments.de/index.php?id=reaktor_de

Hardware / Software

Folgende Hardware wurde benutzt:

4 x Siemens S65
(bereitgestellt von BenQ Mobile GmbH & Co. OHG)
2 x Nokia 6230
2 x Nokia 6230i
1 x Bluetooth-USB-Stick


Folgende Software wurde verwendet:

J2ME Wireless Toolkit 2.2 (KToolbar),
Siemens Mobility Toolkit 3.0,
Nokia S40 DP 2.0 SDK 1.1,
Eclipse 3.1,
Jigloo (Eclipse-PlugIn, SWT/Swing GUI Builder),
NetBeans 4.1,
NetBeans Mobility Pack,
Reaktor 5,
Flash 8,
EyesWeb 4