Menggunakan Transformasi Fourier dengan API Audio Web
API Audio Web memberikan pengaturcara JavaScript akses mudah ke pemprosesan bunyi dan sintesis. Dalam artikel ini, kami akan menyinari cahaya pada pengayun tersuai, ciri-ciri API Audio Web yang kurang dikenali yang menjadikannya mudah untuk meletakkan transformasi Fourier untuk berfungsi untuk mensintesis kesan bunyi tersendiri dalam penyemak imbas.
- API Audio Web membolehkan pengaturcara JavaScript menggunakan pemprosesan bunyi dan sintesis, termasuk penggunaan pengayun tersuai dan transformasi Fourier untuk menghasilkan kesan bunyi yang unik dalam penyemak imbas.
- Transformasi Fourier adalah alat matematik yang digunakan untuk menguraikan isyarat kompleks ke dalam lengkung sinusoidal diskret frekuensi tambahan, menjadikannya sesuai untuk penjanaan bunyi yang realistik. Kaedah ini digunakan oleh piawaian mampatan audio seperti mp3.
- Pengayun tersuai dalam API Audio Web boleh digunakan untuk menentukan bentuk gelombang anda sendiri, menggunakan transformasi Fourier untuk menghasilkan bentuk gelombang. Ciri ini membolehkan sintesis nada kompleks seperti siren polis atau bunyi tanduk tersendiri.
- sintesis bunyi menggunakan transformasi Fourier dan pengayun tersuai dalam API Audio Web lebih fleksibel daripada bekerja dengan sampel audio, yang membolehkan pemaju sepenuhnya mengautomasikan kesan tersuai dan mensintesiskan nada kompleks.
API Audio Web membolehkan anda menyusun graf elemen audio untuk menghasilkan bunyi. Pengayun adalah satu elemen seperti itu - sumber bunyi yang menghasilkan isyarat audio tulen. Anda boleh menetapkan kekerapan dan jenisnya, yang boleh menjadi sinus, persegi, gergaji atau segitiga tetapi, seperti yang akan kita lihat, terdapat juga jenis tersuai yang kuat. Pertama, mari kita cuba pengayun standard. Kami hanya menetapkan kekerapannya kepada 440 Hz, yang pemuzik akan dikenali sebagai nota A4, dan kami memasukkan pemilih jenis untuk membolehkan anda mendengar perbezaan antara bentuk gelombang sinus, persegi, gergaji dan segitiga.
Lihat pengayun Audio Web Pen oleh Seb molines (@Clafou) di Codepen.Pengayun adat membolehkan anda menentukan bentuk gelombang anda sendiri sebagai ganti jenis terbina dalam ini, tetapi dengan sentuhan: mereka menggunakan transformasi Fourier untuk menghasilkan bentuk gelombang ini. Ini menjadikan mereka sesuai untuk penjanaan bunyi yang realistik.
Transformasi Fourier dengan Contoh
Transformasi Fourier adalah alat matematik yang digunakan oleh piawaian mampatan audio seperti MP3, di antara banyak aplikasi lain. Transformasi Fourier songsang mengurai isyarat ke dalam frekuensi konstituennya, sama seperti telinga manusia memproses getaran untuk melihat nada individu. Pada tahap yang tinggi, Transformasi Fourier mengeksploitasi fakta bahawa isyarat kompleks dapat diuraikan ke dalam lengkung sinusoidal diskret frekuensi tambahan. Ia berfungsi menggunakan jadual koefisien, masing -masing digunakan untuk pelbagai frekuensi asas. Semakin besar jadual, semakin dekat penghampiran. Tertarik? Halaman Wikipedia patut dilihat, dan termasuk animasi untuk membantu menggambarkan penguraian isyarat ke dalam lengkung sinus diskret. Tetapi bukannya menyelidiki teori, mari kita amalkan ini dengan membongkar bunyi yang berterusan yang mudah: tanduk udara.mensintesis tanduk
Untuk artikel ini, kami akan menggunakan rakaman siren dan tanduk polis ini. Spectrograph bunyi tanduk, yang dibuat menggunakan Audacity Editor Audio Open Source, ditunjukkan di sini.
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.
<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>
lihat pena adat pena: tanduk oleh sebi molin (@clafou) pada codepen.
Tidak betul -betul bunyi yang menenangkan, tetapi sangat dekat dengan bunyi yang direkodkan. Sudah tentu, sintesis bunyi jauh melebihi spektrum sahaja -khususnya, sampul surat adalah aspek yang sama pentingnya timbre.dari data isyarat ke jadual Fourier
Adalah luar biasa untuk mencipta pekali Fourier dengan tangan seperti yang kita lakukan (dan beberapa bunyi semudah bunyi tanduk kita yang hanya terdiri daripada partial harmonik, iaitu gandaan F). Biasanya, jadual Fourier dikira dengan memberi makan data isyarat sebenar ke dalam algoritma FFT (Fast Fourier Transform) songsang. Anda boleh menemui koefisien Fourier untuk pemilihan bunyi dalam repositori kromium, di antaranya adalah bunyi organ yang dimainkan di bawah:Lihat pengayun adat pen: organ oleh sebi molin (@clafou) pada codepen.
Perpustakaan Sumber Terbuka DSP.JS membolehkan anda mengira koefisien Fourier seperti data sampel anda sendiri. Kami sekarang akan menunjukkan ini untuk menghasilkan bentuk gelombang tertentu.pengayun frekuensi rendah: nada siren polis
Siren polis AS berayun antara frekuensi yang rendah dan tinggi. Kita boleh mencapai ini menggunakan API Audio Web dengan menghubungkan dua pengayun. Yang pertama (pengayun frekuensi rendah, atau LFO) memodulasi kekerapan kedua yang menghasilkan gelombang bunyi yang boleh didengar. Untuk membongkar perkara yang sebenar, seperti dahulu, kita mengambil spektrum bunyi siren polis dari rakaman yang sama.
Lihat fungsi pena bentuk pena untuk modulasi nada siren oleh sebi molin (@clafou) pada codepen.
Seterusnya, kami menggunakan dsp.js untuk mengira pekali Fourier dari data isyarat ini. Kami memperoleh array sebenar dan imag yang kami gunakan untuk memulakan LFO kami.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.
<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>
lihat pen siren oleh sebi molin (@clafou) pada codepen.
Untuk lebih banyak realisme, kami juga boleh menggunakan bentuk gelombang tersuai kepada pengayun kedua, seperti yang telah kami tunjukkan dengan bunyi tanduk.Kesimpulan
Dengan penggunaan Fourier Transforms mereka, pengayun tersuai memberikan pemaju audio web cara mudah untuk mensintesis nada kompleks dan untuk mengautomasikan sepenuhnya kesan tersuai seperti bentuk gelombang siren yang telah kami tunjukkan. Sintesis bunyi jauh lebih fleksibel daripada bekerja dengan sampel audio. Sebagai contoh, mudah untuk membina kesan siren ini untuk menambah lebih banyak kesan, seperti yang saya lakukan untuk menambah peralihan Doppler dalam aplikasi mudah alih ini. Spec "Bolehkah Saya Menggunakan" menunjukkan bahawa API Audio Web menikmati sokongan penyemak imbas yang luas, kecuali IE. Tidak semua penyemak imbas terkini dengan standard W3C terkini, tetapi patch monyet tersedia untuk membantu menulis kod silang penyemak imbas. Android L akan menambah sokongan Audio Audio Web ke WebView, yang telah dilakukan oleh iOS sejak versi 6. Sekarang adalah masa yang tepat untuk mula bereksperimen!Soalan Lazim (Soalan Lazim) Mengenai Menggunakan Transformasi Fourier Dengan Web Audio API
Apakah API Audio Web dan bagaimana ia berfungsi? Ia membolehkan pemaju memilih sumber audio, menambah kesan kepada audio, membuat visualisasi audio, menggunakan kesan spatial (seperti panning) dan banyak lagi. Ia berfungsi dengan mewujudkan konteks audio dari mana pelbagai nod audio boleh dibuat dan dihubungkan bersama untuk membentuk graf penghalaan audio. Setiap nod melakukan fungsi audio tertentu seperti menghasilkan bunyi, perubahan kelantangan, atau menggunakan kesan audio.
Bagaimanakah transformasi Fourier berfungsi dalam API Audio Web? Dalam konteks API Audio Web, ia digunakan untuk menganalisis frekuensi yang terdapat dalam isyarat audio. Ini dilakukan menggunakan antara muka Analysernode, yang menyediakan maklumat analisis kekerapan masa nyata dan masa domain. Transformasi Fourier digunakan untuk menukar data domain masa ke dalam data domain frekuensi, yang kemudiannya boleh digunakan untuk pelbagai tujuan seperti membuat visualisasi audio. 🎜>
Harta FFTSize dalam API Audio Web digunakan untuk menetapkan saiz transformasi Fourier Fast (FFT) untuk digunakan untuk menentukan domain frekuensi. Ia adalah kuasa dua nilai yang menentukan bilangan sampel yang akan digunakan semasa melakukan transformasi Fourier. Semakin tinggi nilai, tong kekerapan lebih banyak ada dan lebih terperinci data kekerapan akan. Walau bagaimanapun, nilai yang lebih tinggi juga bermakna lebih banyak kuasa pengiraan diperlukan.Bagaimana saya boleh membuat visualisasi audio menggunakan API audio web?
dan kemudian menggunakan data itu untuk membuat representasi visual. Ini biasanya dilakukan menggunakan antara muka Analysernode, yang menyediakan maklumat analisis kekerapan masa nyata dan masa domain. Data ini kemudiannya boleh digunakan untuk membuat visualisasi seperti graf gelombang atau graf spektrum frekuensi. Kaedah khusus untuk membuat visualisasi bergantung kepada jenis visualisasi yang anda ingin buat dan perpustakaan atau alat yang anda gunakan untuk membuat grafik. ? Ini termasuk Gainnode untuk menukar jumlah, Biquadfilternode untuk memohon pelbagai kesan penapis, Convolvernode untuk menerapkan kesan konvolusi seperti reverb, dan banyak lagi. Nod ini boleh dibuat dari konteks audio dan kemudian disambungkan dalam graf penghalaan audio untuk menggunakan kesan yang dikehendaki ke audio. API Audio Web biasanya digunakan untuk pelbagai tujuan dalam aplikasi web. Ini termasuk bermain dan mengawal audio, menambah kesan bunyi ke permainan, mewujudkan visualisasi audio, menggunakan kesan spatial untuk audio untuk aplikasi realiti maya, dan banyak lagi. Ia menyediakan cara yang kuat dan fleksibel untuk bekerja dengan audio dalam aplikasi web.
Bagaimana saya boleh mengawal main balik audio menggunakan API Audio Web? Ini termasuk keupayaan untuk memulakan dan menghentikan audio, menyesuaikan kadar main balik, dan mencari bahagian -bahagian yang berbeza dari audio. Ini biasanya dilakukan menggunakan antara muka audioBuffersourcenode, yang mewakili sumber audio yang terdiri daripada data audio dalam memori. Kuat dan fleksibel, ia mempunyai beberapa batasan. Sebagai contoh, ia memerlukan pelayar moden yang menyokong API, dan ia boleh menjadi kompleks untuk digunakan untuk tugas pemprosesan audio yang lebih maju. Di samping itu, kerana ia adalah API peringkat tinggi, ia mungkin tidak memberikan tahap kawalan yang diperlukan untuk aplikasi tertentu berbanding dengan API peringkat rendah.
Ya, API Audio Web boleh digunakan untuk merakam audio, walaupun ini bukan tujuan utamanya. Ini biasanya dilakukan menggunakan antara muka MediaStreMeAudioSourcenode, yang mewakili sumber audio yang terdiri daripada aliran media (seperti dari mikrofon atau peranti input audio lain). 🎜>Atas ialah kandungan terperinci Menggunakan Transformasi Fourier dengan API Audio Web. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Soalan dan penyelesaian yang sering ditanya untuk percetakan tiket kertas terma depan dalam pembangunan front-end, percetakan tiket adalah keperluan umum. Walau bagaimanapun, banyak pemaju sedang melaksanakan ...

