diff --git a/Libraries/LibWeb/WebAudio/BaseAudioContext.cpp b/Libraries/LibWeb/WebAudio/BaseAudioContext.cpp index 8e47f721d5b..55f9be57631 100644 --- a/Libraries/LibWeb/WebAudio/BaseAudioContext.cpp +++ b/Libraries/LibWeb/WebAudio/BaseAudioContext.cpp @@ -91,6 +91,15 @@ WebIDL::ExceptionOr> BaseAudioContext::create_channel return ChannelMergerNode::create(realm(), *this, options); } +// https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-createchannelsplitter +WebIDL::ExceptionOr> BaseAudioContext::create_channel_splitter(WebIDL::UnsignedLong number_of_outputs) +{ + ChannelSplitterOptions options; + options.number_of_outputs = number_of_outputs; + + return ChannelSplitterNode::create(realm(), *this, options); +} + // https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-createoscillator WebIDL::ExceptionOr> BaseAudioContext::create_oscillator() { diff --git a/Libraries/LibWeb/WebAudio/BaseAudioContext.h b/Libraries/LibWeb/WebAudio/BaseAudioContext.h index c798ef38c80..5b0af33c46c 100644 --- a/Libraries/LibWeb/WebAudio/BaseAudioContext.h +++ b/Libraries/LibWeb/WebAudio/BaseAudioContext.h @@ -13,6 +13,7 @@ #include #include #include +#include #include namespace Web::WebAudio { @@ -59,6 +60,7 @@ public: WebIDL::ExceptionOr> create_buffer(WebIDL::UnsignedLong number_of_channels, WebIDL::UnsignedLong length, float sample_rate); WebIDL::ExceptionOr> create_buffer_source(); WebIDL::ExceptionOr> create_channel_merger(WebIDL::UnsignedLong number_of_inputs); + WebIDL::ExceptionOr> create_channel_splitter(WebIDL::UnsignedLong number_of_outputs); WebIDL::ExceptionOr> create_oscillator(); WebIDL::ExceptionOr> create_dynamics_compressor(); WebIDL::ExceptionOr> create_gain(); diff --git a/Libraries/LibWeb/WebAudio/BaseAudioContext.idl b/Libraries/LibWeb/WebAudio/BaseAudioContext.idl index 98afc2544a2..d30a663a3c5 100644 --- a/Libraries/LibWeb/WebAudio/BaseAudioContext.idl +++ b/Libraries/LibWeb/WebAudio/BaseAudioContext.idl @@ -35,7 +35,7 @@ interface BaseAudioContext : EventTarget { AudioBuffer createBuffer(unsigned long numberOfChannels, unsigned long length, float sampleRate); AudioBufferSourceNode createBufferSource (); ChannelMergerNode createChannelMerger (optional unsigned long numberOfInputs = 6); - [FIXME] ChannelSplitterNode createChannelSplitter (optional unsigned long numberOfOutputs = 6); + ChannelSplitterNode createChannelSplitter (optional unsigned long numberOfOutputs = 6); [FIXME] ConstantSourceNode createConstantSource (); [FIXME] ConvolverNode createConvolver (); [FIXME] DelayNode createDelay (optional double maxDelayTime = 1.0);