diff --git a/HISTORY.md b/HISTORY.md index 03765013..03f14f31 100755 --- a/HISTORY.md +++ b/HISTORY.md @@ -8,6 +8,7 @@ ### 2020-01-28 * new dev version +* gui: record sounds in mono ## 5.4.4: * **Notable Fixes** diff --git a/src/gui.js b/src/gui.js index 42d0e4af..c6b1f75e 100644 --- a/src/gui.js +++ b/src/gui.js @@ -9805,26 +9805,32 @@ SoundRecorderDialogMorph.prototype.buildContents = function () { this.body.fixLayout(); if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) { - navigator.mediaDevices.getUserMedia({ audio: true }) - .then(function (stream) { - myself.mediaRecorder = new MediaRecorder(stream); - myself.mediaRecorder.ondataavailable = function (event) { - audioChunks.push(event.data); + navigator.mediaDevices.getUserMedia( + { + audio: { + channelCount: 1 // force mono, currently only works on FF + } + + } + ).then(function (stream) { + myself.mediaRecorder = new MediaRecorder(stream); + myself.mediaRecorder.ondataavailable = function (event) { + audioChunks.push(event.data); + }; + myself.mediaRecorder.onstop = function (event) { + var buffer = new Blob(audioChunks), + reader = new window.FileReader(); + reader.readAsDataURL(buffer); + reader.onloadend = function() { + var base64 = reader.result; + base64 = 'data:audio/ogg;base64,' + + base64.split(',')[1]; + myself.audioElement.src = base64; + myself.audioElement.load(); + audioChunks = []; }; - myself.mediaRecorder.onstop = function (event) { - var buffer = new Blob(audioChunks), - reader = new window.FileReader(); - reader.readAsDataURL(buffer); - reader.onloadend = function() { - var base64 = reader.result; - base64 = 'data:audio/ogg;base64,' + - base64.split(',')[1]; - myself.audioElement.src = base64; - myself.audioElement.load(); - audioChunks = []; - }; - }; - }); + }; + }); } this.addButton('ok', 'Save');