JavaScript adalah asas kepada pembangunan web moden, dan fungsi utamanya termasuk pengaturcaraan yang didorong oleh peristiwa, penjanaan kandungan dinamik dan pengaturcaraan tak segerak. 1) Pengaturcaraan yang didorong oleh peristiwa membolehkan laman web berubah secara dinamik mengikut operasi pengguna. 2) Penjanaan kandungan dinamik membolehkan kandungan halaman diselaraskan mengikut syarat. 3) Pengaturcaraan Asynchronous memastikan bahawa antara muka pengguna tidak disekat. JavaScript digunakan secara meluas dalam interaksi web, aplikasi satu halaman dan pembangunan sisi pelayan, sangat meningkatkan fleksibiliti pengalaman pengguna dan pembangunan silang platform.

Tidak ada gaji mutlak untuk pemaju Python dan JavaScript, bergantung kepada kemahiran dan keperluan industri. 1. Python boleh dibayar lebih banyak dalam sains data dan pembelajaran mesin. 2. JavaScript mempunyai permintaan yang besar dalam perkembangan depan dan stack penuh, dan gajinya juga cukup besar. 3. Faktor mempengaruhi termasuk pengalaman, lokasi geografi, saiz syarikat dan kemahiran khusus.

Bagaimana cara menggabungkan elemen array dengan ID yang sama ke dalam satu objek dalam JavaScript? Semasa memproses data, kita sering menghadapi keperluan untuk mempunyai id yang sama ...

