The codebase

How big the Wavelength engine is, how it grew, and what it can do, measured from its git history one commit at a time.

24,936lines of C++ code, written in 69 hours

  1. First commit2,430
  2. v0.1.08,078
  3. v0.2.09,291
  4. v0.3.017,776
  5. v0.4.024,936
Source files
113
Comment lines
1,394
Commits
179
Releases
4, latest v0.4.0
In development
0.4.0
Lines added, removed
+50,951 −5,081

How it grew

Each step is a commit: the lines of C++ code in src/ once it landed, not counting blank lines or lines that hold only a comment. Point at the line, or focus it and use the arrow keys, to see each commit.

Vertical lines mark releases (v0.1.0 8,078, v0.2.0 9,291, v0.3.0 17,776, v0.4.0 24,936 lines) and the start of each day.
Every commit (179)
WhenCommitWhat changedLines of codeChange
Sun 27 Sep, 10:28 b4c709b πŸš€ RELEASE: v0.4.0 24,936 0
Sun 27 Sep, 10:08 21b6a76 πŸ“¦ NEW: terminal output for people: grouped help, colour, tables, progress 24,936 +650
Sun 27 Sep, 09:38 2c51575 πŸ“¦ NEW: wavelength upgrade and version --check 24,286 +222
Sun 27 Sep, 09:18 9753ba2 πŸ“– DOC: a roadmap, lowercase file names, one line per paragraph 24,064 0
Sun 27 Sep, 09:08 f01239b πŸ€– TEST: release-test uses its own work folder per run 24,064 0
Sun 27 Sep, 09:00 a069017 πŸ€– TEST: release-test runs every archive through the song format, fallbacks and MCP 24,064 0
Sun 27 Sep, 08:58 12264d7 πŸ“– DOC: 0.4.0 docs caught up with the engine 24,064 +6
Sun 27 Sep, 08:58 ac8b6fe πŸ‘Œ IMPROVE: song format Draft 2, from an independent review 24,058 +266
Sun 27 Sep, 08:58 278e2e1 πŸ› FIX: a master loudness target with no effects crashed 23,792 0
Sun 27 Sep, 07:33 1799e4a πŸ‘Œ IMPROVE: packages carry an unchanged sample once 23,792 +42
Sun 27 Sep, 07:24 e5fd7e7 πŸ‘Œ IMPROVE: a song's picture carries its title 23,750 +6
Sun 27 Sep, 07:21 09c78ae πŸ› FIX: fallbacks --suggest gave sidechain key tracks a bogus entry 23,744 +1
Sun 27 Sep, 07:15 4f6fd81 πŸ“– DOC: song workflow in the plugin skill, MCP song tools in README 23,743 +1
Sun 27 Sep, 07:15 98b3c93 πŸ“¦ NEW: upgrade, lib: sample names, fallbacks --suggest, render --keep 23,742 +1,018
Sun 27 Sep, 06:49 ab324ee πŸ“¦ NEW: song format schemas, Python reader and fixtures 22,724 +65
Sun 27 Sep, 06:40 3273346 πŸ“¦ NEW: .wavelength packages: pack, unpack, validate 22,659 +360
Sun 27 Sep, 06:36 051a39c πŸ“¦ NEW: musical diff and comments pinned to revisions 22,299 +554
Sun 27 Sep, 06:29 1e24a6c πŸ“¦ NEW: song history: save, undo, redo, restore, git export 21,745 +888
Sun 27 Sep, 06:14 e6c9959 πŸ€– TEST: check.sh waits for serve to answer 20,857 0
Sun 27 Sep, 06:14 93974a1 πŸ“¦ NEW: import Bitwig projects without a DAWproject export 20,857 +330
Sun 27 Sep, 05:42 bd6128a πŸ“– DOC: song format, draft 1 20,527 0
Sat 26 Sep, 21:36 8ef9630 πŸ‘Œ IMPROVE: serve has the Wavelength favicon 20,527 +6
Sat 26 Sep, 21:34 d4273af πŸ“¦ NEW: wavelength kit, free synths for machines without plugins 20,521 +448
Sat 26 Sep, 21:11 46d1500 πŸ› FIX: review comments failed with 403 after serve restarted 20,073 +11
Sat 26 Sep, 20:45 de3e525 πŸ“– DOC: agent skill says how to read song.png 20,062 0
Sat 26 Sep, 20:37 a2729f8 πŸ‘Œ IMPROVE: song.png lanes show post-fader LUFS and drop jumps 20,062 +24
Sat 26 Sep, 20:22 6f09d11 πŸ“– DOC: a loop can peak a little over the limiter where its tail folds in 20,038 0
Sat 26 Sep, 20:22 65f39c4 πŸ‘Œ IMPROVE: MCP render takes loop 20,038 +2
Sat 26 Sep, 20:21 e9c9db4 πŸ“¦ NEW: render --loop, seamless loops for games and apps 20,036 +39
Sat 26 Sep, 20:16 7741e30 πŸ› FIX: repetition check reads effect automate and lfo curves 19,997 +8
Sat 26 Sep, 20:16 e570bf0 πŸ“¦ NEW: track fallbacks, so a job renders without its plugins 19,989 +84
Sat 26 Sep, 20:12 1fad283 πŸ“¦ NEW: wavelength mcp, built-in docs and a Claude Code plugin 19,905 +617
Sat 26 Sep, 20:12 7e362b4 πŸ“¦ NEW: mix checks for the kick, the low end, phase and repetition 19,288 +218
Sat 26 Sep, 19:55 9806296 πŸ“¦ NEW: render --png, a picture of the song for agents 19,070 +473
Sat 26 Sep, 19:44 4786a7d πŸ“¦ NEW: builtin:synth, a polysynth that needs no plugin 18,597 +821
Sat 26 Sep, 19:25 7a42c65 πŸ‘Œ IMPROVE: start 0.4.0-dev 17,776 0
Sat 26 Sep, 08:44 ab278cf πŸš€ RELEASE: v0.3.0 17,776 0
Sat 26 Sep, 08:38 747489c πŸ‘Œ IMPROVE: serve UI in the Wavelength brand 17,776 0
Sat 26 Sep, 08:35 4c828b7 πŸ“¦ NEW: DAWproject export prints built-in instruments 17,776 +67
Sat 26 Sep, 06:47 9174070 πŸ› FIX: Windows build of serve, Linux build warnings 17,709 0
Sat 26 Sep, 06:47 186b2b3 πŸ“– DOC: known limits and the agent skill caught up with 0.3.0 17,709 0
Sat 26 Sep, 05:53 3d6e99a πŸ“¦ NEW: DAWproject export 17,709 +431
Sat 26 Sep, 05:42 343c2ac πŸ‘Œ IMPROVE: MusicXML grace notes and pedal; case-insensitive sample paths 17,278 +65
Sat 26 Sep, 05:39 31c4262 πŸ“¦ NEW: SoundFonts, General MIDI fallback, SFZ filters and release triggers 17,213 +644
Sat 26 Sep, 00:41 cb64e04 πŸ“¦ NEW: MusicXML import 16,569 +591
Sat 26 Sep, 00:33 ee12ed6 πŸ“¦ NEW: MP3, FLAC and WAV deliveries measured after decoding 15,978 +636
Sat 26 Sep, 00:23 aa0dd85 πŸ“¦ NEW: SFZ instruments in builtin:sampler 15,342 +410
Sat 26 Sep, 00:16 3881436 πŸ“¦ NEW: AIFF, FLAC, MP3 and Ogg Vorbis samples and clips 14,932 +175
Fri 25 Sep, 22:36 a78c40d πŸ‘Œ IMPROVE: optional stable code signature for local macOS builds 14,757 0
Fri 25 Sep, 22:18 777e16b πŸ‘Œ IMPROVE: serve answers local reverse proxies on .localhost names 14,757 +1
Fri 25 Sep, 21:42 09ad700 πŸ“¦ NEW: wavelength serve, a local web UI for reviewing songs 14,756 +668
Fri 25 Sep, 21:31 6a344bc πŸ“¦ NEW: render --from/--to renders only some bars of a song 14,088 +77
Fri 25 Sep, 21:21 f0f5434 πŸ“– DOC: AGENTS.md wording 14,011 0
Fri 25 Sep, 21:21 d8ede34 πŸ€– TEST: automation-tour checks follow and switch curves in the report 14,011 0
Fri 25 Sep, 21:21 e7324fb πŸ“¦ NEW: report automation activity and dead curves 14,011 +119
Fri 25 Sep, 21:20 eaf9466 πŸ“¦ NEW: warn when width narrows a signal away 13,892 +34
Fri 25 Sep, 21:20 8b25989 πŸ‘Œ IMPROVE: render --tracks keeps stem names 13,858 +7
Fri 25 Sep, 21:20 fe1a5bc πŸ“¦ NEW: wavelength timeline 13,851 +64
Fri 25 Sep, 21:20 375e503 πŸ“¦ NEW: params --set and --map show display text 13,787 +91
Fri 25 Sep, 21:20 873334c πŸ“¦ NEW: analyze --peaks 13,696 +136
Fri 25 Sep, 21:20 85566b5 πŸ“¦ NEW: bus stems and bus targets in stage-gains 13,560 +8
Fri 25 Sep, 21:20 c8d2834 πŸ“¦ NEW: send throws shorthand 13,552 +36
Fri 25 Sep, 21:20 ec93ddb πŸ“¦ NEW: chord timeline and curves that follow it 13,516 +135
Fri 25 Sep, 21:19 27fdaaf πŸ“¦ NEW: display text and note names in automation curves 13,381 +90
Fri 25 Sep, 21:19 b43a3ff πŸ“¦ NEW: switch automation points and curves 13,291 +25
Fri 25 Sep, 21:04 33b0963 πŸ‘Œ IMPROVE: warn on host mix vs a plugin's own Mix 13,266 +16
Fri 25 Sep, 21:03 e434437 πŸ“¦ NEW: "intended" silences an effect's distortion warnings 13,250 +5
Fri 25 Sep, 21:01 0eb9445 πŸ“¦ NEW: audio clips that play the song's own render 13,245 +123
Fri 25 Sep, 20:56 1a41c0f πŸ“¦ NEW: sampler length trim that works with reverse 13,122 +4
Fri 25 Sep, 20:55 e3e053a πŸ“¦ NEW: builtin:shepard endless riser 13,118 +89
Fri 25 Sep, 20:53 32f81d7 πŸ“¦ NEW: repeat effect for beat-repeat stutters 13,029 +49
Fri 25 Sep, 20:51 66fd20b πŸ“¦ NEW: delay loopFx, effects inside the feedback loop 12,980 +69
Fri 25 Sep, 20:47 18d6256 πŸ“¦ NEW: reverb freeze and automatable decay 12,911 +14
Fri 25 Sep, 20:46 af0cd49 πŸ“¦ NEW: level match on any effect 12,897 +51
Fri 25 Sep, 20:28 2491db6 πŸ› FIX: warn about late automation on buses and the master 12,846 +27
Fri 25 Sep, 20:25 c0cecb4 πŸ› FIX: drop check measures across an intended near-silence 12,819 +28
Fri 25 Sep, 20:22 b4e1438 πŸ› FIX: lint --harmony leaves unpitched samples out 12,791 +51
Fri 25 Sep, 20:14 ec2d2b4 πŸ› FIX: saturate match follows the level over time 12,740 +27
Fri 25 Sep, 20:05 9fae977 πŸ“¦ NEW: render --level-from keeps a part at its level in the full mix 12,713 +16
Fri 25 Sep, 19:13 d85238c πŸ“¦ NEW: lint --harmony finds wrong notes before a render 12,697 +497
Fri 25 Sep, 16:15 5cd2f4f πŸ“– DOC: move changes made since 0.2.0 out of its changelog section 12,200 0
Fri 25 Sep, 16:15 82c14fe πŸ“¦ NEW: audio clips, instrument automation and five more Bitwig devices in the DAWproject import 12,200 +221
Fri 25 Sep, 15:44 d1c1889 πŸ“¦ NEW: MIDI file import and export 11,979 +637
Fri 25 Sep, 15:24 de54a2e πŸ› FIX: read Bitwig 6 projects to the end 11,342 +22
Fri 25 Sep, 15:13 e6d4b76 πŸ“¦ NEW: read Bitwig projects for what DAWproject exports leave out 11,320 +696
Fri 25 Sep, 14:22 10c83a6 πŸ“¦ NEW: import DAWproject files 10,624 +539
Fri 25 Sep, 14:13 3800487 πŸ“– DOC: VST2 and Rosetta in README, AGENTS.md, effects and changelog 10,085 0
Fri 25 Sep, 14:13 d22c647 πŸ“¦ NEW: VST2 hosting, and Intel-only plugins under Rosetta 10,085 +715
Fri 25 Sep, 11:33 9813330 πŸ‘Œ IMPROVE: track warnings in the top-level warnings list 9,370 +9
Fri 25 Sep, 10:24 7bbe2f0 πŸ‘Œ IMPROVE: report duration, no empty stems folder, clearer docs 9,361 +1
Fri 25 Sep, 10:24 e97909e πŸ› FIX: lint compares each pair at its own notes; ranges, split 9,360 +58
Fri 25 Sep, 10:23 34efdd3 πŸ‘Œ IMPROVE: weak-drop check measures the boundary in bars 9,302 +11
Fri 25 Sep, 10:19 14ce363 πŸ“– DOC: BBC SO Discover percussion keyswitches by instrument 9,291 0
Fri 25 Sep, 10:06 6805806 πŸ› FIX: Linux release archives without macOS extended attributes 9,291 0
Fri 25 Sep, 10:06 b765393 πŸ› FIX: the skill installer downloads with wget when there is no curl 9,291 0
Fri 25 Sep, 09:47 239597c πŸ“¦ NEW: start 0.3.0-dev 9,291 0
Fri 25 Sep, 09:46 dd5e639 πŸš€ RELEASE: v0.2.0 9,291 0
Fri 25 Sep, 09:45 b43b2d1 πŸ“– DOC: changelog ready for 0.2.0 9,291 0
Fri 25 Sep, 09:45 af089a7 πŸ› FIX: Windows archive carries its runtime licences 9,291 0
Fri 25 Sep, 09:45 2468e83 πŸ“¦ NEW: the skill installs release builds on Linux and Windows 9,291 0
Fri 25 Sep, 09:45 300db6b πŸ€– TEST: arrangement-tour example checked by check.sh 9,291 0
Fri 25 Sep, 09:45 182d0b7 πŸ› FIX: clip distortion warning threshold and advice 9,291 +2
Fri 25 Sep, 09:45 382b2e1 πŸ› FIX: analyze and option parsing details 9,289 +5
Fri 25 Sep, 09:45 a4b3f3b πŸ› FIX: analyze reads chip oscillators at their real pitch 9,284 +32
Fri 25 Sep, 09:17 7c3d826 πŸ‘Œ IMPROVE: arrangement checks know intent, pre-master sections 9,252 +44
Fri 25 Sep, 07:40 9a5fb15 πŸ“¦ NEW: per-note dyn curves for velocityTo instruments 9,208 +29
Fri 25 Sep, 07:39 1a1c09e πŸ“¦ NEW: automation.rides, gain curves that add up 9,179 +25
Fri 25 Sep, 07:22 eb9c3a1 πŸ“¦ NEW: dropout and weak-drop checks, analyze --every 9,154 +113
Fri 25 Sep, 06:41 d35186a πŸ‘Œ IMPROVE: clip kneeDb, loudness gain before the peak stage 9,041 +15
Fri 25 Sep, 01:10 6dbe23a πŸ“– DOC: transients and sub-heavy sounds in the mixing guide 9,026 0
Fri 25 Sep, 01:10 2b6fa8b πŸ“¦ NEW: clip effect, a soft clipper for transients 9,026 +36
Fri 25 Sep, 01:01 95d5f7b πŸ› FIX: render --tracks writes no stems for helper tracks 8,990 +3
Fri 25 Sep, 00:59 bd21b45 πŸ› FIX: commands reject unknown options 8,987 +22
Fri 25 Sep, 00:58 49b53e6 πŸ› FIX: analyze reads the pitch of very short windows 8,965 0
Fri 25 Sep, 00:56 f9c1cfb πŸ“¦ NEW: wavelength lint checks voice leading 8,965 +113
Fri 25 Sep, 00:50 d813aa8 πŸ“¦ NEW: analyze --grid; onset times land on the attack 8,852 +26
Fri 25 Sep, 00:40 4e969f7 πŸ› FIX: master lines up a mix's lead-in; limiter reports per section 8,826 +30
Fri 25 Sep, 00:37 9b202a2 πŸ“¦ NEW: name the tracks that drive the master limiter 8,796 +19
Fri 25 Sep, 00:33 7cedf2c πŸ‘Œ IMPROVE: warn when an automation curve starts late 8,777 +34
Fri 25 Sep, 00:30 3368c41 πŸ“¦ NEW: level-matched saturate 8,743 +9
Fri 25 Sep, 00:29 e06f532 πŸ› FIX: loudness of windows shorter than one gating block 8,734 +5
Fri 25 Sep, 00:28 52d6240 πŸ‘Œ IMPROVE: loudness target gain goes in front of the limiter 8,729 +15
Fri 25 Sep, 00:23 c1f8ac7 πŸ“¦ NEW: render --tracks renders part of a song 8,714 +43
Fri 25 Sep, 00:20 6cc1566 πŸ‘Œ IMPROVE: limiter warning says how long it limited 8,671 +6
Fri 25 Sep, 00:19 3f96872 πŸ› FIX: audition stops when a plugin opens a licence window 8,665 +8
Fri 25 Sep, 00:18 9a68d13 πŸ› FIX: kill render workers that open a licence window 8,657 +26
Fri 25 Sep, 00:16 c51a2bb πŸ‘Œ IMPROVE: fewer render workers when the machine is busy 8,631 +15
Fri 25 Sep, 00:15 9d862a8 πŸ“¦ NEW: per-note vibrato on sampler tracks 8,616 +32
Fri 25 Sep, 00:14 eac8e39 πŸ‘Œ IMPROVE: analyze in song time, warn on loud-target gain into master 8,584 +27
Fri 25 Sep, 00:13 d81c066 πŸ› FIX: round-robin kits play the General MIDI alternate keys 8,557 +15
Fri 25 Sep, 00:11 a17e22a πŸ› FIX: master --chain no longer passes a mix through silently 8,542 +6
Fri 25 Sep, 00:11 5c7d3fd πŸ€– TEST: check.sh takes BUILD and JOBS 8,536 0
Fri 25 Sep, 00:10 b9eb126 πŸ“¦ NEW: loudness range and labelled section loudness in reports 8,536 +45
Thu 24 Sep, 23:58 b4f3cf6 πŸ› FIX: retry crashed tracks and fail renders that lose one 8,491 +28
Thu 24 Sep, 23:58 078552d πŸ“¦ NEW: block plugins by name 8,463 +47
Thu 24 Sep, 23:58 2f68375 πŸ› FIX: catch garbage samples after effects, not just plugins 8,416 +10
Thu 24 Sep, 22:52 4d49df0 πŸ› FIX: mute garbage samples from plugins 8,406 +28
Thu 24 Sep, 22:38 57a6813 πŸ“– DOC: release checklist with the local binary builds 8,378 0
Thu 24 Sep, 22:28 456e329 πŸ› FIX: put wine64 on PATH in the Wine smoke-test image 8,378 0
Thu 24 Sep, 22:28 0775b30 πŸ› FIX: release build paths for Windows, quiet GCC ABI notes 8,378 0
Thu 24 Sep, 22:28 6d4062b πŸ“¦ NEW: build release binaries for every platform locally 8,378 0
Thu 24 Sep, 22:28 30e7f29 πŸ“¦ NEW: Linux and Windows support 8,378 +300
Thu 24 Sep, 21:52 da93433 πŸ“¦ NEW: the /wavelength agent skill 8,078 0
Thu 24 Sep, 21:44 a80b50c πŸ“¦ NEW: start 0.2.0-dev 8,078 0
Thu 24 Sep, 21:44 eaf2da5 πŸš€ RELEASE: v0.1.0 8,078 0
Thu 24 Sep, 21:42 965c9e0 πŸ› FIX: options without a value are an error 8,078 +2
Thu 24 Sep, 21:38 3511578 πŸ“¦ NEW: personal job defaults (defaults.json) 8,076 +20
Thu 24 Sep, 20:56 ea6ae28 πŸ“– DOC: mastering, orchestral writing and listening lessons 8,056 +8
Thu 24 Sep, 20:52 5380dac πŸ“¦ NEW: leadIn, silence before the song 8,048 +9
Thu 24 Sep, 20:41 d95d634 πŸ‘Œ IMPROVE: stage-gains reads any render folder 8,039 0
Thu 24 Sep, 20:29 392e1bf πŸ“¦ NEW: wavelength master, and a mastering example 8,039 +62
Thu 24 Sep, 20:28 6c4a59c πŸ“¦ NEW: loudness target on the master 7,977 +37
Thu 24 Sep, 20:27 b4e2c33 πŸ“¦ NEW: multiband effect 7,940 +87
Thu 24 Sep, 20:15 a4ae8b0 πŸ‘Œ IMPROVE: audition tags, retag, retries; Serum 1 patches skipped 7,853 +32
Thu 24 Sep, 19:14 6908aca πŸ“¦ NEW: sidechain audio into effects 7,821 +120
Thu 24 Sep, 19:11 b320ae2 πŸ“¦ NEW: builtin:audio, clips on the timeline with time stretch 7,701 +158
Thu 24 Sep, 19:08 33de96f πŸ“¦ NEW: plugin tracks render in parallel worker processes 7,543 +154
Thu 24 Sep, 18:44 36e3d28 πŸ“¦ NEW: wavelength audition, a sound index for presets 7,389 +308
Thu 24 Sep, 18:33 616d683 πŸ“– DOC: point at extract-embedded-presets, drop a stale converter note 7,081 0
Thu 24 Sep, 18:30 a76b3c6 πŸ“¦ NEW: wavelength analyze 7,081 +342
Thu 24 Sep, 18:28 d7434b3 πŸ› FIX: compensate plugin latency 6,739 +24
Thu 24 Sep, 18:17 296f480 πŸ“– DOC: bring the README and CLI help up to date 6,715 +3
Thu 24 Sep, 18:16 a8cc503 πŸ› FIX: no unchanged-parameter warning for BBC SO instruments 6,712 +1
Thu 24 Sep, 18:13 f887215 πŸ› FIX: JSON output survives preset names that are not UTF-8 6,711 0
Thu 24 Sep, 18:11 69196da πŸ“¦ NEW: Analog Lab V, AAS Player, MPowerSynth, Soundbox, DecentSampler presets 6,711 +298
Thu 24 Sep, 18:04 b9d336c πŸ“¦ NEW: extract presets compiled into JUCE plugin binaries 6,413 +8
Thu 24 Sep, 18:00 67306ba πŸ“¦ NEW: Microtonic kits and drums, parameters as display text 6,405 +297
Thu 24 Sep, 17:55 4a134c3 πŸ“¦ NEW: Guitar Rig 6 racks load by name, with licence checks 6,108 +96
Thu 24 Sep, 17:53 2ddd063 πŸ“¦ NEW: Cherry Audio presets and SynthMaster NKS by name 6,012 +122
Thu 24 Sep, 17:41 7a37fe2 πŸ“¦ NEW: Synplant patches load by name 5,890 +85
Thu 24 Sep, 17:38 5eb59a5 πŸ“¦ NEW: NKS preset index and DX7 cartridges for Dexed 5,805 +285
Thu 24 Sep, 17:00 8a161e3 πŸ“¦ NEW: Serum 2, Odin2 and u-he presets load natively 5,520 +376
Thu 24 Sep, 16:38 423bb66 πŸ“– DOC: note behaviour changes in the changelog 5,144 0
Thu 24 Sep, 16:35 c5e7ccf πŸ“¦ NEW: modulation, routing, MIDI controllers and safer renders 5,144 +1,061
Thu 24 Sep, 15:45 ac6d60c πŸ“¦ NEW: builtin:sampler for Bitwig multisamples and drum kits 4,083 +692
Thu 24 Sep, 15:28 25a1ca4 πŸ“– DOC: drive plugins with compiled-in presets through JUCE state 3,391 0
Thu 24 Sep, 15:13 492751b πŸ“¦ NEW: Load CLAP factory presets by name 3,391 +256
Thu 24 Sep, 14:12 0a5911f πŸ“¦ NEW: VST3 hosting 3,135 +705
Thu 24 Sep, 13:00 a5d2ae4 πŸ“¦ NEW: Wavelength headless music engine for AI agents 2,430 +2,430

