Skip to content

Commit

Permalink
[from now] 2014/06/21 07:17:44
Browse files Browse the repository at this point in the history
diff --git a/app/assets/javascripts/backbone/models/recorder.js.coffee b/app/assets/javascripts/backbone/models/recorder.js.coffee
index caaeb71..2b31b7e 100644
--- a/app/assets/javascripts/backbone/models/recorder.js.coffee
+++ b/app/assets/javascripts/backbone/models/recorder.js.coffee
@@ -10,33 +10,19 @@ Seirenes.module "Models", (Models, App, Backbone, Marionette, $, _) ->
       throw new Error("no video") unless @video

     addRecordTrack: ->
-      navigator.getUserMedia({audio: true}, _.bind(@captureSuccess, @), _.bind(@__assignRecordTrack, @))
+      navigator.getUserMedia({audio: true}, _.bind(@__assignRecordTrack, @), _.bind(@captureFail, @))

     __assignRecordTrack: (s) ->
       @micStream = s
       @mic = @context.createMediaStreamSource(s)

     record: ->
-      navigator.getUserMedia({audio: true}, _.bind(@captureSuccess, @), _.bind(@captureFail, @))
-
-    captureSuccess: (s) ->
-      @context = new webkitAudioContext()
-
       # ビデオとマイクのミキサー
       @mixer = @context.createGain()

-      # ビデオのゲイン
-      @musicGain = @context.createGain()
-
       # マイクのゲイン
       @MicGain = @context.createGain()

-      @elementMediaSource = @context.createMediaElementSource(@video)
-      @elementMediaSource.connect(@musicGain)
-
-      @micStream = s
-      @mediaStreamSource = @context.createMediaStreamSource(s)
-
       splitter = @context.createChannelSplitter()

       # ノイズ除去のため低音域をカット
@@ -58,7 +44,7 @@ Seirenes.module "Models", (Models, App, Backbone, Marionette, $, _) ->
       deesser.Q.value = 5
       deesser.gain.value = -3

-      @mediaStreamSource.connect(splitter)
+      @mic.connect(splitter)
       splitter.connect(highpassFilter, 0)
       highpassFilter.connect(peaking)
       peaking.connect(deesser)
@@ -74,16 +60,15 @@ Seirenes.module "Models", (Models, App, Backbone, Marionette, $, _) ->

       musicDelay = @context.createDelay()
       musicDelay.delayTime.value = @musicDelayTime
-      @elementMediaSource.connect(musicDelay)
-      musicDelay.connect(@musicGain)
+      @music.connect(musicDelay)

-      @musicGain.connect(@mixer)
+      musicDelay.connect(@mixer)

-      elementMediaAnalyser = @context.createAnalyser()
-      elementMediaAnalyser.fftSize = 1024
-      elementMediaAnalyser.maxDecibels = -40
-      @elementMediaSource.connect(elementMediaAnalyser)
-      @elementMediaSource.connect(@context.destination)
+      musicAnalyser = @context.createAnalyser()
+      musicAnalyser.fftSize = 1024
+      musicAnalyser.maxDecibels = -40
+      @music.connect(musicAnalyser)
+      @music.connect(@context.destination)

       # 高音域を軽くブーストする
       trebleBoost = @context.createBiquadFilter()
@@ -129,7 +114,7 @@ Seirenes.module "Models", (Models, App, Backbone, Marionette, $, _) ->
       @Timer = setInterval ->
         musicData = new Uint8Array(512)
         micData = new Uint8Array(512)
-        elementMediaAnalyser.getByteTimeDomainData(musicData)
+        musicAnalyser.getByteTimeDomainData(musicData)
         micAnalyser.getByteTimeDomainData(micData)
         musicSignal = musicData[0]
         micSignal = micData[0]
diff --git a/app/assets/javascripts/backbone/templates/preview_video_player.jst.hamlc b/app/assets/javascripts/backbone/templates/preview_video_player.jst.hamlc
index 732f96f..52d357a 100644
--- a/app/assets/javascripts/backbone/templates/preview_video_player.jst.hamlc
+++ b/app/assets/javascripts/backbone/templates/preview_video_player.jst.hamlc
@@ -3,6 +3,7 @@
   #mic-volume-control
     Mic Volume
     %webaudio-slider.slider{id: "mic-volume", src: "/webaudio-controls/img/hsliderbody.png", knobsrc: "/webaudio-controls/img/hsliderknob.png", min: -6, max: 6, step: 0.1, direction: "horz"}
+  %button.js-add_rec Add Record Track
   %button.js-start_rec Start Rec
   %button.js-stop_rec Stop Rec
   #recorded
diff --git a/app/assets/javascripts/backbone/views/preview_video_player.js.coffee b/app/assets/javascripts/backbone/views/preview_video_player.js.coffee
index 6569c4f..11cd7be 100644
--- a/app/assets/javascripts/backbone/views/preview_video_player.js.coffee
+++ b/app/assets/javascripts/backbone/views/preview_video_player.js.coffee
@@ -3,6 +3,7 @@ Seirenes.module "Views", (Views, App, Backbone, Marionette, $, _) ->
     template: "backbone/templates/preview_video_player"

     events:
