English · 한국어
A collection of userscripts for Synthesizer V Studio 2.
A side panel that keeps the editor centered on whatever is currently playing.
- Scroll following — horizontal (time) and vertical (pitch) auto-scroll. Vertical scroll moves smoothly toward the median pitch of the notes around the playhead (1 before, 5 ahead), and you can adjust how long that movement takes (duration, in ms).
- Track focusing — automatically switches the current track/group to whatever plays under the playhead. Choose which tracks to consider, or toggle the whole feature off.
- Playhead position — a slider for where the playhead sits in the viewport while playing. Ranges from 0.05 to 0.95, where value × 100% is the horizontal position from the left (e.g. 0.25 → 25%).
A minimal example script, handy as a template for new scripts.
-
On the Releases page, download the
.jsfile(s) you want from the latest release (or any specific version). -
Drop them into the Synthesizer V Studio 2 scripts folder:
OS Path macOS ~/Library/Application Support/Dreamtonics/Synthesizer V Studio 2/scriptsWindows %APPDATA%\Dreamtonics\Synthesizer V Studio 2\scripts -
Restart Studio 2 (or reopen the Scripts menu). The script appears under its menu entry.
Tip: you can also open the scripts folder directly from the editor's Scripts menu.
Stack: TypeScript · esbuild (bundling) + SWC (ES5 downleveling) · Biome (lint/format) · semantic-release · pnpm.
The Studio 2 scripting engine is ES5-only — no arrow functions, classes, or
let/const. The build bundles each entry with esbuild and downlevels the result to ES5 with SWC, so the source stays modern TypeScript while the output runs in the editor.
pnpm install
pnpm build # type-check, bundle, and downlevel every src/*.ts to dist/| Command | Description |
|---|---|
pnpm build |
Type-check, bundle, and downlevel every src/*.ts to dist/. |
pnpm typecheck |
Type-check only (tsc --noEmit). |
pnpm lint |
Lint with Biome. |
pnpm check |
Biome lint + format check. |
pnpm format |
Format the codebase with Biome. |
Each src/*.ts is its own entry point; shared code lives under src/common and src/ui and is imported via the @/ alias, then inlined into each bundle at build time.
- Always open a pull request targeting
dev— don't push straight todevormain. - Use Conventional Commits — releases are fully automated with semantic-release:
feat:bumps the minor version;fix:,perf:, andrefactor:bump the patch version.- Merging to
devpublishes a prerelease (x.y.z-dev.N); merging tomainpublishes a stable release. - Each GitHub release attaches the built
dist/*.jsfiles as individual downloadable assets.