You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I realise this is quite an obscure use-case, but currently if you try to play audio on WASM with the +atomics and +mutable-globals features enabled in Rust Nightly, Firefox and Chrome error out since AudioBuffer.copyToChannel doesn't support SharedArrayBuffers.
Error on Firefox:
panicked at 'Unable to write sample data into the audio context buffer: JsValue(TypeError: AudioBuffer.copyToChannel: Argument 1 can't be a SharedArrayBuffer or an ArrayBufferView backed by a SharedArrayBuffer
Error on Chrome:
web.js:446 panicked at 'Unable to write sample data into the audio context buffer: JsValue(TypeError: Failed to execute 'copyToChannel' on 'AudioBuffer': The provided Float32Array value must not be shared.
TypeError: Failed to execute 'copyToChannel' on 'AudioBuffer': The provided Float32Array value must not be shared.
init/imports.wbg.__wbg_copyToChannel_74f68c0678489450/<@http://localhost/web.js:1244:25
handleError@http://localhost/web.js:310:18
init/imports.wbg.__wbg_copyToChannel_74f68c0678489450@http://localhost/web.js:1243:76
web_sys::features::gen_AudioBuffer::AudioBuffer::copy_to_channel::ha856702a3af061e5@http://localhost/web_bg.wasm:wasm-function[6669]:0x71ba4f
<cpal::host::webaudio::Device as cpal::traits::DeviceTrait>::build_output_stream_raw::{{closure}}::ha128e8e549ebdafb@http://localhost/web_bg.wasm:wasm-function[669]:0x2bcd81
EDIT:
I have managed to get it working by modifying host\webaudio\mod.rs by adding an external javascript call
// New, working versioncopy_audio_buffer(&ctx_buffer,&temporary_channel_buffer, channel asi32);// Previous, broken version// ctx_buffer// .copy_to_channel(&mut temporary_channel_buffer, channel as i32)// .expect("Unable to write sample data into the audio context buffer");
audio-shim.js:
exportfunctioncopy_audio_buffer(dest,src,channel){// Turn the array view into owned memory.varstandalone=[...src];// Make it a Float32Array.varbuffer=newFloat32Array(standalone);// Copy the data.dest.copyToChannel(buffer,channel);}
No idea, but it's worth trying I guess, feel free. The branch I'm using at the moment is the one attempting to be merged in #774, which has this change plus more fixes, so personally I'm hoping that that gets merged.
I realise this is quite an obscure use-case, but currently if you try to play audio on WASM with the +atomics and +mutable-globals features enabled in Rust Nightly, Firefox and Chrome error out since AudioBuffer.copyToChannel doesn't support SharedArrayBuffers.
Error on Firefox:
Error on Chrome:
EDIT:
I have managed to get it working by modifying host\webaudio\mod.rs by adding an external javascript call
webaudio\mod.rs:
audio-shim.js:
( Many thanks to this webpage for that trick )
The text was updated successfully, but these errors were encountered: