Commit graph

39 commits

Author SHA1 Message Date
Timothy Flynn
85b424464a AK+Everywhere: Rename verify_cast to as
Follow-up to fc20e61e72.
2025-01-21 11:34:06 -05:00
Tim Ledbetter
c87f80454b LibWeb/WebAudio: Implement automation rate constraints
Some nodes have parameters whose automation rate is not allowed to be
changed. This change enforces that constraint for all parameters it
applies to.
2025-01-19 17:24:55 +01:00
Tim Ledbetter
575edf8a90 LibWeb: Use correct automation rate for AudioBufferSourceNode parameters 2025-01-19 17:24:55 +01:00
Tim Ledbetter
5fd130b02d LibWeb: Add BaseAudioContext.createStereoPanner() factory method 2025-01-18 10:20:41 +01:00
Tim Ledbetter
56907e2de6 LibWeb: Add StereoPannerNode interface 2025-01-18 10:20:41 +01:00
Tim Ledbetter
31532e36a8 LibWeb: Add AudioContext.createMediaElementSource() factory method 2025-01-17 19:04:47 +00:00
Tim Ledbetter
aa39aa50f7 LibWeb: Add MediaElementAudioSourceNode interface 2025-01-17 19:04:47 +00:00
Noah Bright
6c6bf322ea LibWeb/WebAudio: Define and partially implement AnalyserNode
https://webaudio.github.io/web-audio-api/#AnalyserNode

Most of the interface is naively implemented. Container types
probably need adjusted (Vector<double> is used for all the processing).
A Fourier Transform is needed, but that's waiting on either a 3rd
party library or a complex number type.

There are lots of simple miscellaneous filters that need to be applied.
It could be reasonable to implement from scratch, supposing that
it can be parallelized. It might be hard to find one library with
everything. Not my call though.

Some additional scaffolding around blocks and render quanta is
probably needed before this is developed much further, which
probably comes in at the level of the AudioNode.

Co-authored-by: Tim Ledbetter <tim.ledbetter@ladybird.org>
2025-01-17 10:11:24 +01:00
Tim Ledbetter
d7ff409032 LibWeb: Align OfflineAudioContext constructors with current spec steps 2025-01-16 13:56:18 +00:00
Tim Ledbetter
f01ccf5424 LibWeb: Align AudioContext constructor with current spec steps 2025-01-16 13:56:18 +00:00
Tim Ledbetter
3261f873c5 LibWeb: Validate parameters for source node start() and stop() methods 2025-01-10 23:35:20 +01:00
Tim Ledbetter
81d6cd497a LibWeb: Validate AudioNode::disconnect() input and output arguments 2025-01-09 11:34:38 +00:00
Tim Ledbetter
5c57acf140 LibWeb: Validate AudioParam context in AudioNode::connect()
An exception is now thown if an `AudioNode` attempts to connect to an
`AudioParam` from a different `BaseAudioContext`.
2025-01-09 11:34:38 +00:00
Tim Ledbetter
2edd0812ca LibWeb: Validate AudioNode::connect() input and output arguments 2025-01-09 11:34:38 +00:00
Tim Ledbetter
e469c884d4 LibWeb: Use correct ranges for BiquadFilterNode parameters 2025-01-08 19:05:51 +00:00
Tim Ledbetter
911cd4aefd LibWeb/WebAudio: Add BaseAudioContext.createDelay() factory method 2025-01-08 15:31:59 +00:00
Tim Ledbetter
6c4c925f02 LibWeb/WebAudio: Add DelayNode interface 2025-01-08 15:31:59 +00:00
Tim Ledbetter
a6ab9cc983 LibWeb: Initialize AudioBufferSourceNode with correct defaults 2025-01-08 14:45:51 +00:00
Tim Ledbetter
27dbe49f00 LibWeb: Initialize OfflineAudioContext with correct defaults 2025-01-08 11:24:08 +00:00
Tim Ledbetter
8c4e4ec31b LibWeb: Implement OscillatorNode.setPeriodicWave() 2025-01-04 10:12:24 +00:00
Tim Ledbetter
acbae1b118 LibWeb: Set OscillatorNode type in the constructor 2025-01-04 10:12:24 +00:00
Tim Ledbetter
72818300c0 LibWeb: Implement the OscillatorNode.detune attribute 2025-01-04 10:12:24 +00:00
Tim Ledbetter
ed46d247de LibWeb: Initialize OcillatorNode with the correct default options 2025-01-04 10:12:24 +00:00
Tim Ledbetter
a6f04506e4 LibWeb: Add BaseAudioContext.create_periodic_wave() factory method 2025-01-03 14:54:18 +01:00
Tim Ledbetter
f90b79fa1f LibWeb: Implement PeriodicWave constructor 2025-01-03 14:54:18 +01:00
Tim Ledbetter
72ca91ad1a LibWeb: Flesh out AudioBufferSourceNode buffer setter steps 2025-01-03 11:14:47 +01:00
Tim Ledbetter
6cab972248 LibWeb: Add BaseAudioContext.createConstantSource() factory method 2025-01-03 11:13:27 +01:00
Tim Ledbetter
1b160044c4 LibWeb: Add ConstantSourceNode interface 2025-01-03 11:13:27 +01:00
Tim Ledbetter
3eefa464ee LibWeb: Add BaseAudioContext.createChannelSplitter() factory method 2025-01-02 11:39:23 +00:00
Tim Ledbetter
e564d25ffb LibWeb: Add ChannelSplitterNode interface 2025-01-02 11:39:23 +00:00
Pavel Shliak
a95303de02 LibWeb/WebAudio: Remove copy-pasted comments in DynamicsCompressorNode 2024-12-18 10:19:46 +01:00
Pavel Shliak
9232dcbde5 LibWeb/WebAudio: Set all the params in PannerNode constructor 2024-12-18 10:19:46 +01:00
Pavel Shliak
884599f1df LibWeb/WebAudio: Manage channelCountMode and channelCount for PannerNode 2024-12-18 10:19:46 +01:00
Luke Wilde
3063be11a9 LibWeb/WebAudio: Implement BaseAudioContext#createPanner
Required by Unity Web games.
2024-12-17 13:38:20 +01:00
Luke Wilde
4f691c2410 LibWeb/WebAudio: Implement PannerNode
Required by https://scottts.itch.io/different-strokes
2024-12-17 13:38:20 +01:00
Jelle Raaijmakers
be3a941f44 LibWeb: Add ChannelMergerNode interface 2024-11-25 17:16:06 +01:00
Shannon Booth
f87041bf3a LibGC+Everywhere: Factor out a LibGC from LibJS
Resulting in a massive rename across almost everywhere! Alongside the
namespace change, we now have the following names:

 * JS::NonnullGCPtr -> GC::Ref
 * JS::GCPtr -> GC::Ptr
 * JS::HeapFunction -> GC::Function
 * JS::CellImpl -> GC::Cell
 * JS::Handle -> GC::Root
2024-11-15 14:49:20 +01:00
Shannon Booth
9b79a686eb LibJS+LibWeb: Use realm.create<T> instead of heap.allocate<T>
The main motivation behind this is to remove JS specifics of the Realm
from the implementation of the Heap.

As a side effect of this change, this is a bit nicer to read than the
previous approach, and in my opinion, also makes it a little more clear
that this method is specific to a JavaScript Realm.
2024-11-13 16:51:44 -05:00
Timothy Flynn
93712b24bf Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00