Pembelajaran JavaScript tidak sukar, tetapi ia mencabar. 1) Memahami konsep asas seperti pembolehubah, jenis data, fungsi, dan sebagainya. 2) Pengaturcaraan asynchronous tuan dan melaksanakannya melalui gelung acara. 3) Gunakan operasi DOM dan berjanji untuk mengendalikan permintaan tak segerak. 4) Elakkan kesilapan biasa dan gunakan teknik debugging. 5) Mengoptimumkan prestasi dan mengikuti amalan terbaik.

Perbincangan mengenai realisasi kesan animasi tatal dan elemen Parallax dalam artikel ini akan meneroka bagaimana untuk mencapai yang serupa dengan laman web rasmi Shiseido (https://www.shiseido.co.jp/sb/wonderland/) ... ...

Trend terkini dalam JavaScript termasuk kebangkitan TypeScript, populariti kerangka dan perpustakaan moden, dan penerapan webassembly. Prospek masa depan meliputi sistem jenis yang lebih berkuasa, pembangunan JavaScript, pengembangan kecerdasan buatan dan pembelajaran mesin, dan potensi pengkomputeran IoT dan kelebihan.

Perbincangan mendalam mengenai punca-punca utama perbezaan dalam output konsol.log. Artikel ini akan menganalisis perbezaan hasil output fungsi Console.log dalam sekeping kod dan menerangkan sebab -sebab di belakangnya. � ...
