From fa769d8ced2f576173dc3b71a662d0d7f21fa62e Mon Sep 17 00:00:00 2001 From: Joe Fleming Date: Tue, 19 Aug 2014 20:24:39 -0700 Subject: [PATCH] working demo, click button for feedback ;) --- src/coffee/app.coffee | 11 ++++++++++- src/coffee/lib/captureAudio.coffee | 16 ++++++++++++++++ src/coffee/{ => lib}/getUserMedia.coffee | 0 src/coffee/lib/mediaCapture.coffee | 13 +++++++++++++ 4 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 src/coffee/lib/captureAudio.coffee rename src/coffee/{ => lib}/getUserMedia.coffee (100%) create mode 100644 src/coffee/lib/mediaCapture.coffee diff --git a/src/coffee/app.coffee b/src/coffee/app.coffee index fb5a33c..2440108 100644 --- a/src/coffee/app.coffee +++ b/src/coffee/app.coffee @@ -3,4 +3,13 @@ define (require) -> alert("Can't access your media :(") return - getUserMedia = require('getUserMedia') + $ = require 'jquery' + Audio = require 'lib/captureAudio' + + buttonAudio = new Audio() + + $('.button.record').on 'click', (ev) -> + audioStream = buttonAudio.get() + .then (streamSource) -> + # loop the stream back through the computer... feedback, go! + streamSource.connect buttonAudio.context.destination diff --git a/src/coffee/lib/captureAudio.coffee b/src/coffee/lib/captureAudio.coffee new file mode 100644 index 0000000..af30487 --- /dev/null +++ b/src/coffee/lib/captureAudio.coffee @@ -0,0 +1,16 @@ +define (require) -> + MediaCapture = require 'lib/mediaCapture' + + class Audio + constructor: (ctx) -> + @audioContext = ctx || window.AudioContext || window.webkitAudioContext + @context = new @audioContext() + + get: -> + audio = new MediaCapture + video: false + + audio.get() + .then (audioStream) => + @mediaStreamSource = @context.createMediaStreamSource( audioStream ) + return @mediaStreamSource diff --git a/src/coffee/getUserMedia.coffee b/src/coffee/lib/getUserMedia.coffee similarity index 100% rename from src/coffee/getUserMedia.coffee rename to src/coffee/lib/getUserMedia.coffee diff --git a/src/coffee/lib/mediaCapture.coffee b/src/coffee/lib/mediaCapture.coffee new file mode 100644 index 0000000..47b9b24 --- /dev/null +++ b/src/coffee/lib/mediaCapture.coffee @@ -0,0 +1,13 @@ +define (require) -> + Promise = require 'bluebird' + require 'lib/getUserMedia' # create navigator.getUserMedia + + class MediaCapture + constructor: (opts={}) -> + @opts = + video: if (opts.video?) then opts.video else true + audio: if (opts.audio?) then opts.video else true + + get: -> + new Promise (resolve, reject) => + navigator.getUserMedia @opts, resolve, reject