---------

\\ Lernen\ Codekit\ Code & Interaktion 1

-Lernen

Interface auswählen

-

08.09.2004

CodeKit - Code & Interaktion 1

Die Maus als Mischpult - CodeKit "SoundMixer"
› Abbildung vergrößern
In diesem Abschnitt wird eine interaktive Audio-Applikation aus dem CodeKit-Programmarchiv vorgestellt: der "SoundMixer". Die Applikation spielt zwei Audio-Dateien gleichzeitig mit dem CodeKit-Medienobjekt "AudioPlayer" (basierend auf "QuickTime for Java") ab. Die aktuelle Position der Maus steuert die Wiedergabelautstärken individuell und mischt beide Audio-Dateien zusammen. Verschiedene Übungen verändern oder erweitern die Funktionalitäten des "SoundMixer". Die wichtigen Code-Teile werden kurz erläutert, ohne das Programm an dieser Stelle vollständig erklären zu wollen. Die Java-Codes und Beispieldateien stehen als » Archiv zum Download [ZIP | 5 MB] bereit.

"SoundMixer": herunterladen und starten

Um die Java-Applikation innerhalb der Entwicklungsumgebung NetBeans starten zu können, werden folgende Dateien benötigt:
¬SoundMixer.java
¬AudioPlayer.java
¬track01.mp3
¬track02.mp3

Die Dateien finden sich auch im CodeKit-Archiv unter der Rubrik "AudioControl". Die ausführbare Java-Applikation ist "SoundMixer", die Klasse "AudioPlayer" ist zum Abspielen von mehreren Audio-Dateien mit QuickTime geeignet. "AudioPlayer" selbst ist kein ausführbares Objekt, also kein eigenständiges Programm, das in NetBeans gestartet werden kann. QuickTime unterstützt alle gängigen Audio-Formate (z.B. .wav, .mp3, etc.).
Laden Sie die Dateien in Ihr Arbeitsverzeichnis. Der NetBeans-Explorer sollte alle Files anzeigen:
Ausschnitt: NetBeans-Explorer und Editor
› Abbildung vergrößern
Starten Sie die Applikation "SoundMixer", mischen Sie beide Musikstücke mit der Vertikalbewegung der Maus über dem Fenster der Applikation:
SoundMixer: Mausposition als Lautstärkeregler
› Abbildung vergrößern
Beide Audio-Dateien werden gleichzeitig und parallel abgespielt. Lediglich die Lautstärken werden entsprechend der Mausbewegung variiert.

Relevante Code-Fragmente

SoundMixer: Liste für die Audio-Dateien
› Abbildung vergrößern
Ohne die Java-Applikation vollständig begreiflich machen zu wollen, sollen an dieser Stelle relevante Abschnitte im Code erklärt werden, so dass Erweiterungen und Abänderungen am Programm vorgenommen werden können - als Ausgangspunkt für eigenes experimentelles Arbeiten. Um die Audio-Dateien laden zu können, die sich im gleichen Verzeichnis wie der "SoundMixer" befinden sollen, müssen die Dateinamen angegeben werden. Dies passiert am Anfang des Source-Codes:
Die Dateinamen werden als "String" in einer Liste angegeben. An dieser Stelle können Sie den Code ändern, wenn Sie andere Musikstücke im "SoundMixer" verwenden wollen.

SoundMixer: Steuerung der Player-Lautstärke
› Abbildung vergrößern
Die Steuerung der Lautstärke beider Audiodateien wird über eine Variable mit dem Namen "volume" realisiert
Das Objekt "myPlayer" ist eine Instanz der Klasse AudioPlayer. Mit dem Befehl "setVolume" kann sowohl der erste Kanal (myPlayer.setVolume(0,volume);), als auch der zweite Kanal (myPlayer.setVolume(1,volume);) kontinuierlich geregelt werden. Der Wertebereich für die Lautstärke liegt zwischen 0.0 und 1.0. Dass die Lautstärkeregelung entgegengesetzt proportional für beide Kanäle erfolgt, liegt daran, dass Kanal 0 (Track 1) auf den Wert der Variable "volume" gesetzt wird, Kanal 1 (Track 2) jedoch auf den Wert "1.0f - volume". Das "f" kennzeichnet den Varaiblentypen "float", welcher für den Befehl "setVolume" vorgeschrieben ist. Dazu ein kleines Rechenbeispiel: Angenommen, der Wert von "volume" ist "0.8". Dann ist die Lautstärke von Track 1 "0.8", die Lautstärke von Track 2 dahingegen "0.2". Eine Steuervariable regelt beide Lautstärken. Diese Steuervariable "volume" hängt mit der Mausposition zusammen:

SoundMixer: Maus-Interaktionen
› Abbildung vergrößern
Mit Bewegung der Maus wird in einer Java-Applikation ein entsprechendes "Event" generiert und die dazugehörige Methode "mouseMoved" ausgeführt. Die Variablen "posX" und "posY" speichern die jeweils aktuelle Mausposition. Damit der Wertebereich von "volume" zwischen 0.0 und 1.0 liegt, wird der Wert der y-Position ("posY") durch die Breite des Fensters ("height") geteilt. So ist sichergestellt, dass "volume" keine Werte größer als 1.0 annehmen kann. Rechnen Sie nach! Außerhalb des Fensters werden keine Maus-Events generiert, der größte Wert für "posY" ist gerade die Höhe des Applikations-Fensters.
Top of Page

Übungen

Übung1: Neue Musikstücke


Speichern Sie in Ihr Arbeitsverzeichnis andere Musikstücke in einem von QuickTime unterstützten Format.
Ändern Sie den Code im "SoundMixer" an der richtigen Stelle ab. Achten Sie auf Groß- und Kleinschreibung und auf die richtige Endung ("Appendix").

Übung 2: Maus-Click


Ändern Sie das Programm so ab, dass die Lautstärkeregelung nur bei Maus-Click erfolgt.
Hinweis: Bei Maus-Click wird das entsprechene "Event" erzeugt und die Methode "mouseClicked" aufgerufen.
Lösung: › Screenshot [GIF | 23 KB]

Übung 3: Zweidimensionale Steuerung


Ändern Sie den Programm-Code so ab, dass die Lautstärke des ersten Tracks von der x-Position der Maus und die des zweiten von der y-Position gesteuert wird.
Hinweis: Sie brauchen jetzt zwei Variablen (z.B. "volume1" und "volume2"), um die Lautstärken getrennt zu regeln.
Lösung: › SoundMixer2D.java (in der ZIP-Datei, s.o.)

Top of Page