webassemblymusic.near.page is a web music album, with a music player that works on mobile devices, even with a locked screen to provide a continuous long listening experience. It's a showcase of the first generation of WebAssembly Music entirely stored on the NEAR-blockchain. It's also a demo of a smart contract written in Rust but with an embedded Javascript engine ( QuickJS ) in order to customise behavior using Javascript. See the full sources at github.com/petersalomonsen/quickjs-rust-near.
It is now possible to write WebGL fragment shader code that accompanies the music. Just add the gitrepo parameter to the URL, and a midisynth / midisequencer format song. Example url could be something like
https://petersalomonsen.com/webassemblymusic/livecodev2/?gitrepo=blablabla
Git repositories are stored in your browsers IndexedDB using wasm-git. If you also want to store/sync with a remote git server,
you can create a repository at https://wasm-git.petersalomonsen.com (requires a NEAR account).
Full source code, including the shader can also be exported to a compressed PNG, and an example of such an export can be found at mintbase (click the link for "More info").
I was at NEARCON and had the pleasure of speaking about my projects. Check it out!
Also check out the original music at psalomo.near.page, which is also available on streaming platforms.
A simple but efficient web app for creating music in the browser. Preloaded with a set of instruments from a WebAssembly synth. The instrument pack/synth is actually an NFT stored on NEAR protocol blockchain. No samples, just physical modeling (Waveguide synthesis).
Check out a live recording when playing the piano, and also my entry for the Revision 2021 executable music competition where the music and synth was packed into a 22kb HTML file. The article from december is also updated.
I found that the NEAR blockchain is easy for developing smart contracts for selling music NFTs and creating interactive experiences. Have a look at my latest NFT 3 project where you can rearrange and remix and post remixes back on the blockchain (without buying the NFT itself).
An article about my first experiments with physical modeling synthesis (waveguide) in the WebAssembly music studio. Read it here
WASM-git is a port of libgit2 to WebAssembly using Emscripten. Having a git client in the browser makes it possible to store data locally and make it available when disconnected from the internet, and synchronize when online. A perfect match for any Progressive Web App in need of persisting data, where you also can take advantage of GITs capabilties of revisioning and merging remote and local changes. Have a look at this brief demo video of WASM-git integrated into the WebAssembly music studio.
An article on using WebAssembly modules from C.
An article on programming midi sequences in Javascript.
Yoshimi is a soft-synth for Linux with long history and great sounds (forked from ZynAddSubFX). Not long ago I discovered the WebAssembly port of Yoshimi by Jari Kleimola, and wanted to have a go integrating it into my own WebAssembly music environment.
The result of the first attempt on creating a song is here:
Among my first experiences on creating music with computers was using "trackers" on the Commodore Amiga. And so I had to implement support for creating Protracker modules in my WebAssembly music studio. Here's a ProTracker module that plays on the Amiga. Written in Javascript and AssemblyScript, but you can download it as a "MOD" file: Amiga Retro Shuffle
Slides from my talk at WebAssembly summit 2020 are here (use arrow keys left/right to switch page, f to toggle fullscreen, l to open synth in a separate window).
A new version of the live coding environment where you can also edit the synthesizer code in the browser. Have a look at the demo video below, or go directly to the live coding environment.
It's also possible to load synth code from github gist and here's a demo song. You can find many more gists on github.
An article on chip music generated by WebAssembly. Read about the background and technology for the WebAssembly live-coding music environment.
From the live-coding studio I added a feature to record live video and audio output, and you can see the result here. Also see the source code for the song.
Now able to import music JS code and synth WASM binary from GIST. See code and listen here, or watch the video.
Now able to create music in the browser. Check out the live coding music studio and also have a look at the demo video.
The first webassembly music experiment with a synth written in AssemblyScript, and music expressed in Javascript. Also check out the video, and see the sources at github.