PDF Archive

Easily share your PDF documents with your contacts, on the Web and Social Networks.

Share a file Manage my documents Convert Recover PDF Search Help Contact



Aufgabe 18 .pdf


Original filename: Aufgabe 18.pdf
Author: David Bermbach

This PDF 1.5 document has been generated by Microsoft® Word 2016, and has been sent on pdf-archive.com on 04/02/2017 at 18:47, from IP address 95.90.x.x. The current document download page has been viewed 227 times.
File size: 603 KB (2 pages).
Privacy: public file




Download original PDF file









Document preview


Prog1 WINF (WS 2016/17)
Dr. D. Bermbach, J. Eberhardt, S. Werner

Hinweise


Die Abgabe dieser Übungsaufgaben muss bis spätestens am 05.02.2017 23.59h im
ISIS-Kurs erfolgen. Es gelten die Ihnen bekannten Übungsbedingungen.



Lösungen zu diesen Aufgaben sind als gezipptes Eclipseprojekt abzugeben.



Bitte beachten Sie, dass Abgaben im Rahmen der Portfolioprüfung in Ihre Modulnote
eingehen. Dies bedeutet auch, dass es sich hierbei um eine Prüfungsleistung handelt
und Plagiate mit einem Betrugsversuch im schriftlichen Test gleichzusetzen sind.
Gruppenarbeit ist nicht zulässig.



Alle Aufgaben sind (auch wenn dies nicht explizit angegeben wurde) mit korrekter
Javadockommentierung zu versehen.

Aufgabe 18 (20 Punkte)
In dieser Aufgabe, werden Sie den Teil des Programms aus der letzten Woche
implementieren, der dafür sorgt, dass die eingelesenen Töne zur richtigen Zeit gestartet und
gestoppt werden. Dabei können Sie die Musterlösung der Aufgabe 17 nutzen, um sich
anzuhören, wie der Song korrekt klingt.
Die Töne, die Sie letzte Woche geparst haben, werden von unserem Framework in
MusikEvents übersetzt. Ein MusikEvent besteht aus einem Ton, einer Lautstärke, einem
Anfangszeitpunkt und einer Dauer. Ihre Aufgabe ist es, für jedes dieser MusikEvents, den Ton
zum richtigen Zeitpunkt zu starten und zu stoppen (siehe Abbildung 1).

Abbildung 1

-1-

Importieren Sie zunächst die Vorlage von ISIS. In der Vorlage befinden sich die Klassen der
letzten Woche.
Ihre Aufgabe ist also es, das Scheduling von MidiSoundEvents umzusetzen:
Die tatsächliche Soundausgabe wird durch die Klasse MidiOutput gesteuert, welche
Methoden zum An- und Abschalten von Tönen anbietet.
Die Klasse StudentMidiScheduler im package de.tuberlin.ise.prog1.midi
enthält drei Methoden, die Sie hierfür implementieren:


scheduleTone(startTimestamp,
midiSoundEvent):
Scheduled
das
übergebene MidiSoundEvent zum angegebenen Starttimestamp. Beachten Sie,
dass ein Ton nicht nur gestartet, sondern auch wieder beendet werden muss.



unschedule(long after): Stoppe alle bereits geplanten MidiSoundEvents die
nach dem gegeben Zeitstempel liegen.



stop(): Terminiert die Audioausgabe.

Ergänzen Sie den Konstruktor, sowie Instanz- und Klassenvariablen nach Bedarf. Fügen Sie
dem Projekt nach Bedarf eigene Klassen hinzu.
Damit das Aktivieren und Deaktivieren von Tönen ohne Ruckeln und ähnliche hörbare
Beeinträchtigungen funktioniert, bietet es sich an mehrere parallele Threads für das
Scheduling zu verwenden. Diese sollten Sie bei Aufruf der terminate()-Methode
entsprechend wieder beenden.
Testen Sie ihre Implementierung mit der main-Methode der Klasse Starter auf ruckelfreie
Wiedergabe.
Tipps:


Die Einschaltreihenfolge mehrerer Töne ist selten identisch zur Ausschaltreihenfolge,
bspw. wenn erst ein langer und direkt danach ein kurzer Ton gestartet werden.



U.U. ist es hilfreich, PriorityQueues zu verwenden. Hierzu bräuchten Sie eine
Hilfsklasse, die MidiSoundEvents sowie einen Timestamp „einpackt“ und das
Interface Comparable<T> implementiert.

-2-


Aufgabe 18.pdf - page 1/2
Aufgabe 18.pdf - page 2/2

Related documents


PDF Document aufgabe 18
PDF Document vpk
PDF Document der verm hlungsmode kommt1612
PDF Document nennillo facebook tnb
PDF Document fotografie tipps
PDF Document w hrend dieser phase definiert das1013


Related keywords