What it can do

Read from the source rather than kept as a list: commands from the command line's dispatcher, effects from the effect factory, formats from the code that reads or writes them. The line in each box is its count over the same days as the chart above.

  • Commands 20 5 at the first commit
  • Built-in effects 22 11 at the first commit
  • Built-in instruments 6 2 at the first commit
  • Plugin formats 3 1 at the first commit
  • File formats 12 1 at the first commit
  • Preset file types 21 1 at the first commit
  • Platforms 3 1 at the first commit
  • Libraries it builds on 10 2 at the first commit

Release by release

Where each ability first shipped. Hover or tap one for the commit that brought it.

Ability In v0.1.024 Sep New in v0.2.025 Sep New in v0.3.026 Sep New in v0.4.027 Sep
Commands20
  • state
  • render
  • plugins
  • version
  • params
  • presets
  • samples
  • analyze
  • audition
  • master
  • lint
  • import
  • export
  • timeline
  • serve
  • picture
  • docs
  • mcp
  • kit
  • upgrade
Built-in effects22
  • filter
  • compressor
  • reverb
  • delay
  • gain
  • eq
  • width
  • duck
  • limiter
  • chorus
  • saturate
  • tremolo
  • vibrato
  • pan
  • tapestop
  • bitcrush
  • rotary
  • autowah
  • gate
  • multiband
  • clip
  • repeat
