javascript:electronic-music-tools:1.20_fiddling_with_the_filter
https://live.codecircle.com/d/rjbkHJarW3usLZiXo
var contexte_audio = window.AudioContext || window.webkitAudioContext; var notes = { a: 261.63, // C4 z: 293.66, // D4 e: 329.63, // E4 r: 349.23, // F4 t: 392.00, // G4 y: 440.00, // A4 u: 493.88, // B4 q: 523.25, // C5 s: 587.33, // D5 d: 659.25, // E5 f: 698.46, // F5 g: 783.99, // G5 h: 880.00, // A5 j: 987.77, // B5 }; var contexte = new contexte_audio(); var oscillateur = contexte.createOscillator(); // type le plus riche d'oscillateur (moins qu'un noise mais le plus riche qui soit harmonique) oscillateur.type = 'sawtooth'; var filtre = contexte.createBiquadFilter(); // par défaut, low-pass filter, filtre les hautes fréquences // par défaut, cutoff = 100 filtre.frequency.value = 200; oscillateur.connect( filtre ); filtre.connect( contexte.destination ); oscillateur.start(); // on écoute les mouvement souris dans la fenêtre document.body.addEventListener('mousemove', changer_frequence_oscillateur, false); function changer_frequence_oscillateur( frequence ) { /* change la fréquence de l'oscillateur */ oscillateur.frequency.value = frequence; } function changer_q_filtre ( q ) { // Q, which is the emphasis on the filter, or the resonance is another way of referring to it. So filter.Q.value, capital Q, equals mouse y, let's just put mouse y straight into it. This might be pretty gnarly because the key probably doesn't want to go that high. filtre.Q.value = q; } function changer_frequence_filtre( frequence ) { /* change la fréquence de l'oscillateur en fonction de la position de la souris dans la fenêtre (verticalement) */ filtre.frequency.value = frequence; } function mouvement_souris ( evenement ) { changer_frequence_filtre( evenement.clientY * 10 ); changer_q_filtre( evenement.clientX / 10 ); } document.addEventListener( 'mousemove', mouvement_souris, false ); document.addEventListener( 'keyup', function ( evenement ) { // on récupère la touche qui a été relâchée var touche = evenement.key; // on essaye de changer de note sur la base de la touche try { changer_frequence_oscillateur( notes[ touche ] ); } catch (e) {} }, false);
[lien sketch](https://live.codecircle.com/d/B8xQaESFPA2BXw2zE) [doc biquadfilter](https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode/type)
javascript/electronic-music-tools/1.20_fiddling_with_the_filter.txt · Last modified: 2017/07/19 22:10 by leo