BaseAudioContext.createPeriodicWave()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.
La méthode createPeriodicWave()
de l'interface BaseAudioContext
est utilisée pour créer une PeriodicWave
(onde périodique), qui sert à définir une forme d'onde périodique qui peut être utilisée pour modeler la sortie d'un OscillatorNode
.
Syntaxe
var onde = AudioContext.createPeriodicWave(réel, imag[, constraints]);
Retour
Un PeriodicWave
.
Paramètres
réel
-
Un tableau de termes cosinus (traditionnellement les termes A).
imag
-
Un tableau de termes sinus (traditionnellement les termes B).
contraintes
Facultatif-
Un objet dictionnaire spécifiant si la normalisation doit être désactivée (si non spécifié, la normalisation est activée par défaut). Il accepte une propriété :
disableNormalization
: si réglé àtrue
, la normalisation est désactivée pour l'onde périodique. Sa valeur par défaut estfalse
.
Note : Si normalisée, l'onde résultante aura une valeur absolue de sommet égale à 1.
Exemple
L'exemple suivant illustre un usage simple de createPeriodicWave()
, pour créer un objet PeriodicWave
contenant une simple courbe de sinus.
var réel = new Float32Array(2);
var imag = new Float32Array(2);
var contexteAudio = new AudioContext();
var oscillateur = contexteAudio.createOscillator();
réel[0] = 0;
imag[0] = 0;
réel[1] = 1;
imag[1] = 0;
var onde = contexteAudio.createPeriodicWave(réel, imag, {
disableNormalization: true,
});
oscillateur.setPeriodicWave(wave);
oscillateur.connect(contexteAudio.destination);
oscillateur.start();
oscillateur.stop(2);
Cela fonctionne car un son n'ayant qu'un unique harmonique est par définition une onde sinusoïdale.
Ici, nous créons une PeriodicWave
avec deux valeurs. La première est le décalage DC, qui est la valeur à la quelle l'ocillateur démarre. 0 est une bonne valeur de départ ici car nous voulons commencer la courbe au milieu de l'intervalle [-1.0; 1.0].
La seconde valeur et les suivantes sont les composantes de sinus et de cosinus. Vous pouvez les voir comme le résultat d'une transformation de Fourier, où l'on obtient les valeurs du domaine de fréquence à partir de la valeur du domaine de temps. Ici, avec createPeriodicWave()
, vous spécifiez les fréquences, et le navigateur calcule une transformation inverse de Fourier pour obtenir un tampon de domaine de temps pour la fréquence de l'oscillateur. Ici, nous définissons seulement un composant au volume maximal (1.0) sur l'harmonique fondamentale, ainsi on obtient une courbe sinusoïdale.
Les coefficients de la transformation de Fourier doivent être données dans un ordre croissant (c'est-à-dire etc) et peuvent être positifs ou négatifs. Une méthode simple pour obtenir manuellement de tels coefficients (bien qu'elle ne soit la meilleure) est d'utiliser une calculateur graphique.
Spécifications
Specification |
---|
Web Audio API # dom-baseaudiocontext-createperiodicwave |
Compatibilité des navigateurs
BCD tables only load in the browser