space

progress

  1. next

    confirm the assembled note block before browser work

    five new examples are ready for the owner's listening. confirm how the assembled note sounds before taking the first playable browser step.

  2. 2026-11-04shipped

    the measured render ending contract

    a reviewed specification now records eleven reported abrupt file endings and freezes checks for a later optional 10 millisecond fade. no sound changed and no fix shipped.

  3. 2026-11-04shipped

    the first reusable note block

    one reusable block now joins the oscillator, tuning, pitch envelope, static high pass and volume envelope, with pitch movement supplied from outside. five actual deterministic examples meet the frozen checks; owner listening remains pending.

  4. 2026-10-23shipped

    the owner listened to every example

    the fully listening gate closed as owner listened: all 27 released examples got an answer, with mixed results. most steady tones sound right, and four small clusters of notes came back where something was off or not sure.

  5. 2026-10-23shipped

    the partial voice assembly contract

    before implementation, this released written contract froze the first reusable partial: one component owning the oscillator, static tuning, pitch envelope, static high pass and amplitude envelope state, with its per frame lfo input supplied from outside. this milestone records the plan; the later reusable note block is recorded above.

  6. 2026-10-23shipped

    the iplug2 web host probe specification

    the exact first probe of running a native engine example inside the web app is now a written, reviewed and released specification: what it would build and pin, what it would measure, and the adopt or defer decision it must report. every download and dependency row needed explicit owner approval, and the owner granted it on 2026-10-23 with their words recorded in the decision log.

  7. 2026-10-23shipped

    the build machine readiness probe

    a read only check found the development tools ready, chrome and edge installed, and every pinned source reachable. for the separate host probe, the owner declined a firefox install: chromium is primary, edge secondary, and firefox and safari are unmeasured by owner choice.

  8. 2026-10-22shipped

    the listening page

    a quiet page at /listen now plays a curated set of the released engine sounds in the browser, with one plain question per sound and one button that copies your answers back to the build thread.

  9. 2026-10-22shipped

    the first partial assembly plan

    a source-based gap map documented how released sound parts could form one reusable partial. this milestone records planning only, before the later contract and reusable note block.

  10. 2026-10-22shipped

    the sine lfo diagnostic build

    five deterministic wav examples and their repeats passed the checks. all 16 frequency windows stayed within the frozen 1 hz limit, and all 11 wrong controls were rejected.

    m2e

  11. 2026-10-22shipped

    progress status validation

    the timeline test now checks every status against next, in progress and shipped.

  12. 2026-10-22shipped

    the lfo plan

    the written lfo plan is reviewed and released. it sets one sine wave to move pitch for a small diagnostic; no synth code or audio came from the plan.

  13. 2026-10-22shipped

    the pitch envelope build

    the pitch envelope engine is built and released, with five deterministic wav examples checked against the frozen pitch measurements.

    m2d

  14. 2026-10-22shipped

    the pitch envelope plan

    the pitch envelope is now a written, reviewed and released plan: its shape, its controls, its limits and the exact checks the real build must pass later. no synth code or sound came out of this stage; that is the next card's job.

  15. 2026-10-22shipped

    release checks for both public pages

    an automatic check now visits the live site and this progress page and passes only when both answer as themselves: the right address, a real success response, the correct titles, headings and structure. problems on either page are visible in one check.

  16. 2026-10-22shipped

    the high-pass filter

    the mirror of the low-pass filter, keeping the highs and cutting the lows, is built, verified and released with a full evidence package.

    m2c

  17. 2026-10-22shipped

    the low-pass filter

    the first filter joins the chain, placed after the oscillators and before the envelope. it cuts everything above its cutoff frequency, from gentle softening to full muffling with resonance.

    m2b

  18. 2026-10-22shipped

    pitch tuning

    tuning in whole semitones plus fine cents, built into the oscillators and verified by measuring the actual pitch of rendered wavs. it opened the way for the filter work that followed.

    m2a

  19. 2026-10-22shipped

    this progress page

    a plain page telling the story of the build, shaped by review throughout its first day: reordered timeline, expandable details for every milestone, one named set of design tokens, clearer status chips, and a callout that answers what is happening now.

  20. 2026-10-22shipped

    seeded white noise

    noise you can reproduce exactly: choose a seed number and every machine generates the identical noise stream. includes strict input checking and reset behavior.

    m1d

  21. 2026-10-22shipped

    the triangle wave

    the triangle waveform, computed with a closed-form method that stays clean across the audible range instead of drifting over time.

    m1c

  22. 2026-10-22shipped

    saw and square waves

    two classic synth waveforms joined sine. each one is measured against frozen sound-quality limits, and deliberately bad versions are kept in the tests to prove the measurement catches mistakes.

    m1b

  23. 2026-10-21shipped

    the loudness envelope

    an adsr envelope, the part of a synth that shapes how a note attacks, holds and fades out. every sample matches an independent reference within the wav format's own rounding.

    m1a

  24. 2026-10-21shipped

    the first real engine code

    a clean-room c++20 dsp core with a small command line tool that renders wav files, plus automatic tests on ubuntu and windows. its first output, a 440 hz tone for 2 seconds, is byte-identical no matter which machine builds it.

    m0

  25. 2026-10-21shipped

    readiness check before the engine

    a read-only audit of the machine found no c++ compiler or build tools installed, so engine builds run on github's servers and the results are downloaded and tested locally. the development ledger used to track every card started here.

  26. 2026-10-21shipped

    the website and repository go live

    the private repository was set up, the web app was built on tanstack start with react three fiber, and deploys run through sst to cloudflare. the landing page shipped with the approved text and working light and dark themes.

  27. 2026-10-20shipped

    space gets its name and its rules

    the owner named the project space and wrote the ground rules into the project constitution: every sound comes from explicit deterministic math, never from ai generation; the implementation is clean room; and presets will use the .spacepreset format, with a producer marketplace later.

  28. 2026-10-16shipped

    the idea gets researched

    before any code, a research session asked what a browser synth can really do today: sound latency, offline rendering to wav, midi support, how presets could be shared, and what a clean metallic look should feel like. the findings became the plan for space.