·
Built-in instruments6
  • builtin:drums
  • builtin:fx
  • builtin:sampler
  • builtin:audio
·
  • builtin:shepard
  • builtin:synth
Plugin formats3
  • CLAP
  • VST3
·
  • VST2
·
Audio files5
  • WAV
·
  • AIFF
  • FLAC
  • MP3
  • Ogg Vorbis
·
Music files4 · ·
  • DAWproject
  • MIDI files
  • MusicXML
  • .wavelength songs
Sample libraries3
  • Bitwig multisamples
·
  • SFZ
  • SoundFont 2 and 3
·
Preset file types21
  • .vital
  • .vstpreset
  • .odin
  • .nksf
  • .fxb
  • .serumpreset
  • .fxp
  • .h2p
  • .syx
  • .synplant
  • .mg1preset
  • .sempreset
  • .voltagepreset
  • .dco106preset
  • .ngrr
  • .mtdrum
  • .mtpreset
  • .wlstate
  • .aasbank
  • .dspreset
  • .sbset
· · ·
Platforms3
  • macOS
  • Windows
  • Linux
· ·
Libraries it builds on10
  • CLAP
  • nlohmann/json
  • VST3 SDK
  • zstd
  • Signalsmith Linear
  • Signalsmith Stretch
  • zlib
  • cpp-httplib
  • dr_libs
  • stb
