Les plats clés
- L'API audio Web permet aux programmeurs JavaScript d'utiliser le traitement sonore et la synthèse, y compris l'utilisation d'oscillateurs personnalisés et de transformations de Fourier pour créer des effets sonores uniques dans le navigateur.
- Les transformations de Fourier sont un outil mathématique utilisé pour décomposer un signal complexe en courbes sinusoïdales discrètes de fréquences incrémentielles, ce qui le rend idéal pour une génération de son réaliste. Cette méthode est utilisée par des normes de compression audio telles que MP3.
- Les oscillateurs personnalisés de l'API audio Web peuvent être utilisés pour définir vos propres formes d'onde, en utilisant Fourier Transforts pour générer la forme d'onde. Cette fonctionnalité permet la synthèse de tons complexes comme une sirène de police ou un son de cor distinctif.
- La synthèse du son utilisant des transformations de Fourier et des oscillateurs personnalisés dans l'API audio Web est plus flexible que de travailler avec des échantillons audio, permettant aux développeurs d'automatiser complètement les effets personnalisés et de synthétiser des tons complexes.
Oscillateurs audio Web
L'API audio Web vous permet de composer un graphique d'éléments audio pour produire du son. Un oscillateur est un tel élément - une source sonore qui génère un signal audio pur. Vous pouvez définir sa fréquence et son type, qui peut être sinusoïdal, carré, en dents de scie ou en triangle, mais, comme nous sommes sur le point de le voir, il existe également un type personnalisé puissant. Tout d'abord, essayons un oscillateur standard. Nous définissons simplement sa fréquence à 440 Hz, que les musiciens reconnaîtront comme la note A4, et nous incluons un sélecteur de type pour vous permettre d'entendre la différence entre les formes d'onde sinus, carré, en dents de scie et triangle.Voir l'oscillateur audio Web Pen par Seb Molines (@Clafou) sur Codepen.
Les oscillateurs personnalisés vous permettent de définir vos propres formes d'onde à la place de ces types intégrés, mais avec une torsion: ils utilisent des transformations de Fourier pour générer cette forme d'onde. Cela les rend parfaitement adaptés à une génération de son réaliste.Fourier se transforme par l'exemple
La transformée de Fourier est l'outil mathématique utilisé par les normes de compression audio telles que MP3, parmi de nombreuses autres applications. La transformée de Fourier inverse décompose un signal en ses fréquences constituantes, tout comme les vibrations de l'oreille humaine pour percevoir les tons individuels. À un niveau élevé, les transforts de Fourier exploitent le fait qu'un signal complexe peut être décomposé en courbes sinusoïdales discrètes de fréquences incrémentielles. Il fonctionne à l'aide de tableaux de coefficients, chacun appliqué à un multiple de fréquence fondamentale. Plus les tables sont grandes, plus l'approximation est proche. Intrigué? La page Wikipedia vaut le coup et comprend des animations pour aider à visualiser la décomposition d'un signal en courbes sinusoïdales discrètes. Mais plutôt que de plonger dans la théorie, mettons cela en pratique en déconstruisant un simple son continu: un cor à air.synthétisant une corne
Pour cet article, nous utiliserons cet enregistrement d'une sirène de police et d'un cor. Un spectrographe du son de cor, créé à l'aide de l'auditeur audio open source, est montré ici.
The real parameter represents an array of cosine terms (traditionally the A terms). In audio terminology, the first element (index 0) is the DC-offset of the periodic waveform and is usually set to zero. The second element (index 1) represents the fundamental frequency. The third element represents the first overtone, and so on.Il y a aussi un imagination Paramètre que nous pouvons ignorer car les phases ne sont pas pertinentes pour cet exemple. Créons donc un tableau de ces coefficients (les estimant à 0,4, 0,4, 1, 1, 1, 0,3, 0,7, 0,6, 0,5, 0,9, 0,8 basé sur la luminosité des lignes du spectrographe à partir du bas). Nous créons ensuite un oscillateur personnalisé à partir de ce tableau et synthétins le son résultant.
<span>var audioContext = new AudioContext(); </span><span>var osc = audioContext.createOscillator(); </span> <span>var real = new Float32Array([0,0.4,0.4,1,1,1,0.3,0.7,0.6,0.5,0.9,0.8]); </span> <span>var imag = new Float32Array(real.length); </span><span>var hornTable = audioContext.createPeriodicWave(real, imag); </span> osc <span>= audioContext.createOscillator(); </span>osc<span>.setPeriodicWave(hornTable); </span>osc<span>.frequency.value = 160; </span>osc<span>.connect(audioContext.destination); </span>osc<span>.start(0);</span>
Voir l'oscillateur personnalisé du stylo: Horn par Seb Molines (@Clafou) sur Codepen.
Pas exactement un son apaisant, mais étonnamment près du son enregistré. Bien sûr, la synthèse sonore va bien au-delà du spectre seule - en particulier, les enveloppes sont un aspect tout aussi important du timbre.des données du signal aux tables de Fourier
Il est inhabituel de créer des coefficients de Fourier à la main comme nous l'avons fait (et peu de sons sont aussi simples que notre son de cor qui n'est composé que de partiels harmoniques, c'est-à-dire des multiples de F). En règle générale, les tables de Fourier sont calculées en alimentant les données du signal réel dans un algorithme inverse FFT (Fast Fourier Transform). Vous pouvez trouver des coefficients de Fourier pour une sélection de sons dans le référentiel de chrome, parmi lequel est le son d'orgue joué ci-dessous:Voir l'oscillateur personnalisé du stylo: organe par Seb Molines (@clafou) sur codepen.
La bibliothèque open source DSP.js vous permet de calculer ces coefficients de Fourier à partir de vos propres exemples de données. Nous allons maintenant le démontrer pour produire une forme d'onde spécifique.Oscillateur à basse fréquence: Tone de sirène de police
Une sirène de la police américaine oscille entre une basse et une fréquence élevée. Nous pouvons y parvenir en utilisant l'API Web Web en connectant deux oscillateurs. La première (un oscillateur à basse fréquence, ou LFO) module la fréquence de la seconde qui produit elle-même les ondes sonores audibles. Pour déconstruire la vraie chose, tout comme auparavant, nous prenons le spectrographe d'un son de sirène de police du même enregistrement.
Voir la fonction de forme d'onde de Pen pour une modulation de tonalité de sirène par Seb Molines (@Clafou) sur Codepen.
Ensuite, nous utilisons DSP.js pour calculer les coefficients de Fourier à partir de ces données de signal. Nous obtenons les tableaux réels et d'imag que nous utilisons ensuite pour initialiser notre LFO.The real parameter represents an array of cosine terms (traditionally the A terms). In audio terminology, the first element (index 0) is the DC-offset of the periodic waveform and is usually set to zero. The second element (index 1) represents the fundamental frequency. The third element represents the first overtone, and so on.Enfin, nous créons le deuxième oscillateur et connectons le LFO à sa fréquence, via un nœud de gain pour amplifier la sortie du LFO. Notre spectrographe montre que la forme d'onde dure environ 380 ms, nous avons donc réglé la fréquence du LFO à 1 / 0,380. Cela nous montre également que le ton fondamental de la sirène varie d'un minimum d'environ 750 Hz à un sommet d'environ 1650 Hz (une médiane de 1200 Hz ± 450 Hz), nous avons donc fixé la fréquence de l'oscillateur à 1200 et le gain du LFO à 450. Nous pouvons maintenant commencer les deux oscillateurs pour entendre notre sirène de police.
<span>var audioContext = new AudioContext(); </span><span>var osc = audioContext.createOscillator(); </span> <span>var real = new Float32Array([0,0.4,0.4,1,1,1,0.3,0.7,0.6,0.5,0.9,0.8]); </span> <span>var imag = new Float32Array(real.length); </span><span>var hornTable = audioContext.createPeriodicWave(real, imag); </span> osc <span>= audioContext.createOscillator(); </span>osc<span>.setPeriodicWave(hornTable); </span>osc<span>.frequency.value = 160; </span>osc<span>.connect(audioContext.destination); </span>osc<span>.start(0);</span>
Voir la sirène Pen par Seb Molines (@Clafou) sur Codepen.
Pour plus de réalisme, nous pourrions également appliquer une forme d'onde personnalisée au deuxième oscillateur, comme nous l'avons montré avec le son de cor.Conclusion
Avec leur utilisation de Fourier Transforts, les oscillateurs personnalisés offrent aux développeurs audio Web un moyen facile de synthétiser des tons complexes et d'automatiser entièrement les effets personnalisés tels que la forme d'onde de la sirène que nous avons démontrée. La synthèse sonore est beaucoup plus flexible que de travailler avec des échantillons audio. Par exemple, il est facile de construire sur cet effet de sirène pour ajouter plus d'effets, comme je l'ai fait pour ajouter un décalage Doppler dans cette application mobile. La spécification «puis-je utiliser» montre que l'API audio Web profite d'un large support de navigateur, à l'exception de IE. Tous les navigateurs ne sont pas à jour avec la dernière norme W3C, mais un correctif de singe est disponible pour aider à écrire du code cross-browser. Android L ajoutera une prise en charge de l'API audio Web au WebView, ce que iOS fait depuis la version 6. C'est le moment idéal pour commencer à expérimenter!Questions fréquemment posées (FAQ) sur l'utilisation de transformations de Fourier avec API audio Web
Quelle est l'API audio Web et comment fonctionne-t-elle?
L'API audio Web est une API JavaScript de haut niveau pour le traitement et la synthèse de l'audio dans les applications Web. Il permet aux développeurs de choisir des sources audio, d'ajouter des effets à l'audio, de créer des visualisations audio, d'appliquer des effets spatiaux (tels que le panoramique) et bien plus encore. Il fonctionne en créant un contexte audio à partir de laquelle une variété de nœuds audio peuvent être créés et connectés ensemble pour former un graphique de routage audio. Chaque nœud remplit une fonction audio spécifique telle que la production de son, la modification du volume ou l'application d'un effet audio.
Comment fonctionne la transformée de Fourier dans l'API audio Web?
La transformée de Fourier est une méthode mathématique qui transforme une fonction du temps, un signal, en fonction de la fréquence. Dans le contexte de l'API audio Web, il est utilisé pour analyser les fréquences présentes dans un signal audio. Cela se fait à l'aide de l'interface AnalyserNode, qui fournit des informations d'analyse en fréquence et du domaine temporel en temps réel. La transformée de Fourier est utilisée pour convertir les données du domaine temporel en données de domaine de fréquence, qui peuvent ensuite être utilisées à diverses fins telles que la création de visualisations audio.
Qu'est-ce que la propriété FFTSize dans l'API audio Web?
La propriété FFTSize de l'API audio Web est utilisée pour définir la taille de la transformée de Fourier rapide (FFT) à utiliser pour déterminer le domaine de fréquence. Il s'agit d'une puissance de deux valeur qui détermine le nombre d'échantillons qui seront utilisés lors de l'exécution de la transformée de Fourier. Plus la valeur est élevée, plus il y a de bacs de fréquence et plus les données de fréquence seront détaillées. Cependant, une valeur plus élevée signifie également plus de puissance de calcul. puis utiliser ces données pour créer des représentations visuelles. Cela se fait généralement à l'aide de l'interface Analysernode, qui fournit des informations d'analyse en fréquence et du domaine temporel en temps réel. Ces données peuvent ensuite être utilisées pour créer des visualisations telles que des graphiques de forme d'onde ou des graphiques de spectre de fréquence. La méthode spécifique de création de la visualisation dépendra du type de visualisation que vous souhaitez créer et de la bibliothèque ou de l'outil que vous utilisez pour créer les graphiques.
Comment puis-je utiliser l'API audio Web pour appliquer des effets à l'audio ?
L'API audio Web fournit une variété de nœuds qui peuvent être utilisés pour appliquer des effets à l'audio. Ceux-ci incluent Gainnode pour la modification du volume, BiquadFilternODODOD pour appliquer une variété d'effets de filtre, Convolvernode pour appliquer des effets de convolution tels que la réverbération, et bien d'autres. Ces nœuds peuvent être créés à partir du contexte audio, puis connectés dans un graphique de routage audio pour appliquer les effets souhaités à l'audio.
Quelles sont les utilisations courantes de l'API audio Web?
Le L'API audio Web est couramment utilisée à diverses fins dans les applications Web. Il s'agit notamment de jouer et de contrôler l'audio, d'ajouter des effets sonores aux jeux, de créer des visualisations audio, d'appliquer des effets spatiaux à l'audio pour les applications de réalité virtuelle, et bien plus encore. Il fournit un moyen puissant et flexible de travailler avec l'audio dans les applications Web.
Comment puis-je contrôler la lecture de l'audio à l'aide de l'API Web Audio?
L'API Web Audio fournit plusieurs méthodes pour contrôler la lecture de l'audio. Cela comprend la possibilité de démarrer et d'arrêter l'audio, d'ajuster le taux de lecture et de rechercher différentes parties de l'audio. Cela se fait généralement à l'aide de l'interface AudiobuffersourCenode, qui représente une source audio composée de données audio en mémoire.
Quelles sont les limites de l'API audio Web?
Pendant que l'API audio Web est puissant et flexible, il a certaines limites. Par exemple, il nécessite un navigateur moderne qui prend en charge l'API, et il peut être complexe à utiliser pour des tâches de traitement audio plus avancées. De plus, comme il s'agit d'une API de haut niveau, elle peut ne pas fournir le niveau de contrôle nécessaire pour certaines applications par rapport aux API de niveau inférieur.
Puis-je utiliser l'API audio Web pour enregistrer l'audio?
Oui, l'API audio Web peut être utilisé pour enregistrer l'audio, bien que ce ne soit pas son objectif principal. Cela se fait généralement à l'aide de l'interface MediaStreamaudiosourCenode, qui représente une source audio composée d'un flux multimédia (comme à partir d'un microphone ou d'un autre appareil d'entrée audio).
Comment puis-je en savoir plus sur l'API audio Web?
Il existe de nombreuses ressources disponibles pour en savoir plus sur l'API audio Web. Le Mozilla Developer Network (MDN) fournit une documentation complète sur l'API, y compris les guides et les tutoriels. Il existe également de nombreux tutoriels et cours en ligne disponibles sur des sites Web comme CodeCademy, Udemy et Coursera. De plus, plusieurs livres sont disponibles sur le sujet, tels que «Web Audio API» de Boris Smus.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Les choix de Python et JavaScript dans les environnements de développement sont importants. 1) L'environnement de développement de Python comprend Pycharm, Jupyternotebook et Anaconda, qui conviennent à la science des données et au prototypage rapide. 2) L'environnement de développement de JavaScript comprend Node.js, VScode et WebPack, qui conviennent au développement frontal et back-end. Le choix des bons outils en fonction des besoins du projet peut améliorer l'efficacité du développement et le taux de réussite du projet.

