aboutsummaryrefslogtreecommitdiff
path: root/files/fr/web/api/audiobuffersourcenode/index.html
diff options
context:
space:
mode:
Diffstat (limited to 'files/fr/web/api/audiobuffersourcenode/index.html')
-rw-r--r--files/fr/web/api/audiobuffersourcenode/index.html96
1 files changed, 47 insertions, 49 deletions
diff --git a/files/fr/web/api/audiobuffersourcenode/index.html b/files/fr/web/api/audiobuffersourcenode/index.html
index b689f99b77..ce90a90902 100644
--- a/files/fr/web/api/audiobuffersourcenode/index.html
+++ b/files/fr/web/api/audiobuffersourcenode/index.html
@@ -11,20 +11,18 @@ translation_of: Web/API/AudioBufferSourceNode
---
<p>{{APIRef("Web Audio API")}}</p>
-<p class="summary"><span lang="fr">L'interface <strong>AudioBufferSourceNode</strong> est un {{domxref("AudioScheduledSourceNode")}} qui représente une source audio constituée de données audio en mémoire, stockées dans un {{domxref ("AudioBuffer")}}. Elle est particulièrement utile pour lire des sons qui requierrent des conditions de lecture particulières, comme la synchronisation sur un certain rythme, et peuvent être stockés en mémoire. Si ce type de son doit être lu depuis le disque ou le réseau, il conviendra d'utiliser un {{domxref("AudioWorkletNode")}}. </span></p>
+<p>L'interface <strong>AudioBufferSourceNode</strong> est un {{domxref("AudioScheduledSourceNode")}} qui représente une source audio constituée de données audio en mémoire, stockées dans un {{domxref ("AudioBuffer")}}. Elle est particulièrement utile pour lire des sons qui requierrent des conditions de lecture particulières, comme la synchronisation sur un certain rythme, et peuvent être stockés en mémoire. Si ce type de son doit être lu depuis le disque ou le réseau, il conviendra d'utiliser un {{domxref("AudioWorkletNode")}}.</p>
<p>{{InheritanceDiagram}}</p>
-<p><span lang="fr">Un AudioBufferSourceNode n'a pas d'entrée et il comporte une unique sortie, dont le nombre de canaux est spécifié par la propriété </span>{{domxref("AudioBufferSourceNode.buffer", "buffer")}}. <span lang="fr">Si aucun buffer n'est paramétré, c'est-à-dire si la valeur de l'attribut est NULL, la sortie contient un seul canal silencieux (chaque échantillon vaut 0).</span></p>
+<p>Un AudioBufferSourceNode n'a pas d'entrée et il comporte une unique sortie, dont le nombre de canaux est spécifié par la propriété {{domxref("AudioBufferSourceNode.buffer", "buffer")}}. Si aucun buffer n'est paramétré, c'est-à-dire si la valeur de l'attribut est NULL, la sortie contient un seul canal silencieux (chaque échantillon vaut 0).</p>
<p><br>
- <span lang="fr">Un</span> {{domxref("AudioBufferSourceNode")}} ne peut être joué qu'une seule fois; autrement dit un seul appel à la fonction <code>AudioBufferSourceNode.start()</code> est autorisé. Pour rejouer le son, il faut créer un nouvel <code>AudioBufferSourceNode</code>. Heureusement ces noeuds ne demandent pas beaucoup de ressource, et les véritables <code>AudioBuffer</code>s peuvent être réutilisés. On dit que les <code>AudioBufferSourceNode</code>s doivent être utilisés en mode "one shot": une fois que la lecture est lancée, toutes les références peuvent être supprimées, et elles seront collectées par le ramasse-miette automatiquement quand la lecture des sons sera terminée.</p>
+ Un {{domxref("AudioBufferSourceNode")}} ne peut être joué qu'une seule fois; autrement dit un seul appel à la fonction <code>AudioBufferSourceNode.start()</code> est autorisé. Pour rejouer le son, il faut créer un nouvel <code>AudioBufferSourceNode</code>. Heureusement ces noeuds ne demandent pas beaucoup de ressource, et les véritables <code>AudioBuffer</code>s peuvent être réutilisés. On dit que les <code>AudioBufferSourceNode</code>s doivent être utilisés en mode "one shot": une fois que la lecture est lancée, toutes les références peuvent être supprimées, et elles seront collectées par le ramasse-miette automatiquement quand la lecture des sons sera terminée.</p>
<p>Plusieurs appels à la fonction <code>AudioBufferSourceNode.stop()</code> sont autorisés. Le dernier appel remplace le précédent, à condition que le <code>AudioBufferSourceNode </code>n'ait pas déjà atteint la fin du buffer.</p>
-<p><img alt="The AudioBufferSourceNode takes the content of an AudioBuffer and m" src="https://mdn.mozillademos.org/files/12670/AudioBufferSourceNode.svg" style="height: 233px; padding-bottom: 10px; width: 438px;"></p>
-
-
+<p><img alt="L'objet AudioBufferSourceNode prend le contenu d'un AudioBuffer et le convertit en audio" src="webaudioaudiobuffersourcenode.png"></p>
<table class="properties">
<tbody>
@@ -69,7 +67,7 @@ translation_of: Web/API/AudioBufferSourceNode
<dd>{{domxref ("AudioParam")}} de type <a href="/fr/docs/Web/API/AudioParam#a-rate">a-rate</a> qui définit le facteur de vitesse à laquelle la ressource audio sera jouée. Comme aucune correction de pitch n'est appliquée sur la sortie, il peut être utilisé pour modifier le pitch de l'échantillon.</dd>
</dl>
-<h3 id="Gestionnaires_d'évènement"><span class="short_text" id="result_box" lang="fr"><span class="hps">Gestionnaires d'évènement</span></span></h3>
+<h3 id="Gestionnaires_d'évènement">Gestionnaires d'évènement</h3>
<p><em>Hérite des gestionnaires d'évènement de son parent, {{domxref("AudioScheduledSourceNode")}}</em>.</p>
@@ -82,52 +80,52 @@ translation_of: Web/API/AudioBufferSourceNode
<p>Cet exemple crée un tampon de deux secondes, le remplit avec du bruit blanc et le joue par l'intermédiaire d'un <code>AudioBufferSourceNode</code>.</p>
<div class="note">
-<p><strong>Note</strong>: Vous pouvez aussi <a class="external external-icon" href="http://mdn.github.io/audio-buffer/">exécuter the code</a>, ou <a class="external external-icon" href="https://github.com/mdn/audio-buffer">regarder le code source</a>.</p>
+<p><strong>Note :</strong> Vous pouvez aussi <a href="http://mdn.github.io/audio-buffer/">exécuter the code</a>, ou <a href="https://github.com/mdn/audio-buffer">regarder le code source</a>.</p>
</div>
-<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">var</span> contexteAudio <span class="operator token">=</span> <span class="keyword token">new</span> <span class="punctuation token">(</span>window<span class="punctuation token">.</span>AudioContext <span class="operator token">||</span> window<span class="punctuation token">.</span>webkitAudioContext<span class="punctuation token">)</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
-<span class="keyword token">var</span> bouton <span class="operator token">=</span> document<span class="punctuation token">.</span><span class="function token">querySelector</span><span class="punctuation token">(</span><span class="string token">'button'</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
-<span class="keyword token">var</span> pre <span class="operator token">=</span> document<span class="punctuation token">.</span><span class="function token">querySelector</span><span class="punctuation token">(</span><span class="string token">'pre'</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
-<span class="keyword token">var</span> monScript <span class="operator token">=</span> document<span class="punctuation token">.</span><span class="function token">querySelector</span><span class="punctuation token">(</span><span class="string token">'script'</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
-
-pre<span class="punctuation token">.</span>innerHTML <span class="operator token">=</span> monScript<span class="punctuation token">.</span>innerHTML<span class="punctuation token">;</span>
-
-<span class="comment token">// Stéréo</span>
-<span class="keyword token">var</span> canaux <span class="operator token">=</span> <span class="number token">2</span><span class="punctuation token">;
-</span>
-<span class="comment token">// Crée un tampon vide de deux secondes</span>
-<span class="comment token">// au taux d'échantillonnage du AudioContext</span>
-<span class="keyword token">var</span> compteurTrames <span class="operator token">=</span> contexteAudio<span class="punctuation token">.</span>sampleRate <span class="operator token">*</span> <span class="number token">2.0</span><span class="punctuation token">;</span>
-
-<span class="keyword token">var</span> myArrayBuffer <span class="operator token">=</span> contexteAudio<span class="punctuation token">.</span><span class="function token">createBuffer</span><span class="punctuation token">(</span><span class="number token">2</span><span class="punctuation token">,</span> compteurTrames<span class="punctuation token">,</span> contexteAudio<span class="punctuation token">.</span>sampleRate<span class="punctuation token">)</span><span class="punctuation token">;</span>
-
-bouton<span class="punctuation token">.</span>onclick <span class="operator token">=</span> <span class="keyword token">function</span><span class="punctuation token">(</span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
- <span class="comment token">// remplit le tampon avec du bruit blanc;</span>
- <span class="comment token">// valeurs aléatoires entre -1.0 et 1.0</span>
- <span class="keyword token">for</span> <span class="punctuation token">(</span><span class="keyword token">var</span> canal <span class="operator token">=</span> <span class="number token">0</span><span class="punctuation token">;</span> canal <span class="operator token">&lt;</span> canaux<span class="punctuation token">;</span> canal<span class="operator token">++</span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
- <span class="comment token">// crée le ArrayBuffer qui contient les données</span>
- <span class="keyword token">var</span> nowBuffering <span class="operator token">=</span> myArrayBuffer<span class="punctuation token">.</span><span class="function token">getChannelData</span><span class="punctuation token">(</span>canal<span class="punctuation token">);</span>
- <span class="keyword token">for</span> <span class="punctuation token">(</span><span class="keyword token">var</span> i <span class="operator token">=</span> <span class="number token">0</span><span class="punctuation token">;</span> i <span class="operator token">&lt;</span> compteurTrames<span class="punctuation token">;</span> i<span class="operator token">++</span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
- <span class="comment token">// Math.random() est compris entre [0; 1.0]</span>
- <span class="comment token">// audio doit être compris entre [-1.0; 1.0]</span>
- nowBuffering<span class="punctuation token">[</span>i<span class="punctuation token">]</span> <span class="operator token">=</span> Math<span class="punctuation token">.</span><span class="function token">random</span><span class="punctuation token">(</span><span class="punctuation token">)</span> <span class="operator token">*</span> <span class="number token">2</span> <span class="operator token">-</span> <span class="number token">1</span><span class="punctuation token">;</span>
- <span class="punctuation token">}</span>
- <span class="punctuation token">}</span>
-
- <span class="comment token">// crée AudioBufferSourceNode.</span>
- <span class="comment token">// c'est AudioNode utilisé pour lire un AudioBuffer</span>
- <span class="keyword token">var</span> source <span class="operator token">=</span> contexteAudio<span class="punctuation token">.</span><span class="function token">createBufferSource</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
- <span class="comment token">// initialise le tampon du AudioBufferSourceNode</span>
- source<span class="punctuation token">.</span>buffer <span class="operator token">=</span> myArrayBuffer<span class="punctuation token">;</span>
- <span class="comment token">// connecte l'AudioBufferSourceNode avec la destination</span>
- <span class="comment token">// de façon à ce qu'on puisse entendre le son</span>
- source<span class="punctuation token">.</span><span class="function token">connect</span><span class="punctuation token">(</span>contexteAudio<span class="punctuation token">.</span>destination<span class="punctuation token">)</span><span class="punctuation token">;</span>
- <span class="comment token">// lance la lecture de la source</span>
- source<span class="punctuation token">.</span><span class="function token">start</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
-<span class="punctuation token">}</span></code></pre>
+<pre class="brush: js">var contexteAudio = new (window.AudioContext || window.webkitAudioContext)();
+var bouton = document.querySelector('button');
+var pre = document.querySelector('pre');
+var monScript = document.querySelector('script');
+
+pre.innerHTML = monScript.innerHTML;
+
+// Stéréo
+var canaux = 2;
+
+// Crée un tampon vide de deux secondes
+// au taux d'échantillonnage du AudioContext
+var compteurTrames = contexteAudio.sampleRate * 2.0;
+
+var myArrayBuffer = contexteAudio.createBuffer(2, compteurTrames, contexteAudio.sampleRate);
+
+bouton.onclick = function() {
+ // remplit le tampon avec du bruit blanc;
+ // valeurs aléatoires entre -1.0 et 1.0
+ for (var canal = 0; canal &lt; canaux; canal++) {
+ // crée le ArrayBuffer qui contient les données
+ var nowBuffering = myArrayBuffer.getChannelData(canal);
+ for (var i = 0; i &lt; compteurTrames; i++) {
+ // Math.random() est compris entre [0; 1.0]
+ // audio doit être compris entre [-1.0; 1.0]
+ nowBuffering[i] = Math.random() * 2 - 1;
+ }
+ }
+
+ // crée AudioBufferSourceNode.
+ // c'est AudioNode utilisé pour lire un AudioBuffer
+ var source = contexteAudio.createBufferSource();
+ // initialise le tampon du AudioBufferSourceNode
+ source.buffer = myArrayBuffer;
+ // connecte l'AudioBufferSourceNode avec la destination
+ // de façon à ce qu'on puisse entendre le son
+ source.connect(contexteAudio.destination);
+ // lance la lecture de la source
+ source.start();
+}</pre>
<div class="note">
-<p><strong>Note</strong>: Pour un exemple de <code>decodeAudioData</code>(), voir la page {{domxref("AudioContext.decodeAudioData")}}.</p>
+<p><strong>Note :</strong> Pour un exemple de <code>decodeAudioData</code>(), voir la page {{domxref("AudioContext.decodeAudioData")}}.</p>
</div>
<h2 id="Spécifications">Spécifications</h2>