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 together, 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. Note that projects using the MidiIn node may not produce any sound until you press keys on your keyboard or on a MIDI controller. Also note that NoiseCraft has been primarily tested and works most reliably with the Chrome web browser.

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 new curved line representing the connection will appear.

NoiseCraft does audio synthesis through virtual analog modeling. All values coming out of a node's output port are floating-point value that can fluctuate over time. Typically, these values are in the range from -1 to 1, or from 0 to 1, but this can vary from one node type to another. Knobs, for example, can be configured to output values in any desired range.

Connections or wires can have different colors. The colors are meant to make it easier to tell them apart visually. The color of the wires is not completely random, it is dependent on the output port they are coming from. All the wires coming from the same output will have the same color. The color associated with an output port is decided based on the node type and the name of the output port, so that two nodes of the same type will produce outputs of the same color.

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.

Zooming In and Out

At this time, there is no zoom feature built into NoiseCraft itself. However, most web browsers allow you to zoom in and out on a webpage with Ctrl+Minus and Ctrl+Plus. This works fairly well to zoom out on larger 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.

Sequencers

Sequencers can be used to automatically play a sequence of notes, or for automation. Each sequencer contains 8 patterns that can be selected using the buttons numbered 1 through 8. The patterns can be extended or shortened in length. The frequency output of the sequencer corresponds to a note on the currently selected scale, and can be used to drive an oscillator. A simple detuning effect can be achieved by multiplying the frequency by a value or by adding to it.

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.

Should you want to receive MIDI signals from multiple devices, either to interface with multiple controllers or external sequencers, or with a program such as ORCA, you can create multiple MidiIn nodes and assign each input node to a different MIDI channel. To do so, double-click on a MidiIn node and set the chanNo value to the MIDI channel you wish to receive from.

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.

Clock Signal Output

The ClockOut node allows you to broadcast a clock signal from NoiseCraft to every MIDI device you have connected. This makes it possible to jam with external devices such as drum machines while keeping the rhythm synchronized. Simply connect a Clock node to a ClockOut. The rate of clock pulses coming out of Clock nodes is 24 PPQ (pulses per quarter node) which matches the rate set by the MIDI specification. If you need a different output rate for the clock output, you can use a ClockDiv (clock divider) node.

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.