I've recently resumed work on a side-project I started back in 2019 to create a browser-based visual programming language for sound synthesis and music. I was initially hoping to make this a commercial SaaS product, but I got discouraged when I realized that running and promoting a business could easily become a second job on top of my full-time day job, and suck all the fun out of the project. Thankfully, about six months ago, my motivation to work on the project came back. I decided to build an improved version of this software and make it open source.
NoiseCraft is a node-based visual programming language, loosely inspired by Max/MSP and PureData. The main goal of this project is to provide a way for people to explore musical ideas, and to enable people to share these ideas easily. It's designed to be easy to use and approachable for beginners. There's only one type, every connection has a floating-point value that changes over time. It runs in a browser and uses the Web Audio and Web MIDI APIs. This means you don't need to install anything, and you can share links to your projects just as easily as you can in Google Docs. The user interface is minimalistic and designed to be as simple as possible to facilitate learning. No cryptic shortcuts, no submenus, no esoteric terminology.
I want to set realistic expectations. This is something I've been working on in my spare time. It's not trying to be Ableton Live or Reason. It's definitely not perfect and you could run into bugs. It's designed with desktop and laptop computers in mind. It might eventually work on tablets, but for the moment, it probably doesn't (unless you connect a keyboard and mouse to your tablet). It's been tested in Chrome and Edge. However, it doesn't yet work in Firefox because we're waiting for a bug to get fixed. It also doesn't yet work in Safari. However, despite its limitations, NoiseCraft has many interesting features:
Easy to use sequencer node with multiple patterns
Audio is now rendered in a background thread to avoid glitches
You can copy and paste, even between different browser tabs
Colorful, curved edges that are easier to follow visually
Undo and redo
Projects can be shared in the cloud in a few clicks
Projects can also be saved to local files to a simple JSON format
Ability to play notes from MIDI keyboards and devices
Ability to map virtual knobs to knobs/sliders/mod/pitch bend on MIDI devices
New clock divider and sample-and-hold nodes
I started this project to improve my understanding of synths and sound synthesis. NoiseCraft is ideally suited to explore the possibilities of additive, subtractive and FM synthesis. Most nodes are simple building blocks with a low level of granularity so that it's easy to understand how things work. By connecting oscillators, filters, delays and other basic components you can create your own synth or groovebox. I've linked some fun example projects below to showcase various possibilities:
Kaïser Clicker Clicker's FM (FM synthesis example)
Triple oscillator + delay + overdrive pedal (playable with a MIDI keyboard)
The little acid machine that could (my attempt at an acid sound)
Polyclocks v.1.0 (polyrhythm)
Da Wubs (dubstep style wub-wub)
Many more examples can be found on NoiseCraft's browse page and some instructions are provided in the help page. With this project, I hope to create a community for the open sharing of musical ideas. If this is something that interests you, I'm also hoping to find skilled, like-minded collaborators to help me improve the software. I'll keep gradually improving it on my own, but there's a limit to what a single programmer can do in their spare time. NoiseCraft could use testing, bug fixes and various improvements. Constructive feedback as well as contributions to the help page and documentation are also welcome. If you report bugs, please try to provide details on how to reproduce the issue and please be kind. The project is available on GitHub :)