+      "click .js-add_rec": "addRecordTrack"
       "click .js-start_rec": "startRecord"
       "click .js-stop_rec": "stopRecord"
       "click .js-upload" : "uploadRecordedData"
@@ -38,8 +39,11 @@ Seirenes.module "Views", (Views, App, Backbone, Marionette, $, _) ->
     onRender: ->
       @StickIT()

-    startRecord: ->
+    addRecordTrack: ->
       @recorder = new App.Models.Recorder(video: @$("video")[0])
+      @recorder.addRecordTrack()
+
+    startRecord: ->
       @recorder.record()

     stopRecord: ->
  • Loading branch information
joker1007 committed Jun 20, 2014
1 parent 91ee3f9 commit d0be634
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 26 deletions.
35 changes: 10 additions & 25 deletions app/assets/javascripts/backbone/models/recorder.js.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -10,33 +10,19 @@ Seirenes.module "Models", (Models, App, Backbone, Marionette, $, _) ->
throw new Error("no video") unless @video

addRecordTrack: ->
navigator.getUserMedia({audio: true}, _.bind(@captureSuccess, @), _.bind(@__assignRecordTrack, @))
navigator.getUserMedia({audio: true}, _.bind(@__assignRecordTrack, @), _.bind(@captureFail, @))

__assignRecordTrack: (s) ->
@micStream = s
@mic = @context.createMediaStreamSource(s)

record: ->
navigator.getUserMedia({audio: true}, _.bind(@captureSuccess, @), _.bind(@captureFail, @))

captureSuccess: (s) ->
@context = new webkitAudioContext()

# ビデオとマイクのミキサー
@mixer = @context.createGain()

# ビデオのゲイン
@musicGain = @context.createGain()

# マイクのゲイン
@micGain = @context.createGain()

@elementMediaSource = @context.createMediaElementSource(@video)
@elementMediaSource.connect(@musicGain)

@micStream = s
@mediaStreamSource = @context.createMediaStreamSource(s)

splitter = @context.createChannelSplitter()

# ノイズ除去のため低音域をカット
Expand All @@ -58,7 +44,7 @@ Seirenes.module "Models", (Models, App, Backbone, Marionette, $, _) ->
deesser.Q.value = 5
deesser.gain.value = -3

@mediaStreamSource.connect(splitter)
@mic.connect(splitter)
splitter.connect(highpassFilter, 0)
highpassFilter.connect(peaking)
peaking.connect(deesser)
Expand All @@ -74,16 +60,15 @@ Seirenes.module "Models", (Models, App, Backbone, Marionette, $, _) ->

musicDelay = @context.createDelay()
musicDelay.delayTime.value = @musicDelayTime
@elementMediaSource.connect(musicDelay)
musicDelay.connect(@musicGain)
@music.connect(musicDelay)

@musicGain.connect(@mixer)
musicDelay.connect(@mixer)

elementMediaAnalyser = @context.createAnalyser()
elementMediaAnalyser.fftSize = 1024
elementMediaAnalyser.maxDecibels = -40
@elementMediaSource.connect(elementMediaAnalyser)
@elementMediaSource.connect(@context.destination)
musicAnalyser = @context.createAnalyser()
musicAnalyser.fftSize = 1024
musicAnalyser.maxDecibels = -40
@music.connect(musicAnalyser)
@music.connect(@context.destination)

# 高音域を軽くブーストする
trebleBoost = @context.createBiquadFilter()
Expand Down Expand Up @@ -129,7 +114,7 @@ Seirenes.module "Models", (Models, App, Backbone, Marionette, $, _) ->
@timer = setInterval ->
musicData = new Uint8Array(512)
micData = new Uint8Array(512)
elementMediaAnalyser.getByteTimeDomainData(musicData)
musicAnalyser.getByteTimeDomainData(musicData)
micAnalyser.getByteTimeDomainData(micData)
musicSignal = musicData[0]
micSignal = micData[0]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
#mic-volume-control
Mic Volume
%webaudio-slider.slider{id: "mic-volume", src: "/webaudio-controls/img/hsliderbody.png", knobsrc: "/webaudio-controls/img/hsliderknob.png", min: -6, max: 6, step: 0.1, direction: "horz"}
%button.js-add_rec Add Record Track
%button.js-start_rec Start Rec
%button.js-stop_rec Stop Rec
#recorded
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ Seirenes.module "Views", (Views, App, Backbone, Marionette, $, _) ->
template: "backbone/templates/preview_video_player"

events:
"click .js-add_rec": "addRecordTrack"
"click .js-start_rec": "startRecord"
"click .js-stop_rec": "stopRecord"
"click .js-upload" : "uploadRecordedData"
Expand Down Expand Up @@ -38,8 +39,11 @@ Seirenes.module "Views", (Views, App, Backbone, Marionette, $, _) ->
onRender: ->
@stickit()

startRecord: ->
addRecordTrack: ->
@recorder = new App.Models.Recorder(video: @$("video")[0])
@recorder.addRecordTrack()

startRecord: ->
@recorder.record()

stopRecord: ->
Expand Down

0 comments on commit d0be634

Please sign in to comment.