SongWalker Editor About VSTi Keyboard GitHub ♥ Sponsor

What is SongWalker?

SongWalker is a music programming language designed around one idea: writing music should feel like writing code. Songs are plain text .sw files using minimalist music notation combined with JavaScript-style control flow — loops, variables, tracks, and function-like instrument loading.

The entire engine — lexer, parser, compiler, synthesizer, and sampler — is written in Rust and runs in your browser via WebAssembly. There is no server involved in audio rendering. What you write is what you hear, deterministically, on every platform.

Features

Minimalist Notation

Write notes like C4 /4, chords like [C4 E4 G4], rests, durations, and dynamics with a clean, readable syntax inspired by traditional music notation.

Tracks & Parallel Voices

Define named track blocks that play simultaneously. Each track can use its own instrument, tempo, and note sequence. Tracks are mixed automatically.

Loops & Control Flow

Use for loops for repetition, variables for reusable patterns, and conditional logic. No copy-paste walls of notes.

Built-in Synthesizer

Oscillators (sine, saw, square, triangle), ADSR envelopes, filters, and a mixer — all running in Rust. No external audio dependencies.

Sampler Engine

Load SoundFont-style sampler presets with multi-zone key mapping, pitch shifting, loop points, and velocity layers. Presets are plain JSON.

Preset Library

Browse and audition instruments from a built-in preset library. Click to insert loadPreset calls directly into your code.

WAV Export

Render your song to a WAV file directly in the browser. The same engine powers the CLI for batch and offline rendering.

VST3 Plugin

Use SongWalker VSTi in your DAW. Same Rust engine, same presets — as a MIDI instrument plugin.

Rust + WASM

The compiler and DSP run entirely in Rust compiled to WebAssembly. Deterministic, fast, and cross-platform — browser, CLI, or plugin.

Related Projects

SNESology — a companion site featuring authentic Super Nintendo sound samples from classic SNES games, powered by the SongWalker engine.

Coming Soon Roadmap

Song Submission

Submit your .sw compositions to a public song library. Browse and remix songs from the community.

Preset & Sample Submission

Upload your own sampler presets and audio samples. Build and share custom instrument packs for others to use.

LLM Integration

AI-assisted music composition — generate, extend, or rearrange SongWalker code with help from a language model.

Technology

Rust WebAssembly TypeScript Monaco Editor Vite nih-plug (VST3)

Source code: songwalker-core · songwalker-js · songwalker-site · songwalker-vsti · songwalker-cli