Website review
This review may include AI-generated content and is not individually verified. Domain, certificate and other facts come from the observed data on this page.
What is Peter Salomonsen?
Peter Salomonsen is a developer and musician who builds tools where code and music meet. His work centers on WebAssembly: using it to run synthesizers, live-coding music environments and version-control tooling directly in the browser. He is the author of Building and Deploying WebAssembly Apps and publishes new WebAssembly Music tracks and videos regularly on his YouTube channel, with songs playable at webassemblymusic.pages.dev.
What he actually works on
- WebAssembly music and synthesis — composing and performing tracks where the notes, instruments and visuals are code compiled to WebAssembly and run live in the browser.
- Faust DSP to AssemblyScript — a project (faust2as) that compiles Faust audio DSP code to AssemblyScript so it can run as WebAssembly inside his music environment. He presented this at the International Faust Conference 2026 in Cannes.
- wasm-git — Git compiled to WebAssembly, used to bring version control into web apps. Recent demos run entirely in the browser using OPFS, with repositories syncable to the NEAR blockchain.
- NEAR smart contracts — storing and loading git repositories on-chain, which is how his conference demos pull their sources.
- Agentic composition — using an in-browser AI agent to write and edit notes, synth instruments, sequences and reactive visuals on instruction, while he retains the composer role: directing the arrangement, playing patterns on a MIDI keyboard and editing code where it matters.
Who it is for
This is most useful to people at the intersection of audio programming and web development: DSP and Faust developers who want their code running in a browser without a plugin, live coders, and developers curious about decentralized or user-custodied application data. A producer looking for an off-the-shelf DAW will not find one here — the value is in the tooling and the demonstration that these things can run client-side.
A useful next step
If you want to understand the approach rather than just hear the output, start with a playable track and open its source: the point of the work is that the song, the instruments and the visuals are all inspectable code you can edit live. From there, the wasm-git and Faust-to-AssemblyScript projects are the two threads worth following depending on whether your interest is data ownership or audio DSP.
How does WebAssembly Music let me live-code music in the browser?
WebAssembly Music lets you edit and play music as code that runs directly in the browser: you change the source, it compiles to WebAssembly, and the result is audible immediately — no install, no build step you have to babysit.
What the workflow looks like
- Code is the score. Notes, sequences, synth instruments and reactive visuals are all code compiled to WebAssembly and executed live in the browser.
- Instruments are code too. Peter Salomonsen's Faust DSP work compiles Faust synth code to AssemblyScript so it can run as WebAssembly inside the music environment (his
faust2astooling). - You can drive it by editing, by playing, or by prompting. He describes directing an in-browser AI agent that writes and edits the code on instruction, while he still plays patterns in on a MIDI keyboard and edits the code where it matters — his framing is "still the composer," not a prompt-and-pray generator.
- Songs double as examples. Tracks such as Prompted are published next to their sources, so you can read the code, play the song live, or edit it yourself.
A concrete starting scenario
Open a published track, change a few note values or a synth parameter, and listen. That single loop — edit code, hear the change — is the whole point of live-coding in this environment, and it is the fastest way to understand how the pieces fit together.
Where it fits, and where it doesn't
| If you are… | This suits you because… | Watch out for… |
|---|---|---|
| A programmer curious about music | You already think in code; the score is the source file | You still need musical judgement — the tool does not compose for you |
| A live performer | Changes take effect while the piece runs | Live coding rewards preparation; unrehearsed edits can break a set |
| A Faust/DSP developer | Synth definitions compile into the same WebAssembly runtime | You are working within this environment's conventions, not a general DAW |
| A non-coder wanting a DAW | — | A conventional DAW will be far more direct |
The trade-off is consistent: maximum control and transparency (everything is inspectable code, and songs can even be stored in git repositories synced via the NEAR blockchain using wasm-git) in exchange for a steeper entry point than drag-and-drop music software.
Next step: listen to a track, then open its source alongside it and make one small edit. If you want to go deeper into the underlying technology, Peter Salomonsen's site Peter Salomonsen links his book on building and deploying WebAssembly apps and the playable WebAssembly Music collection. For background on the synthesis language used for the instruments, the official project is Faust.
What is wasm-git used for in web apps?
wasm-git is a WebAssembly build of Git that runs inside the browser, letting a web app keep a real Git repository — commits, branches and full change history — on the user's own device. Peter Salomonsen uses it to give users custody of their application data: the repo lives client-side, optionally encrypted, and can be synced to remote storage such as the NEAR blockchain.
What it enables in practice
- Local-first storage with history. Instead of overwriting records in a server database, each change becomes a commit, so users can inspect, diff and roll back.
- Client-side encryption. Data can be encrypted before it leaves the browser, so the storage host never sees plaintext.
- Sync without a proprietary backend. The same repo can be pushed to a remote Git target or a blockchain-backed store.
- Browser-only operation. The demo runs entirely in the browser using OPFS, the Origin Private File System, so no native Git install is needed.
Who benefits
A note-taking or CAD app where users want an auditable trail of edits; a regulated workflow where the user, not the vendor, must hold the keys; or a tool that must work offline and reconcile later.
Trade-offs
Git's model is powerful but heavier than a simple key-value store: merges and conflicts become user-visible concepts, and browser storage quotas limit repo size. Client-side encryption also means lost keys mean lost data — a real support burden.
If you are evaluating this approach, start by deciding who should hold the encryption keys and whether your users can cope with merge conflicts. A concrete test: build a small prototype that commits one edited document, closes the tab, reopens it, and syncs to a remote — if that loop is smooth, the pattern is worth extending.
Related projects in the same space include GitHub for hosting, and Peter Salomonsen's own site Peter Salomonsen documents wasm-git alongside his WebAssembly music work.
How do I run Faust DSP code as WebAssembly with faust2as?
Faust DSP code can be compiled to AssemblyScript and then to WebAssembly using faust2as, the tool Peter Salomonsen demonstrated at the International Faust Conference 2026. The compiled module runs inside the WebAssembly Music environment in the browser, so a Faust synth or effect becomes a live, editable instrument rather than a plugin you install.
What the workflow looks like
- Write your DSP in Faust as usual.
- Run it through faust2as, which targets AssemblyScript instead of C++.
- Compile the AssemblyScript output to a WebAssembly module.
- Load that module in a WebAssembly host — in Salomonsen's demos, the WebAssembly Music environment, where the instrument is played and edited live.
The payoff is portability: the same DSP source ends up as a browser-native module with no native build step, and because it is code, it can be versioned and shipped like any other source file. In his IFC 2026 demo, the concert and the Faust-to-AssemblyScript example load directly from git repositories stored on the NEAR blockchain via wasm-git, which shows how far you can push the "everything is code in a repo" approach.
Who this suits
- Faust users who want web deployment without maintaining a separate C++/Emscripten toolchain.
- Live coders who want synth instruments as editable source in the browser.
- Developers building browser instruments who prefer AssemblyScript's TypeScript-like syntax over hand-written C.
The trade-off is maturity and ecosystem: AssemblyScript is a smaller target than C++, so not every Faust feature or external library will map cleanly, and you take on debugging at the AssemblyScript/Wasm boundary. If you need maximum compatibility with existing Faust C++ backends, the conventional route is still safer.
A concrete next step
Start with one small, self-contained DSP — a single oscillator or a simple filter — and take it end to end through faust2as before attempting a full instrument. Confirm the module instantiates and produces audio in the host, then add parameters and UI controls. For the broader context of running code like this in the browser, see Peter Salomonsen and the playable WebAssembly Music environment at webassemblymusic.pages.dev.
How can I store git repositories on the NEAR blockchain?
Use wasm-git as the bridge: it is a Git implementation compiled to WebAssembly that runs in the browser, and the site shows it loading repositories stored on NEAR. The practical pattern is to keep the Git object store local in the browser and use NEAR for persistence and sharing, rather than writing every Git object to the chain yourself.
What the pieces do
- wasm-git — Git compiled to WebAssembly. It gives you normal Git operations (clone, commit, branch, history) inside a web app without a server-side Git host.
- OPFS (Origin Private File System) — fast local browser storage. The site's latest demo runs entirely in the browser using OPFS, which is where the working files and repository data live while you work.
- NEAR — the durable, shared layer. Repositories loaded from NEAR can be pulled into the browser environment, and changes can be synced back. Because NEAR accounts are key-based, your repository identity can be tied to an account you control.
A concrete workflow
- Create or use a NEAR account that will own the repository.
- In a browser app built on wasm-git, clone or load the repository from NEAR into OPFS.
- Edit files and commit locally as you normally would.
- Sync the updated repository back to NEAR so the history is available to other devices or collaborators.
- Optionally encrypt client-side before syncing, so the chain stores ciphertext and only key holders can read the content.
Trade-offs to decide on
| Choice | Good for | Cost |
|---|---|---|
| Store full Git objects on NEAR | Maximum portability, verifiable history | Storage cost and latency per commit |
| Store a packed/compressed repository | Fewer transactions, cheaper syncs | Less granular on-chain history |
| Encrypt before upload | Full user custody of data | Key management becomes your problem |
| Keep OPFS as the working copy | Fast editing, offline-ish use | Browser storage can be cleared; sync matters |
The site's own framing is that this gives users full custody of their own application data, with complete change history — and the accompanying responsibility of holding their own keys. That is the real design decision: NEAR provides durable, account-owned storage, but you are trading away the convenience of a managed Git host.
If you want to see the moving parts before building, start with the wasm-git demo on Peter Salomonsen and the playable WebAssembly Music environment, then read the article on bringing Git to web apps. For the NEAR side, the official developer documentation at NEAR covers accounts, storage and contract calls.
What is covered in the book Building and Deploying WebAssembly Apps?
The site identifies Peter Salomonsen as the author of Building and Deploying WebAssembly Apps, but its own pages describe the book only by title — they don't list its chapters, page count or edition. So what follows separates what the site actually shows from what a book with that title would normally cover.
What the site does show
The author's working projects give a fair picture of the ground the book is likely to stand on:
- WebAssembly music and synthesis — notes, sequences and Faust synth instruments compiled to WebAssembly and running live in the browser, with playable and editable songs.
- Faust DSP to AssemblyScript — demonstrated at the International Faust Conference 2026, compiling Faust DSP code to AssemblyScript for WebAssembly.
- wasm-git — Git running in WebAssembly, including a demo using OPFS for browser storage and sync backed by the NEAR blockchain.
- Client-side encryption and data custody — an article on giving users full custody of their own application data, with complete change history.
- NEAR smart contracts — blockchain work alongside the WebAssembly and music projects.
- Agentic composition — an in-browser AI agent writing and editing notes, instruments and visuals as code, with the full agent session published next to the sources.
What a book with this title typically covers
Treat this as general expectation, not a description of this book's contents:
| Area | Typical material |
|---|---|
| WebAssembly fundamentals | Binary format, modules, memory model, how Wasm differs from JavaScript |
| Toolchains | Compiling from C, C++, Rust or AssemblyScript; language runtimes and bindings |
| Browser integration | Loading modules, calling between JavaScript and Wasm, debugging and profiling |
| Performance work | Where Wasm helps, where it doesn't, and how to measure rather than assume |
| Deployment | Serving modules, caching, instantiation strategy, and shipping to production |
How to decide whether it fits you
If you already write JavaScript and want to move compute-heavy work — audio, image processing, parsing, simulation — into the browser, a build-and-deploy framing is the practical starting point. If you mainly want language-level theory, a specification-oriented reference will serve you better. The author's own projects lean toward audio, browser tooling and blockchain, so expect the examples to sit closer to those domains than to, say, serverless edge functions.
For a concrete next step, open one of the live WebAssembly Music songs and edit it in the browser; that is the closest thing on the site to seeing the author's deployment approach in action before committing to a book. Related work by other authors is available from WebAssembly and Rust and WebAssembly.
User reviews (0)