Jasuto is very flexible in terms of synthesis techniques. You can achieve additive, subtractive, FM/PM/AM and even hard-sync synthesis all pretty easily.
Both the synth and all the parameters are in one object called a scene.
A scene is made up of nodes, these are the objects that do the processing and what you directly manipulate to make, modify or otherwise bend the sound.
Processing happens top-down. So the top of the scene is generally where you would have your oscillators, the middle is where you would apply your filters and effects, and the bottom is where you would output the sound.
Instead of using the traditional method of drawing wires manually to create the signal path, Jasuto does this a little differently. Basically each node has a controllable radius and range. The radius is used to set the physical size of the node and the range is used to set the receiving range of the inputs.
The default value for the range is 4x the radius, so a sending node X’s output signal would have to be within 4x the radius of the receiving node Y’s input to have any effect. The distance of the two nodes is mapped to a linear falloff of 0.0 to 1.0. So when node X is at the edge of node Y’s range its signal has no influence (0.0), but as X gradually gets closer to Y its signal has a greater influence until they are touching and at maximum (1.0). All wire connections are made dynamically and automatically using the range.
A node has several elements that you should be familiar with to effectively use Jasuto, these are in blue in the above image.
Each node is split into two sections, input and output (top and bottom respectively). The node will take the signals from the inputs (the top), process them in some way and output them to the bottom.
The input and output sections of the node can be divided further into several sections as well. These sections are called ports. Ports give you access to the different internal elements of the node.
Nodes have 0, 1, 3 input and/or output ports, and are represented by the dividing lines around the node and the little white dots. To control which port your signal gets sent into simply move the sending node until the wire is within the receiving ports section. Each port will mix all nodes connected to it.
To check the port names of the connection drag the two nodes away from the each other until the names pop out on the wire. You can also double click a node to edit its properties in a more traditional way. If you attach a “const” node or a constant to a port its display name will take on the receiving ports name.
Every port has 4 parameters that can be accessed in the node edit page by double clicking the node. You will see the input ports ordered left to right (the same order as the node on the screen), you can switch between the input and output sections by their respective buttons in the upper right corner.
- The top parameter is the default value for the port and its name. This GUI element is a number slider, you can identify these by the boxes with the little notch in the upper right, hold their names in to see the current value, adjust their values by dragging left/right or up/down. If the port has no nodes connected then this is the value that is sent to be processed. If the port does have nodes connect then the default value is overridden, in this case you can hold down the slider to monitor the current value in realtime.
- The next parameter “gain” is what the input signals are scaled by before processing and clipping. This is useful if you have a lot of signals coming in and want to avoid clipping.
- The next parameter “singular” controls if the port allows multiple connections, by default most ports are set with singular on. If singular is on Jasuto will pick the closest node to the port, otherwise all the nodes that are in range will be connected and mixed. This is an example of a toggle GUI element, just click it to toggle its current value.
- The last parameter “active” controls whether this port will send/receive signals or not. You can still adjust the default value for the port. Jasuto will display a red dot over the port if it is inactive.
More on signals:
All signals in Jasuto are at full audio rate and processed with 32bit floating point numbers. Most ports clip their input signals to -1..1 after the gain has been applied, so its best to use the gain value to get your values down to a reasonable range. Ports that represent parameter values are clipped 0..1, so for instance the cutoff port on the low-pass node is clipped 0..1 while its signal input is clipped -1..1.
The compressor/limiter have an infinite range on their input signal ports so you can use them to help manage your signals and prevent clipping all together.
Because everything is done at audio rate you can modulate any of the ports with node output signals. This is nice for creating all kinds of crazy sounding stuff, but remember it will increase CPU load. To alleviate the CPU load you can use the “const” node or just change the default values in the node edit page.
Selections and Gestures:
- Single click and drag on an empty location on the screen to translate the camera.
- Single click and drag on a node to translate the node.
- Double click on an empty location to set the cursor.
- Double click on a node to open its editor.
- Double click and drag on an empty location to create a selection box.
- Pinch the screen (or mouse wheel) to zoom the camera in and out.
All the GUI elements including the nodes support multi-touch.
If you select a single node (or the first node in a box selection) it will display a signal scope along the wires for each input port. This is an useful for finding clipping. Signals that are most likely going to clip are rendered in red.
You can delete/copy/paste a single node or an entire selection by using the edit menu. Jasuto will paste whatever is in the clipboard at the current cursor location. If the selection size is greater than 1 node it will center all the objects around the cursor.
This is one area where Jasuto shines. All motion plays at audio rate as well, so you can essentially create an oscillator with any of the nodes.
To create a simple LFO just select the node that you would like to automate, you’ll then notice a “Motion” menu that in the upper right of the screen. Click the menu to expand it, and you will see all the motion options for the current node. Click the record button and move the node around (recording will start after you move the node), when you’re finished click the stop button. The node should already be looping the animation for you.
- Trigger: this button will trigger the nodes motion if there is any.
- Record: this will start recording motion, hit stop to finish.
- Clear: this deletes any motion data for the node.
- Loop: enables/disables looping of the motion.
- Rate: this allows you to speed up or slow down the motion playback.
- XFade: amount of crossfading between endpoints. Using this to make smooth looping motion.
You can stop all the nodes with motion data by using the XPort (transport) menu at the bottom left of the screen. Clicking stop twice will reset all the nodes to the first frame.
You can synchronize the motion of nodes with a trigger. The midi keys and sequencer output a gate pulse that can be routed to the trigger (or you can make one with square/delta nodes). Use the range setting in the triggers edit page to control it’s influence radius.