Open Source im professionellen Einsatz
Linux-Magazin 09/2014
508

Audioverarbeitung

Die Rückruffunktion in Zeile 11 verarbeitet die geladene Audiodatei weiter: Die Anwendung wandelt sie mit der Methode »decodeAudioData()« in einen Audio-Buffer um und speichert sie im Attribut »buffer« des Objekts. Die Methode »play()« (Zeilen 15 bis 22) spielt den Taktschlag in einer Schleife. Zunächst stoppt sie in Zeile 16 das Abspielen des Taktschlags, indem sie »stop()« aufruft. Anschließend erzeugt Zeile 17 per »createBufferSource()« einen abspielbaren Audioknoten vom Typ »AudioBufferSourceNode« und speichert ihn im Attribut »src« .

Als Input vereinbart Zeile 18 den vom Server geladen Audio-Buffer. Diesen bringt zuvor noch die Methode »extendBuffer()« auf die passende Länge. Zeile 19 veranlasst den abspielbaren Audioknoten zur steten Wiederholung des Audio-Buffers, bevor Zeile 20 ihn mit dem Soundsystem des Rechners verbindet. Der Aufruf der Methode »start« beginnt in Zeile 21 die Wiedergabe. Wie Audio-Buffer, abspielbarer Audioknoten und Soundsystem verschaltet sind, macht Abbildung 4 anschaulich.

Abbildung 4: Schematische Funktionsweise des Web-Audio-API.

Das Taktgeräusch dauert etwa 0,1 Sekunden. Die Methode »extendBuffer()« (Zeilen 28 bis 34) verlängert die Dauer des Taktschlags gemäß dem eingestellten Metrum – bei einem Metrum von 120 Schlägen pro Minute auf 0,5 Sekunden, bei 60 Schlägen auf 1 Sekunde. Dazu berechnet Zeile 29 die geforderte Spieldauer in Einheiten der Samplerate, mit der die Audiodatei des Taktschlags digitalisiert wurde, und speichert diese in der Variablen »total« ab. Das eingestellte Metrum geht über die im Aufruf enthaltene Variable Beats in die Spieldauer ein.

Die anschließende Zeile erzeugt durch den Start der Methode »createBuffer()« einen leeren Audio-Buffer von der zuvor berechneten Spieldauer. Zudem übernimmt der Code die Anzahl der Kanäle und die Samplerate aus dem Audio-Buffer mit dem Taktschlag. Die abschließende For-Schleife kopiert jeden Kanal des Audio-Buffers mit dem Taktschlag jeweils an den Beginn des entsprechenden Kanals des verlängerten Buffers.

Fazit

ECMA-Script 6 renoviert die bislang klassenlose Sprache mit Elementen aus anderen Programmiersprachen. Das vereinfacht und modernisiert sie und dürfte ihrem Erfolg zuträglich sein. Bis die Browser jedoch nativ ECMA-Script 6 sprechen, wird noch einige Zeit vergehen. Unterdessen bietet der Compiler Traceur Entwicklern die Möglichkeit, die Vorteile der modernisierten Skriptsprache schon heute zu nutzen. (mhu)

Der Autor

Der Diplom-Physiker Andreas Möller http://pamoller.com beschäftigt sich seit 2001 mit der Entwicklung von Internetsoftware. Dazu zählen Datenbank- und Webanwendungen sowie Systeme für Single Source Publishing. Zurzeit ist er als Berater und freier Autor tätig.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 7 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • ECMA Script 6 angenommen

    ECMA International hat die vorgeschlagene Version ECMA Script 6 jetzt offiziell angenommen.

  • Javascript-Alternativen

    Javascript ist der Stoff, aus dem der Client-Teil vieler interaktiver Webanwendungen gemacht ist, schleppt aber Altlasten mit. Gegen die schreiben die Macher der vier vorgestellten Skriptsprachen an.

  • Angular 2

    Mit Typescript statt Javascript, JiT- und AoT-Kompilation und einem konsequenten Einsatz von Components brühen die Macher das Javascript-Framework Angular in Version 2 neu auf. Das Linux-Magazin probiert einen kräftigen Schluck von dem Gebräu.

  • Mit Vektoren zeichnen

    Bilder im Format Scalable Vector Graphics (SVG) brauchen weniger Speicherplatz und lassen sich ohne Qualitätsverlust skalieren. Selbst Animationen und Programmcode mit Javascript sind möglich, was den Standard fürs Web und den Desktop interessant macht.

  • Neue Webseite für Javascript-Test Sputnik

    Google hat eine Webseite online gebracht, mit der Anwender die Javascript-Testsammlung Sputnik im Browser ausführen können.

comments powered by Disqus

Ausgabe 07/2017

Digitale Ausgabe: Preis € 6,40
(inkl. 19% MwSt.)

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.