diff --git a/addons/ofxEmscripten/libs/html5audio/lib/emscripten/library_audioDeviceSelect.js b/addons/ofxEmscripten/libs/html5audio/lib/emscripten/library_audioDeviceSelect.js
new file mode 100644
index 00000000000..08bfd9147a0
--- /dev/null
+++ b/addons/ofxEmscripten/libs/html5audio/lib/emscripten/library_audioDeviceSelect.js
@@ -0,0 +1,48 @@
+var mediaElement = null;
+
+function getAudioDevices(){
+ var audioInDevices = "";
+ var audioOutDevices = "";
+ if(!navigator.mediaDevices.enumerateDevices){
+ console.log("enumerateDevices() not supported.");
+ }else{
+ navigator.mediaDevices.getUserMedia({audio: true, video: false}).then(s => {
+ navigator.mediaDevices.enumerateDevices().then((devices) => {
+ devices.forEach((device) => {
+ if(device.kind == "audioinput"){
+ audioInDevices = audioInDevices.concat(",", `${device.deviceId}`,",", `${device.label}`);
+ }
+ if(device.kind == "audiooutput"){
+ audioOutDevices = audioOutDevices.concat(",", `${device.groupId}`,",", `${device.label}`);
+ }
+ });
+ Module.loadAudioInDevices(audioInDevices);
+ Module.loadAudioOutDevices(audioOutDevices);
+ })
+ .catch((err) => {
+ console.error(`${err.name}: ${err.message}`);
+ });
+ });
+ }
+}
+
+function selectAudioIn(file){
+ if (navigator.getUserMedia){
+ navigator.getUserMedia(
+ { audio: { deviceId: { exact: file } } },
+ function (audioIn){
+ if(mediaElement){
+ mediaElement.disconnect();
+ }
+ mediaElement = AUDIO.context.createMediaStreamSource(audioIn);
+ mediaElement.connect(AUDIO.stream);
+ },
+ function (error){
+ console.log("error creating audio in",error);
+ });
+ }
+}
+
+function selectAudioOut(file){
+ //AUDIO.context.setSinkId(file);
+}
diff --git a/addons/ofxEmscripten/libs/html5audio/lib/emscripten/library_html5audio.js b/addons/ofxEmscripten/libs/html5audio/lib/emscripten/library_html5audio.js
index cd0ff957fd9..b6ba5361717 100644
--- a/addons/ofxEmscripten/libs/html5audio/lib/emscripten/library_html5audio.js
+++ b/addons/ofxEmscripten/libs/html5audio/lib/emscripten/library_html5audio.js
@@ -174,26 +174,6 @@ var LibraryHTML5Audio = {
}
};
- if (inputChannels > 0){
- navigator.getUserMedia = navigator.getUserMedia ||
- navigator.webkitGetUserMedia ||
- navigator.mozGetUserMedia ||
- navigator.msGetUserMedia;
-
- if (navigator.getUserMedia){
- navigator.getUserMedia(
- {audio: true},
- function (audioIn){
- var mediaElement = AUDIO.context.createMediaStreamSource(audioIn);
- mediaElement.connect(stream);
- AUDIO.mediaElement = mediaElement;
- },
- function (error){
- console.log("error creating audio in",error);
- });
- }
- }
-
stream.connect(AUDIO.fft);
AUDIO.stream = stream;
},
diff --git a/libs/openFrameworksCompiled/project/emscripten/config.emscripten.default.mk b/libs/openFrameworksCompiled/project/emscripten/config.emscripten.default.mk
index dbd818e7517..eef13705b5d 100644
--- a/libs/openFrameworksCompiled/project/emscripten/config.emscripten.default.mk
+++ b/libs/openFrameworksCompiled/project/emscripten/config.emscripten.default.mk
@@ -96,6 +96,7 @@ endif
PLATFORM_LDFLAGS = -Wl --gc-sections --preload-file bin/data@data --emrun --bind --profiling-funcs -s USE_FREETYPE=1 -s EXPORTED_RUNTIME_METHODS=allocate -s ALLOW_MEMORY_GROWTH=1 -s MAX_WEBGL_VERSION=2
PLATFORM_LDFLAGS += --js-library $(OF_ADDONS_PATH)/ofxEmscripten/libs/html5video/lib/emscripten/library_html5video.js
PLATFORM_LDFLAGS += --js-library $(OF_ADDONS_PATH)/ofxEmscripten/libs/html5audio/lib/emscripten/library_html5audio.js
+PLATFORM_LDFLAGS += --post-js $(OF_ADDONS_PATH)/ofxEmscripten/libs/html5audio/lib/emscripten/library_audioDeviceSelect.js
ifdef PROJECT_EMSCRIPTEN_TEMPLATE
PLATFORM_LDFLAGS += --shell-file $(PROJECT_EMSCRIPTEN_TEMPLATE)