You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
-`rg` (ripgrep) is not available in this environment
8
+
9
+
## Terminal Command Guidance
10
+
11
+
- Use `zsh`-compatible commands and syntax.
12
+
- Do not assume `rg` exists.
13
+
- For file discovery, use alternatives such as:
14
+
-`find . -type f`
15
+
-`ls -R`
16
+
- For text search, use alternatives such as:
17
+
-`grep -R "pattern" .`
18
+
-`grep -Rin "pattern" .`
19
+
20
+
## Behavior Expectation
21
+
22
+
- Always adapt command suggestions and scripts to this macOS + zsh setup.
23
+
- If a command example would normally use `rg`, replace it with `find`/`grep` equivalents.
24
+
- Keep documentation synchronized with code changes. When behavior, public APIs, defaults, or workflows change, update the relevant README/docs files in the same change.
description: 'Use when modifying public behavior, APIs, package exports, configuration, or developer workflows. Keep docs synchronized with code changes.'
The audio-worklet package exposes wider real-time control ranges for `pitch`, `tempo`, `rate`, and `playbackRate` than earlier releases. Those controls are intentionally capped to balance flexibility with predictable real-time behavior: more extreme values can increase artifacts, reduce output quality, and make buffer behavior less stable on small AudioWorklet render blocks.
49
55
56
+
Interpolation defaults to `lanczos8` (Lanczos kernel plugin) in both core and audio-worklet flows. You can opt into `linear` for A/B testing and latency/quality comparisons.
57
+
50
58
### PitchShifter (ScriptProcessorNode)
51
59
52
60
The `@soundtouchjs/core` package provides a higher-level `PitchShifter` class with built-in playback tracking. This uses `ScriptProcessorNode`, which is deprecated but widely supported.
@@ -55,7 +63,11 @@ The `@soundtouchjs/core` package provides a higher-level `PitchShifter` class wi
pnpm nx test audio-worklet # Run audio-worklet tests
100
126
pnpm nx dev demo # Dev server with HMR
@@ -120,6 +146,7 @@ The `v0.4` release is a ground-up modernization:
120
146
-**TypeScript**: Full rewrite — strict mode, no `any`, complete type exports
121
147
-**ESM only**: Pure ES modules targeting ES2024 (no CommonJS)
122
148
-**AudioWorklet**: New `@soundtouchjs/audio-worklet` package replaces the [separate AudioWorklet repo](https://github.com/cutterbl/soundtouchjs-audio-worklet)
149
+
-**Interpolation plugin model**: Strategy registry with plugin packages; `lanczos8` as default, `linear` as optional override
-**pnpm workspaces**: Workspace protocol (`workspace:*`) for inter-package dependencies
125
152
-**Tooling**: Vite dev server, Vitest test runner, Prettier formatting, commitlint + husky, GitHub Actions CI, `nx release` for versioning and publishing
@@ -139,16 +166,10 @@ LGPL-3.0 — see [LICENSE](LICENSE) for details.
139
166
140
167
[I accept cash](https://paypal.me/cutterbl?locale.x=en_US) if you like what's been done.
141
168
142
-
## In Case You Are Interested
143
-
144
-
SoundTouchJS is based on the C++ implementation of [Soundtouch](https://www.surina.net/soundtouch/) by Olli Parviainen. The earliest implementation in JavaScript was written by [Ryan Berdeen](https://github.com/also/soundtouch-js) and later expanded by [Jakub Faila](https://github.com/jakubfiala/soundtouch-js). I have further expanded this library into a distributable package, refactored for es2015 development.
145
-
146
-
This package includes the `getWebAudioNode` utility written by [Adrian Holovaty](https://github.com/adrianholovaty), as well as the user-friendly `PitchShifter` wrapper from [Jakub Faila](https://github.com/jakubfiala/soundtouch-js).
0 commit comments