milestone details

confirm the assembled note block before browser worknext

after the owner accepts the voice, the smallest browser outcome is one sustained note, one output level slider that changes the held sound, and reliable note off and stop. it would run through our approved c++ core, compiled to wasm and hosted in an audioworklet. that needs a separate bounded plain language browser specification, implementation and evidence. full m2 is not automatically a prerequisite. this records product direction only, with no browser specification approved or worker started. the optional file ending fade remains separately reserved and has not started.

the measured render ending contractshipped

2026-11-04

the measurements support a future optional fade over the last 480 frames, preserving the file length and everything before that ending region. one other reported example already has 36002 exactly silent samples at its end, so its report remains unexplained and a fade cannot count as its repair. the historical raw renders and default rendering behavior stay unchanged. this milestone releases the specification and numeric study only; the separate finishing implementation has not started. the earlier listening to all 27 examples remains recorded with mixed results, and questions about attacks, filter levels and deeper wobble stay separate.

the first reusable note blockshipped

2026-11-04

the note block implements the earlier assembly contract, including a fresh start on reset and one externally supplied pitch movement value per frame. both build machines passed eleven frequency windows within 1 hz and nine waveform windows within the frozen limit, five byte-identical repeats, exact silent tails and seven deliberately wrong controls. all 71 earlier rendered sounds stayed byte for byte unchanged on each machine. this is a reusable building block, with full m2 and a playable browser voice still open. later browser work follows voice acceptance and a separate bounded specification.

the owner listened to every exampleshipped

2026-10-23

the machine side of every example already passed its own checks; only ears could decide the rest, and now that verdict is on record. a repeating click showed up at the very end of many steady renders: the triangle wave, every tuning note, the steady high passed note, some of the pitch envelope moves and most of the vibrato examples have it. the shaped square, triangle and noise notes share attack questions, from a weak attack to a level sitting lower than the plain noise. the low and high pass notes raised open questions about how loud a filtered note should sit. and the swoop inside vibrato asked for deeper wobble. the defect notes were recorded verbatim in the owner's build log. the measured ending contract is now released as a specification and numeric study, with no sound change or shipped fix. this completed listening record stays separate from the five new assembled note examples.

the partial voice assembly contractshipped

2026-10-23

the contract freezes the api, the frame order signal chain and the wrapper reset contracts, including a safe fresh note start for the amplitude envelope that has no reset method of its own: the wrapper keeps the saved envelope settings and builds a brand new envelope on reset, so a reinitialized voice starts from silence, while the released note_on behavior stays exactly as released. a frozen version 10 fixture set with five deterministic examples and a standalone numeric study back it: every valid frequency window measured inside the frozen 1 hz limit, with the worst measured error around 0.17 hz, and every deliberately wrong control missed a frozen limit with a wide margin, so right and wrong separate clearly before any code is written. already released fixture versions stay untouched. the wobble generator stays outside the partial: a caller supplies one per frame lfo value, rather than freezing any ownership or phase policy inside it.

