blob: 91ac9e346e5c2210188d94e945e3a0aa343414c6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
---
title: AudioBufferSourceNode.buffer
slug: Web/API/AudioBufferSourceNode/buffer
translation_of: Web/API/AudioBufferSourceNode/buffer
browser-compat: api.AudioBufferSourceNode.buffer
---
{{APIRef("Web Audio API")}}
La propriété **`buffer`** de l'interface [`AudioBufferSourceNode`](/fr/docs/Web/API/AudioBufferSourceNode) donne la possibilité de lire un son en utilisant un objet [`AudioBuffer`](/fr/docs/Web/API/AudioBuffer) comme ressource audio.
Si la propriété `buffer` a la valeur `null`, le nœud génère un canal unique silencieux (chaque échantillon vaut `0`).
## Syntaxe
```js
AudioBufferSourceNode.buffer = soundBuffer;
```
### Valeur
Un objet [`AudioBuffer`](/fr/docs/Web/API/AudioBuffer) qui contient les données représentant le son que le nœud va lire.
## Exemple
> **Note :** Pour un exemple complet, voir [cette démonstration](https://mdn.github.io/webaudio-examples/audio-buffer/), ou [le code source correspondant](https://github.com/mdn/webaudio-examples/blob/master/audio-buffer/index.html).
```js
let AudioContext = window.AudioContext || window.webkitAudioContext;
let audioCtx;
// Stereo
let channels = 2;
function init() {
audioCtx = new AudioContext();
}
button.onclick = function() {
if(!audioCtx) {
init();
}
// On crée un tampon stéréo vide de deux secondes
// qui utilise l'échantillonage de AudioContext
let frameCount = audioCtx.sampleRate * 2.0;
let myArrayBuffer = audioCtx.createBuffer(channels, frameCount, audioCtx.sampleRate);
// On remplit le buffer avec du bruit blanc ;
// soit des valeurs entre -1.0 et 1.0
for (let channel = 0; channel < channels; channel++) {
// Voici le calcul du tableau réel qui contient
// les données
let nowBuffering = myArrayBuffer.getChannelData(channel);
for (let i = 0; i < frameCount; i++) {
// Math.random() donne une valeur sur [0; 1.0]
// audio doit être sur [-1.0; 1.0]
nowBuffering[i] = Math.random() * 2 - 1;
}
}
// On récupère un AudioBufferSourceNode.
// C'est l'objet AudioNode à utiliser pour lire
// un AudioBuffer
let source = audioCtx.createBufferSource();
// on passe le buffer avec AudioBufferSourceNode
source.buffer = myArrayBuffer;
// on connecte le nœud AudioBufferSourceNode à
// la destination afin d'entendre le son
source.connect(audioCtx.destination);
// on lance la lecture
source.start();
source.onended = () => {
console.log('Bruit blanc terminé');
}
}
```
## Spécifications
{{Specifications}}
## Compatibilité navigateurs
{{Compat}}
## Voir aussi
- [Utiliser l'API <i lang="en">Web Audio</i>](/fr/docs/Web/API/Web_Audio_API/Using_Web_Audio_API)
- [L'API <i lang="en">Web Audio</i>](/fr/docs/Web/API/Web_Audio_API)
|