On this page you can browse projects created by other users of Zupiter. You can share your own projects, or modified versions of existing projects, by going over to the Share tab.
Zupiter is a modular synthesizer that runs in your web browser, loosely inspired by Pure Data, Max/MSP, and other visual programming languages. Essentially, it's a tool that allows you to build your own synthesizer by creating new nodes (modules) 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.
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 and report bugs in the musictools subreddit.
Clicking on empty space in the Edit tab 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.
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.
To move a node, click on the node's name and hold down the mouse button while moving the mouse.
You can delete nodes by holding down the shift key while clicking on a node's name.
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 Zupiter, 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.
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.
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.
The MidiIn node allows you to get pitch and gate inputs for notes played on a computer keyboard or MIDI input device. The pitch value is the frequency of the note played. The gate value is one when a key is held down, or zero otherwise.
This example graph uses the pitch value to directly control a sawtooth wave oscillator. The gate value is then multiplied by the oscillator's output, so that you only hear a sound when a note is playing.
Press the play button in the top-right corner, and then try pressing the A to L keys on your keyboard to produce sound. You can also shift one octave up or down with the Z and X keys. If you want to use a MIDI input device, you should connect this device to your computer before loading up Zupiter (or refresh the page).
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 source by some factor that is controlled by a knob. You can change the value that the knob produces 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.
Zupiter can receive input from MIDI keyboards, sequencers and other types of MIDI devices. The MidiIn note, by default, will connect to every MIDI device on your system and receive notes. You can also map virtual knobs in Zupiter to physical knobs on a MIDI device by double-clicking on the virtual knob and then wiggling the physical knob you want to map to. If input from your device is not detected, try refreshing the Zupiter page.
Most MIDI controllers should work with Zupiter 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, and the Akai MPK Mini.
Please don't hesitate to ask any question, offer feedback and report bugs in the musictools subreddit. However, please note that at the moment, I do not own a tablet. I only have access to Mac and Linux PCs. As such, Zupiter is only tested on Chrome and Firefox on those two platforms. Support for tablets, Windows computers and other platforms is not guaranteed.
Copyright © 2019 - Maxime Chevalier-Boisvert