Sto lavorando attraverso questo impressionante articolo: https://jackschaedler.github.io/circles-sines-signals/dft_introduction.htmlforme d'onda personalizzato in audio web API
voglio usare oggetto PeriodicWave del Web API Audio per implementare questa demo:
Tuttavia, quando ho creato un un'onda periodica con queste impostazioni:
var real = new Float32Array([0,0,1,0,1]);
var imag = new Float32Array(real.length);
var customWave = context.createPeriodicWave(real,imag);
osc.setPeriodicWave(customWave);
ho uscita un'onda che assomiglia a questo:
Ecco il codice completo: http://jsbin.com/zaqojavixo/4/edit Per vedere la forma d'onda, si prega di premere riprodurre il suono alcune volte.
Credo che questi dovrebbero corrispondere, per cui qui sono le mie domande:
- mi sto perdendo qualcosa di fondamentale sulla teoria qui o sto semplicemente di attuazione in modo errato? L'oggetto PeriodicWave dovrebbe fare la stessa cosa illustrata nell'articolo?
- Se sto prendendo l'approccio sbagliato, come potrei implementare questo diagramma nell'API Web Audio? Sono stato in grado di eguagliare di seguito collegando due diverse onde sinusoidali di frequenze diverse allo stesso nodo di guadagno - come è diverso dall'usare l'oggetto PeriodicWave?
- Sono nuovo a DSP e API Web Audio - qualsiasi lettura suggerita sarebbe apprezzata!
- In secondo luogo, nel mio esempio, devo premere il pulsante "Riproduci il suono" un paio di volte prima che i dati corretti vengano disegnati sulla tela: l'analizzatore sembra essere dietro l'oscillatore, anche se analyser.getFloatTimeDomainData() è chiamato dopo aver avviato l'oscillatore qualche idea su cosa sta succedendo qui?
Edit: Come notato nei commenti, il mio grafico è a testa in giù (sulla tela 0,0 è l'angolo in alto a sinistra).