PeriodicWave

L'objet PeriodicWave permet de définir une forme d'onde personnalisée, pouvant être utilisée comme sortie d'un OscillatorNode.

PeriodicWave n'a ni entrée ni sortie ; elle doit être créée avec AudioContext.createPeriodicWave() et être assignée à un OscillatorNode avec OscillatorNode.setPeriodicWave().

Constructeur

PeriodicWave.PeriodicWave()
Crée une PeriodicWave (onde périodique) avec toutes les valeurs optionelles mises par défaut. Pour établir des valeurs personnalisées, il faut utiliser le constructeur AudioContext.createPeriodicWave().

Propriétés

Aucune; par ailleurs, PeriodicWave n'hérite d'aucune propriété.

Méthodes

Aucune; par ailleurs, PeriodicWave n'hérite d'aucune méthode.

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

Specification Status Comment
Web Audio API
La définition de 'PeriodicWave' 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
PeriodicWaveChrome Support complet 14Edge Support complet ≤18Firefox Support complet 25IE Aucun support NonOpera Support complet 15Safari Support complet 6WebView Android Support complet OuiChrome Android Support complet 18Firefox Android Support complet 26Opera Android Support complet 14Safari iOS Support complet OuiSamsung Internet Android Support complet 1.0
PeriodicWave() constructorChrome Support complet 55
Notes
Support complet 55
Notes
Notes Before Chrome 59, the default values were not supported.
Edge Support complet ≤79Firefox Support complet 53IE Aucun support NonOpera Support complet 42Safari ? WebView Android Support complet 55
Notes
Support complet 55
Notes
Notes Before Chrome 59, the default values were not supported.
Chrome Android Support complet 55
Notes
Support complet 55
Notes
Notes Before Chrome 59, the default values were not supported.
Firefox Android Support complet 53Opera Android Support complet 42Safari iOS ? Samsung Internet Android Support complet 6.0
Notes
Support complet 6.0
Notes
Notes Before Samsung Internet 7.0, the default values were not supported.

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.

Voir aussi