BaseAudioContext.createPeriodicWave()

La méthode createPeriodicWave() de l'interface BaseAudioContext est utilisée pour créer une PeriodicWave (onde périodique), qui sert à définir une onde sinusoïdale 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 est false.

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 (a+bi)ei,(c+di)e2i,(f+gi)e3i\left(a+bi\right)e^{i} , \left(c+di\right)e^{2i} , \left(f+gi\right)e^{3i}     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

Spécification Statut Commentaire
Web Audio API
La définition de 'createPeriodicWave' dans cette spécification.
Version de travail

Compatibilité des navigateurs

Update compatibility data on GitHub
OrdinateurMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariWebview AndroidChrome pour AndroidFirefox pour AndroidOpera pour AndroidSafari sur iOSSamsung Internet
createPeriodicWaveChrome Support complet 59
Notes
Support complet 59
Notes
Notes Default values supported
Support complet 57
Support complet 10
Préfixée
Préfixée Nécessite l'utilisation d'un préfixe : webkit
Edge Support complet OuiFirefox Support complet 53
Notes
Support complet 53
Notes
Notes Originally implemented on AudioContext in Firefox 25.
IE Aucun support NonOpera Support complet 22
Support complet 22
Support complet 15
Préfixée
Préfixée Nécessite l'utilisation d'un préfixe : webkit
Safari Support complet 6
Préfixée
Support complet 6
Préfixée
Préfixée Nécessite l'utilisation d'un préfixe : webkit
WebView Android Support complet 59
Notes
Support complet 59
Notes
Notes Default values supported
Support complet 57
Support complet 4.4.3
Préfixée
Préfixée Nécessite l'utilisation d'un préfixe : webkit
Chrome Android Support complet 59
Notes
Support complet 59
Notes
Notes Default values supported
Support complet 57
Support complet 33
Préfixée
Préfixée Nécessite l'utilisation d'un préfixe : webkit
Firefox Android Support complet 53
Notes
Support complet 53
Notes
Notes Originally implemented on AudioContext in Firefox Android 26.
Opera Android Support complet 22
Support complet 22
Support complet 14
Préfixée
Préfixée Nécessite l'utilisation d'un préfixe : webkit
Safari iOS Aucun support NonSamsung Internet Android Support complet Oui
Possible to disable normalisationChrome Support complet OuiEdge Support complet OuiFirefox Aucun support NonIE Aucun support NonOpera ? Safari ? WebView Android Support complet OuiChrome Android Support complet OuiFirefox Android Aucun support NonOpera Android ? Safari iOS Aucun support NonSamsung Internet Android ?

Légende

Support complet  
Support complet
Aucun support  
Aucun support
Compatibilité inconnue  
Compatibilité inconnue
Voir les notes d'implémentation.
Voir les notes d'implémentation.
Cette fonctionnalité nécessite un préfixe particulier ou utilise un autre nom.
Cette fonctionnalité nécessite un préfixe particulier ou utilise un autre nom.

Voir aussi