├── favicon.png ├── images ├── dj.png ├── edge-logo.png ├── latency.png ├── speaker.png ├── warehouse.png ├── HRTF_panner.png ├── absn-basic.png ├── absn-offset.png ├── chrome-logo.png ├── microphone.png ├── opera-logo.png ├── safari-logo.png ├── webaudio-js.png ├── absn-slow-loop.png ├── drum-machine.png ├── fft-convolver.png ├── firefox-logo.png ├── visualizer2-gl.png ├── audioworklet.graffle ├── channel-splitter.png ├── cone-diagram.graffle ├── impulse-response.png ├── modular-routing1.png ├── modular-routing2.png ├── modular-routing3.png ├── panner-coord.graffle ├── recording-setup.png ├── reverb-convolver.png ├── reverb-matrixing.png ├── absn-reversed-loop.png ├── absn-subsample-loop.png ├── cancel-linear.graffle ├── convolver-diagram.png ├── dynamic-allocation.png ├── microphones-speaker.png ├── visualizer-gl-old.png ├── absn-half-sample-rate.png ├── audioworklet-concept.png ├── cancel-setTarget.graffle ├── convolver-diagram.graffle ├── modular-routing2.graffle ├── audioparam-automation1.png ├── cancel-setValueCurve.graffle ├── audioparam-automation-clipping.png ├── audioworklet-instantiation-sequence.png ├── webaudio-js.svg ├── cancel-linear.svg ├── cancel-setTarget.svg ├── cancel-setValueCurve.svg ├── cone-diagram.svg ├── channel-merger.svg ├── compression-curve.svg ├── panner-coord.svg ├── dynamicscompressor-internal-graph.svg └── modular-routing3.graffle ├── .gitignore ├── tidyconf.txt ├── w3c.json ├── .pr-preview.json ├── LICENSE.md ├── CODE_OF_CONDUCT.md ├── audionode-init.include ├── .gitattribute ├── audionode-noinput.include ├── .github ├── ISSUE_TEMPLATE │ ├── administrative-issues.md │ ├── feature_request.md │ └── bug_report.md └── workflows │ └── auto-publish.yml ├── audioparam.include ├── create-cr.sh ├── audionode.include ├── README.md ├── compile.sh ├── CONTRIBUTING.md ├── expected-errs.txt ├── style.css ├── webaudio-CR-transition.md ├── convolution.html ├── explainer └── user-selectable-render-size.md ├── implementation-report.html └── test-report.html /favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebAudio/web-audio-api/HEAD/favicon.png -------------------------------------------------------------------------------- /images/dj.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebAudio/web-audio-api/HEAD/images/dj.png -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | tidy-html5/ 2 | vscode/ 3 | /.support 4 | 5 | .DS_Store 6 | bs.log 7 | actual-errs.txt -------------------------------------------------------------------------------- /images/edge-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebAudio/web-audio-api/HEAD/images/edge-logo.png -------------------------------------------------------------------------------- /images/latency.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebAudio/web-audio-api/HEAD/images/latency.png -------------------------------------------------------------------------------- /images/speaker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebAudio/web-audio-api/HEAD/images/speaker.png -------------------------------------------------------------------------------- /images/warehouse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebAudio/web-audio-api/HEAD/images/warehouse.png -------------------------------------------------------------------------------- /images/HRTF_panner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebAudio/web-audio-api/HEAD/images/HRTF_panner.png -------------------------------------------------------------------------------- /images/absn-basic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebAudio/web-audio-api/HEAD/images/absn-basic.png -------------------------------------------------------------------------------- /images/absn-offset.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebAudio/web-audio-api/HEAD/images/absn-offset.png -------------------------------------------------------------------------------- /images/chrome-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebAudio/web-audio-api/HEAD/images/chrome-logo.png -------------------------------------------------------------------------------- /images/microphone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebAudio/web-audio-api/HEAD/images/microphone.png -------------------------------------------------------------------------------- /images/opera-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebAudio/web-audio-api/HEAD/images/opera-logo.png -------------------------------------------------------------------------------- /images/safari-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebAudio/web-audio-api/HEAD/images/safari-logo.png -------------------------------------------------------------------------------- /images/webaudio-js.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebAudio/web-audio-api/HEAD/images/webaudio-js.png -------------------------------------------------------------------------------- /images/absn-slow-loop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebAudio/web-audio-api/HEAD/images/absn-slow-loop.png -------------------------------------------------------------------------------- /images/drum-machine.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebAudio/web-audio-api/HEAD/images/drum-machine.png -------------------------------------------------------------------------------- /images/fft-convolver.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebAudio/web-audio-api/HEAD/images/fft-convolver.png -------------------------------------------------------------------------------- /images/firefox-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebAudio/web-audio-api/HEAD/images/firefox-logo.png -------------------------------------------------------------------------------- /images/visualizer2-gl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebAudio/web-audio-api/HEAD/images/visualizer2-gl.png -------------------------------------------------------------------------------- /images/audioworklet.graffle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebAudio/web-audio-api/HEAD/images/audioworklet.graffle -------------------------------------------------------------------------------- /images/channel-splitter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebAudio/web-audio-api/HEAD/images/channel-splitter.png -------------------------------------------------------------------------------- /images/cone-diagram.graffle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebAudio/web-audio-api/HEAD/images/cone-diagram.graffle -------------------------------------------------------------------------------- /images/impulse-response.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebAudio/web-audio-api/HEAD/images/impulse-response.png -------------------------------------------------------------------------------- /images/modular-routing1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebAudio/web-audio-api/HEAD/images/modular-routing1.png -------------------------------------------------------------------------------- /images/modular-routing2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebAudio/web-audio-api/HEAD/images/modular-routing2.png -------------------------------------------------------------------------------- /images/modular-routing3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebAudio/web-audio-api/HEAD/images/modular-routing3.png -------------------------------------------------------------------------------- /images/panner-coord.graffle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebAudio/web-audio-api/HEAD/images/panner-coord.graffle -------------------------------------------------------------------------------- /images/recording-setup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebAudio/web-audio-api/HEAD/images/recording-setup.png -------------------------------------------------------------------------------- /images/reverb-convolver.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebAudio/web-audio-api/HEAD/images/reverb-convolver.png -------------------------------------------------------------------------------- /images/reverb-matrixing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebAudio/web-audio-api/HEAD/images/reverb-matrixing.png -------------------------------------------------------------------------------- /tidyconf.txt: -------------------------------------------------------------------------------- 1 | char-encoding: utf8 2 | indent: yes 3 | wrap: 80 4 | tidy-mark: no 5 | literal-attributes: yes 6 | -------------------------------------------------------------------------------- /images/absn-reversed-loop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebAudio/web-audio-api/HEAD/images/absn-reversed-loop.png -------------------------------------------------------------------------------- /images/absn-subsample-loop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebAudio/web-audio-api/HEAD/images/absn-subsample-loop.png -------------------------------------------------------------------------------- /images/cancel-linear.graffle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebAudio/web-audio-api/HEAD/images/cancel-linear.graffle -------------------------------------------------------------------------------- /images/convolver-diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebAudio/web-audio-api/HEAD/images/convolver-diagram.png -------------------------------------------------------------------------------- /images/dynamic-allocation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebAudio/web-audio-api/HEAD/images/dynamic-allocation.png -------------------------------------------------------------------------------- /images/microphones-speaker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebAudio/web-audio-api/HEAD/images/microphones-speaker.png -------------------------------------------------------------------------------- /images/visualizer-gl-old.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebAudio/web-audio-api/HEAD/images/visualizer-gl-old.png -------------------------------------------------------------------------------- /w3c.json: -------------------------------------------------------------------------------- 1 | { 2 | "group": 46884 3 | , "contacts": "svgeesus" 4 | , "repo-type": "rec-track" 5 | } 6 | -------------------------------------------------------------------------------- /images/absn-half-sample-rate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebAudio/web-audio-api/HEAD/images/absn-half-sample-rate.png -------------------------------------------------------------------------------- /images/audioworklet-concept.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebAudio/web-audio-api/HEAD/images/audioworklet-concept.png -------------------------------------------------------------------------------- /images/cancel-setTarget.graffle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebAudio/web-audio-api/HEAD/images/cancel-setTarget.graffle -------------------------------------------------------------------------------- /images/convolver-diagram.graffle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebAudio/web-audio-api/HEAD/images/convolver-diagram.graffle -------------------------------------------------------------------------------- /images/modular-routing2.graffle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebAudio/web-audio-api/HEAD/images/modular-routing2.graffle -------------------------------------------------------------------------------- /images/audioparam-automation1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebAudio/web-audio-api/HEAD/images/audioparam-automation1.png -------------------------------------------------------------------------------- /images/cancel-setValueCurve.graffle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebAudio/web-audio-api/HEAD/images/cancel-setValueCurve.graffle -------------------------------------------------------------------------------- /.pr-preview.json: -------------------------------------------------------------------------------- 1 | { 2 | "src_file": "index.bs", 3 | "type": "bikeshed", 4 | "params": { 5 | "force": 1 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /images/audioparam-automation-clipping.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebAudio/web-audio-api/HEAD/images/audioparam-automation-clipping.png -------------------------------------------------------------------------------- /images/audioworklet-instantiation-sequence.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebAudio/web-audio-api/HEAD/images/audioworklet-instantiation-sequence.png -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | All documents in this Repository are licensed by contributors 2 | under the 3 | [W3C Software and Document License](https://www.w3.org/Consortium/Legal/copyright-software). 4 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Code of Conduct 2 | 3 | All documentation, code and communication under this repository are covered by the [W3C Code of Ethics and Professional Conduct](https://www.w3.org/Consortium/cepc/). 4 | -------------------------------------------------------------------------------- /audionode-init.include: -------------------------------------------------------------------------------- 1 | When the constructor is called with a {{BaseAudioContext}} c and 2 | an option object option, the user agent MUST initialize the AudioNode 4 | this, with context and options as arguments. 5 | -------------------------------------------------------------------------------- /.gitattribute: -------------------------------------------------------------------------------- 1 | # Set the default behavior, in case people don't have core.autocrlf set. 2 | * text=auto 3 | 4 | # Specify files that should have unix (lf) style end-of-line 5 | # character. In particular, all html files, scripts, and the Makefile 6 | # should have Unix style (LF) end-of-line character 7 | 8 | *.html text eol=lf 9 | *.css text eol=lf 10 | Makefile text eol=lf 11 | *.md text eol=lf 12 | W3C-ED text eol=lf 13 | respec-w3c-common text eol=lf 14 | fixup.sed text eol=lf 15 | -------------------------------------------------------------------------------- /audionode-noinput.include: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 5 | 9 | 10 | 14 | 18 |
Property 6 | Value 7 | Notes 8 |
{{AudioNode/numberOfInputs}} 11 | 0 12 | [NOI-NOTES?] 13 |
{{AudioNode/numberOfOutputs}} 15 | [NOO] 16 | [NOO-NOTES?] 17 |
tail-time reference 19 | [TAIL-TIME] 20 | [TIME-TIME-NOTES?] 21 |
22 |
23 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/administrative-issues.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Administrative Issues 3 | about: Issues with the repository itself 4 | title: '' 5 | labels: Admin 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the Issue** 11 | Briefly describe the issue with this site. This includes all issues not related to the spec itself and includes things like the issue tracker not working, wiki pages that are incorrect, and so on. 12 | 13 | **Expected Result** 14 | Describe what should have happened 15 | 16 | **Actual Result** 17 | Describe what actually happened and why that is wrong 18 | -------------------------------------------------------------------------------- /audioparam.include: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 5 | 9 | 10 | 14 | 18 | 22 |
Parameter 6 | Value 7 | Notes 8 |
{{AudioParam/defaultValue}} 11 | [DEFAULT] 12 | [DEFAULT-NOTES?] 13 |
{{AudioParam/minValue}} 15 | [MIN] 16 | [MIN-NOTES?] 17 |
{{AudioParam/maxValue}} 19 | [MAX] 20 | [MAX-NOTES?] 21 |
{{AudioParam/automationRate}} 23 | [RATE] 24 | [RATE-NOTES?] 25 |
26 |
27 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature Request 3 | about: Suggest additions for WebAudio 4 | title: '' 5 | labels: feature,Needs WG Review 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the feature** 11 | Briefly describe the feature you would like WebAudio to have. 12 | 13 | **Is there a prototype?** 14 | If you have a prototype (possibly using an AudioWorkletNode), provide links to illustrate this addition. This is the best way to propose a new feature. 15 | 16 | **Describe the feature in more detail** 17 | Provide more information how it does and how it works. 18 | -------------------------------------------------------------------------------- /create-cr.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Create a zip file containing everything we need to publish a CR. 4 | # This assumes you've updated index.bs to add/change: 5 | # Status: CR 6 | # Date: 7 | # Deadline: 8 | # Prepare for TR: yes 9 | 10 | # Compile the spec, exit immediately if compile.sh fails 11 | set -e 12 | ./compile.sh 13 | 14 | # Create zip file of the things we need. First the basic stuff. 15 | rm -f cr.zip 16 | zip cr index.html style.css implementation-report.html test-report.html favicon.png 17 | # Now add all the images, but we don't need the graffle sources. 18 | zip cr `find images | grep -v graffle` 19 | -------------------------------------------------------------------------------- /audionode.include: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 5 | 9 | 10 | 14 | 18 | 22 | 26 | 30 |
Property 6 | Value 7 | Notes 8 |
{{AudioNode/numberOfInputs}} 11 | [NOI] 12 | [NOI-NOTES?] 13 |
{{AudioNode/numberOfOutputs}} 15 | [NOO] 16 | [NOO-NOTES?] 17 |
{{AudioNode/channelCount}} 19 | [CC] 20 | [CC-NOTES?] 21 |
{{AudioNode/channelCountMode}} 23 | "{{ChannelCountMode/[CC-MODE]}}" 24 | [CC-MODE-NOTES?] 25 |
{{AudioNode/channelInterpretation}} 27 | "{{ChannelInterpretation/[CC-INTERP]}}" 28 | [CC-INTERP-NOTES?] 29 |
tail-time 31 | [TAIL-TIME] 32 | [TAIL-TIME-NOTES?] 33 |
34 |
35 | -------------------------------------------------------------------------------- /.github/workflows/auto-publish.yml: -------------------------------------------------------------------------------- 1 | on: 2 | pull_request: 3 | branches: 4 | - main 5 | push: 6 | branches: 7 | - main 8 | 9 | jobs: 10 | main: 11 | name: Setup, build, and Deploy to gh-pages branch 12 | runs-on: ubuntu-latest 13 | steps: 14 | - name: Checking out the repository 15 | uses: actions/checkout@v4 16 | - name: Setting up Python 3.9 17 | uses: actions/setup-python@v5 18 | with: 19 | python-version: '3.9' 20 | - name: Installing and updating Bikeshed 21 | run: pip3 install bikeshed && bikeshed update 22 | shell: bash 23 | - name: Building index.html from index.bs 24 | run: bash ./compile.sh 25 | shell: bash 26 | - name: Deploying to gh-pages branch 27 | if: github.event_name == 'push' 28 | uses: peaceiris/actions-gh-pages@v3 29 | with: 30 | github_token: ${{ secrets.GITHUB_TOKEN }} 31 | publish_dir: ./ 32 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Web Audio API 1.0 Spec 2 | 3 | [![Build Status](https://travis-ci.com/WebAudio/web-audio-api.svg?branch=main)](https://travis-ci.com/WebAudio/web-audio-api) 4 | 5 | WebAudio 6 | 7 | This repository contains the latest editor's draft of the [W3C AudioWG](https://www.w3.org/2011/audio/)'s Web Audio API v1.0. 8 | 9 | You can preview the current version of the `main` branch [here](https://webaudio.github.io/web-audio-api/). 10 | 11 | # Tests 12 | 13 | For normative changes, a corresponding 14 | [web-platform-tests](https://github.com/web-platform-tests/wpt) PR is highly appreciated. Typically, 15 | both PRs will be merged at the same time. Note that a test change that contradicts the spec should 16 | not be merged before the corresponding spec change. If testing is not practical, please explain why 17 | and if appropriate [file an issue](https://github.com/web-platform-tests/wpt/issues/new) to follow 18 | up later. Add the `type:untestable` or `type:missing-coverage` label as appropriate. 19 | 20 | We also have an [implementation report](https://webaudio.github.io/web-audio-api/implementation-report.html). 21 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug Report 3 | about: Create a report to fix the specification. 4 | labels: Needs WG review, Untriaged 5 | assignees: '' 6 | 7 | --- 8 | 9 | **Describe the issue** 10 | 11 | A clear and concise description of what the problem is in the spec. 12 | 13 | If you need help on how to use WebAudio, ask on your favorite forum or consider visiting 14 | the [WebAudio Slack Channel](https://web-audio.slack.com/) (register [here](https://web-audio-slackin.herokuapp.com/)) or 15 | [StackOverflow](https://stackoverflow.com/). 16 | 17 | If it's really an implementation bug, considering filing an issue for your browser at 18 | 19 | * Safari (WebKit): https://bugs.webkit.org/enter_bug.cgi?product=WebKit&component=Web%20Audio (WebKit bugzilla account needed). 20 | * Chrome (Blink): https://new.crbug.com/ (Google account needed). 21 | * Firefox (Gecko): https://bugzilla.mozilla.org/enter_bug.cgi?product=Core&component=Web%20Audio (GitHub or Mozilla Bugzilla account needed). 22 | 23 | 24 | **Where Is It** 25 | 26 | Provide a link to where the problem is in the spec 27 | 28 | **Additional Information** 29 | 30 | Provide any additional information 31 | -------------------------------------------------------------------------------- /compile.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | usage () { 4 | echo "compile.sh [-Kh?]" 5 | echo " -K Keep the actual-errs.txt. Useful for updating" 6 | echo " expected-errs.txt. (Otherwise removed when done.)" 7 | echo " -h This help" 8 | echo " -? This help" 9 | exit 0 10 | } 11 | 12 | KEEP=no 13 | while getopts "Kh?" arg 14 | do 15 | case $arg in 16 | K) KEEP=yes ;; 17 | h) usage ;; 18 | \?) usage ;; 19 | esac 20 | done 21 | 22 | # So we can see what we're doing 23 | set -x 24 | 25 | # Output from bikeshed is logged here, along with a version with line 26 | # numbers stripped out. 27 | BSLOG="bs.log" 28 | ERRLOG="actual-errs.txt" 29 | 30 | # Remove ERRLOG when we're done with this script, but keep BSLOG so we 31 | # can update the expected errors. 32 | if [ "$KEEP" = "no" ]; then 33 | trap "rm $ERRLOG" 0 34 | fi 35 | 36 | # Run bikeshed and save the output. You can use this output as is 37 | # to update expected-errs.txt. 38 | bikeshed --print=plain -f spec 2>&1 | tee $BSLOG 39 | 40 | # Remove the line numbers from the log, and make sure it ends with a newline. 41 | # Also remove any lines that start "cannot identify image file" because the path 42 | # is based the machine doing the build so we don't want that in the results. 43 | sed 's;^LINE [0-9]*:[0-9]*:;LINE:;' $BSLOG | 44 | sed '/^cannot identify image file/d' | 45 | sed -e '$a\' > $ERRLOG 46 | 47 | # Do the same for the expected errors and compare the two. Any 48 | # differences need to be fixed. Exit with a non-zero exit code if 49 | # there are any differences. 50 | (sed 's;^LINE [0-9]*:[0-9]*:;LINE:;' expected-errs.txt | 51 | sed '/^cannot identify image file/d' | 52 | sed -e '$a\' | 53 | diff -u - $ERRLOG) || exit 1 54 | 55 | -------------------------------------------------------------------------------- /images/webaudio-js.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 15 | 22 | 25 | 29 | 33 | 37 | 41 | 42 | 44 | 45 | 47 | image/svg+xml 48 | 50 | 51 | 52 | 53 | 54 | 56 | 57 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # How to contribute 2 | 3 | This repository containes the current Web Audio API _standard document_, developed by the Audio Working Group at the W3C. There are _multiple implementations_ of the Web Audio API standard. 4 | 5 | If you're about to open an issue about a bug in a particular implementation, please file a ticket in the corresponding implementation bug tracker instead: 6 | 7 | - WebKit (Safari): https://bugs.webkit.org/enter_bug.cgi?product=WebKit&component=Web%20Audio (WebKit bugzilla account needed). 8 | - Blink (Chrome, Chromium, Electron apps, etc.): https://new.crbug.com/ (Google account needed). 9 | - Gecko (Firefox): https://bugzilla.mozilla.org/enter_bug.cgi?product=Core&component=Web%20Audio (GitHub or Mozilla Bugzilla account needed). 10 | 11 | Testing the same Web Audio API code in multiple implementations can be a quick way to check if an implementation has a bug. However, it has happened that different implementation have the same bug, so it's best to read the [standard document](https://webaudio.github.io/web-audio-api/), and to check what _should_ happen. 12 | 13 | Feature requests are welcome, but a quick search in the [opened and closed issues](https://github.com/WebAudio/web-audio-api/issues) is welcome to avoid duplicates. 14 | 15 | Pull requests are also welcome, but any change to the standard (barring things like typos and the like) will have to be discussed in an issue (and possibly during a call, accessible only to W3C Audio Working Group members). 16 | 17 | [Bikeshed](https://github.com/tabatkins/bikeshed) is the tool used to write this 18 | specification. It can either be used via an HTTP API, or by running it locally. 19 | 20 | To use it via the HTTP API, run: 21 | 22 | ``` 23 | curl https://api.csswg.org/bikeshed/ -F file=@index.bs -F force=1 -F output=err -o err && cat err | sed -E 's/\\033\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g' | diff -u - expected-errs.txt 24 | ``` 25 | 26 | and preview your changes by doing: 27 | ``` 28 | curl https://api.csswg.org/bikeshed/ -F file=@index.bs -F force=1 > index.html 29 | ``` 30 | 31 | and opening `index.html` in your favorite browser. 32 | 33 | To run it locally, follow the [installation 34 | instructions](https://tabatkins.github.io/bikeshed/#installing). 35 | 36 | Then, `bikeshed serve` will run a web server [locally on port 37 | 8000](http://localhost:8000). 38 | 39 | -------------------------------------------------------------------------------- /images/cancel-linear.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | Produced by OmniGraffle 6.6.1 2016-10-03 18:37:06 +0000Canvas 1Layer 1t1t2tcHold value 4 | -------------------------------------------------------------------------------- /images/cancel-setTarget.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | Produced by OmniGraffle 6.6.1 2016-10-03 18:38:22 +0000Canvas 1Layer 1t1t2tcHold value 4 | -------------------------------------------------------------------------------- /images/cancel-setValueCurve.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | Produced by OmniGraffle 6.6.1 2016-10-03 18:39:30 +0000Canvas 1Layer 1t3t3+tdtcHold value 4 | -------------------------------------------------------------------------------- /expected-errs.txt: -------------------------------------------------------------------------------- 1 | LINE: Couldn't determine width and height of this image: 'images/cancel-linear.svg' 2 | LINE: Couldn't determine width and height of this image: 'images/cancel-setTarget.svg' 3 | LINE: Couldn't determine width and height of this image: 'images/cancel-setValueCurve.svg' 4 | LINE: Couldn't determine width and height of this image: 'images/channel-merger.svg' 5 | LINE: Couldn't determine width and height of this image: 'images/compression-curve.svg' 6 | LINE: Couldn't determine width and height of this image: 'images/dynamicscompressor-internal-graph.svg' 7 | LINE: Couldn't determine width and height of this image: 'images/panner-coord.svg' 8 | LINE: Couldn't determine width and height of this image: 'images/cone-diagram.svg' 9 | LINE: Can't find the 'contextOptions' argument of method 'OfflineAudioContext/constructor(numberOfChannels, length, sampleRate)' in the argumentdef block. 10 | LINE: Can't find the 'destinationNode' argument of method 'AudioNode/connect(destinationParam, output)' in the argumentdef block. 11 | LINE: Can't find the 'input' argument of method 'AudioNode/connect(destinationParam, output)' in the argumentdef block. 12 | LINE: Can't find the 'destinationNode' argument of method 'AudioNode/disconnect(destinationParam, output)' in the argumentdef block. 13 | LINE: Can't find the 'destinationNode' argument of method 'AudioNode/disconnect(destinationParam, output)' in the argumentdef block. 14 | LINE: Can't find the 'destinationNode' argument of method 'AudioNode/disconnect(destinationParam, output)' in the argumentdef block. 15 | LINE: Can't find the 'input' argument of method 'AudioNode/disconnect(destinationParam, output)' in the argumentdef block. 16 | LINE: Multiple possible 'audio' element refs. 17 | Arbitrarily chose https://html.spec.whatwg.org/multipage/media.html#audio 18 | To auto-select one of the following refs, insert one of these lines into a