-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathAudioBufferSourceNode.html
134 lines (130 loc) · 76.9 KB
/
AudioBufferSourceNode.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
<!doctype html><html lang="en-US" prefix="og: https://ogp.me/ns#"><head><meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/><link rel="icon" href="/favicon-48x48.cbbd161b.png"/><link rel="apple-touch-icon" href="/apple-touch-icon.6803c6f0.png"/><meta name="theme-color" content="#ffffff"/><link rel="manifest" href="/manifest.56b1cedc.json"/><link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="MDN Web Docs"/><title>AudioBufferSourceNode - Web APIs | MDN</title><link rel="alternate" title="AudioBufferSourceNode" href="https://developer.mozilla.org/fr/docs/Web/API/AudioBufferSourceNode" hreflang="fr"/><link rel="alternate" title="AudioBufferSourceNode" href="https://developer.mozilla.org/ja/docs/Web/API/AudioBufferSourceNode" hreflang="ja"/><link rel="alternate" title="AudioBufferSourceNode" href="https://developer.mozilla.org/ko/docs/Web/API/AudioBufferSourceNode" hreflang="ko"/><link rel="alternate" title="AudioBufferSourceNode" href="https://developer.mozilla.org/zh-CN/docs/Web/API/AudioBufferSourceNode" hreflang="zh"/><link rel="alternate" title="AudioBufferSourceNode" href="https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode" hreflang="en"/><link rel="alternate" type="application/rss+xml" title="MDN Blog RSS Feed" href="/en-US/blog/rss.xml" hreflang="en" /><meta name="robots" content="index, follow"><meta name="description" content="The AudioBufferSourceNode interface is an AudioScheduledSourceNode which represents an audio source consisting of in-memory audio data, stored in an AudioBuffer."/><meta property="og:url" content="https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode"/><meta property="og:title" content="AudioBufferSourceNode - Web APIs | MDN"/><meta property="og:locale" content="en-US"/><meta property="og:description" content="The AudioBufferSourceNode interface is an AudioScheduledSourceNode which represents an audio source consisting of in-memory audio data, stored in an AudioBuffer."/><meta property="og:image" content="https://developer.mozilla.org/mdn-social-share.cd6c4a5a.png"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:creator" content="MozDevNet"/><link rel="canonical" href="https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode"/><style media="print">.article-actions-container,.document-toc-container,.language-menu,.main-menu-toggle,.mdn-cta-container,.on-github,.page-footer,.place,.sidebar,.top-banner,.top-navigation-main,ul.prev-next{display:none!important}.main-page-content,.main-page-content pre{padding:2px}.main-page-content pre{border-left-width:2px}</style><script src="/static/js/ga.js" defer=""></script><script defer="defer" src="/static/js/main.8f7f874e.js"></script><link href="/static/css/main.76ba4ef8.css" rel="stylesheet"></head><body><script>document.body.addEventListener("load",(t=>{t.target.classList.contains("interactive")&&t.target.setAttribute("data-readystate","complete")}),{capture:!0});const c={light:"#ffffff",dark:"#1b1b1b"};if(window&&document.documentElement)try{const t=window.localStorage.getItem("theme");t&&(document.documentElement.className=t,document.documentElement.style.backgroundColor=c[t])}catch(t){console.warn("Unable to read theme from localStorage",t)}</script><div id="root"><ul id="nav-access" class="a11y-nav"><li><a id="skip-main" href="#content">Skip to main content</a></li><li><a id="skip-search" href="#top-nav-search-input">Skip to search</a></li><li><a id="skip-select-language" href="#languages-switcher-button">Skip to select language</a></li></ul><div class="page-wrapper category-api document-page"><div class="top-banner loading"><section class="place top container"></section></div><div class="main-document-header-container"><header class="top-navigation
"><div class="container "><div class="top-navigation-wrap"><a href="/en-US/" class="logo" aria-label="MDN homepage"><svg id="mdn-docs-logo" xmlns="http://www.w3.org/2000/svg" x="0" y="0" viewBox="0 0 694.9 104.4" style="enable-background:new 0 0 694.9 104.4" xml:space="preserve" role="img"><title>MDN Web Docs</title><path d="M40.3 0 11.7 92.1H0L28.5 0h11.8zm10.4 0v92.1H40.3V0h10.4zM91 0 62.5 92.1H50.8L79.3 0H91zm10.4 0v92.1H91V0h10.4z" class="logo-m"></path><path d="M627.9 95.6h67v8.8h-67v-8.8z" class="logo-_"></path><path d="M367 42h-4l-10.7 30.8h-5.5l-10.8-26h-.4l-10.5 26h-5.2L308.7 42h-3.8v-5.6H323V42h-6.5l6.8 20.4h.4l10.3-26h4.7l11.2 26h.5l5.7-20.3h-6.2v-5.6H367V42zm34.9 20c-.4 3.2-2 5.9-4.7 8.2-2.8 2.3-6.5 3.4-11.3 3.4-5.4 0-9.7-1.6-13.1-4.7-3.3-3.2-5-7.7-5-13.7 0-5.7 1.6-10.3 4.7-14s7.4-5.5 12.9-5.5c5.1 0 9.1 1.6 11.9 4.7s4.3 6.9 4.3 11.3c0 1.5-.2 3-.5 4.7h-25.6c.3 7.7 4 11.6 10.9 11.6 2.9 0 5.1-.7 6.5-2 1.5-1.4 2.5-3 3-4.9l6 .9zM394 51.3c.2-2.4-.4-4.7-1.8-6.9s-3.8-3.3-7-3.3c-3.1 0-5.3 1-6.9 3-1.5 2-2.5 4.4-2.8 7.2H394zm51 2.4c0 5-1.3 9.5-4 13.7s-6.9 6.2-12.7 6.2c-6 0-10.3-2.2-12.7-6.7-.1.4-.2 1.4-.4 2.9s-.3 2.5-.4 2.9h-7.3c.3-1.7.6-3.5.8-5.3.3-1.8.4-3.7.4-5.5V22.3h-6v-5.6H416v27c1.1-2.2 2.7-4.1 4.7-5.7 2-1.6 4.8-2.4 8.4-2.4 4.6 0 8.4 1.6 11.4 4.7 3 3.2 4.5 7.6 4.5 13.4zm-7.7.6c0-4.2-1-7.4-3-9.5-2-2.2-4.4-3.3-7.4-3.3-3.4 0-6 1.2-8 3.7-1.9 2.4-2.9 5-3 7.7V57c0 3 1 5.6 3 7.7s4.5 3.1 7.6 3.1c3.6 0 6.3-1.3 8.1-3.9 1.8-2.7 2.7-5.9 2.7-9.6zm69.2 18.5h-13.2v-7.2c-1.2 2.2-2.8 4.1-4.9 5.6-2.1 1.6-4.8 2.4-8.3 2.4-4.8 0-8.7-1.6-11.6-4.9-2.9-3.2-4.3-7.7-4.3-13.3 0-5 1.3-9.6 4-13.7 2.6-4.1 6.9-6.2 12.8-6.2 5.7 0 9.8 2.2 12.3 6.5V22.3h-8.6v-5.6h15.8v50.6h6v5.5zM493.2 56v-4.4c-.1-3-1.2-5.5-3.2-7.3s-4.4-2.8-7.2-2.8c-3.6 0-6.3 1.3-8.2 3.9-1.9 2.6-2.8 5.8-2.8 9.6 0 4.1 1 7.3 3 9.5s4.5 3.3 7.4 3.3c3.2 0 5.8-1.3 7.8-3.8 2.1-2.6 3.1-5.3 3.2-8zm53.1-1.4c0 5.6-1.8 10.2-5.3 13.7s-8.2 5.3-13.9 5.3-10.1-1.7-13.4-5.1c-3.3-3.4-5-7.9-5-13.5 0-5.3 1.6-9.9 4.7-13.7 3.2-3.8 7.9-5.7 14.2-5.7s11 1.9 14.1 5.7c3 3.7 4.6 8.1 4.6 13.3zm-7.7-.2c0-4-1-7.2-3-9.5s-4.8-3.5-8.2-3.5c-3.6 0-6.4 1.2-8.3 3.7s-2.9 5.6-2.9 9.5c0 3.7.9 6.8 2.8 9.4 1.9 2.6 4.6 3.9 8.3 3.9 3.6 0 6.4-1.3 8.4-3.8 1.9-2.6 2.9-5.8 2.9-9.7zm45 5.8c-.4 3.2-1.9 6.3-4.4 9.1-2.5 2.9-6.4 4.3-11.8 4.3-5.2 0-9.4-1.6-12.6-4.8-3.2-3.2-4.8-7.7-4.8-13.7 0-5.5 1.6-10.1 4.7-13.9 3.2-3.8 7.6-5.7 13.2-5.7 2.3 0 4.6.3 6.7.8 2.2.5 4.2 1.5 6.2 2.9l1.5 9.5-5.9.7-1.3-6.1c-2.1-1.2-4.5-1.8-7.2-1.8-3.5 0-6.1 1.2-7.7 3.7-1.7 2.5-2.5 5.7-2.5 9.6 0 4.1.9 7.3 2.7 9.5 1.8 2.3 4.4 3.4 7.8 3.4 5.2 0 8.2-2.9 9.2-8.8l6.2 1.3zm34.7 1.9c0 3.6-1.5 6.5-4.6 8.5s-7 3-11.7 3c-5.7 0-10.6-1.2-14.6-3.6l1.2-8.8 5.7.6-.2 4.7c1.1.5 2.3.9 3.6 1.1s2.6.3 3.9.3c2.4 0 4.5-.4 6.5-1.3 1.9-.9 2.9-2.2 2.9-4.1 0-1.8-.8-3.1-2.3-3.8s-3.5-1.3-5.8-1.7-4.6-.9-6.9-1.4c-2.3-.6-4.2-1.6-5.7-2.9-1.6-1.4-2.3-3.5-2.3-6.3 0-4.1 1.5-6.9 4.6-8.5s6.4-2.4 9.9-2.4c2.6 0 5 .3 7.2.9 2.2.6 4.3 1.4 6.1 2.4l.8 8.8-5.8.7-.8-5.7c-2.3-1-4.7-1.6-7.2-1.6-2.1 0-3.7.4-5.1 1.1-1.3.8-2 2-2 3.8 0 1.7.8 2.9 2.3 3.6 1.5.7 3.4 1.2 5.7 1.6 2.2.4 4.5.8 6.7 1.4 2.2.6 4.1 1.6 5.7 3 1.4 1.6 2.2 3.7 2.2 6.6zM197.6 73.2h-17.1v-5.5h3.8V51.9c0-3.7-.7-6.3-2.1-7.9-1.4-1.6-3.3-2.3-5.7-2.3-3.2 0-5.6 1.1-7.2 3.4s-2.4 4.6-2.5 6.9v15.6h6v5.5h-17.1v-5.5h3.8V51.9c0-3.8-.7-6.4-2.1-7.9-1.4-1.5-3.3-2.3-5.6-2.3-3.2 0-5.5 1.1-7.2 3.3-1.6 2.2-2.4 4.5-2.5 6.9v15.8h6.9v5.5h-20.2v-5.5h6V42.4h-6.1v-5.6h13.4v6.4c1.2-2.1 2.7-3.8 4.7-5.2 2-1.3 4.4-2 7.3-2s5.3.7 7.5 2.1c2.2 1.4 3.7 3.5 4.5 6.4 1.1-2.5 2.7-4.5 4.9-6.1s4.8-2.4 7.9-2.4c3.5 0 6.5 1.1 8.9 3.3s3.7 5.6 3.7 10.2v18.2h6.1v5.5zm42.5 0h-13.2V66c-1.2 2.2-2.8 4.1-4.9 5.6-2.1 1.6-4.8 2.4-8.3 2.4-4.8 0-8.7-1.6-11.6-4.9-2.9-3.2-4.3-7.7-4.3-13.3 0-5 1.3-9.6 4-13.7 2.6-4.1 6.9-6.2 12.8-6.2s9.8 2.2 12.3 6.5V22.7h-8.6v-5.6h15.8v50.6h6v5.5zm-13.3-16.8V52c-.1-3-1.2-5.5-3.2-7.3s-4.4-2.8-7.2-2.8c-3.6 0-6.3 1.3-8.2 3.9-1.9 2.6-2.8 5.8-2.8 9.6 0 4.1 1 7.3 3 9.5s4.5 3.3 7.4 3.3c3.2 0 5.8-1.3 7.8-3.8 2.1-2.6 3.1-5.3 3.2-8zm61.5 16.8H269v-5.5h6V51.9c0-3.7-.7-6.3-2.2-7.9-1.4-1.6-3.4-2.3-5.7-2.3-3.1 0-5.6 1-7.4 3s-2.8 4.4-2.9 7v15.9h6v5.5h-19.3v-5.5h6V42.4h-6.2v-5.6h13.6V43c2.6-4.6 6.8-6.9 12.7-6.9 3.6 0 6.7 1.1 9.2 3.3s3.7 5.6 3.7 10.2v18.2h6v5.4h-.2z" class="logo-text"></path></svg></a><button title="Open main menu" type="button" class="button action has-icon main-menu-toggle" aria-haspopup="menu" aria-label="Open main menu" aria-expanded="false"><span class="button-wrap"><span class="icon icon-menu "></span><span class="visually-hidden">Open main menu</span></span></button></div><div class="top-navigation-main"><nav class="main-nav" aria-label="Main menu"><ul class="main-menu nojs"><li class="top-level-entry-container"><button type="button" id="references-button" class="top-level-entry menu-toggle" aria-controls="references-menu" aria-expanded="false">References</button><a href="/en-US/docs/Web" class="top-level-entry">References</a><ul id="references-menu" class="submenu references hidden inline-submenu-lg" aria-labelledby="references-button"><li class="apis-link-container mobile-only "><a href="/en-US/docs/Web" class="submenu-item "><div class="submenu-icon"></div><div class="submenu-content-container"><div class="submenu-item-heading">Overview / Web Technology</div><p class="submenu-item-description">Web technology reference for developers</p></div></a></li><li class="html-link-container "><a href="/en-US/docs/Web/HTML" class="submenu-item "><div class="submenu-icon html"></div><div class="submenu-content-container"><div class="submenu-item-heading">HTML</div><p class="submenu-item-description">Structure of content on the web</p></div></a></li><li class="css-link-container "><a href="/en-US/docs/Web/CSS" class="submenu-item "><div class="submenu-icon css"></div><div class="submenu-content-container"><div class="submenu-item-heading">CSS</div><p class="submenu-item-description">Code used to describe document style</p></div></a></li><li class="javascript-link-container "><a href="/en-US/docs/Web/JavaScript" class="submenu-item "><div class="submenu-icon javascript"></div><div class="submenu-content-container"><div class="submenu-item-heading">JavaScript</div><p class="submenu-item-description">General-purpose scripting language</p></div></a></li><li class="http-link-container "><a href="/en-US/docs/Web/HTTP" class="submenu-item "><div class="submenu-icon http"></div><div class="submenu-content-container"><div class="submenu-item-heading">HTTP</div><p class="submenu-item-description">Protocol for transmitting web resources</p></div></a></li><li class="apis-link-container "><a href="/en-US/docs/Web/API" class="submenu-item "><div class="submenu-icon apis"></div><div class="submenu-content-container"><div class="submenu-item-heading">Web APIs</div><p class="submenu-item-description">Interfaces for building web applications</p></div></a></li><li class="apis-link-container "><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions" class="submenu-item "><div class="submenu-icon"></div><div class="submenu-content-container"><div class="submenu-item-heading">Web Extensions</div><p class="submenu-item-description">Developing extensions for web browsers</p></div></a></li><li class="apis-link-container desktop-only "><a href="/en-US/docs/Web" class="submenu-item "><div class="submenu-icon"></div><div class="submenu-content-container"><div class="submenu-item-heading">Web Technology</div><p class="submenu-item-description">Web technology reference for developers</p></div></a></li></ul></li><li class="top-level-entry-container"><button type="button" id="guides-button" class="top-level-entry menu-toggle" aria-controls="guides-menu" aria-expanded="false">Guides</button><a href="/en-US/docs/Learn" class="top-level-entry">Guides</a><ul id="guides-menu" class="submenu guides hidden inline-submenu-lg" aria-labelledby="guides-button"><li class="apis-link-container mobile-only "><a href="/en-US/docs/Learn" class="submenu-item "><div class="submenu-icon learn"></div><div class="submenu-content-container"><div class="submenu-item-heading">Overview / MDN Learning Area</div><p class="submenu-item-description">Learn web development</p></div></a></li><li class="apis-link-container desktop-only "><a href="/en-US/docs/Learn" class="submenu-item "><div class="submenu-icon learn"></div><div class="submenu-content-container"><div class="submenu-item-heading">MDN Learning Area</div><p class="submenu-item-description">Learn web development</p></div></a></li><li class="html-link-container "><a href="/en-US/docs/Learn/HTML" class="submenu-item "><div class="submenu-icon html"></div><div class="submenu-content-container"><div class="submenu-item-heading">HTML</div><p class="submenu-item-description">Learn to structure web content with HTML</p></div></a></li><li class="css-link-container "><a href="/en-US/docs/Learn/CSS" class="submenu-item "><div class="submenu-icon css"></div><div class="submenu-content-container"><div class="submenu-item-heading">CSS</div><p class="submenu-item-description">Learn to style content using CSS</p></div></a></li><li class="javascript-link-container "><a href="/en-US/docs/Learn/JavaScript" class="submenu-item "><div class="submenu-icon javascript"></div><div class="submenu-content-container"><div class="submenu-item-heading">JavaScript</div><p class="submenu-item-description">Learn to run scripts in the browser</p></div></a></li><li class=" "><a href="/en-US/docs/Web/Accessibility" class="submenu-item "><div class="submenu-icon"></div><div class="submenu-content-container"><div class="submenu-item-heading">Accessibility</div><p class="submenu-item-description">Learn to make the web accessible to all</p></div></a></li></ul></li><li class="top-level-entry-container"><button type="button" id="mdn-plus-button" class="top-level-entry menu-toggle" aria-controls="mdn-plus-menu" aria-expanded="false">Plus</button><a href="/en-US/plus" class="top-level-entry">Plus</a><ul id="mdn-plus-menu" class="submenu mdn-plus hidden inline-submenu-lg" aria-labelledby="mdn-plus-button"><li class=" "><a href="/en-US/plus" class="submenu-item "><div class="submenu-icon"></div><div class="submenu-content-container"><div class="submenu-item-heading">Overview</div><p class="submenu-item-description">A customized MDN experience</p></div></a></li><li class=" "><a href="/en-US/plus/ai-help" class="submenu-item "><div class="submenu-icon"></div><div class="submenu-content-container"><div class="submenu-item-heading">AI Help (beta)</div><p class="submenu-item-description">Get real-time assistance and support</p></div></a></li><li class=" "><a href="/en-US/plus/updates" class="submenu-item "><div class="submenu-icon"></div><div class="submenu-content-container"><div class="submenu-item-heading">Updates</div><p class="submenu-item-description">All browser compatibility updates at a glance</p></div></a></li><li class=" "><a href="/en-US/plus/docs/features/overview" class="submenu-item "><div class="submenu-icon"></div><div class="submenu-content-container"><div class="submenu-item-heading">Documentation</div><p class="submenu-item-description">Learn how to use MDN Plus</p></div></a></li><li class=" "><a href="/en-US/plus/docs/faq" class="submenu-item "><div class="submenu-icon"></div><div class="submenu-content-container"><div class="submenu-item-heading">FAQ</div><p class="submenu-item-description">Frequently asked questions about MDN Plus</p></div></a></li></ul></li><li class="top-level-entry-container"><a class="top-level-entry menu-link" href="/en-US/blog/">Blog</a></li><li class="top-level-entry-container"><a class="top-level-entry menu-link" href="/en-US/play">Play <sup class="new">New</sup></a></li><li class="top-level-entry-container"><a class="top-level-entry menu-link" href="/en-US/plus/ai-help/">AI Help <sup class="new beta">Beta</sup></a></li></ul></nav><div class="header-search"><form action="/en-US/search" class="search-form search-widget" id="top-nav-search-form" role="search"><label id="top-nav-search-label" for="top-nav-search-input" class="visually-hidden">Search MDN</label><input aria-activedescendant="" aria-autocomplete="list" aria-controls="top-nav-search-menu" aria-expanded="false" aria-labelledby="top-nav-search-label" autoComplete="off" id="top-nav-search-input" role="combobox" type="search" class="search-input-field" name="q" placeholder=" " required="" value=""/><button type="button" class="button action has-icon clear-search-button"><span class="button-wrap"><span class="icon icon-cancel "></span><span class="visually-hidden">Clear search input</span></span></button><button type="submit" class="button action has-icon search-button"><span class="button-wrap"><span class="icon icon-search "></span><span class="visually-hidden">Search</span></span></button><div id="top-nav-search-menu" role="listbox" aria-labelledby="top-nav-search-label"></div></form></div><div class="theme-switcher-menu"><button type="button" class="button action has-icon theme-switcher-menu small" aria-haspopup="menu"><span class="button-wrap"><span class="icon icon-theme-os-default "></span>Theme</span></button></div><ul class="auth-container"><li><a href="/users/fxa/login/authenticate/?next=%2Fen-US%2Fdocs%2FWeb%2FAPI%2FAudioBufferSourceNode" class="signin-link" rel="nofollow">Log in</a></li><li><a class="button primary mdn-plus-subscribe-link" href="/en-US/plus"><span class="button-wrap">Get MDN Plus</span></a></li></ul></div></div></header><div class="article-actions-container"><div class="container"><button type="button" class="button action has-icon sidebar-button" aria-label="Expand sidebar" aria-expanded="false" aria-controls="sidebar-quicklinks"><span class="button-wrap"><span class="icon icon-sidebar "></span></span></button><nav class="breadcrumbs-container" aria-label="Breadcrumb"><ol typeof="BreadcrumbList" vocab="https://schema.org/" aria-label="breadcrumbs"><li property="itemListElement" typeof="ListItem"><a class="breadcrumb" property="item" typeof="WebPage" href="/en-US/docs/Web"><span property="name">References</span></a><meta property="position" content="1"/></li><li property="itemListElement" typeof="ListItem"><a class="breadcrumb" property="item" typeof="WebPage" href="/en-US/docs/Web/API"><span property="name">Web APIs</span></a><meta property="position" content="2"/></li><li property="itemListElement" typeof="ListItem"><a class="breadcrumb-current-page" property="item" typeof="WebPage" href="/en-US/docs/Web/API/AudioBufferSourceNode"><span property="name">AudioBufferSourceNode</span></a><meta property="position" content="3"/></li></ol></nav><div class="article-actions"><button type="button" class="button action has-icon article-actions-toggle" aria-label="Article actions"><span class="button-wrap"><span class="icon icon-ellipses "></span><span class="article-actions-dialog-heading">Article Actions</span></span></button><ul class="article-actions-entries"><li class="article-actions-entry"><div class="languages-switcher-menu open-on-focus-within"><button id="languages-switcher-button" type="button" class="button action small has-icon languages-switcher-menu" aria-haspopup="menu"><span class="button-wrap"><span class="icon icon-language "></span>English (US)</span></button></div></li></ul></div></div></div></div><div class="main-wrapper"><div class="sidebar-container"><aside id="sidebar-quicklinks" class="sidebar" data-macro="APIRef"><button type="button" class="button action backdrop" aria-label="Collapse sidebar"><span class="button-wrap"></span></button><nav aria-label="Related Topics" class="sidebar-inner"><header class="sidebar-actions"><section class="sidebar-filter-container"><div class="sidebar-filter "><label id="sidebar-filter-label" class="sidebar-filter-label" for="sidebar-filter-input"><span class="icon icon-filter"></span><span class="visually-hidden">Filter sidebar</span></label><input id="sidebar-filter-input" autoComplete="off" class="sidebar-filter-input-field false" type="text" placeholder="Filter" value=""/><button type="button" class="button action has-icon clear-sidebar-filter-button"><span class="button-wrap"><span class="icon icon-cancel "></span><span class="visually-hidden">Clear filter input</span></span></button></div></section></header><div class="sidebar-inner-nav"><div class="in-nav-toc"><div class="document-toc-container"><section class="document-toc"><header><h2 class="document-toc-heading">In this article</h2></header><ul class="document-toc-list"><li class="document-toc-item "><a class="document-toc-link" href="#constructor">Constructor</a></li><li class="document-toc-item "><a class="document-toc-link" href="#instance_properties">Instance properties</a></li><li class="document-toc-item "><a class="document-toc-link" href="#instance_methods">Instance methods</a></li><li class="document-toc-item "><a class="document-toc-link" href="#event_handlers">Event handlers</a></li><li class="document-toc-item "><a class="document-toc-link" href="#examples">Examples</a></li><li class="document-toc-item "><a class="document-toc-link" href="#specifications">Specifications</a></li><li class="document-toc-item "><a class="document-toc-link" href="#browser_compatibility">Browser compatibility</a></li><li class="document-toc-item "><a class="document-toc-link" href="#see_also">See also</a></li></ul></section></div></div><div class="sidebar-body"><ol><li><strong><a href="/en-US/docs/Web/API/Web_Audio_API">Web Audio API</a></strong></li><li><strong><em><a href="/en-US/docs/Web/API/AudioBufferSourceNode" aria-current="page"><code>AudioBufferSourceNode</code></a></em></strong></li><li class="toggle"><details open=""><summary>Constructor</summary><ol><li><a href="/en-US/docs/Web/API/AudioBufferSourceNode/AudioBufferSourceNode"><code>AudioBufferSourceNode()</code></a></li></ol></details></li><li class="toggle"><details open=""><summary>Instance properties</summary><ol><li><a href="/en-US/docs/Web/API/AudioBufferSourceNode/buffer"><code>buffer</code></a></li><li><a href="/en-US/docs/Web/API/AudioBufferSourceNode/detune"><code>detune</code></a></li><li><a href="/en-US/docs/Web/API/AudioBufferSourceNode/loop"><code>loop</code></a></li><li><a href="/en-US/docs/Web/API/AudioBufferSourceNode/loopEnd"><code>loopEnd</code></a></li><li><a href="/en-US/docs/Web/API/AudioBufferSourceNode/loopStart"><code>loopStart</code></a></li><li><a href="/en-US/docs/Web/API/AudioBufferSourceNode/playbackRate"><code>playbackRate</code></a></li></ol></details></li><li class="toggle"><details open=""><summary>Instance methods</summary><ol><li><a href="/en-US/docs/Web/API/AudioBufferSourceNode/start"><code>start()</code></a></li></ol></details></li><li class="toggle"><details open=""><summary>Inheritance:</summary><ol><li><a href="/en-US/docs/Web/API/AudioScheduledSourceNode"><code>AudioScheduledSourceNode</code></a></li><li><a href="/en-US/docs/Web/API/AudioNode"><code>AudioNode</code></a></li><li><a href="/en-US/docs/Web/API/EventTarget"><code>EventTarget</code></a></li></ol></details></li><li class="toggle"><details open=""><summary>Related pages for Web Audio API</summary><ol><li><a href="/en-US/docs/Web/API/AnalyserNode"><code>AnalyserNode</code></a></li><li><a href="/en-US/docs/Web/API/AudioBuffer"><code>AudioBuffer</code></a></li><li><a href="/en-US/docs/Web/API/AudioContext"><code>AudioContext</code></a></li><li><a href="/en-US/docs/Web/API/AudioDestinationNode"><code>AudioDestinationNode</code></a></li><li><a href="/en-US/docs/Web/API/AudioListener"><code>AudioListener</code></a></li><li><a href="/en-US/docs/Web/API/AudioNode"><code>AudioNode</code></a></li><li><a href="/en-US/docs/Web/API/AudioParam"><code>AudioParam</code></a></li><li><a href="/en-US/docs/Web/API/AudioProcessingEvent"><code>AudioProcessingEvent</code></a></li><li><a href="/en-US/docs/Web/API/AudioScheduledSourceNode"><code>AudioScheduledSourceNode</code></a></li><li><a href="/en-US/docs/Web/API/AudioSinkInfo"><code>AudioSinkInfo</code></a></li><li><a href="/en-US/docs/Web/API/AudioWorklet"><code>AudioWorklet</code></a></li><li><a href="/en-US/docs/Web/API/AudioWorkletGlobalScope"><code>AudioWorkletGlobalScope</code></a></li><li><a href="/en-US/docs/Web/API/AudioWorkletNode"><code>AudioWorkletNode</code></a></li><li><a href="/en-US/docs/Web/API/AudioWorkletProcessor"><code>AudioWorkletProcessor</code></a></li><li><a href="/en-US/docs/Web/API/BaseAudioContext"><code>BaseAudioContext</code></a></li><li><a href="/en-US/docs/Web/API/BiquadFilterNode"><code>BiquadFilterNode</code></a></li><li><a href="/en-US/docs/Web/API/ChannelMergerNode"><code>ChannelMergerNode</code></a></li><li><a href="/en-US/docs/Web/API/ChannelSplitterNode"><code>ChannelSplitterNode</code></a></li><li><a href="/en-US/docs/Web/API/ConstantSourceNode"><code>ConstantSourceNode</code></a></li><li><a href="/en-US/docs/Web/API/ConvolverNode"><code>ConvolverNode</code></a></li><li><a href="/en-US/docs/Web/API/DelayNode"><code>DelayNode</code></a></li><li><a href="/en-US/docs/Web/API/DynamicsCompressorNode"><code>DynamicsCompressorNode</code></a></li><li><a href="/en-US/docs/Web/API/GainNode"><code>GainNode</code></a></li><li><a href="/en-US/docs/Web/API/IIRFilterNode"><code>IIRFilterNode</code></a></li><li><a href="/en-US/docs/Web/API/MediaElementAudioSourceNode"><code>MediaElementAudioSourceNode</code></a></li><li><a href="/en-US/docs/Web/API/MediaStreamAudioDestinationNode"><code>MediaStreamAudioDestinationNode</code></a></li><li><a href="/en-US/docs/Web/API/MediaStreamAudioSourceNode"><code>MediaStreamAudioSourceNode</code></a></li><li><a href="/en-US/docs/Web/API/OfflineAudioCompletionEvent"><code>OfflineAudioCompletionEvent</code></a></li><li><a href="/en-US/docs/Web/API/OfflineAudioContext"><code>OfflineAudioContext</code></a></li><li><a href="/en-US/docs/Web/API/OscillatorNode"><code>OscillatorNode</code></a></li><li><a href="/en-US/docs/Web/API/PannerNode"><code>PannerNode</code></a></li><li><a href="/en-US/docs/Web/API/PeriodicWave"><code>PeriodicWave</code></a></li><li><a href="/en-US/docs/Web/API/StereoPannerNode"><code>StereoPannerNode</code></a></li><li><a href="/en-US/docs/Web/API/WaveShaperNode"><code>WaveShaperNode</code></a></li></ol></details></li></ol></div></div><section class="place side"></section></nav></aside><div class="toc-container"><aside class="toc"><nav><div class="document-toc-container"><section class="document-toc"><header><h2 class="document-toc-heading">In this article</h2></header><ul class="document-toc-list"><li class="document-toc-item "><a class="document-toc-link" href="#constructor">Constructor</a></li><li class="document-toc-item "><a class="document-toc-link" href="#instance_properties">Instance properties</a></li><li class="document-toc-item "><a class="document-toc-link" href="#instance_methods">Instance methods</a></li><li class="document-toc-item "><a class="document-toc-link" href="#event_handlers">Event handlers</a></li><li class="document-toc-item "><a class="document-toc-link" href="#examples">Examples</a></li><li class="document-toc-item "><a class="document-toc-link" href="#specifications">Specifications</a></li><li class="document-toc-item "><a class="document-toc-link" href="#browser_compatibility">Browser compatibility</a></li><li class="document-toc-item "><a class="document-toc-link" href="#see_also">See also</a></li></ul></section></div></nav></aside><section class="place side"></section></div></div><main id="content" class="main-content "><article class="main-page-content" lang="en-US"><header><h1>AudioBufferSourceNode</h1></header><div class="section-content"><p>The <strong><code>AudioBufferSourceNode</code></strong> interface is an <a href="/en-US/docs/Web/API/AudioScheduledSourceNode"><code>AudioScheduledSourceNode</code></a> which represents an audio source consisting of in-memory audio data, stored in an <a href="/en-US/docs/Web/API/AudioBuffer"><code>AudioBuffer</code></a>.</p>
<p>This interface is especially useful for playing back audio which has particularly stringent timing accuracy requirements, such as for sounds that must match a specific rhythm and can be kept in memory rather than being played from disk or the network. To play sounds which require accurate timing but must be streamed from the network or played from disk, use a <a href="/en-US/docs/Web/API/AudioWorkletNode"><code>AudioWorkletNode</code></a> to implement its playback.</p><svg viewBox="-1 -1 650 42" preserveAspectRatio="xMinYMin meet">
<a style="text-decoration: none;" xlink:href="/en-US/docs/Web/API/EventTarget">
<rect x="0" y="0" width="88" height="25" fill="#fff" stroke="#D4DDE4" stroke-width="2px"></rect>
<text x="44" y="16" font-size="10px" fill="#4D4E53" text-anchor="middle">
EventTarget
</text>
</a>
<line x1="88" y1="14" x2="118" y2="14" stroke="#D4DDE4"></line>
<polyline points="88,14 98,9 98,19 88,14" stroke="#D4DDE4" fill="#fff"></polyline>
<a style="text-decoration: none;" xlink:href="/en-US/docs/Web/API/AudioNode">
<rect x="118" y="0" width="75" height="25" fill="#fff" stroke="#D4DDE4" stroke-width="2px"></rect>
<text x="155.5" y="16" font-size="10px" fill="#4D4E53" text-anchor="middle">
AudioNode
</text>
</a>
<line x1="193" y1="14" x2="223" y2="14" stroke="#D4DDE4"></line>
<polyline points="193,14 203,9 203,19 193,14" stroke="#D4DDE4" fill="#fff"></polyline>
<a style="text-decoration: none;" xlink:href="/en-US/docs/Web/API/AudioScheduledSourceNode">
<rect x="223" y="0" width="192" height="25" fill="#fff" stroke="#D4DDE4" stroke-width="2px"></rect>
<text x="319" y="16" font-size="10px" fill="#4D4E53" text-anchor="middle">
AudioScheduledSourceNode
</text>
</a>
<line x1="415" y1="14" x2="445" y2="14" stroke="#D4DDE4"></line>
<polyline points="415,14 425,9 425,19 415,14" stroke="#D4DDE4" fill="#fff"></polyline>
<a style="text-decoration: none;" xlink:href="/en-US/docs/Web/API/AudioBufferSourceNode" aria-current="page">
<rect x="445" y="0" width="168" height="25" fill="#F4F7F8" stroke="#D4DDE4" stroke-width="2px"></rect>
<text x="529" y="16" font-size="10px" fill="#4D4E53" text-anchor="middle">
AudioBufferSourceNode
</text>
</a></svg>
<p>An <code>AudioBufferSourceNode</code> has no inputs and exactly one output, which has the same number of channels as the <code>AudioBuffer</code> indicated by its <a href="/en-US/docs/Web/API/AudioBufferSourceNode/buffer" title="buffer"><code>buffer</code></a> property. If there's no buffer set—that is, if <code>buffer</code> is <code>null</code>—the output contains a single channel of silence (every sample is 0).</p>
<p>An <code>AudioBufferSourceNode</code> can only be played once; after each call to <a href="/en-US/docs/Web/API/AudioScheduledSourceNode/start" title="start()"><code>start()</code></a>, you have to create a new node if you want to play the same sound again. Fortunately, these nodes are very inexpensive to create, and the actual <code>AudioBuffer</code>s can be reused for multiple plays of the sound. Indeed, you can use these nodes in a "fire and forget" manner: create the node, call <code>start()</code> to begin playing the sound, and don't even bother to hold a reference to it. It will automatically be garbage-collected at an appropriate time, which won't be until sometime after the sound has finished playing.</p>
<p>Multiple calls to <a href="/en-US/docs/Web/API/AudioScheduledSourceNode/stop" title="stop()"><code>stop()</code></a> are allowed. The most recent call replaces the previous one, if the <code>AudioBufferSourceNode</code> has not already reached the end of the buffer.</p>
<p>
<img src="/en-US/docs/Web/API/AudioBufferSourceNode/webaudioaudiobuffersourcenode.png" alt="The AudioBufferSourceNode takes the content of an AudioBuffer and m" width="365" height="193" loading="lazy">
</p>
<figure class="table-container"><table class="properties">
<tbody>
<tr>
<th scope="row">Number of inputs</th>
<td><code>0</code></td>
</tr>
<tr>
<th scope="row">Number of outputs</th>
<td><code>1</code></td>
</tr>
<tr>
<th scope="row">Channel count</th>
<td>defined by the associated <a href="/en-US/docs/Web/API/AudioBuffer"><code>AudioBuffer</code></a></td>
</tr>
</tbody>
</table></figure></div><section aria-labelledby="constructor"><h2 id="constructor"><a href="#constructor">Constructor</a></h2><div class="section-content"><dl>
<dt id="audiobuffersourcenode"><a href="/en-US/docs/Web/API/AudioBufferSourceNode/AudioBufferSourceNode" title="AudioBufferSourceNode()"><code>AudioBufferSourceNode()</code></a></dt>
<dd>
<p>Creates and returns a new <code>AudioBufferSourceNode</code> object. As an alternative, you can use the <a href="/en-US/docs/Web/API/BaseAudioContext/createBufferSource"><code>BaseAudioContext.createBufferSource()</code></a> factory method; see <a href="/en-US/docs/Web/API/AudioNode#creating_an_audionode">Creating an AudioNode</a>.</p>
</dd>
</dl></div></section><section aria-labelledby="instance_properties"><h2 id="instance_properties"><a href="#instance_properties">Instance properties</a></h2><div class="section-content"><p><em>Inherits properties from its parent, <a href="/en-US/docs/Web/API/AudioScheduledSourceNode"><code>AudioScheduledSourceNode</code></a></em>.</p>
<dl>
<dt id="audiobuffersourcenode.buffer"><a href="/en-US/docs/Web/API/AudioBufferSourceNode/buffer"><code>AudioBufferSourceNode.buffer</code></a></dt>
<dd>
<p>An <a href="/en-US/docs/Web/API/AudioBuffer"><code>AudioBuffer</code></a> that defines the audio asset to be played, or when set to the value <code>null</code>, defines a single channel of silence (in which every sample is 0.0).</p>
</dd>
<dt id="audiobuffersourcenode.detune"><a href="/en-US/docs/Web/API/AudioBufferSourceNode/detune"><code>AudioBufferSourceNode.detune</code></a></dt>
<dd>
<p>A <a href="/en-US/docs/Web/API/AudioParam#k-rate">k-rate</a> <a href="/en-US/docs/Web/API/AudioParam"><code>AudioParam</code></a> representing detuning of playback in <a href="https://en.wikipedia.org/wiki/Cent_%28music%29" class="external" target="_blank">cents</a>. This value is compounded with <code>playbackRate</code> to determine the speed at which the sound is played. Its default value is <code>0</code> (meaning no detuning), and its nominal range is -∞ to ∞.</p>
</dd>
<dt id="audiobuffersourcenode.loop"><a href="/en-US/docs/Web/API/AudioBufferSourceNode/loop"><code>AudioBufferSourceNode.loop</code></a></dt>
<dd>
<p>A Boolean attribute indicating if the audio asset must be replayed when the end of the <a href="/en-US/docs/Web/API/AudioBuffer"><code>AudioBuffer</code></a> is reached. Its default value is <code>false</code>.</p>
</dd>
<dt id="audiobuffersourcenode.loopstart"><a href="/en-US/docs/Web/API/AudioBufferSourceNode/loopStart"><code>AudioBufferSourceNode.loopStart</code></a> <span class="badge inline optional">Optional</span></dt>
<dd>
<p>A floating-point value indicating the time, in seconds, at which playback of the <a href="/en-US/docs/Web/API/AudioBuffer"><code>AudioBuffer</code></a> must begin when <code>loop</code> is <code>true</code>. Its default value is <code>0</code> (meaning that at the beginning of each loop, playback begins at the start of the audio buffer).</p>
</dd>
<dt id="audiobuffersourcenode.loopend"><a href="/en-US/docs/Web/API/AudioBufferSourceNode/loopEnd"><code>AudioBufferSourceNode.loopEnd</code></a> <span class="badge inline optional">Optional</span></dt>
<dd>
<p>A floating-point number indicating the time, in seconds, at which playback of the <a href="/en-US/docs/Web/API/AudioBuffer"><code>AudioBuffer</code></a> stops and loops back to the time indicated by <code>loopStart</code>, if <code>loop</code> is <code>true</code>. The default value is <code>0</code>.</p>
</dd>
<dt id="audiobuffersourcenode.playbackrate"><a href="/en-US/docs/Web/API/AudioBufferSourceNode/playbackRate"><code>AudioBufferSourceNode.playbackRate</code></a></dt>
<dd>
<p>A <a href="/en-US/docs/Web/API/AudioParam#k-rate">k-rate</a> <a href="/en-US/docs/Web/API/AudioParam"><code>AudioParam</code></a> that defines the speed factor at which the audio asset will be played, where a value of 1.0 is the sound's natural sampling rate. Since no pitch correction is applied on the output, this can be used to change the pitch of the sample. This value is compounded with <code>detune</code> to determine the final playback rate.</p>
</dd>
</dl></div></section><section aria-labelledby="instance_methods"><h2 id="instance_methods"><a href="#instance_methods">Instance methods</a></h2><div class="section-content"><p><em>Inherits methods from its parent, <a href="/en-US/docs/Web/API/AudioScheduledSourceNode"><code>AudioScheduledSourceNode</code></a>, and overrides the following method:</em>.</p>
<dl>
<dt id="start"><a href="/en-US/docs/Web/API/AudioBufferSourceNode/start" title="start()"><code>start()</code></a></dt>
<dd>
<p>Schedules playback of the audio data contained in the buffer, or begins playback immediately. Additionally allows the start offset and play duration to be set.</p>
</dd>
</dl></div></section><section aria-labelledby="event_handlers"><h2 id="event_handlers"><a href="#event_handlers">Event handlers</a></h2><div class="section-content"><p><em>Inherits event handlers from its parent, <a href="/en-US/docs/Web/API/AudioScheduledSourceNode"><code>AudioScheduledSourceNode</code></a></em>.</p></div></section><section aria-labelledby="examples"><h2 id="examples"><a href="#examples">Examples</a></h2><div class="section-content"><p>In this example, we create a two-second buffer, fill it with white noise, and then play it using an <code>AudioBufferSourceNode</code>. The comments should clearly explain what is going on.</p>
<div class="notecard note" id="sect1">
<p><strong>Note:</strong> You can also <a href="https://mdn.github.io/webaudio-examples/audio-buffer/" class="external" target="_blank">run the code live</a>, or <a href="https://github.com/mdn/webaudio-examples/blob/master/audio-buffer/index.html" class="external" target="_blank">view the source</a>.</p>
</div>
<div class="code-example"><p class="example-header"><span class="language-name">js</span></p><pre class="brush: js notranslate" data-signature="GqM0HxXZnwxFeon0p1LWuLqGeCsD7T55zt+lh8/8k3c="><code><span class="token keyword">const</span> audioCtx <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token punctuation">(</span>window<span class="token punctuation">.</span>AudioContext <span class="token operator">||</span> window<span class="token punctuation">.</span>webkitAudioContext<span class="token punctuation">)</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">// Create an empty three-second stereo buffer at the sample rate of the AudioContext</span>
<span class="token keyword">const</span> myArrayBuffer <span class="token operator">=</span> audioCtx<span class="token punctuation">.</span><span class="token function">createBuffer</span><span class="token punctuation">(</span>
<span class="token number">2</span><span class="token punctuation">,</span>
audioCtx<span class="token punctuation">.</span>sampleRate <span class="token operator">*</span> <span class="token number">3</span><span class="token punctuation">,</span>
audioCtx<span class="token punctuation">.</span>sampleRate<span class="token punctuation">,</span>
<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">// Fill the buffer with white noise;</span>
<span class="token comment">//just random values between -1.0 and 1.0</span>
<span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">let</span> channel <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> channel <span class="token operator"><</span> myArrayBuffer<span class="token punctuation">.</span>numberOfChannels<span class="token punctuation">;</span> channel<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token comment">// This gives us the actual ArrayBuffer that contains the data</span>
<span class="token keyword">const</span> nowBuffering <span class="token operator">=</span> myArrayBuffer<span class="token punctuation">.</span><span class="token function">getChannelData</span><span class="token punctuation">(</span>channel<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">let</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator"><</span> myArrayBuffer<span class="token punctuation">.</span>length<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token comment">// Math.random() is in [0; 1.0]</span>
<span class="token comment">// audio needs to be in [-1.0; 1.0]</span>
nowBuffering<span class="token punctuation">[</span>i<span class="token punctuation">]</span> <span class="token operator">=</span> Math<span class="token punctuation">.</span><span class="token function">random</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">*</span> <span class="token number">2</span> <span class="token operator">-</span> <span class="token number">1</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
<span class="token comment">// Get an AudioBufferSourceNode.</span>
<span class="token comment">// This is the AudioNode to use when we want to play an AudioBuffer</span>
<span class="token keyword">const</span> source <span class="token operator">=</span> audioCtx<span class="token punctuation">.</span><span class="token function">createBufferSource</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">// set the buffer in the AudioBufferSourceNode</span>
source<span class="token punctuation">.</span>buffer <span class="token operator">=</span> myArrayBuffer<span class="token punctuation">;</span>
<span class="token comment">// connect the AudioBufferSourceNode to the</span>
<span class="token comment">// destination so we can hear the sound</span>
source<span class="token punctuation">.</span><span class="token function">connect</span><span class="token punctuation">(</span>audioCtx<span class="token punctuation">.</span>destination<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">// start the source playing</span>
source<span class="token punctuation">.</span><span class="token function">start</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre></div>
<div class="notecard note" id="sect2">
<p><strong>Note:</strong> For a <code>decodeAudioData()</code> example, see the <a href="/en-US/docs/Web/API/BaseAudioContext/decodeAudioData" title="AudioContext.decodeAudioData()"><code>AudioContext.decodeAudioData()</code></a> page.</p>
</div></div></section><h2 id="specifications"><a href="#specifications">Specifications</a></h2><table class="standard-table"><thead><tr><th scope="col">Specification</th></tr></thead><tbody><tr><td><a href="https://webaudio.github.io/web-audio-api/#AudioBufferSourceNode">Web Audio API<!-- --> <br/><small># <!-- -->AudioBufferSourceNode</small></a></td></tr></tbody></table><h2 id="browser_compatibility"><a href="#browser_compatibility">Browser compatibility</a></h2><p>BCD tables only load in the browser<noscript> <!-- -->with JavaScript enabled. Enable JavaScript to view data.</noscript></p><section aria-labelledby="see_also"><h2 id="see_also"><a href="#see_also">See also</a></h2><div class="section-content"><ul>
<li><a href="/en-US/docs/Web/API/Web_Audio_API/Using_Web_Audio_API">Using the Web Audio API</a></li>
<li><a href="/en-US/docs/Web/API/Web_Audio_API">Web Audio API</a></li>
</ul></div></section><aside class="metadata"><div class="metadata-content-container"><div id="on-github" class="on-github"><h3>Found a content problem with this page?</h3><ul><li><a href="https://github.com/mdn/content/edit/main/files/en-us/web/api/audiobuffersourcenode/index.md" title="This will take you to GitHub, where you'll need to sign in first." target="_blank" rel="noopener noreferrer">Edit the page on GitHub</a>.</li><li><a href="https://github.com/mdn/content/issues/new?template=page-report.yml&mdn-url=https%3A%2F%2Fdeveloper.mozilla.org%2Fen-US%2Fdocs%2FWeb%2FAPI%2FAudioBufferSourceNode&metadata=%3C%21--+Do+not+make+changes+below+this+line+--%3E%0A%3Cdetails%3E%0A%3Csummary%3EPage+report+details%3C%2Fsummary%3E%0A%0A*+Folder%3A+%60en-us%2Fweb%2Fapi%2Faudiobuffersourcenode%60%0A*+MDN+URL%3A+https%3A%2F%2Fdeveloper.mozilla.org%2Fen-US%2Fdocs%2FWeb%2FAPI%2FAudioBufferSourceNode%0A*+GitHub+URL%3A+https%3A%2F%2Fgithub.com%2Fmdn%2Fcontent%2Fblob%2Fmain%2Ffiles%2Fen-us%2Fweb%2Fapi%2Faudiobuffersourcenode%2Findex.md%0A*+Last+commit%3A+https%3A%2F%2Fgithub.com%2Fmdn%2Fcontent%2Fcommit%2Facfe8c9f1f4145f77653a2bc64a9744b001358dc%0A*+Document+last+modified%3A+2023-07-07T07%3A19%3A19.000Z%0A%0A%3C%2Fdetails%3E" title="This will take you to GitHub to file a new issue." target="_blank" rel="noopener noreferrer">Report the content issue</a>.</li><li><a href="https://github.com/mdn/content/blob/main/files/en-us/web/api/audiobuffersourcenode/index.md?plain=1" title="Folder: en-us/web/api/audiobuffersourcenode (Opens in a new tab)" target="_blank" rel="noopener noreferrer">View the source on GitHub</a>.</li></ul>Want to get more involved?<!-- --> <a href="https://github.com/mdn/content/blob/main/CONTRIBUTING.md" title="This will take you to our contribution guidelines on GitHub." target="_blank" rel="noopener noreferrer">Learn how to contribute</a>.</div><p class="last-modified-date">This page was last modified on<!-- --> <time dateTime="2023-07-07T07:19:19.000Z">Jul 7, 2023</time> by<!-- --> <a href="/en-US/docs/Web/API/AudioBufferSourceNode/contributors.txt">MDN contributors</a>.</p></div></aside></article></main></div></div><footer id="nav-footer" class="page-footer"><div class="page-footer-grid"><div class="page-footer-logo-col"><a href="/" class="mdn-footer-logo" aria-label="MDN homepage"><svg width="48" height="17" viewBox="0 0 48 17" fill="none" xmlns="http://www.w3.org/2000/svg"><title id="mdn-footer-logo-svg">MDN logo</title><path d="M20.04 16.512H15.504V10.416C15.504 9.488 15.344 8.824 15.024 8.424C14.72 8.024 14.264 7.824 13.656 7.824C12.92 7.824 12.384 8.064 12.048 8.544C11.728 9.024 11.568 9.64 11.568 10.392V14.184H13.008V16.512H8.472V10.416C8.472 9.488 8.312 8.824 7.992 8.424C7.688 8.024 7.232 7.824 6.624 7.824C5.872 7.824 5.336 8.064 5.016 8.544C4.696 9.024 4.536 9.64 4.536 10.392V14.184H6.6V16.512H0V14.184H1.44V8.04H0.024V5.688H4.536V7.32C5.224 6.088 6.32 5.472 7.824 5.472C8.608 5.472 9.328 5.664 9.984 6.048C10.64 6.432 11.096 7.016 11.352 7.8C11.992 6.248 13.168 5.472 14.88 5.472C15.856 5.472 16.72 5.776 17.472 6.384C18.224 6.992 18.6 7.936 18.6 9.216V14.184H20.04V16.512Z" fill="currentColor"></path><path d="M33.6714 16.512H29.1354V14.496C28.8314 15.12 28.3834 15.656 27.7914 16.104C27.1994 16.536 26.4154 16.752 25.4394 16.752C24.0154 16.752 22.8954 16.264 22.0794 15.288C21.2634 14.312 20.8554 12.984 20.8554 11.304C20.8554 9.688 21.2554 8.312 22.0554 7.176C22.8554 6.04 24.0634 5.472 25.6794 5.472C26.5594 5.472 27.2794 5.648 27.8394 6C28.3994 6.352 28.8314 6.8 29.1354 7.344V2.352H26.9754V0H32.2314V14.184H33.6714V16.512ZM29.1354 11.04V10.776C29.1354 9.88 28.8954 9.184 28.4154 8.688C27.9514 8.176 27.3674 7.92 26.6634 7.92C25.9754 7.92 25.3674 8.176 24.8394 8.688C24.3274 9.2 24.0714 10.008 24.0714 11.112C24.0714 12.152 24.3114 12.944 24.7914 13.488C25.2714 14.032 25.8394 14.304 26.4954 14.304C27.3114 14.304 27.9514 13.96 28.4154 13.272C28.8954 12.584 29.1354 11.84 29.1354 11.04Z" fill="currentColor"></path><path d="M47.9589 16.512H41.9829V14.184H43.4229V10.416C43.4229 9.488 43.2629 8.824 42.9429 8.424C42.6389 8.024 42.1829 7.824 41.5749 7.824C40.8389 7.824 40.2709 8.056 39.8709 8.52C39.4709 8.968 39.2629 9.56 39.2469 10.296V14.184H40.6869V16.512H34.7109V14.184H36.1509V8.04H34.5909V5.688H39.2469V7.344C39.9669 6.096 41.1269 5.472 42.7269 5.472C43.7509 5.472 44.6389 5.776 45.3909 6.384C46.1429 6.992 46.5189 7.936 46.5189 9.216V14.184H47.9589V16.512Z" fill="currentColor"></path></svg></a><p>Your blueprint for a better internet.</p><ul class="social-icons"><li><a class="icon icon-twitter" href="https://twitter.com/mozdevnet" target="_blank" rel="noopener noreferrer"><span class="visually-hidden">MDN on Twitter</span></a></li><li><a class="icon icon-github-mark-small" href="https://github.com/mdn/" target="_blank" rel="noopener noreferrer"><span class="visually-hidden">MDN on GitHub</span></a></li><li><a class="icon icon-feed" href="/en-US/blog/rss.xml" target="_blank"><span class="visually-hidden">MDN Blog RSS Feed</span></a></li></ul></div><div class="page-footer-nav-col-1"><h2 class="footer-nav-heading">MDN</h2><ul class="footer-nav-list"><li class="footer-nav-item"><a href="/en-US/about">About</a></li><li class="footer-nav-item"><a href="/en-US/blog/">Blog</a></li><li class="footer-nav-item"><a href="https://www.mozilla.org/en-US/careers/listings/?team=Marketing" target="_blank" rel="noopener noreferrer">Careers</a></li><li class="footer-nav-item"><a href="/en-US/advertising">Advertise with us</a></li></ul></div><div class="page-footer-nav-col-2"><h2 class="footer-nav-heading">Support</h2><ul class="footer-nav-list"><li class="footer-nav-item"><a class="footer-nav-link" href="https://support.mozilla.org/products/mdn-plus">Product help</a></li><li class="footer-nav-item"><a class="footer-nav-link" href="/en-US/docs/MDN/Community/Issues">Report an issue</a></li></ul></div><div class="page-footer-nav-col-3"><h2 class="footer-nav-heading">Our communities</h2><ul class="footer-nav-list"><li class="footer-nav-item"><a class="footer-nav-link" href="/en-US/community">MDN Community</a></li><li class="footer-nav-item"><a class="footer-nav-link" href="https://discourse.mozilla.org/c/mdn/236" target="_blank" rel="noopener noreferrer">MDN Forum</a></li><li class="footer-nav-item"><a class="footer-nav-link" href="https://wiki.mozilla.org/Matrix" target="_blank" rel="noopener noreferrer">MDN Chat</a></li></ul></div><div class="page-footer-nav-col-4"><h2 class="footer-nav-heading">Developers</h2><ul class="footer-nav-list"><li class="footer-nav-item"><a class="footer-nav-link" href="/en-US/docs/Web">Web Technologies</a></li><li class="footer-nav-item"><a class="footer-nav-link" href="/en-US/docs/Learn">Learn Web Development</a></li><li class="footer-nav-item"><a class="footer-nav-link" href="/en-US/plus">MDN Plus</a></li><li class="footer-nav-item"><a href="https://hacks.mozilla.org/" target="_blank" rel="noopener noreferrer">Hacks Blog</a></li></ul></div><div class="page-footer-moz"><a href="https://www.mozilla.org/" class="footer-moz-logo-link" target="_blank" rel="noopener noreferrer"><svg width="112" height="32" fill="none" xmlns="http://www.w3.org/2000/svg"><title id="mozilla-footer-logo-svg">Mozilla logo</title><path d="M41.753 14.218c-2.048 0-3.324 1.522-3.324 4.157 0 2.423 1.119 4.286 3.29 4.286 2.082 0 3.447-1.678 3.447-4.347 0-2.826-1.522-4.096-3.413-4.096Zm54.89 7.044c0 .901.437 1.618 1.645 1.618 1.427 0 2.949-1.024 3.044-3.352-.649-.095-1.365-.185-2.02-.185-1.426-.005-2.668.397-2.668 1.92Z" fill="currentColor"></path><path d="M0 0v32h111.908V0H0Zm32.56 25.426h-5.87v-7.884c0-2.423-.806-3.352-2.39-3.352-1.924 0-2.702 1.365-2.702 3.324v4.868h1.864v3.044h-5.864v-7.884c0-2.423-.806-3.352-2.39-3.352-1.924 0-2.702 1.365-2.702 3.324v4.868h2.669v3.044H6.642v-3.044h1.863v-7.918H6.642V11.42h5.864v2.11c.839-1.489 2.3-2.39 4.252-2.39 2.02 0 3.878.963 4.566 3.01.778-1.862 2.361-3.01 4.566-3.01 2.512 0 4.812 1.522 4.812 4.84v6.402h1.863v3.044h-.005Zm9.036.307c-4.314 0-7.296-2.635-7.296-7.106 0-4.096 2.484-7.481 7.514-7.481s7.481 3.38 7.481 7.29c0 4.472-3.228 7.297-7.699 7.297Zm22.578-.307H51.942l-.403-2.11 7.7-8.846h-4.376l-.621 2.17-2.888-.313.498-4.907h12.294l.313 2.11-7.767 8.852h4.533l.654-2.172 3.167.308-.872 4.908Zm7.99 0h-4.191v-5.03h4.19v5.03Zm0-8.976h-4.191v-5.03h4.19v5.03Zm2.618 8.976 6.054-21.358h3.945l-6.054 21.358h-3.945Zm8.136 0 6.048-21.358h3.945l-6.054 21.358h-3.939Zm21.486.307c-1.863 0-2.887-1.085-3.072-2.792-.805 1.427-2.232 2.792-4.498 2.792-2.02 0-4.314-1.085-4.314-4.006 0-3.447 3.323-4.253 6.518-4.253.778 0 1.584.034 2.3.124v-.465c0-1.427-.034-3.133-2.3-3.133-.84 0-1.488.061-2.143.402l-.453 1.578-3.195-.34.549-3.224c2.45-.996 3.692-1.27 5.992-1.27 3.01 0 5.556 1.55 5.556 4.75v6.083c0 .805.314 1.085.963 1.085.184 0 .375-.034.587-.095l.034 2.11a5.432 5.432 0 0 1-2.524.654Z" fill="currentColor"></path></svg></a><ul class="footer-moz-list"><li class="footer-moz-item"><a href="https://www.mozilla.org/privacy/websites/" class="footer-moz-link" target="_blank" rel="noopener noreferrer">Website Privacy Notice</a></li><li class="footer-moz-item"><a href="https://www.mozilla.org/privacy/websites/#cookies" class="footer-moz-link" target="_blank" rel="noopener noreferrer">Cookies</a></li><li class="footer-moz-item"><a href="https://www.mozilla.org/about/legal/terms/mozilla" class="footer-moz-link" target="_blank" rel="noopener noreferrer">Legal</a></li><li class="footer-moz-item"><a href="https://www.mozilla.org/about/governance/policies/participation/" class="footer-moz-link" target="_blank" rel="noopener noreferrer">Community Participation Guidelines</a></li></ul></div><div class="page-footer-legal"><p id="license" class="page-footer-legal-text">Visit<!-- --> <a href="https://www.mozilla.org" target="_blank" rel="noopener noreferrer">Mozilla Corporation’s</a> <!-- -->not-for-profit parent, the<!-- --> <a target="_blank" rel="noopener noreferrer" href="https://foundation.mozilla.org/">Mozilla Foundation</a>.<br/>Portions of this content are ©1998–<!-- -->2023<!-- --> by individual mozilla.org contributors. Content available under<!-- --> <a href="/en-US/docs/MDN/Writing_guidelines/Attrib_copyright_license">a Creative Commons license</a>.</p></div></div></footer></div><script type="application/json" id="hydration">{"doc":{"isMarkdown":true,"isTranslated":false,"isActive":true,"flaws":{},"title":"AudioBufferSourceNode","mdn_url":"/en-US/docs/Web/API/AudioBufferSourceNode","locale":"en-US","native":"English (US)","browserCompat":["api.AudioBufferSourceNode"],"sidebarHTML":"<ol><li><strong><a href=\"/en-US/docs/Web/API/Web_Audio_API\">Web Audio API</a></strong></li><li><strong><em><a href=\"/en-US/docs/Web/API/AudioBufferSourceNode\" aria-current=\"page\"><code>AudioBufferSourceNode</code></a></em></strong></li><li class=\"toggle\"><details open=\"\"><summary>Constructor</summary><ol><li><a href=\"/en-US/docs/Web/API/AudioBufferSourceNode/AudioBufferSourceNode\"><code>AudioBufferSourceNode()</code></a></li></ol></details></li><li class=\"toggle\"><details open=\"\"><summary>Instance properties</summary><ol><li><a href=\"/en-US/docs/Web/API/AudioBufferSourceNode/buffer\"><code>buffer</code></a></li><li><a href=\"/en-US/docs/Web/API/AudioBufferSourceNode/detune\"><code>detune</code></a></li><li><a href=\"/en-US/docs/Web/API/AudioBufferSourceNode/loop\"><code>loop</code></a></li><li><a href=\"/en-US/docs/Web/API/AudioBufferSourceNode/loopEnd\"><code>loopEnd</code></a></li><li><a href=\"/en-US/docs/Web/API/AudioBufferSourceNode/loopStart\"><code>loopStart</code></a></li><li><a href=\"/en-US/docs/Web/API/AudioBufferSourceNode/playbackRate\"><code>playbackRate</code></a></li></ol></details></li><li class=\"toggle\"><details open=\"\"><summary>Instance methods</summary><ol><li><a href=\"/en-US/docs/Web/API/AudioBufferSourceNode/start\"><code>start()</code></a></li></ol></details></li><li class=\"toggle\"><details open=\"\"><summary>Inheritance:</summary><ol><li><a href=\"/en-US/docs/Web/API/AudioScheduledSourceNode\"><code>AudioScheduledSourceNode</code></a></li><li><a href=\"/en-US/docs/Web/API/AudioNode\"><code>AudioNode</code></a></li><li><a href=\"/en-US/docs/Web/API/EventTarget\"><code>EventTarget</code></a></li></ol></details></li><li class=\"toggle\"><details open=\"\"><summary>Related pages for Web Audio API</summary><ol><li><a href=\"/en-US/docs/Web/API/AnalyserNode\"><code>AnalyserNode</code></a></li><li><a href=\"/en-US/docs/Web/API/AudioBuffer\"><code>AudioBuffer</code></a></li><li><a href=\"/en-US/docs/Web/API/AudioContext\"><code>AudioContext</code></a></li><li><a href=\"/en-US/docs/Web/API/AudioDestinationNode\"><code>AudioDestinationNode</code></a></li><li><a href=\"/en-US/docs/Web/API/AudioListener\"><code>AudioListener</code></a></li><li><a href=\"/en-US/docs/Web/API/AudioNode\"><code>AudioNode</code></a></li><li><a href=\"/en-US/docs/Web/API/AudioParam\"><code>AudioParam</code></a></li><li><a href=\"/en-US/docs/Web/API/AudioProcessingEvent\"><code>AudioProcessingEvent</code></a></li><li><a href=\"/en-US/docs/Web/API/AudioScheduledSourceNode\"><code>AudioScheduledSourceNode</code></a></li><li><a href=\"/en-US/docs/Web/API/AudioSinkInfo\"><code>AudioSinkInfo</code></a></li><li><a href=\"/en-US/docs/Web/API/AudioWorklet\"><code>AudioWorklet</code></a></li><li><a href=\"/en-US/docs/Web/API/AudioWorkletGlobalScope\"><code>AudioWorkletGlobalScope</code></a></li><li><a href=\"/en-US/docs/Web/API/AudioWorkletNode\"><code>AudioWorkletNode</code></a></li><li><a href=\"/en-US/docs/Web/API/AudioWorkletProcessor\"><code>AudioWorkletProcessor</code></a></li><li><a href=\"/en-US/docs/Web/API/BaseAudioContext\"><code>BaseAudioContext</code></a></li><li><a href=\"/en-US/docs/Web/API/BiquadFilterNode\"><code>BiquadFilterNode</code></a></li><li><a href=\"/en-US/docs/Web/API/ChannelMergerNode\"><code>ChannelMergerNode</code></a></li><li><a href=\"/en-US/docs/Web/API/ChannelSplitterNode\"><code>ChannelSplitterNode</code></a></li><li><a href=\"/en-US/docs/Web/API/ConstantSourceNode\"><code>ConstantSourceNode</code></a></li><li><a href=\"/en-US/docs/Web/API/ConvolverNode\"><code>ConvolverNode</code></a></li><li><a href=\"/en-US/docs/Web/API/DelayNode\"><code>DelayNode</code></a></li><li><a href=\"/en-US/docs/Web/API/DynamicsCompressorNode\"><code>DynamicsCompressorNode</code></a></li><li><a href=\"/en-US/docs/Web/API/GainNode\"><code>GainNode</code></a></li><li><a href=\"/en-US/docs/Web/API/IIRFilterNode\"><code>IIRFilterNode</code></a></li><li><a href=\"/en-US/docs/Web/API/MediaElementAudioSourceNode\"><code>MediaElementAudioSourceNode</code></a></li><li><a href=\"/en-US/docs/Web/API/MediaStreamAudioDestinationNode\"><code>MediaStreamAudioDestinationNode</code></a></li><li><a href=\"/en-US/docs/Web/API/MediaStreamAudioSourceNode\"><code>MediaStreamAudioSourceNode</code></a></li><li><a href=\"/en-US/docs/Web/API/OfflineAudioCompletionEvent\"><code>OfflineAudioCompletionEvent</code></a></li><li><a href=\"/en-US/docs/Web/API/OfflineAudioContext\"><code>OfflineAudioContext</code></a></li><li><a href=\"/en-US/docs/Web/API/OscillatorNode\"><code>OscillatorNode</code></a></li><li><a href=\"/en-US/docs/Web/API/PannerNode\"><code>PannerNode</code></a></li><li><a href=\"/en-US/docs/Web/API/PeriodicWave\"><code>PeriodicWave</code></a></li><li><a href=\"/en-US/docs/Web/API/StereoPannerNode\"><code>StereoPannerNode</code></a></li><li><a href=\"/en-US/docs/Web/API/WaveShaperNode\"><code>WaveShaperNode</code></a></li></ol></details></li></ol>","sidebarMacro":"APIRef","body":[{"type":"prose","value":{"id":null,"title":null,"isH3":false,"content":"<p>The <strong><code>AudioBufferSourceNode</code></strong> interface is an <a href=\"/en-US/docs/Web/API/AudioScheduledSourceNode\"><code>AudioScheduledSourceNode</code></a> which represents an audio source consisting of in-memory audio data, stored in an <a href=\"/en-US/docs/Web/API/AudioBuffer\"><code>AudioBuffer</code></a>.</p>\n<p>This interface is especially useful for playing back audio which has particularly stringent timing accuracy requirements, such as for sounds that must match a specific rhythm and can be kept in memory rather than being played from disk or the network. To play sounds which require accurate timing but must be streamed from the network or played from disk, use a <a href=\"/en-US/docs/Web/API/AudioWorkletNode\"><code>AudioWorkletNode</code></a> to implement its playback.</p><svg viewBox=\"-1 -1 650 42\" preserveAspectRatio=\"xMinYMin meet\">\n <a style=\"text-decoration: none;\" xlink:href=\"/en-US/docs/Web/API/EventTarget\">\n <rect x=\"0\" y=\"0\" width=\"88\" height=\"25\" fill=\"#fff\" stroke=\"#D4DDE4\" stroke-width=\"2px\"></rect>\n <text x=\"44\" y=\"16\" font-size=\"10px\" fill=\"#4D4E53\" text-anchor=\"middle\">\n EventTarget\n </text>\n </a>\n <line x1=\"88\" y1=\"14\" x2=\"118\" y2=\"14\" stroke=\"#D4DDE4\"></line>\n <polyline points=\"88,14 98,9 98,19 88,14\" stroke=\"#D4DDE4\" fill=\"#fff\"></polyline>\n <a style=\"text-decoration: none;\" xlink:href=\"/en-US/docs/Web/API/AudioNode\">\n <rect x=\"118\" y=\"0\" width=\"75\" height=\"25\" fill=\"#fff\" stroke=\"#D4DDE4\" stroke-width=\"2px\"></rect>\n <text x=\"155.5\" y=\"16\" font-size=\"10px\" fill=\"#4D4E53\" text-anchor=\"middle\">\n AudioNode\n </text>\n </a>\n <line x1=\"193\" y1=\"14\" x2=\"223\" y2=\"14\" stroke=\"#D4DDE4\"></line>\n <polyline points=\"193,14 203,9 203,19 193,14\" stroke=\"#D4DDE4\" fill=\"#fff\"></polyline>\n <a style=\"text-decoration: none;\" xlink:href=\"/en-US/docs/Web/API/AudioScheduledSourceNode\">\n <rect x=\"223\" y=\"0\" width=\"192\" height=\"25\" fill=\"#fff\" stroke=\"#D4DDE4\" stroke-width=\"2px\"></rect>\n <text x=\"319\" y=\"16\" font-size=\"10px\" fill=\"#4D4E53\" text-anchor=\"middle\">\n AudioScheduledSourceNode\n </text>\n </a>\n <line x1=\"415\" y1=\"14\" x2=\"445\" y2=\"14\" stroke=\"#D4DDE4\"></line>\n <polyline points=\"415,14 425,9 425,19 415,14\" stroke=\"#D4DDE4\" fill=\"#fff\"></polyline>\n <a style=\"text-decoration: none;\" xlink:href=\"/en-US/docs/Web/API/AudioBufferSourceNode\" aria-current=\"page\">\n <rect x=\"445\" y=\"0\" width=\"168\" height=\"25\" fill=\"#F4F7F8\" stroke=\"#D4DDE4\" stroke-width=\"2px\"></rect>\n <text x=\"529\" y=\"16\" font-size=\"10px\" fill=\"#4D4E53\" text-anchor=\"middle\">\n AudioBufferSourceNode\n </text>\n </a></svg>\n<p>An <code>AudioBufferSourceNode</code> has no inputs and exactly one output, which has the same number of channels as the <code>AudioBuffer</code> indicated by its <a href=\"/en-US/docs/Web/API/AudioBufferSourceNode/buffer\" title=\"buffer\"><code>buffer</code></a> property. If there's no buffer set—that is, if <code>buffer</code> is <code>null</code>—the output contains a single channel of silence (every sample is 0).</p>\n<p>An <code>AudioBufferSourceNode</code> can only be played once; after each call to <a href=\"/en-US/docs/Web/API/AudioScheduledSourceNode/start\" title=\"start()\"><code>start()</code></a>, you have to create a new node if you want to play the same sound again. Fortunately, these nodes are very inexpensive to create, and the actual <code>AudioBuffer</code>s can be reused for multiple plays of the sound. Indeed, you can use these nodes in a \"fire and forget\" manner: create the node, call <code>start()</code> to begin playing the sound, and don't even bother to hold a reference to it. It will automatically be garbage-collected at an appropriate time, which won't be until sometime after the sound has finished playing.</p>\n<p>Multiple calls to <a href=\"/en-US/docs/Web/API/AudioScheduledSourceNode/stop\" title=\"stop()\"><code>stop()</code></a> are allowed. The most recent call replaces the previous one, if the <code>AudioBufferSourceNode</code> has not already reached the end of the buffer.</p>\n<p>\n <img src=\"/en-US/docs/Web/API/AudioBufferSourceNode/webaudioaudiobuffersourcenode.png\" alt=\"The AudioBufferSourceNode takes the content of an AudioBuffer and m\" width=\"365\" height=\"193\" loading=\"lazy\">\n</p>\n<figure class=\"table-container\"><table class=\"properties\">\n <tbody>\n <tr>\n <th scope=\"row\">Number of inputs</th>\n <td><code>0</code></td>\n </tr>\n <tr>\n <th scope=\"row\">Number of outputs</th>\n <td><code>1</code></td>\n </tr>\n <tr>\n <th scope=\"row\">Channel count</th>\n <td>defined by the associated <a href=\"/en-US/docs/Web/API/AudioBuffer\"><code>AudioBuffer</code></a></td>\n </tr>\n </tbody>\n</table></figure>"}},{"type":"prose","value":{"id":"constructor","title":"Constructor","isH3":false,"content":"<dl>\n <dt id=\"audiobuffersourcenode\"><a href=\"/en-US/docs/Web/API/AudioBufferSourceNode/AudioBufferSourceNode\" title=\"AudioBufferSourceNode()\"><code>AudioBufferSourceNode()</code></a></dt>\n <dd>\n <p>Creates and returns a new <code>AudioBufferSourceNode</code> object. As an alternative, you can use the <a href=\"/en-US/docs/Web/API/BaseAudioContext/createBufferSource\"><code>BaseAudioContext.createBufferSource()</code></a> factory method; see <a href=\"/en-US/docs/Web/API/AudioNode#creating_an_audionode\">Creating an AudioNode</a>.</p>\n </dd>\n</dl>"}},{"type":"prose","value":{"id":"instance_properties","title":"Instance properties","isH3":false,"content":"<p><em>Inherits properties from its parent, <a href=\"/en-US/docs/Web/API/AudioScheduledSourceNode\"><code>AudioScheduledSourceNode</code></a></em>.</p>\n<dl>\n <dt id=\"audiobuffersourcenode.buffer\"><a href=\"/en-US/docs/Web/API/AudioBufferSourceNode/buffer\"><code>AudioBufferSourceNode.buffer</code></a></dt>\n <dd>\n <p>An <a href=\"/en-US/docs/Web/API/AudioBuffer\"><code>AudioBuffer</code></a> that defines the audio asset to be played, or when set to the value <code>null</code>, defines a single channel of silence (in which every sample is 0.0).</p>\n </dd>\n <dt id=\"audiobuffersourcenode.detune\"><a href=\"/en-US/docs/Web/API/AudioBufferSourceNode/detune\"><code>AudioBufferSourceNode.detune</code></a></dt>\n <dd>\n <p>A <a href=\"/en-US/docs/Web/API/AudioParam#k-rate\">k-rate</a> <a href=\"/en-US/docs/Web/API/AudioParam\"><code>AudioParam</code></a> representing detuning of playback in <a href=\"https://en.wikipedia.org/wiki/Cent_%28music%29\" class=\"external\" target=\"_blank\">cents</a>. This value is compounded with <code>playbackRate</code> to determine the speed at which the sound is played. Its default value is <code>0</code> (meaning no detuning), and its nominal range is -∞ to ∞.</p>\n </dd>\n <dt id=\"audiobuffersourcenode.loop\"><a href=\"/en-US/docs/Web/API/AudioBufferSourceNode/loop\"><code>AudioBufferSourceNode.loop</code></a></dt>\n <dd>\n <p>A Boolean attribute indicating if the audio asset must be replayed when the end of the <a href=\"/en-US/docs/Web/API/AudioBuffer\"><code>AudioBuffer</code></a> is reached. Its default value is <code>false</code>.</p>\n </dd>\n <dt id=\"audiobuffersourcenode.loopstart\"><a href=\"/en-US/docs/Web/API/AudioBufferSourceNode/loopStart\"><code>AudioBufferSourceNode.loopStart</code></a> <span class=\"badge inline optional\">Optional</span></dt>\n <dd>\n <p>A floating-point value indicating the time, in seconds, at which playback of the <a href=\"/en-US/docs/Web/API/AudioBuffer\"><code>AudioBuffer</code></a> must begin when <code>loop</code> is <code>true</code>. Its default value is <code>0</code> (meaning that at the beginning of each loop, playback begins at the start of the audio buffer).</p>\n </dd>\n <dt id=\"audiobuffersourcenode.loopend\"><a href=\"/en-US/docs/Web/API/AudioBufferSourceNode/loopEnd\"><code>AudioBufferSourceNode.loopEnd</code></a> <span class=\"badge inline optional\">Optional</span></dt>\n <dd>\n <p>A floating-point number indicating the time, in seconds, at which playback of the <a href=\"/en-US/docs/Web/API/AudioBuffer\"><code>AudioBuffer</code></a> stops and loops back to the time indicated by <code>loopStart</code>, if <code>loop</code> is <code>true</code>. The default value is <code>0</code>.</p>\n </dd>\n <dt id=\"audiobuffersourcenode.playbackrate\"><a href=\"/en-US/docs/Web/API/AudioBufferSourceNode/playbackRate\"><code>AudioBufferSourceNode.playbackRate</code></a></dt>\n <dd>\n <p>A <a href=\"/en-US/docs/Web/API/AudioParam#k-rate\">k-rate</a> <a href=\"/en-US/docs/Web/API/AudioParam\"><code>AudioParam</code></a> that defines the speed factor at which the audio asset will be played, where a value of 1.0 is the sound's natural sampling rate. Since no pitch correction is applied on the output, this can be used to change the pitch of the sample. This value is compounded with <code>detune</code> to determine the final playback rate.</p>\n </dd>\n</dl>"}},{"type":"prose","value":{"id":"instance_methods","title":"Instance methods","isH3":false,"content":"<p><em>Inherits methods from its parent, <a href=\"/en-US/docs/Web/API/AudioScheduledSourceNode\"><code>AudioScheduledSourceNode</code></a>, and overrides the following method:</em>.</p>\n<dl>\n <dt id=\"start\"><a href=\"/en-US/docs/Web/API/AudioBufferSourceNode/start\" title=\"start()\"><code>start()</code></a></dt>\n <dd>\n <p>Schedules playback of the audio data contained in the buffer, or begins playback immediately. Additionally allows the start offset and play duration to be set.</p>\n </dd>\n</dl>"}},{"type":"prose","value":{"id":"event_handlers","title":"Event handlers","isH3":false,"content":"<p><em>Inherits event handlers from its parent, <a href=\"/en-US/docs/Web/API/AudioScheduledSourceNode\"><code>AudioScheduledSourceNode</code></a></em>.</p>"}},{"type":"prose","value":{"id":"examples","title":"Examples","isH3":false,"content":"<p>In this example, we create a two-second buffer, fill it with white noise, and then play it using an <code>AudioBufferSourceNode</code>. The comments should clearly explain what is going on.</p>\n<div class=\"notecard note\" id=\"sect1\">\n <p><strong>Note:</strong> You can also <a href=\"https://mdn.github.io/webaudio-examples/audio-buffer/\" class=\"external\" target=\"_blank\">run the code live</a>, or <a href=\"https://github.com/mdn/webaudio-examples/blob/master/audio-buffer/index.html\" class=\"external\" target=\"_blank\">view the source</a>.</p>\n</div>\n<div class=\"code-example\"><p class=\"example-header\"><span class=\"language-name\">js</span></p><pre class=\"brush: js notranslate\" data-signature=\"GqM0HxXZnwxFeon0p1LWuLqGeCsD7T55zt+lh8/8k3c=\"><code><span class=\"token keyword\">const</span> audioCtx <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token punctuation\">(</span>window<span class=\"token punctuation\">.</span>AudioContext <span class=\"token operator\">||</span> window<span class=\"token punctuation\">.</span>webkitAudioContext<span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token comment\">// Create an empty three-second stereo buffer at the sample rate of the AudioContext</span>\n<span class=\"token keyword\">const</span> myArrayBuffer <span class=\"token operator\">=</span> audioCtx<span class=\"token punctuation\">.</span><span class=\"token function\">createBuffer</span><span class=\"token punctuation\">(</span>\n <span class=\"token number\">2</span><span class=\"token punctuation\">,</span>\n audioCtx<span class=\"token punctuation\">.</span>sampleRate <span class=\"token operator\">*</span> <span class=\"token number\">3</span><span class=\"token punctuation\">,</span>\n audioCtx<span class=\"token punctuation\">.</span>sampleRate<span class=\"token punctuation\">,</span>\n<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token comment\">// Fill the buffer with white noise;</span>\n<span class=\"token comment\">//just random values between -1.0 and 1.0</span>\n<span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">let</span> channel <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span> channel <span class=\"token operator\"><</span> myArrayBuffer<span class=\"token punctuation\">.</span>numberOfChannels<span class=\"token punctuation\">;</span> channel<span class=\"token operator\">++</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n <span class=\"token comment\">// This gives us the actual ArrayBuffer that contains the data</span>\n <span class=\"token keyword\">const</span> nowBuffering <span class=\"token operator\">=</span> myArrayBuffer<span class=\"token punctuation\">.</span><span class=\"token function\">getChannelData</span><span class=\"token punctuation\">(</span>channel<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n <span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">let</span> i <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span> i <span class=\"token operator\"><</span> myArrayBuffer<span class=\"token punctuation\">.</span>length<span class=\"token punctuation\">;</span> i<span class=\"token operator\">++</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n <span class=\"token comment\">// Math.random() is in [0; 1.0]</span>\n <span class=\"token comment\">// audio needs to be in [-1.0; 1.0]</span>\n nowBuffering<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> Math<span class=\"token punctuation\">.</span><span class=\"token function\">random</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">*</span> <span class=\"token number\">2</span> <span class=\"token operator\">-</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token comment\">// Get an AudioBufferSourceNode.</span>\n<span class=\"token comment\">// This is the AudioNode to use when we want to play an AudioBuffer</span>\n<span class=\"token keyword\">const</span> source <span class=\"token operator\">=</span> audioCtx<span class=\"token punctuation\">.</span><span class=\"token function\">createBufferSource</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token comment\">// set the buffer in the AudioBufferSourceNode</span>\nsource<span class=\"token punctuation\">.</span>buffer <span class=\"token operator\">=</span> myArrayBuffer<span class=\"token punctuation\">;</span>\n<span class=\"token comment\">// connect the AudioBufferSourceNode to the</span>\n<span class=\"token comment\">// destination so we can hear the sound</span>\nsource<span class=\"token punctuation\">.</span><span class=\"token function\">connect</span><span class=\"token punctuation\">(</span>audioCtx<span class=\"token punctuation\">.</span>destination<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token comment\">// start the source playing</span>\nsource<span class=\"token punctuation\">.</span><span class=\"token function\">start</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n</code></pre></div>\n<div class=\"notecard note\" id=\"sect2\">\n <p><strong>Note:</strong> For a <code>decodeAudioData()</code> example, see the <a href=\"/en-US/docs/Web/API/BaseAudioContext/decodeAudioData\" title=\"AudioContext.decodeAudioData()\"><code>AudioContext.decodeAudioData()</code></a> page.</p>\n</div>"}},{"type":"specifications","value":{"title":"Specifications","id":"specifications","isH3":false,"specifications":[{"bcdSpecificationURL":"https://webaudio.github.io/web-audio-api/#AudioBufferSourceNode","title":"Web Audio API"}],"query":"api.AudioBufferSourceNode"}},{"type":"browser_compatibility","value":{"title":"Browser compatibility","id":"browser_compatibility","isH3":false,"query":"api.AudioBufferSourceNode"}},{"type":"prose","value":{"id":"see_also","title":"See also","isH3":false,"content":"<ul>\n <li><a href=\"/en-US/docs/Web/API/Web_Audio_API/Using_Web_Audio_API\">Using the Web Audio API</a></li>\n <li><a href=\"/en-US/docs/Web/API/Web_Audio_API\">Web Audio API</a></li>\n</ul>"}}],"toc":[{"text":"Constructor","id":"constructor"},{"text":"Instance properties","id":"instance_properties"},{"text":"Instance methods","id":"instance_methods"},{"text":"Event handlers","id":"event_handlers"},{"text":"Examples","id":"examples"},{"text":"Specifications","id":"specifications"},{"text":"Browser compatibility","id":"browser_compatibility"},{"text":"See also","id":"see_also"}],"summary":"The AudioBufferSourceNode interface is an AudioScheduledSourceNode which represents an audio source consisting of in-memory audio data, stored in an AudioBuffer.","popularity":0.0067,"modified":"2023-07-07T07:19:19.000Z","other_translations":[{"locale":"fr","title":"AudioBufferSourceNode","native":"Français"},{"locale":"ja","title":"AudioBufferSourceNode","native":"日本語"},{"locale":"ko","title":"AudioBufferSourceNode","native":"한국어"},{"locale":"zh-CN","title":"AudioBufferSourceNode","native":"中文 (简体)"}],"source":{"folder":"en-us/web/api/audiobuffersourcenode","github_url":"https://github.com/mdn/content/blob/main/files/en-us/web/api/audiobuffersourcenode/index.md","last_commit_url":"https://github.com/mdn/content/commit/acfe8c9f1f4145f77653a2bc64a9744b001358dc","filename":"index.md"},"short_title":"AudioBufferSourceNode","parents":[{"uri":"/en-US/docs/Web","title":"References"},{"uri":"/en-US/docs/Web/API","title":"Web APIs"},{"uri":"/en-US/docs/Web/API/AudioBufferSourceNode","title":"AudioBufferSourceNode"}],"pageTitle":"AudioBufferSourceNode - Web APIs | MDN","noIndexing":false}}</script></body></html>