Neue Properties und Methoden für das Web Audio API

Web Audio – der aktuelle Stand
Kommentare

Das Web Audio API soll dabei helfen, Audio-Dateien leichter ins Web zu bringen. Die Entwicklung des APIs schreitet dabei stetig voran und es werden immer neue Methoden und Properties hinzugefügt, während andere umbenannt, verschoben oder auch entfernt werden. Grund genug also, den aktuellen Stand von Web Audio genauer unter die Lupe zu nehmen.

Bereits Anfang 2015 hatte Soledad Penadés einen Überblick über die Arbeit am Web Audio API und dessen Implementierung in Firefox geboten. Seither hat sich einiges im Bereich Web Audio getan, wie nun ihr aktueller Beitrag dazu im Mozilla-Entwicklerblog zeigt.

Vor allem eine API-Änderung sorgt dabei für Breaking Changes. So ist das Reduction-Attribut in DynamicsCompressorNode nun ein float anstatt wie bisher ein AudioParam. Auch beim Lesen des Wertes zur Anzeige der Gain Reduction gibt es eine Änderung: Statt wie bisher mit compressor.reduction.value kann dieser nun mithilfe von compressor.reduction gelesen werden.

Neue Properties und Methoden im Web Audio API

Im Laufe der Weiterentwicklung des Web Audio APIs wurden eine ganze Reihe neuer Properties und Methoden hinzugefügt. So stehen etwa für AudioContext mit suspend(), resume() und close() drei neue Methoden zur Verfügung, die es Entwicklern erlauben, die Audio-Verarbeitung zu unterbrechen, wieder aufzunehmen und Ressourcen freizugeben, wenn AudioContext nicht länger benötigt wird.

Ebenso lässt sich die disconnect()-Methode nun überlasten, um einzelne Nodes selektiv zu trennen. Zur Verfügung stehen damit neben der bekannten Methode disconnect() nun die folgenden weiteren Methoden:

  • disconnect(outputNumber)
  • disconnect(anotherNode)
  • disconnect(anotherNode, outputNumber)
  • disconnect (anotherNode, outputNumber, inputNumber)
  • disconnect(audioParam)
  • disconnect(audioParam, outputNumber)

Mehr Informationen dazu bietet die Spezifikation von AudioNode.

Ebenso steht ein neues Attribut zur Verfügung, das den Wert widerspiegelt, der bei der Initialisierung von OfflineAudioContext an den Constructor übergeben wird; außerdem gibt es ein neues detune-Attribut in AudioBufferSourceNode. Auch für PannerNode gibt es neue Positions- und Ausrichtungs-Attribute. Dabei handelt es sich um AudioParams, die per Automatisierung modifiziert werden können, anstatt wie bisher die setPosition()– oder setOrientation()-Methoden in einer Dauerschleife aufzurufen.

Neben den neuen Methoden und Attributen gibt es auch weitere Verbesserungen des Web Audio APIs. Dazu gehört etwa das Hinzufügen von IIRFilterNode – einer neuen Node, mit der Custom-Filter erstellt werden können. Zudem wurden auch einige Verbesserungen der connect()-Methode vorgenommen, sodass sich mehrere Nodes leichter miteinander verketten lassen.

JavaScript Days 2017

Architektur mit JavaScript

mit Golo Roden (the native web)

JavaScript Testing in der Praxis

mit Dominik Ehrenberg (crosscan) und Sebastian Springer (MaibornWolff)

Implementierung in Firefox

Neben einer Übersicht über den aktuellen Stand von Web Audio geht Penadés in ihrem Artikel auch auf die Implementierung des Web Audio APIs in Firefox ein – und dabei wurden ebenfalls einige Fortschritte gemacht. Vor allem auf der Performance lag dabei das Augenmerk.

So benötigt Audio-Code nun deutlich weniger Zeit bei der Ausführung und sei dabei schneller beziehungsweise genauso schnell wie in Chrome. Einzig die Arbeit mit AudioParams lässt hinsichtlich der Firefox-Performance derzeit noch ein wenig zu wünschen übrig, soll künftig aber ebenfalls deutlich verbessert werden. Ebenso wurde die Performance von ScriptProcessorNode verbessert und Assembly-Level-Optimierungen für Computing DSP Kernels eingeführt.

Mehr Informationen dazu bietet der oben genannte Artikel von Penadés; alle aktuellen Änderungen und Verbesserungen des Web Audio APIs lassen sich der Bug-Liste entnehmen.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -