@@ -12,10 +12,10 @@ if (!owl.context)
1212}
1313
1414// Cross-browser compatibility for getUserMedia
15- navigator . getUserMedia = ( navigator . getUserMedia ||
16- navigator . webkitGetUserMedia ||
17- navigator . mozGetUserMedia ||
18- navigator . msGetUserMedia ) ;
15+ navigator . getUserMedia = navigator . getUserMedia ||
16+ navigator . webkitGetUserMedia ||
17+ navigator . mozGetUserMedia ||
18+ navigator . msGetUserMedia ;
1919
2020var WEB_setup = Module . cwrap ( 'WEB_setup' , 'number' , [ 'number' , 'number' ] ) ;
2121var WEB_processBlock = Module . cwrap ( 'WEB_processBlock' , 'number' , [ 'number' , 'number' ] ) ;
@@ -28,7 +28,9 @@ var WEB_getStatus = Module.cwrap('WEB_getStatus', 'string', []);
2828owl . dsp = function ( ) {
2929 var that = { } ;
3030 that . model = {
31- inputNode : null
31+ inputNode : null ,
32+ fileNode : owl . context . createMediaElementSource ( document . getElementById ( 'file-input-audio' ) ) ,
33+ micNode : null
3234 } ;
3335 that . vectorsize = 2048 ;
3436 console . log ( "setup[fs " + owl . context . sampleRate + "][bs " + that . vectorsize + "]" ) ;
@@ -94,12 +96,26 @@ owl.dsp = function () {
9496 }
9597
9698 that . useMicrophoneInput = function ( ) {
97- navigator . getUserMedia . call ( navigator , { audio : true } , function ( stream ) {
98- var node = owl . context . createMediaStreamSource ( stream ) ;
99- that . connectInput ( node ) ;
100- } , function ( err ) {
101- console . error ( err ) ;
102- } ) ;
99+ if ( that . model . micNode ) {
100+ that . connectInput ( that . model . micNode ) ;
101+ } else {
102+ navigator . getUserMedia . call ( navigator , { audio : true } , function ( stream ) {
103+ that . model . micNode = owl . context . createMediaStreamSource ( stream ) ;
104+ that . connectInput ( that . model . micNode ) ;
105+ } , function ( err ) {
106+ console . error ( err ) ;
107+ } ) ;
108+ }
109+ }
110+
111+ that . useFileInput = function ( ) {
112+ that . connectInput ( that . model . fileNode ) ;
113+ }
114+
115+ that . onFileSelect = function ( files ) {
116+ var fileUrl = files [ 0 ] ? URL . createObjectURL ( files [ 0 ] ) : '' ;
117+ var audioElement = document . getElementById ( 'file-input-audio' ) ;
118+ audioElement . src = fileUrl ;
103119 }
104120
105121 // Bind to Web Audio
0 commit comments