NoiseCraft Help Page

Introduction

NoiseCraft is a visual programming language for sound synthesis and music that runs in your web browser, loosely inspired by Pure Data and Max/MSP. It's a tool that allows you to build your own synthesizer by creating new nodes and connecting them together. By connecting nodes with edges, you control how audio data and control signals flow from one node to another and how sound is generated. NoiseCraft is ideally suited to play with additive, subtractive and FM synthesis.

For those who are new to synthesizers and sound synthesis, A Beginner's Guide to the Synth is a good introduction to the basic concepts involved. Please don't hesitate to ask any question, offer feedback or report bugs, by opening an issue on our GitHub repository. We also welcome open source contributors, although we ask that you please communicate with us first before opening pull requests for new features, as we are selective as to what changes will be merged.

The Basics

Starting Audio Generation

To start generating audio, press the "Play" button in the top-right corner of the page. You can also press the spacebar to start and stop generating audio. Currently, NoiseCraft is able to produce audio in the Chrome and Edge browsers, but not in Safari or Firefox, because NoiseCraft uses relatively recent JavaScript features and APIs. Note that projects using the MidiIn node may not produce any sound until you press keys on your keyboard or on a MIDI controller.

Keyboard Shortcuts

NoiseCraft defines a few useful keyboard shortcuts. On macOS the command key is used instead of control:

Creating New Nodes

Clicking on empty space in the editor will make a dialog menu pop up which allows you to select the kind of node you want to create. Once the node is created, you can drag it around by clicking on the node's name and holding the left mouse button as you move the mouse.

Node Types

Each node has input ports on the left, output ports on the right, and performs some operation internally. Nodes like Add and Mul will add and multiply two input signals together. Sine, Saw, Pulse and Noise are oscillators (signal sources). The AudioOut node takes a left and right signal and plays it back on your speakers.

Connecting Nodes

Nodes can have input and output ports, represented by orange boxes. By convention, the input ports of a node are always on the left side, and the output ports are on the right. You can only connect output ports to input ports. One output can be connected to multiple inputs, but each in put can only be connected to one output. To make a connection, simply click on the first port to connect, and then on the second. A white line (edge) representing the connection will appear.

Selecting Nodes

To select one or more nodes, press and hold the left mouse button, a red selection box will appear. You can then move the mouse while holding the left mouse button pressed to select the nodes you want. Release the mouse button when done and the selected nodes will remain highlighted. To deselect the nodes, click any empty space in the editor.

Moving Nodes

To move a node, click on the node's name and hold down the mouse button while moving the mouse.

Deleting Nodes

You can delete nodes by first selecting them and then pressing the delete key.

Removing Connections

To break connections, you can click on the input-side port associated with that connection. This will break the connection, and leave you holding a dangling wire which you can then reconnect to an input port on another node. You can also drop the dangling connection by clicking on an empty part of the canvas.

It's also possible to override existing connections. In NoiseCraft, output-side ports can be connected to multiple inputs, but input-side ports can can only be connected to one thing. When you try to connect an output port to an input port that already is connected to something, this will remove the previous connection on that input port and override it with the new connection you just made.

Editing Node Parameters

Double-clicking on a node's name will make a Node Parameters menu specific to this node pop up. This allows you to edit advanced parameters, such as the minimum and maximum value a knob can output, or the output range of a Sine oscillator.

Copying and Pasting

One or more nodes can be copied by first selecting the nodes you want to copy, and then pressing Ctrl+C (Command+C on macOS). You can then paste the nodes at the location of your mouse pointer by pressing Ctrl+V (Command+V on macOS). You can copy and paste nodes between different browser tabs, which makes it possible to reuse useful parts of other projects.

Examples

This section contains some simple example projects which can serve as mini tutorials to help you get started.

Producing Sound

In order to produce a sound, we need to connect an audio signal source to an audio output. The simplest possible graph that you could make to do this involves connecting a Noise node directly to an AudioOut node. Try creating this simple graph, and then press the Play button in the top-right corner.

Volume Knob

It's useful to be able to change the amplitude (intensity) of a signal. An easy way to do this is to multiply that signal by some number. In this example, we multiply the output of a Noise node by some factor that is controlled by a Knob node. You can change the value that the knob outputs by clicking on the knob, holding the mouse button down and moving your mouse up and down. Knobs, by default, produce values between 0 and 1. However, you can change the output range of a knob by double clicking on its name (where it says "Knob") and editing the node's parameters.

Low Frequency Oscillators (LFOs)

The Sine, Saw and Tri oscillator nodes can be used as LFOs. You can double-click on these nodes to edit their minimum and maximum output range, and then use their output to modulate the parameters of other nodes. In this simple example, we use a sine LFO to modulate the cutoff of a low-pass filter.

MIDI Support

Keyboard and Sequencers

NoiseCraft can receive input from MIDI keyboards, sequencers and other types of MIDI devices. The MidiIn node, by default, will connect to every MIDI device on your system and receive notes.

Mapping Controls

You can map virtual knobs in NoiseCraft to physical knobs or faders on a MIDI device by double-clicking on the virtual knob and then moving the physical knob you want to map to. You can also map knobs to the mod wheel or pitch bend wheel of a MIDI keyboard. In cases where you can't easily physically move a specific physical control to bind it, it's also possible to double-click on a knob's header to open the node parameters menu, and then manually edit the controlId parameter.

Unmapping Controls

To unmap a MIDI control from a virtual knob, double click the knob node and then click outside of the mapping dialog or press the escape key.

Supported Devices

Most MIDI controllers should work with NoiseCraft out of the box, but if you are looking to purchase new equipment, I have personally tested the Novation Launch Control, which has multiple mappable knobs, the M-Audio KeyStation 88, the Akai MPK Mini and the Arturia KeyStep.