diff options
| author | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:40:17 -0500 |
|---|---|---|
| committer | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:40:17 -0500 |
| commit | 33058f2b292b3a581333bdfb21b8f671898c5060 (patch) | |
| tree | 51c3e392513ec574331b2d3f85c394445ea803c6 /files/zh-cn/web/api/baseaudiocontext/createperiodicwave | |
| parent | 8b66d724f7caf0157093fb09cfec8fbd0c6ad50a (diff) | |
| download | translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.gz translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.bz2 translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.zip | |
initial commit
Diffstat (limited to 'files/zh-cn/web/api/baseaudiocontext/createperiodicwave')
| -rw-r--r-- | files/zh-cn/web/api/baseaudiocontext/createperiodicwave/index.html | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/files/zh-cn/web/api/baseaudiocontext/createperiodicwave/index.html b/files/zh-cn/web/api/baseaudiocontext/createperiodicwave/index.html new file mode 100644 index 0000000000..ae4d038165 --- /dev/null +++ b/files/zh-cn/web/api/baseaudiocontext/createperiodicwave/index.html @@ -0,0 +1,101 @@ +--- +title: BaseAudioContext.createPeriodicWave() +slug: Web/API/BaseAudioContext/createPeriodicWave +translation_of: Web/API/BaseAudioContext/createPeriodicWave +--- +<p>{{ APIRef("Web Audio API") }}</p> + +<div> +<p><span class="seoSummary">{{ domxref("BaseAudioContext") }} 接口的 <code>createPeriodicWave()</code> 方法用于创建可对 {{ domxref("OscillatorNode") }} 输出进行整形的 {{domxref("PeriodicWave")}}(周期波)。</span></p> +</div> + +<h2 id="语法">语法</h2> + +<pre class="syntaxbox">var wave = <em>AudioContext</em>.createPeriodicWave(<em>real</em>, <em>imag</em>[, <em>constraints</em>]);</pre> + +<h3 id="返回值">返回值</h3> + +<p>一个 {{domxref("PeriodicWave")}}.</p> + +<h3 id="参数">参数</h3> + +<dl> + <dt><code>real</code></dt> + <dd>一系列余弦术语 (传统上的 A 项)。</dd> + <dt><code>imag</code></dt> + <dd>一系列正弦项 (传统上的 B 项)。</dd> + <dt><code>constraints</code> {{optional_inline}}</dt> + <dd>一个字典对象,用于指定是否禁用规范化(如果没有指定,则默认启动规范化)。它有一个属性: + <ul> + <li><code>disableNormalization</code>: 如果设置为 <code>true</code>,对周期波禁用规范化。默认值为 <code>false</code>.</li> + </ul> + </dd> +</dl> + +<div class="note"> +<p>如果使用规范化,生成波形的最大绝对峰值为1。</p> +</div> + +<h2 id="例子">例子</h2> + +<p>下面的例子为 <code>createPeriodicWave()</code> 的简单用法,创建包含简单正弦波的 {{domxref("PeriodicWave")}} 对象。</p> + +<pre class="brush: js">var real = new Float32Array(2); +var imag = new Float32Array(2); +var ac = new AudioContext(); +var osc = ac.createOscillator(); + +real[0] = 0; +imag[0] = 0; +real[1] = 1; +imag[1] = 0; + +var wave = ac.createPeriodicWave(real, imag, {disableNormalization: true}); + +osc.setPeriodicWave(wave); + +osc.connect(ac.destination); + +osc.start(); +osc.stop(2);</pre> + +<p> </p> + +<p>这之所以有用是因为根据定义仅包含基本音调的声音是正弦波。</p> + +<p>这里,我们创建一个具有两个值的 <code>PeriodicWave</code> (周期波) 。第一个值是 DC(直流) 偏移,它是振荡器启动的值。0在这里是好的,因为我们想在 [-1.0; 1.0] 范围的中间开始曲线。</p> + +<p>第二个值和后续值是正弦和余弦分量。你可以把它看做是傅里叶变换的结果,可以从时域值中获取频域值。这里,使用 <code>createPeriodicWave()</code>,你可以指定频率,浏览器会执行一个逆傅里叶变换,以获得振荡器的时域缓冲。这里,我们只在基础音上设置了一个全音量(1.0)的分量,所以我们得到一个正弦波。</p> + +<p>傅里叶变换系数应该按升序给出 (例如. <math><semantics><mrow><mrow><mo>(</mo><mrow><mi>a</mi><mo>+</mo><mi>b</mi><mi>i</mi></mrow><mo>)</mo></mrow><msup><mi>e</mi><mi>i</mi></msup><mo>,</mo><mrow><mo>(</mo><mrow><mi>c</mi><mo>+</mo><mi>d</mi><mi>i</mi></mrow><mo>)</mo></mrow><msup><mi>e</mi><mrow><mn>2</mn><mi>i</mi></mrow></msup><mo>,</mo><mrow><mo>(</mo><mrow><mi>f</mi><mo>+</mo><mi>g</mi><mi>i</mi></mrow><mo>)</mo></mrow><msup><mi>e</mi><mrow><mn>3</mn><mi>i</mi></mrow></msup></mrow><annotation encoding="TeX">\left(a+bi\right)e^{i} , \left(c+di\right)e^{2i} , \left(f+gi\right)e^{3i} </annotation></semantics></math>等.) 可以是正的或者是负的。一个简单的手动获取此类系数的方法是使用图形计算器,尽管这不是最好的。</p> + +<h2 id="规格">规格</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('Web Audio API', '#dom-baseaudiocontext-createperiodicwave', 'createPeriodicWave')}}</td> + <td>{{Spec2('Web Audio API')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="浏览器兼容性">浏览器兼容性</h2> + +<div> + + +<p>{{Compat("api.BaseAudioContext.createPeriodicWave")}}</p> +</div> + +<h2 id="参见">参见</h2> + +<ul> + <li><a href="/en-US/docs/Web_Audio_API/Using_Web_Audio_API">Using the Web Audio API</a></li> +</ul> |