Oui, le noyau du moteur de JavaScript est écrit en C. 1) Le langage C fournit des performances efficaces et un contrôle sous-jacent, qui convient au développement du moteur JavaScript. 2) Prendre le moteur V8 comme exemple, son noyau est écrit en C, combinant l'efficacité et les caractéristiques orientées objet de C. 3) Le principe de travail du moteur JavaScript comprend l'analyse, la compilation et l'exécution, et le langage C joue un rôle clé dans ces processus.

JavaScript est au cœur des sites Web modernes car il améliore l'interactivité et la dynamicité des pages Web. 1) Il permet de modifier le contenu sans rafraîchir la page, 2) manipuler les pages Web via Domapi, 3) prendre en charge les effets interactifs complexes tels que l'animation et le glisser-déposer, 4) Optimiser les performances et les meilleures pratiques pour améliorer l'expérience utilisateur.

C et JavaScript réalisent l'interopérabilité via WebAssembly. 1) Le code C est compilé dans le module WebAssembly et introduit dans un environnement JavaScript pour améliorer la puissance de calcul. 2) Dans le développement de jeux, C gère les moteurs de physique et le rendu graphique, et JavaScript est responsable de la logique du jeu et de l'interface utilisateur.

JavaScript est largement utilisé dans les sites Web, les applications mobiles, les applications de bureau et la programmation côté serveur. 1) Dans le développement de sites Web, JavaScript exploite DOM avec HTML et CSS pour réaliser des effets dynamiques et prend en charge des cadres tels que JQuery et React. 2) Grâce à la réactnative et ionique, JavaScript est utilisé pour développer des applications mobiles multiplateformes. 3) Le cadre électronique permet à JavaScript de créer des applications de bureau. 4) Node.js permet à JavaScript d'exécuter le côté du serveur et prend en charge les demandes simultanées élevées.

