waa-play 0.2.0 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +41 -89
- package/dist/adapters.cjs +6 -6
- package/dist/adapters.d.cts +1 -1
- package/dist/adapters.d.ts +1 -1
- package/dist/adapters.js +1 -1
- package/dist/buffer.cjs +5 -5
- package/dist/buffer.d.cts +1 -1
- package/dist/buffer.d.ts +1 -1
- package/dist/buffer.js +1 -1
- package/dist/{chunk-T74FBKTY.js → chunk-2FGUFHZM.js} +2 -2
- package/dist/{chunk-CPAT75WD.cjs → chunk-3VTU5OX5.cjs} +2 -2
- package/dist/{chunk-2DL7CAEP.js → chunk-7JUVBZ6B.js} +2 -2
- package/dist/{chunk-D5CD5KQZ.cjs → chunk-BRS7LZVH.cjs} +2 -2
- package/dist/{chunk-QWNV2BZ5.cjs → chunk-F6WXD3XW.cjs} +2 -2
- package/dist/{chunk-C2ASIYN5.js → chunk-FESPIMZM.js} +3 -7
- package/dist/{chunk-GYH2JSCY.js → chunk-FY273Z3I.js} +2 -2
- package/dist/{chunk-SIMLANWE.cjs → chunk-G37HMZEX.cjs} +1028 -955
- package/dist/{chunk-2FFORBOP.js → chunk-GDBOHOGF.js} +1027 -955
- package/dist/{chunk-5J7S6QV3.cjs → chunk-HIF3UAF3.cjs} +2 -2
- package/dist/{chunk-CRODJ4KS.js → chunk-HTN52U23.js} +13 -6
- package/dist/{chunk-X4IFO7U7.js → chunk-HYRDCTBO.js} +143 -116
- package/dist/{chunk-VKT7YCWK.js → chunk-JIHPQAEA.js} +6 -3
- package/dist/chunk-KVKW7W66.cjs +148 -0
- package/dist/{chunk-4LNVRSTM.cjs → chunk-OIY6I4TU.cjs} +3 -7
- package/dist/{chunk-7S5KWTZ6.cjs → chunk-OZN5X4N6.cjs} +6 -3
- package/dist/{chunk-CJJC6ASU.js → chunk-PL4J3NR7.js} +2 -2
- package/dist/{chunk-IMNRPYBM.js → chunk-QFJQU7TQ.js} +10 -10
- package/dist/{chunk-M5PDY5EZ.cjs → chunk-QGZGERGK.cjs} +2 -2
- package/dist/{chunk-QFFQQMU4.cjs → chunk-VOSIA3GF.cjs} +13 -6
- package/dist/{chunk-CTUCTTIE.cjs → chunk-VY4UMZMJ.cjs} +145 -118
- package/dist/{chunk-LETS7FKB.js → chunk-YFK7ETCF.js} +2 -2
- package/dist/context.d.cts +1 -1
- package/dist/context.d.ts +1 -1
- package/dist/emitter.cjs +2 -2
- package/dist/emitter.js +1 -1
- package/dist/engine-7DCOERRN.js +4 -0
- package/dist/engine-ALWPAIX6.cjs +17 -0
- package/dist/fade.cjs +5 -5
- package/dist/fade.d.cts +1 -1
- package/dist/fade.d.ts +1 -1
- package/dist/fade.js +1 -1
- package/dist/index.cjs +44 -44
- package/dist/index.d.cts +7 -7
- package/dist/index.d.ts +7 -7
- package/dist/index.js +10 -10
- package/dist/nodes.cjs +11 -11
- package/dist/nodes.js +1 -1
- package/dist/play.cjs +3 -3
- package/dist/play.d.cts +1 -1
- package/dist/play.d.ts +1 -1
- package/dist/play.js +2 -2
- package/dist/player.cjs +11 -11
- package/dist/player.d.cts +1 -1
- package/dist/player.d.ts +1 -1
- package/dist/player.js +10 -10
- package/dist/scheduler.cjs +3 -3
- package/dist/scheduler.d.cts +1 -1
- package/dist/scheduler.d.ts +1 -1
- package/dist/scheduler.js +1 -1
- package/dist/stretcher.cjs +3 -3
- package/dist/stretcher.d.cts +4 -4
- package/dist/stretcher.d.ts +4 -4
- package/dist/stretcher.js +2 -2
- package/dist/synth.cjs +4 -4
- package/dist/synth.js +1 -1
- package/dist/{types-DUrbEbPl.d.cts → types-BYC6m7Q0.d.cts} +6 -6
- package/dist/{types-DUrbEbPl.d.ts → types-BYC6m7Q0.d.ts} +6 -6
- package/dist/waveform.cjs +4 -4
- package/dist/waveform.d.cts +1 -1
- package/dist/waveform.d.ts +1 -1
- package/dist/waveform.js +1 -1
- package/package.json +14 -6
- package/dist/adapters.cjs.map +0 -1
- package/dist/adapters.js.map +0 -1
- package/dist/buffer.cjs.map +0 -1
- package/dist/buffer.js.map +0 -1
- package/dist/chunk-2DL7CAEP.js.map +0 -1
- package/dist/chunk-2FFORBOP.js.map +0 -1
- package/dist/chunk-37CPPRLV.js.map +0 -1
- package/dist/chunk-4LNVRSTM.cjs.map +0 -1
- package/dist/chunk-5J7S6QV3.cjs.map +0 -1
- package/dist/chunk-6UTN73HG.cjs.map +0 -1
- package/dist/chunk-7S5KWTZ6.cjs.map +0 -1
- package/dist/chunk-C2ASIYN5.js.map +0 -1
- package/dist/chunk-CJJC6ASU.js.map +0 -1
- package/dist/chunk-CPAT75WD.cjs.map +0 -1
- package/dist/chunk-CRODJ4KS.js.map +0 -1
- package/dist/chunk-CTUCTTIE.cjs.map +0 -1
- package/dist/chunk-D5CD5KQZ.cjs.map +0 -1
- package/dist/chunk-GYH2JSCY.js.map +0 -1
- package/dist/chunk-IMNRPYBM.js.map +0 -1
- package/dist/chunk-LETS7FKB.js.map +0 -1
- package/dist/chunk-M5PDY5EZ.cjs.map +0 -1
- package/dist/chunk-QFFQQMU4.cjs.map +0 -1
- package/dist/chunk-QWNV2BZ5.cjs.map +0 -1
- package/dist/chunk-SIMLANWE.cjs.map +0 -1
- package/dist/chunk-T74FBKTY.js.map +0 -1
- package/dist/chunk-VKT7YCWK.js.map +0 -1
- package/dist/chunk-X4IFO7U7.js.map +0 -1
- package/dist/chunk-XZBMBZA3.cjs +0 -148
- package/dist/chunk-XZBMBZA3.cjs.map +0 -1
- package/dist/context.cjs.map +0 -1
- package/dist/context.js.map +0 -1
- package/dist/emitter.cjs.map +0 -1
- package/dist/emitter.js.map +0 -1
- package/dist/engine-QUMYW73L.cjs +0 -13
- package/dist/engine-QUMYW73L.cjs.map +0 -1
- package/dist/engine-TYI7OX7O.js +0 -4
- package/dist/engine-TYI7OX7O.js.map +0 -1
- package/dist/fade.cjs.map +0 -1
- package/dist/fade.js.map +0 -1
- package/dist/index.cjs.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/nodes.cjs.map +0 -1
- package/dist/nodes.js.map +0 -1
- package/dist/play.cjs.map +0 -1
- package/dist/play.js.map +0 -1
- package/dist/player.cjs.map +0 -1
- package/dist/player.js.map +0 -1
- package/dist/scheduler.cjs.map +0 -1
- package/dist/scheduler.js.map +0 -1
- package/dist/stretcher.cjs.map +0 -1
- package/dist/stretcher.js.map +0 -1
- package/dist/synth.cjs.map +0 -1
- package/dist/synth.js.map +0 -1
- package/dist/waveform.cjs.map +0 -1
- package/dist/waveform.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,128 +1,80 @@
|
|
|
1
1
|
# waa-play
|
|
2
2
|
|
|
3
3
|
[](https://www.npmjs.com/package/waa-play)
|
|
4
|
-
[](https://opensource.org/licenses/MIT)
|
|
5
|
-
[](https://www.typescriptlang.org/)
|
|
6
4
|
|
|
7
|
-
|
|
5
|
+
Web Audio API modules with WSOLA time-stretching, chunk-based streaming, and waveform extraction
|
|
8
6
|
|
|
9
|
-
|
|
7
|
+
waa-play は Web Audio API を用いた音声操作のためのモジュール群です。ピッチ保持タイムストレッチ、ストリーミング再生、波形抽出、AudioNode チェーン接続などの機能を提供します。
|
|
10
8
|
|
|
11
|
-
|
|
9
|
+
Web Audio API の `playbackRate` で再生速度を変更するとピッチも連動して変化します。waa-play は、ピッチを保持したまま再生速度を変えたいユースケースのために作成しました。
|
|
12
10
|
|
|
13
|
-
|
|
11
|
+
この実装は完璧なものではなく、すべてのユースケースに対応するわけではないことに注意してください。
|
|
14
12
|
|
|
15
|
-
|
|
16
|
-
npm install waa-play
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
## Features
|
|
13
|
+
## Documentation & Demo
|
|
20
14
|
|
|
21
|
-
|
|
22
|
-
再生速度を変えてもピッチが変わりません。処理は別スレッドで実行されるため、UI をブロックしません。
|
|
15
|
+
https://ivgtr.github.io/waa/
|
|
23
16
|
|
|
24
|
-
|
|
25
|
-
音声を段階的に処理し、バッファリング状態をイベントで通知します。ローディング UI を簡単に実装できます。
|
|
17
|
+
## ピッチ保持タイムストレッチ(WSOLA)
|
|
26
18
|
|
|
27
|
-
|
|
28
|
-
|
|
19
|
+
waa-play は WSOLA (Waveform Similarity Overlap-Add) アルゴリズムを採用しています。
|
|
20
|
+
音声信号を小さなフレームに分割し、類似した波形を重ね合わせて再構築することで、ピッチを変えずに時間的な伸縮を実現します。
|
|
29
21
|
|
|
30
|
-
|
|
31
|
-
|
|
22
|
+
HTML5 Audio 要素の `preservePitch` オプションと同様の効果を目指していますが、いくつかの制約があります。
|
|
23
|
+
WSOLA の処理はクライアントサイドで行われるため、CPU リソースを多く消費する可能性があります。
|
|
24
|
+
また、AudioBuffer 全体を事前に読み込む必要があるため、長い音声ファイルでは変換に時間がかかる場合があります。
|
|
32
25
|
|
|
33
|
-
|
|
34
|
-
波形データを取得し、プログレスバーや波形ビジュアライザーを構築できます。
|
|
35
|
-
|
|
36
|
-
### Background-tab safe
|
|
37
|
-
バックグラウンドタブでも再生位置の追跡が継続します。
|
|
38
|
-
|
|
39
|
-
## Quick Start
|
|
26
|
+
これらの制約に対して、Worker による並列処理やチャンクベースのストリーミングで対処しています。
|
|
40
27
|
|
|
41
|
-
###
|
|
28
|
+
### Worker ベースの変換
|
|
42
29
|
|
|
43
|
-
|
|
30
|
+
WSOLA 変換は Web Worker 内で実行され、メインスレッドのパフォーマンスへの影響を最小限に抑えています。
|
|
31
|
+
Worker は複数生成され、変換タスクがキューイングされて効率的に処理されます。
|
|
44
32
|
|
|
45
|
-
|
|
46
|
-
import { WaaPlayer } from "waa-play";
|
|
33
|
+
### チャンクベースのストリーミング再生
|
|
47
34
|
|
|
48
|
-
|
|
49
|
-
|
|
35
|
+
変換済みの音声がチャンク単位で順次再生されます。
|
|
36
|
+
これにより、長時間の音声でもすべての変換を待つことなく、スムーズな再生が可能です。
|
|
50
37
|
|
|
51
|
-
|
|
52
|
-
const playback = player.play(buffer, { through: [gain] });
|
|
38
|
+
### イベント通知
|
|
53
39
|
|
|
54
|
-
|
|
55
|
-
```
|
|
40
|
+
再生位置の更新や再生終了などのイベントが通知され、UI の更新や他の処理に利用できます。
|
|
56
41
|
|
|
57
|
-
|
|
42
|
+
## Quick Start
|
|
58
43
|
|
|
59
|
-
```
|
|
60
|
-
|
|
44
|
+
```bash
|
|
45
|
+
npm install waa-play
|
|
61
46
|
```
|
|
62
47
|
|
|
63
|
-
###
|
|
48
|
+
### 最も簡単な使い方(WaaPlayer)
|
|
64
49
|
|
|
65
|
-
|
|
50
|
+
`WaaPlayer` が `AudioContext` を内部管理し、全モジュールの機能を統合して提供します。
|
|
66
51
|
|
|
67
52
|
```ts
|
|
68
|
-
import {
|
|
53
|
+
import { WaaPlayer } from "waa-play";
|
|
54
|
+
|
|
55
|
+
const player = new WaaPlayer();
|
|
56
|
+
const buffer = await player.load("/audio/track.mp3");
|
|
69
57
|
|
|
70
|
-
const
|
|
71
|
-
const
|
|
58
|
+
const gain = player.createGain(0.8);
|
|
59
|
+
const playback = player.play(buffer, { through: [gain] }); // 再生
|
|
72
60
|
|
|
73
|
-
|
|
74
|
-
const playback = play(ctx, buffer, { through: [gain] });
|
|
61
|
+
playback.setPlaybackRate(1.5); // 再生速度を 1.5 倍に変更(リアルタイム反映)
|
|
75
62
|
|
|
76
63
|
playback.on("timeupdate", ({ position, duration }) => {
|
|
77
|
-
console.log(`${position.toFixed(
|
|
64
|
+
console.log(`${position.toFixed(2)}s / ${duration.toFixed(2)}s`);
|
|
78
65
|
});
|
|
79
|
-
```
|
|
80
66
|
|
|
81
|
-
|
|
67
|
+
playback.dispose(); // 再生停止・リソース解放
|
|
68
|
+
```
|
|
82
69
|
|
|
83
|
-
|
|
70
|
+
既存の `AudioContext` を渡すこともできます。これは例えば、他の AudioNode と接続したい場合に有用です。
|
|
84
71
|
|
|
85
72
|
```ts
|
|
86
|
-
|
|
87
|
-
import { loadBuffer } from "waa-play/buffer";
|
|
88
|
-
import { WaaPlayer } from "waa-play/player";
|
|
73
|
+
const player = new WaaPlayer(existingAudioContext);
|
|
89
74
|
```
|
|
90
75
|
|
|
91
|
-
| Module | 概要 |
|
|
92
|
-
|--------|------|
|
|
93
|
-
| `player` | 全モジュールを統合するクラスベース API |
|
|
94
|
-
| `context` | AudioContext のライフサイクル管理 |
|
|
95
|
-
| `buffer` | 音声ファイルのロード・デコード |
|
|
96
|
-
| `play` | 再生制御(play / pause / seek / loop / preservePitch) |
|
|
97
|
-
| `emitter` | 型安全なイベントエミッター |
|
|
98
|
-
| `nodes` | AudioNode のファクトリとチェーン接続 |
|
|
99
|
-
| `waveform` | 波形データの抽出(ピーク・RMS) |
|
|
100
|
-
| `fade` | フェード処理(in / out / crossfade) |
|
|
101
|
-
| `scheduler` | スケジューリングと BPM ベースのクロック |
|
|
102
|
-
| `synth` | 波形バッファの生成(sin / noise / click) |
|
|
103
|
-
| `adapters` | フレームワーク統合(React / Vue / Svelte) |
|
|
104
|
-
| `stretcher` | ピッチ保持タイムストレッチ(WSOLA) |
|
|
105
|
-
|
|
106
|
-
## API
|
|
107
|
-
|
|
108
|
-
詳細な使い方・API リファレンスは [Documentation & Demo](https://ivgtr.github.io/waa/) をご覧ください。
|
|
109
|
-
|
|
110
|
-
### WaaPlayer
|
|
111
|
-
|
|
112
|
-
| メソッド | 概要 |
|
|
113
|
-
|----------|------|
|
|
114
|
-
| `resume()` / `ensureRunning()` / `now()` | AudioContext 制御 |
|
|
115
|
-
| `load(url)` / `loadFromBlob(blob)` / `loadAll(map)` | 音声ロード |
|
|
116
|
-
| `play(buffer, options?)` | 再生(`Playback` を返す) |
|
|
117
|
-
| `createGain()` / `createFilter()` / `createPanner()` / `createCompressor()` / `createAnalyser()` | ノード生成 |
|
|
118
|
-
| `chain(...nodes)` / `disconnectChain(...nodes)` | グラフ接続 |
|
|
119
|
-
| `fadeIn()` / `fadeOut()` / `crossfade()` / `autoFade()` | フェード |
|
|
120
|
-
| `extractPeaks()` / `extractPeakPairs()` / `extractRMS()` | 波形抽出 |
|
|
121
|
-
| `createScheduler()` / `createClock()` | スケジューリング |
|
|
122
|
-
| `createSineBuffer()` / `createNoiseBuffer()` / `createClickBuffer()` | バッファ合成 |
|
|
123
|
-
| `getSnapshot()` / `subscribeSnapshot()` / `onFrame()` / `whenEnded()` / `whenPosition()` | アダプター |
|
|
124
|
-
| `dispose()` | リソース解放 |
|
|
125
|
-
|
|
126
76
|
## License
|
|
127
77
|
|
|
128
|
-
MIT
|
|
78
|
+
MIT © [ivgtr](https://github.com/ivgtr)
|
|
79
|
+
|
|
80
|
+
[](https://twitter.com/ivgtr) [](LICENSE)
|
package/dist/adapters.cjs
CHANGED
|
@@ -1,28 +1,28 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkOZN5X4N6_cjs = require('./chunk-OZN5X4N6.cjs');
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
Object.defineProperty(exports, "getSnapshot", {
|
|
8
8
|
enumerable: true,
|
|
9
|
-
get: function () { return
|
|
9
|
+
get: function () { return chunkOZN5X4N6_cjs.getSnapshot; }
|
|
10
10
|
});
|
|
11
11
|
Object.defineProperty(exports, "onFrame", {
|
|
12
12
|
enumerable: true,
|
|
13
|
-
get: function () { return
|
|
13
|
+
get: function () { return chunkOZN5X4N6_cjs.onFrame; }
|
|
14
14
|
});
|
|
15
15
|
Object.defineProperty(exports, "subscribeSnapshot", {
|
|
16
16
|
enumerable: true,
|
|
17
|
-
get: function () { return
|
|
17
|
+
get: function () { return chunkOZN5X4N6_cjs.subscribeSnapshot; }
|
|
18
18
|
});
|
|
19
19
|
Object.defineProperty(exports, "whenEnded", {
|
|
20
20
|
enumerable: true,
|
|
21
|
-
get: function () { return
|
|
21
|
+
get: function () { return chunkOZN5X4N6_cjs.whenEnded; }
|
|
22
22
|
});
|
|
23
23
|
Object.defineProperty(exports, "whenPosition", {
|
|
24
24
|
enumerable: true,
|
|
25
|
-
get: function () { return
|
|
25
|
+
get: function () { return chunkOZN5X4N6_cjs.whenPosition; }
|
|
26
26
|
});
|
|
27
27
|
//# sourceMappingURL=adapters.cjs.map
|
|
28
28
|
//# sourceMappingURL=adapters.cjs.map
|
package/dist/adapters.d.cts
CHANGED
package/dist/adapters.d.ts
CHANGED
package/dist/adapters.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { getSnapshot, onFrame, subscribeSnapshot, whenEnded, whenPosition } from './chunk-
|
|
1
|
+
export { getSnapshot, onFrame, subscribeSnapshot, whenEnded, whenPosition } from './chunk-JIHPQAEA.js';
|
|
2
2
|
//# sourceMappingURL=adapters.js.map
|
|
3
3
|
//# sourceMappingURL=adapters.js.map
|
package/dist/buffer.cjs
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunk3VTU5OX5_cjs = require('./chunk-3VTU5OX5.cjs');
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
Object.defineProperty(exports, "getBufferInfo", {
|
|
8
8
|
enumerable: true,
|
|
9
|
-
get: function () { return
|
|
9
|
+
get: function () { return chunk3VTU5OX5_cjs.getBufferInfo; }
|
|
10
10
|
});
|
|
11
11
|
Object.defineProperty(exports, "loadBuffer", {
|
|
12
12
|
enumerable: true,
|
|
13
|
-
get: function () { return
|
|
13
|
+
get: function () { return chunk3VTU5OX5_cjs.loadBuffer; }
|
|
14
14
|
});
|
|
15
15
|
Object.defineProperty(exports, "loadBufferFromBlob", {
|
|
16
16
|
enumerable: true,
|
|
17
|
-
get: function () { return
|
|
17
|
+
get: function () { return chunk3VTU5OX5_cjs.loadBufferFromBlob; }
|
|
18
18
|
});
|
|
19
19
|
Object.defineProperty(exports, "loadBuffers", {
|
|
20
20
|
enumerable: true,
|
|
21
|
-
get: function () { return
|
|
21
|
+
get: function () { return chunk3VTU5OX5_cjs.loadBuffers; }
|
|
22
22
|
});
|
|
23
23
|
//# sourceMappingURL=buffer.cjs.map
|
|
24
24
|
//# sourceMappingURL=buffer.cjs.map
|
package/dist/buffer.d.cts
CHANGED
package/dist/buffer.d.ts
CHANGED
package/dist/buffer.js
CHANGED
|
@@ -51,5 +51,5 @@ function getBufferInfo(buffer) {
|
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
export { getBufferInfo, loadBuffer, loadBufferFromBlob, loadBuffers };
|
|
54
|
-
//# sourceMappingURL=chunk-
|
|
55
|
-
//# sourceMappingURL=chunk-
|
|
54
|
+
//# sourceMappingURL=chunk-2FGUFHZM.js.map
|
|
55
|
+
//# sourceMappingURL=chunk-2FGUFHZM.js.map
|
|
@@ -56,5 +56,5 @@ exports.getBufferInfo = getBufferInfo;
|
|
|
56
56
|
exports.loadBuffer = loadBuffer;
|
|
57
57
|
exports.loadBufferFromBlob = loadBufferFromBlob;
|
|
58
58
|
exports.loadBuffers = loadBuffers;
|
|
59
|
-
//# sourceMappingURL=chunk-
|
|
60
|
-
//# sourceMappingURL=chunk-
|
|
59
|
+
//# sourceMappingURL=chunk-3VTU5OX5.cjs.map
|
|
60
|
+
//# sourceMappingURL=chunk-3VTU5OX5.cjs.map
|
|
@@ -65,5 +65,5 @@ function createClock(ctx, options) {
|
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
export { createClock, createScheduler };
|
|
68
|
-
//# sourceMappingURL=chunk-
|
|
69
|
-
//# sourceMappingURL=chunk-
|
|
68
|
+
//# sourceMappingURL=chunk-7JUVBZ6B.js.map
|
|
69
|
+
//# sourceMappingURL=chunk-7JUVBZ6B.js.map
|
|
@@ -68,5 +68,5 @@ function createClock(ctx, options) {
|
|
|
68
68
|
|
|
69
69
|
exports.createClock = createClock;
|
|
70
70
|
exports.createScheduler = createScheduler;
|
|
71
|
-
//# sourceMappingURL=chunk-
|
|
72
|
-
//# sourceMappingURL=chunk-
|
|
71
|
+
//# sourceMappingURL=chunk-BRS7LZVH.cjs.map
|
|
72
|
+
//# sourceMappingURL=chunk-BRS7LZVH.cjs.map
|
|
@@ -33,5 +33,5 @@ function createClickBuffer(ctx, frequency, duration) {
|
|
|
33
33
|
exports.createClickBuffer = createClickBuffer;
|
|
34
34
|
exports.createNoiseBuffer = createNoiseBuffer;
|
|
35
35
|
exports.createSineBuffer = createSineBuffer;
|
|
36
|
-
//# sourceMappingURL=chunk-
|
|
37
|
-
//# sourceMappingURL=chunk-
|
|
36
|
+
//# sourceMappingURL=chunk-F6WXD3XW.cjs.map
|
|
37
|
+
//# sourceMappingURL=chunk-F6WXD3XW.cjs.map
|
|
@@ -7,10 +7,7 @@ function applyRamp(node, from, to, duration, curve) {
|
|
|
7
7
|
param.setValueAtTime(from, now);
|
|
8
8
|
switch (curve) {
|
|
9
9
|
case "exponential":
|
|
10
|
-
param.exponentialRampToValueAtTime(
|
|
11
|
-
Math.max(to, EXP_MIN),
|
|
12
|
-
now + duration
|
|
13
|
-
);
|
|
10
|
+
param.exponentialRampToValueAtTime(Math.max(to, EXP_MIN), now + duration);
|
|
14
11
|
break;
|
|
15
12
|
case "equal-power": {
|
|
16
13
|
const steps = Math.max(Math.ceil(duration * 100), 2);
|
|
@@ -23,7 +20,6 @@ function applyRamp(node, from, to, duration, curve) {
|
|
|
23
20
|
param.setValueCurveAtTime(values, now, duration);
|
|
24
21
|
break;
|
|
25
22
|
}
|
|
26
|
-
case "linear":
|
|
27
23
|
default:
|
|
28
24
|
param.linearRampToValueAtTime(to, now + duration);
|
|
29
25
|
break;
|
|
@@ -63,5 +59,5 @@ function autoFade(playback, gain, options) {
|
|
|
63
59
|
}
|
|
64
60
|
|
|
65
61
|
export { autoFade, crossfade, fadeIn, fadeOut };
|
|
66
|
-
//# sourceMappingURL=chunk-
|
|
67
|
-
//# sourceMappingURL=chunk-
|
|
62
|
+
//# sourceMappingURL=chunk-FESPIMZM.js.map
|
|
63
|
+
//# sourceMappingURL=chunk-FESPIMZM.js.map
|