the iplug2 web host probe specificationshipped

2026-10-23

the specification freezes one pinned official iplug2 example inside the web app's build pipeline, a minimal three dimensional control, and checks for startup, a gain round trip, cleanup across reloads, cross origin isolation headers, one byte identical rendered wav, screenshots, noise and platform limits. the owner explicitly approved its listed downloads and dependencies on 2026-10-23, with their words recorded in the decision log. the separate probe is now complete and independently reviewed. its evidence recommends deferring adoption: gain readback failed, generated browser errors remain, and post-stop output and reload uniqueness are unmeasured. that execution evidence is still unmerged; this shipped milestone records the specification only, and no iplug2 host is adopted or released.

the build machine readiness probeshipped

2026-10-23

the readiness check changed nothing on the machine: no downloads or installs. the build tools were ready, chrome and edge were present, and all six pinned sources responded successfully. the owner later chose not to install firefox for this run. the completed host probe records chromium as primary and edge as secondary, with firefox and safari unmeasured by owner choice; no behavior is inferred for either unmeasured browser, and the original minimum browser matrix remains unmet. readiness findings do not decide host adoption. the separate execution evidence recommends defer and remains unmerged.

the listening pageshipped

2026-10-22

each sound is an exact byte for byte copy of a released evidence render, so what you hear is exactly what the checks approved. every sound carries one line on what to listen for and one question to answer, from does the swoop land cleanly to is there any click at the ends. answers stay in your browser: a copy as prompt button turns them into plain text to paste into a build thread, and nothing uploads anywhere. machine checks prove the files; only ears decide how they sound, and the owner has since answered every example on it.

the first partial assembly planshipped

2026-10-22

the plan traced the actual renderer and engine: the first partial could reuse the existing static hp12 chain, with its diagnostic pitch lfo supplied from outside the partial. the amp envelope had no reset method, so the map identified the need for a wrapper reset contract that starts a fresh note safely. the later contract and reusable note block resolve that bounded gap. dynamic filter behavior, filter envelope and key tracking, and product lfo routing remain outside this first block. full m2 remains open; the owner has since listened to the earlier released examples, with the results recorded in the timeline.

m2ethe sine lfo diagnostic buildshipped

2026-10-22

the diagnostic build passed its native and rendered checks on ubuntu and windows. all 61 earlier wavs per runner stayed unchanged against the prior baseline. the owner has since listened to these examples.

progress status validationshipped

2026-10-22

missing, non-string and unrecognized statuses fail the root test. each supported label and the current timeline pass.

the lfo planshipped

2026-10-22

the plan freezes one sine lfo that moves pitch up and down, with the controls and checks the later build must follow. no synth code or audio came from the plan; those belong to the separate diagnostic build.

m2dthe pitch envelope buildshipped

2026-10-22

the engine shapes pitch with timed semitone stages, including zero-duration jumps and retriggers, then applies that offset before the tuned oscillator. five version 8 diagnostic fixtures render as repeatable wavs and are checked independently across twelve frequency windows; every frozen failure control is rejected. all 51 earlier wavs stayed byte-for-byte unchanged on each runner. these are machine checks only; the owner has since listened to these examples.

the pitch envelope planshipped

2026-10-22

a pitch envelope bends the pitch for a moment at the start of a note, the classic swoop and zap. the plan freezes what the build must follow: the pitch stages and their timing, how stage durations round to a number of frames, retrigger behavior and safe input ranges. a numeric study shows the planned measurements tell the intended examples apart from deliberately wrong versions. the real build must still prove itself with rendered wavs, and once it works it opens sounds a loudness shape alone cannot give: rips, dives and zaps.

release checks for both public pagesshipped

2026-10-22

one command reports each public page on its own: the exact success status, the site title, the page heading, and the timeline structure of the progress page. the pass and fail paths are proven by tests that feed the checker local copies of the pages, so the test suite never needs the network. the same command confirmed both live pages after the latest release.

m2cthe high-pass filtershipped

2026-10-22