Python est plus adapté à la science et à l'automatisation des données, tandis que JavaScript est plus adapté au développement frontal et complet. 1. Python fonctionne bien dans la science des données et l'apprentissage automatique, en utilisant des bibliothèques telles que Numpy et Pandas pour le traitement et la modélisation des données. 2. Python est concis et efficace dans l'automatisation et les scripts. 3. JavaScript est indispensable dans le développement frontal et est utilisé pour créer des pages Web dynamiques et des applications à une seule page. 4. JavaScript joue un rôle dans le développement back-end via Node.js et prend en charge le développement complet de la pile.

C et C jouent un rôle essentiel dans le moteur JavaScript, principalement utilisé pour implémenter des interprètes et des compilateurs JIT. 1) C est utilisé pour analyser le code source JavaScript et générer une arborescence de syntaxe abstraite. 2) C est responsable de la génération et de l'exécution de bytecode. 3) C met en œuvre le compilateur JIT, optimise et compile le code de point chaud à l'exécution et améliore considérablement l'efficacité d'exécution de JavaScript.

L'application de JavaScript dans le monde réel comprend un développement frontal et back-end. 1) Afficher les applications frontales en créant une application de liste TODO, impliquant les opérations DOM et le traitement des événements. 2) Construisez RestulAPI via Node.js et Express pour démontrer les applications back-end.


Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

Adaptateur de serveur SAP NetWeaver pour Eclipse
Intégrez Eclipse au serveur d'applications SAP NetWeaver.

ZendStudio 13.5.1 Mac
Puissant environnement de développement intégré PHP

MantisBT
Mantis est un outil Web de suivi des défauts facile à déployer, conçu pour faciliter le suivi des défauts des produits. Cela nécessite PHP, MySQL et un serveur Web. Découvrez nos services de démonstration et d'hébergement.

PhpStorm version Mac
Le dernier (2018.2.1) outil de développement intégré PHP professionnel