·

Commands

CommandWhat it doesFirst in
wavelength state v0.1.0
wavelength render v0.1.0
wavelength plugins v0.1.0
wavelength version v0.1.0
wavelength params v0.1.0
wavelength presets v0.1.0
wavelength samples v0.1.0
wavelength analyze v0.1.0
wavelength audition v0.1.0
wavelength master v0.1.0
wavelength lint v0.2.0
wavelength import v0.3.0
wavelength export v0.3.0
wavelength timeline v0.3.0
wavelength serve v0.3.0
wavelength picture v0.4.0
wavelength docs v0.4.0
wavelength mcp v0.4.0
wavelength kit v0.4.0
wavelength upgrade v0.4.0

The engine, part by part

The C++ source grouped by what it does, largest first, with each part's growth over the same days.

  1. Effects and instruments

    Built-in effects, the drum machine, FX, sampler, SFZ and SoundFont players, audio clips.

    4,410 18%
  2. Files and formats

    Audio files in and out, MIDI, MusicXML, DAWproject and Bitwig projects, zip and XML.

    4,356 17%
  3. Command line and MCP

    The wavelength command: arguments, every subcommand, help, terminal output and the JSON report; the MCP server, the docs built into the binary and self-upgrade.

    3,218 13%
  4. Render and mix

    The job (with stand-in sounds for missing plugins), tempo map and automation, then the mix graph: tracks, sends, buses, master.

    2,872 12%
  5. Songs

    The song format: the manifest, revisions with undo and a musical diff, comments pinned to revisions, .wavelength packages and upgrades.

    2,805 11%
  6. Plugin hosting

    Loads CLAP, VST3 and VST2 plugins, scans and caches them, and drives them offline; installs free ones (kit).

    2,686 11%
  7. Presets and states

    Finds presets by name in 20-odd formats and turns them into the state a plugin loads; audition indexes how they sound.

    2,021 8%
  8. Measurement

    Loudness (BS.1770), analysis of pitch, brightness and onsets, the harmony check, and the song picture for agents that can see but not hear.

    1,361 5%
  9. Review server

    The local review page's server (wavelength serve): songs, previews and review comments.

    682 3%
  10. Platform

    What differs on macOS, Linux and Windows: folders, processes, libraries.

    525 2%

