Live webaudio-invoer ingeschakeld

Chris Wilson
Chris Wilson

Ik ben erg enthousiast over een nieuwe functie die in de Chrome Canary-build van gisteren (23.0.1270.0) is opgenomen: de mogelijkheid om toegang met lage latentie te krijgen tot live audio via een microfoon of andere audio-invoer op OSX! (Dit is nog niet ingeschakeld op Windows, maar maak je geen zorgen, we werken eraan!)

Om dit in te schakelen, moet je naar chrome://flags/ gaan en het item "Web Audio Input" onderaan inschakelen, en de browser opnieuw starten; nu ben je klaar om te rollen!

U kunt live audio-invoer testen door het spectrum van uw invoer te bekijken met behulp van de live-invoervisualizer .

Voor de Web Audio-codeerders onder u: hier leest u hoe u de audio-invoerstroom kunt aanvragen en een knooppunt kunt krijgen om verbinding te maken met elke gewenste verwerkingsgrafiek!

// success callback when requesting audio input stream
function gotStream(stream) {
    window.AudioContext = window.AudioContext || window.webkitAudioContext;
    var audioContext = new AudioContext();

    // Create an AudioNode from the stream.
    var mediaStreamSource = audioContext.createMediaStreamSource( stream );

    // Connect it to the destination to hear yourself (or any other node for processing!)
    mediaStreamSource.connect( audioContext.destination );
}

navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia;
navigator.getUserMedia( {audio:true}, gotStream );

Er zijn veel rijke mogelijkheden voor audio-invoer met lage latentie, vooral in de muzikale ruimte. Je kunt een snel voorbeeld zien van hoe je hiervan gebruik kunt maken in een eenvoudige toonhoogtedetector die ik in elkaar heb gezet - probeer een gitaar aan te sluiten, of zelfs gewoon in de microfoon te fluiten.

En zoals beloofd heb ik live audio als invoerbron toegevoegd aan de Vocoder die ik voor Google IO heb geschreven - selecteer gewoon "live input" onder modulator. Mogelijk moet u de modulatorversterking en het synthniveau aanpassen. Er is een kleine vertraging vanwege de verwerking (niet vanwege de invoerlatentie). Nu ik live audio-invoer heb, is het tijd voor een nieuwe ronde van aanpassingen!

Ten slotte wil je misschien een kijkje nemen in de verzameling van mijn webaudiodemo's . Tegen de tijd dat je dit leest, heb ik misschien nog meer live audiodemo's!