same two pole digital design as the low-pass, flipped: high frequencies pass, low frequencies are cut away, with a resonance control for character. its rendered wav outputs are checked against the exact filter math, sample for sample, and deliberately wrong versions must fail. the release notes state one honest footnote openly: 31 resonant samples differ by one wav rounding unit between build machines, and every earlier wav output is unchanged.

m2bthe low-pass filtershipped

2026-10-22

a filter is what turns a bright buzzy wave into a warm rounded tone, like a tone knob with far more range. the design is a clean-room two pole low-pass written from textbook math, not copied from any product. its output is checked against that exact math sample for sample, rendered in ci and rerun locally before release. the audit story matters: the checks were green, yet a deeper independent audit still found two gaps the tests did not cover, so the rules were tightened and everything reran from scratch.

m2apitch tuningshipped

2026-10-22

coarse tuning moves the pitch one piano key at a time. fine tuning nudges it in hundredths of a key for exact matching against other instruments. the acceptance test renders wavs and measures their real pitch with a frequency spectrum, so a reversed direction, a wrong cents scale, or ignored tuning fails automatically. it released cleanly the same day it hit a tooling pause.

this progress pageshipped

2026-10-22

everything you read here lives in one data file in the repo. the web page is built from it, and a test suite checks the timeline structure and the wording of every line: newest first, one next step at the top, lowercase voice, no dashes as punctuation, no external links. the look runs on one named vocabulary of design tokens, colors, surfaces, borders, corner radius and spacing, shared by light and dark. status chips carry meaning by fill instead of faint border tricks: shipped is filled, in progress sits on a muted surface, next is a plain outline. a note pinned above the timeline states what is being worked on right now, drawn from the same data file. a scheduled check every six hours helps keep it current while development continues.

m1dseeded white noiseshipped

2026-10-22

white noise is the raw hiss every synth needs for percussion and texture. seeded means reproducible: the seed is a number, and the same number always produces the identical noise, on any machine, forever. the math core is splitmix64, a published random generator reimplemented from its paper. a separate checker compares every single sample against an independent calculation.

m1cthe triangle waveshipped

2026-10-22

the triangle wave is a softer cousin of the saw. it is computed with a closed-form formula, a fixed piece of math per sample, so it stays clean across the whole audible range instead of drifting or piling up error over time, the usual failure mode for naive approaches.

m1bsaw and square wavesshipped

2026-10-22

saw and square are the bright, buzzy foundations of classic synth sounds. their raw shapes have sharp corners that fold back into the audio as grit. the acceptance rules freeze measured limits, and deliberately broken versions are kept in the test suite to prove the measurement catches mistakes.

m1athe loudness envelopeshipped

2026-10-21

adsr is the standard four stage loudness shape: attack, decay, sustain, release. it is what makes a note swell in, hold, and fade out naturally. the implementation is checked sample by sample against an independent reference, within the wav format's own rounding.

m0the first real engine codeshipped

2026-10-21

this is where the sound engine was born: a c++20 core that depends on nothing but the standard library, so the same code can later run in the browser and as a native plugin. a command line tool renders a preset description into a wav file. ci builds it on ubuntu and windows, and the flagship check is strict: the same tone must come out byte for byte identical on every machine, compared against a fixed checksum.

readiness check before the engineshipped

2026-10-21

before writing engine code, a read-only audit checked what build tools this machine actually had. the answer was none, so the workflow was designed around that: github servers do the compiling, and the finished test programs are downloaded and run locally for real output checks. the ledger that tracks every card since started here.

the website and repository go liveshipped

2026-10-21

the site you are on runs on tanstack start, with react three fiber reserved for the future 3d instrument, deployed through sst to cloudflare. deploys are guarded: the script refuses any stage except the main one, so an accidental personal deploy is impossible. light and dark themes work everywhere.

space gets its name and its rulesshipped

2026-10-20

the ground rules were written into the project constitution: every sound comes from explicit deterministic math, never from ai generation; the implementation is clean room, with no proprietary code or sounds; and presets will use the .spacepreset format, with a marketplace where producers sell their own sounds later. business decisions like payment providers stay deliberately open.

the idea gets researchedshipped

2026-10-16

an overnight research session tested the idea against reality: how much latency browsers add, how offline wav rendering works, that midi is supported in desktop chrome, edge and firefox but not safari or mobile, how presets could be shared and understood, and what the clean metallic look should feel like. the findings became this project plan, and the full study is preserved in the repo.