Every source file

Each rectangle is a file (its .cpp and .hpp together), sized by its lines of code and shaded by how many commits changed it: the stronger the blue, the more it has been worked on.

Every source file as a table (113)
FilePartCodeCommentsCommitsWhat it is
main.cpp Command line and MCP 1,750 71 85 Wavelength, a headless music engine for AI agents.
effects.cpp effects.hpp Effects and instruments 1,295 86 28 Effects: built-in DSP (deterministic, always available) and CLAP effect plugins.
render.cpp render.hpp Render and mix 1,210 72 47
sampler.cpp sampler.hpp Effects and instruments 1,152 61 12 builtin:sampler: plays sample libraries without a plugin.
dawproject.cpp dawproject.hpp Files and formats 1,038 68 7 DAWproject import (the open project format Bitwig, Studio One and others export): the arrangement, tracks, notes, plugin states, mixer (volume, pan, mute, sends…
job.cpp job.hpp Render and mix 803 29 38 A render job: the JSON document agents write.
synth.cpp synth.hpp Effects and instruments 781 30 1 builtin:synth: a virtual-analog polysynth inside Wavelength, so melodic parts render on a machine without any plugins (a fresh laptop, a CI runner, an agent's cloud…
serve.cpp serve.hpp Review server 682 34 6 `wavelength serve`: a local web UI for reviewing songs.
preset_formats.cpp preset_formats.hpp Presets and states 673 44 6 Converters from plugins' own preset files to the state their plugins load.
midi_file.cpp midi_file.hpp Files and formats 603 39 3 Standard MIDI Files (.mid): import into a job, export a job's parts.
mcp.cpp mcp.hpp Command line and MCP 586 12 5 `wavelength mcp`: a Model Context Protocol server on stdin/stdout (JSON-RPC, one message per line), so Claude Desktop, Claude Code, Cursor and other MCP clients can…
song_cli.cpp song_cli.hpp Songs 575 10 7 The song commands (docs/song-format.md): save, history, undo, redo, restore, diff, comments, pack, unpack, validate, migrate and fallbacks.
musicxml.cpp musicxml.hpp Files and formats 568 24 3 MusicXML scores (.musicxml, .xml, compressed .mxl; score-partwise) imported into a job.
vst3_plugin.cpp vst3_plugin.hpp Plugin hosting 563 23 10 VST3 implementation of the Plugin interface, built on the Steinberg VST3 SDK hosting helpers (module loading, PlugProvider, HostProcessData, EventList, ParameterChanges).
encode.cpp encode.hpp Files and formats 544 21 2 Delivery files next to mix.wav: MP3 (LAME, loaded at run time, or ffmpeg), FLAC (built in) and 16/24-bit WAV.
platform.cpp platform.hpp Platform 525 37 5 Everything that differs between macOS, Linux and Windows: folders, child processes, loading plugin libraries, the main-thread event loop and leaving the process.
bitwig.cpp bitwig.hpp Files and formats 517 38 3 Bitwig Studio project files (.bwproject): the devices a DAWproject export leaves out.
package.cpp package.hpp Songs 474 24 6 .wavelength packages (docs/song-format.md, section 5): a song folder packed into a ZIP whose first entry is `mimetype`, and back.
harmony.cpp harmony.hpp Measurement 473 42 3 Harmony check for `wavelength lint --harmony`: the key in force at every bar (declared in the job's "keys", given with --key, or detected per section), the chord of…
vst2_plugin.cpp vst2_plugin.hpp Plugin hosting 449 13 2 VST 2 implementation of the Plugin interface: loads a .vst bundle (macOS), .dll (Windows) or .so (Linux) through its VSTPluginMain entry, on Wavelength's own declaration…
song.cpp song.hpp Songs 435 30 6 A song folder (docs/song-format.md): the manifest wavelength.json, the job and the files that belong to it.
history.cpp history.hpp Songs 432 32 4 A song's revisions (docs/song-format.md, section 6): history/log.jsonl, one revision per line, and history/objects/<2>/<sha256>, each tracked file's content compressed…
kit.cpp kit.hpp Plugin hosting 422 21 2 `wavelength kit`: a starter set of free instruments for machines without plugins (a cloud container, CI, a fresh laptop): GPL synthesizers downloaded from their own…
help.cpp help.hpp Command line and MCP 421 14 1 `wavelength help`: a short list of commands grouped by task, `help <command>` (or `<command> --help`) for one command's usage and details, `help all` for everything.
dawproject_export.cpp Files and formats 403 17 2 DAWproject export: a job as a project a DAW opens with its plugins loaded (see dawproject.hpp).
picture.cpp picture.hpp Measurement 401 23 2 A picture of a song, for agents that can see images but can't hear: the sections and bars, the mix's loudness over time with each section's level, its spectrum, and a…
preset_files.cpp preset_files.hpp Presets and states 386 29 13 Preset files on disk for a plugin, found in the standard preset folders (/Library/Audio/Presets/<vendor>/<plugin>, ~/Library/Audio/Presets/...) and a few known vendor…
sf2.cpp sf2.hpp Effects and instruments 383 20 1 SoundFont 2 (.sf2) and its Ogg Vorbis compressed form (.sf3, MuseScore's): presets by bank and program, resolved into zones (instrument generators with the preset's…
instance.cpp instance.hpp Plugin hosting 381 24 8 One plugin instance plus the host side it talks to.
analyze.cpp analyze.hpp Measurement 368 38 9 Measurements an agent needs in place of listening: pitch, brightness, spectral balance, stereo image, onsets and the amplitude envelope of a stem, a mix or a window of…
migrate.cpp migrate.hpp Songs 360 19 1 `wavelength migrate <song>`: brings a song folder made before the song format (docs/song-format.md) up to it.
songdiff.cpp songdiff.hpp Songs 349 12 2 Two versions of a job compared as music (`wavelength diff`, docs/song-format.md): which tracks, bars, sounds and settings changed.
catalog.cpp catalog.hpp Plugin hosting 311 22 7 Finds CLAP and VST3 plugins on disk.
audition.cpp audition.hpp Presets and states 300 18 5 The audition index: every preset of a plugin rendered once (C4 for one second) and measured, so an agent can choose sounds by what they sound like and knows each…
automation.hpp Render and mix 294 33 8 Breakpoint automation.
clap_plugin.cpp clap_plugin.hpp Plugin hosting 284 3 8 CLAP implementation of the Plugin interface (wraps Instance, the CLAP host side).
fallback.cpp fallback.hpp Render and mix 281 22 3 Stand-in sounds for jobs that travel: a track's "fallback" lists other sounds (another plugin, builtin:synth, a sample library) that play its part when its own plugin or…
builtins.cpp builtins.hpp Effects and instruments 267 19 7 Built-in instruments, used as `"plugin": "builtin:drums"` or `"plugin": "builtin:fx"`.
engine.cpp engine.hpp Render and mix 262 25 17 Running plugins (CLAP or VST3) over a whole timeline: instruments (notes in, audio out) and effects (audio in, audio out), with parameter automation.
state_file.cpp state_file.hpp Presets and states 249 26 11 Plugin state files.
microtonic.cpp microtonic.hpp Presets and states 238 13 1 Sonic Charge Microtonic kits (.mtpreset) and drums (.mtdrum), via the plugin's own text parser.
clips.cpp clips.hpp Effects and instruments 220 16 4 builtin:audio: audio files placed on the timeline in beats, with pitch-preserving time stretch (Signalsmith Stretch), transposition, reverse, trimming and fades.
sfz.cpp sfz.hpp Effects and instruments 216 7 1 SFZ instruments (the open text format for multisampled instruments): the file's headers flattened into one opcode map per <region> (control -> global -> master -> group…
self_upgrade.cpp self_upgrade.hpp Command line and MCP 188 11 1 `wavelength upgrade`: replaces this binary with the latest GitHub release for this platform, checked against the release's SHA256SUMS.txt and run once before it takes…
term.cpp term.hpp Command line and MCP 182 15 1 Terminal styling for people, invisible to agents: colours, symbols and a progress line appear only when the stream is a terminal, NO_COLOR is unset, TERM isn't "dumb"…
presets.cpp presets.hpp Presets and states 175 7 2 CLAP preset discovery: lists a plugin's presets (its built-in banks and preset files) through the plugin's preset-discovery factory, and resolves a name to a loadable…
zip.cpp zip.hpp Files and formats 167 7 5 Minimal zip reader (stored or deflated entries, no zip64): Bitwig .multisample instruments and DAWproject files are zips.
xml.cpp xml.hpp Files and formats 163 5 2 A small XML reader for project and score files (DAWproject, MusicXML): elements, attributes and text content, entities decoded; comments, processing instructions and…
audio_file.cpp audio_file.hpp Files and formats 159 6 2 Audio files in: WAV, AIFF/AIFC, FLAC, MP3 and Ogg Vorbis, told apart by their contents (not the extension).
wav.cpp wav.hpp Files and formats 130 6 6
loudness.cpp loudness.hpp Measurement 115 11 5 Integrated loudness per ITU-R BS.1770-4 / EBU R128 (K-weighting, 400 ms blocks with 75% overlap, absolute gate at -70 LUFS, relative gate 10 LU below the ungated mean).
plugin.cpp plugin.hpp Plugin hosting 104 22 9 A hosted plugin, independent of its format (CLAP or VST3).
review.cpp review.hpp Songs 98 9 2 Comments on a song (review.json, docs/song-format.md section 7): each keeps an anchor to what was heard (the revision and render that were playing, the bars, time and…
dsp.hpp Effects and instruments 96 6 3 Small DSP building blocks shared by the built-in effects and instruments.
docs.cpp docs.hpp Command line and MCP 91 5 1 The agent docs built into the binary (AGENTS.md, docs/job-format.md, docs/effects.md), so an agent with only the executable, or connected over MCP, reads the guide that…
vst2_abi.hpp Plugin hosting 90 10 1 The VST 2 plugin binary interface, declared from its publicly documented layout so Wavelength can host VST 2 plugins without Steinberg's (withdrawn) VST 2 SDK.
sha256.hpp Songs 82 3 1 SHA-256 (FIPS 180-4): names song history objects and checks the files a manifest lists.
bundle.cpp bundle.hpp Plugin hosting 82 3 5 A loaded .clap bundle: the shared library, its clap_entry, and the plugin factory.
audio_codecs.cpp Files and formats 64 1 1 dr_flac, dr_mp3 and stb_vorbis compiled into Wavelength (their warnings are silenced for this file).
tempo.hpp Render and mix 22 4 4 Beats <-> seconds through a tempo map.
image_codecs.cpp Measurement 4 2 1 stb_image_write (PNG out) and stb_truetype (text in pictures) compiled into Wavelength (their warnings are silenced for this file).

Around the engine

The rest of the repository, and the commits that built it.

What the repository holds

Lines in each kind of file, blank lines left out.

  • Engine sourceC++ in src/ 24,936
  • ExamplesExample jobs, scores and instruments in examples/ 10,327
  • Build and scriptsCMake, release and check scripts 3,978
  • Review UIHTML, CSS and JavaScript in ui/ 1,380
  • DocsThe readme, AGENTS.md, changelog, roadmap, docs/ and the agent skill 1,294

What the commits were

By their Emoji-Log prefix.

  • New 90
  • Fixes 35
  • Improvements 25
  • Docs 19
  • Tests 6
  • Releases 4

When they were made

Commits by hour of the day, in the committer's time (UTCβˆ’4).

Measured from commit b4c709b of the engine's repository, 27 September 2026 at 10:28. Only committed work counts.