-
-
Notifications
You must be signed in to change notification settings - Fork 2.9k
Implement missing WebAudio automation student project
Josh Matthews edited this page Feb 15, 2019
·
1 revision
Background information: Major browsers support the WebAudio standard which can be used to create complex media playback applications from low-level building blocks. Servo is a new, experimental browser that supports some of these building blocks (called audio nodes); the goal of this project is to implement some missing audio processing algorithms and interfaces to improve compatibility with existing multimedia content on the web.
Tracking issue: (please ask questions in these issues)
- https://github.com/servo/media/issues/204 (value curve automation)
- https://github.com/servo/servo/issues/22897 (JS API for value curves)
- https://github.com/servo/servo/issues/22898 (missing APIs for AudioListener)
- https://github.com/servo/media/issues/205 (wave shaper node)
Useful references:
- Setup for modifying the standalone media backend implementation
- Implementation of audio node processing algorithms
- Runnable examples of audio node processing algorithms
- Example pull request implementing a missing node type in Servo (another example)
- Example pull request implementing the processing backend for a missing node type
- Setup for making changes to Servo's code
- Documentation for introducing new WebIDL-based DOM interfaces to Servo
-
Documentation for integrating a version of
servo-media
that contains your local changes into your local Servo build
Initial steps:
- email the mozilla.dev.servo mailing list (be sure to subscribe to it first!) introducing your group and asking any necessary questions
- Add the new ValueCurveAtTime automation event and implement the processing algorithm for it (per the github issue)
- Create an example program (in
examples/
) that demonstrates this automation being applied to an oscillator node
Subsequent steps:
- Implement the missing JS API for
setValueCurveAtTime
per the github issue - Implement the missing
setPosition
andsetOrientation
APIs per the github issue - update the expected test results for the relevant tests
- implement the backend for WaveShaperNode in the media crate by creating a new node implementation using
BiquadFilterNode
as a guide. Create an example program that demonstrates the effect in practice.