AudioBufferSourceNode
        
        
          
                Baseline
                
                  Widely available
                
                
              
        
        
        
          
                
              
                
              
                
              
        
        
      
      This feature is well established and works across many devices and browser versions. It’s been available across browsers since Juli 2015.
Das AudioBufferSourceNode Interface ist ein AudioScheduledSourceNode, das eine Audioquelle darstellt, die aus In-Memory-Audiodaten besteht, die in einem AudioBuffer gespeichert sind.
Dieses Interface ist besonders nützlich für die Wiedergabe von Audio, das besonders strenge Timing-Genauigkeitsanforderungen hat, z. B. für Klänge, die mit einem bestimmten Rhythmus übereinstimmen müssen und im Speicher gehalten werden können, anstatt von der Festplatte oder dem Netzwerk abgespielt zu werden. Um Klänge abzuspielen, die präzises Timing erfordern, aber aus dem Netzwerk gestreamt oder von der Festplatte abgespielt werden müssen, verwenden Sie ein AudioWorkletNode zur Implementierung der Wiedergabe.
Ein AudioBufferSourceNode hat keine Eingänge und genau einen Ausgang, der dieselbe Anzahl von Kanälen hat wie das AudioBuffer, das durch die buffer Eigenschaft angegeben wird. Wenn kein Puffer gesetzt ist – das heißt, wenn buffer null ist – enthält der Ausgang einen einzelnen Kanal der Stille (jedes Sample ist 0).
Ein AudioBufferSourceNode kann nur einmal abgespielt werden; nach jedem Aufruf von start() müssen Sie einen neuen Knoten erstellen, wenn Sie denselben Klang erneut abspielen möchten. Glücklicherweise sind diese Knoten sehr kostengünstig zu erstellen, und die tatsächlichen AudioBuffer können für mehrere Abspiele des Klangs wiederverwendet werden. Tatsächlich können Sie diese Knoten in einer "fire and forget"-Weise verwenden: Erstellen Sie den Knoten, rufen Sie start() auf, um die Wiedergabe des Klangs zu starten, und kümmern Sie sich nicht einmal darum, eine Referenz darauf zu behalten. Er wird automatisch zu einem geeigneten Zeitpunkt vom Garbage Collector gesammelt, was erst nach dem Abspielen des Klangs der Fall sein wird.
Mehrere Aufrufe von stop() sind erlaubt. Der letzte Aufruf ersetzt den vorherigen, wenn der AudioBufferSourceNode noch nicht das Ende des Puffers erreicht hat.

| Anzahl der Eingänge | 0 | 
    
|---|---|
| Anzahl der Ausgänge | 1 | 
    
| Kanalanzahl | definiert durch das zugeordnete [`AudioBuffer`](/de/docs/Web/API/AudioBuffer) | 
Konstruktor
AudioBufferSourceNode()- 
Erstellt und gibt ein neues
AudioBufferSourceNodeObjekt zurück. Alternativ können Sie dieBaseAudioContext.createBufferSource()Fabrikmethode verwenden; siehe Erstellen eines AudioNode. 
Instanzeigenschaften
Erbt Eigenschaften von seinem Elternteil, AudioScheduledSourceNode.
AudioBufferSourceNode.buffer- 
Ein
AudioBuffer, das das abzuspielende Audio-Asset definiert, oder wenn auf den Wertnullgesetzt, einen einzelnen Kanal der Stille definiert (bei dem jedes Sample 0.0 ist). AudioBufferSourceNode.detune- 
Ein k-rate
AudioParam, das die Verstimmung der Wiedergabe in Cents darstellt. Dieser Wert wird mitplaybackRatekombiniert, um die Geschwindigkeit zu bestimmen, mit der der Klang abgespielt wird. Sein Standardwert ist0(was keine Verstimmung bedeutet), und sein Nennbereich ist -∞ bis ∞. AudioBufferSourceNode.loop- 
Ein Boolean-Attribut, das anzeigt, ob das Audio-Asset wiedergegeben werden muss, wenn das Ende des
AudioBuffererreicht ist. Sein Standardwert istfalse. AudioBufferSourceNode.loopStartOptional- 
Ein Gleitkommawert, der die Zeit in Sekunden angibt, zu der die Wiedergabe des
AudioBufferbeginnen muss, wennlooptrueist. Sein Standardwert ist0(was bedeutet, dass zu Beginn jeder Schleife die Wiedergabe am Anfang des Audiopuffers beginnt). AudioBufferSourceNode.loopEndOptional- 
Eine Gleitkommazahl, die die Zeit in Sekunden angibt, zu der die Wiedergabe des
AudioBufferstoppt und zur durchloopStartangegebenen Zeit zurückkehrt, wennlooptrueist. Der Standardwert ist0. AudioBufferSourceNode.playbackRate- 
Ein k-rate
AudioParam, der den Geschwindigkeitsfaktor definiert, mit dem das Audio-Asset abgespielt wird, wobei ein Wert von 1.0 der natürlichen Abtastrate des Klangs entspricht. Da keine Tonhöhenkorrektur auf den Ausgang angewendet wird, kann dies verwendet werden, um die Tonhöhe des Samples zu ändern. Dieser Wert wird mitdetunekombiniert, um die endgültige Wiedergaberate zu bestimmen. 
Instanzmethoden
Erbt Methoden von seinem Elternteil, AudioScheduledSourceNode, und überschreibt die folgende Methode:.
start()- 
Plant die Wiedergabe der im Puffer enthaltenen Audiodaten oder beginnt die Wiedergabe sofort. Zusätzlich können der Startversatz und die Spieldauer eingestellt werden.
 
Beispiele
In diesem Beispiel erstellen wir einen zwei Sekunden langen Puffer, füllen ihn mit weißem Rauschen und spielen ihn dann mit einem AudioBufferSourceNode ab. Die Kommentare sollten klar erklären, was vor sich geht.
Hinweis: Sie können den Code auch live ausführen, oder den Quellcode ansehen.
const audioCtx = new AudioContext();
// Create an empty three-second stereo buffer at the sample rate of the AudioContext
const myArrayBuffer = audioCtx.createBuffer(
  2,
  audioCtx.sampleRate * 3,
  audioCtx.sampleRate,
);
// Fill the buffer with white noise;
// just random values between -1.0 and 1.0
for (let channel = 0; channel < myArrayBuffer.numberOfChannels; channel++) {
  // This gives us the actual ArrayBuffer that contains the data
  const nowBuffering = myArrayBuffer.getChannelData(channel);
  for (let i = 0; i < myArrayBuffer.length; i++) {
    // Math.random() is in [0; 1.0]
    // audio needs to be in [-1.0; 1.0]
    nowBuffering[i] = Math.random() * 2 - 1;
  }
}
// Get an AudioBufferSourceNode.
// This is the AudioNode to use when we want to play an AudioBuffer
const source = audioCtx.createBufferSource();
// set the buffer in the AudioBufferSourceNode
source.buffer = myArrayBuffer;
// connect the AudioBufferSourceNode to the
// destination so we can hear the sound
source.connect(audioCtx.destination);
// start the source playing
source.start();
Hinweis:
Für ein decodeAudioData() Beispiel siehe die AudioContext.decodeAudioData() Seite.
Spezifikationen
| Specification | 
|---|
| Web Audio API> # AudioBufferSourceNode>  | 
            
Browser-Kompatibilität
Loading…