John Valentine
Boop

Boop is an offline audio synthesizer.

Full accessibility is my aim for version 1.0. Boop is currently pre-alpha, early access.

FMC was my first software synthesizer. Boop is a 2025 rewrite for web browsers, using NodeJS, Vite, React, and Zustand.

Get started

Boop starts with a basic synth graph to the left, and a properties panel to the right.

Each node (box) creates or changes the sound as it flows through the graph.

This graph makes a sine wave in the Oscillator node, and captures it in the Output node.

  • To reset to this graph, select Reset.
  • To make a sound, select the Play audio button in the toolbar.
  • To generate and download a wave file (.wav), select the Download button in the toolbar.

Make new sounds

To configure a node, select it in the graph and then change its properties in the right-side panel.

Change the pitch

  1. Select the Oscillator node.
    The properties panel displays the parameters for the node.
  2. Change Pitch offset to 1, and select Play audio.
    The sound plays an octave higher.

Pitch offset uses octave units. In Pitch offset, can also enter:

  • Cents, like 23c.
  • Note degrees or semitones, like 5d. 100c = 1d.
  • Ratios, like 7:3.

Try FM synthesis

  1. From the Add node dropdown, select Oscillator.
    A new node displays in the graph.
  2. Drag the nodes to arrange them.
  3. Connect the Out of the new node to the FM input terminal of node 1, by dragging between the terminals.

Add more nodes and make connections

You can build your own synthesizer by adding nodes, making connections, and changing node parameters. Use these sounds in your sample player, DAW, video timeline, or wherever else you can use wave files.

By default, only some of the available connectors display for a node. To show them on the node, select the node, and in the side panel, select their checkboxes.

Change the node processing order

When you generate a sound with Play audio or Download, Boop processes nodes in the order shown in Node processing order.

Boop works best when the input nodes are processed before the nodes that use them, with the Output node last in the order. If you process a node before its input node, it can incur a small latency.

To change this order:

  1. Select the background area of the graph to unselect all nodes.
    The Node processing order displays to the right.
  2. Select Move up or Move down for the nodes you want to move.

Normalize the output

After you select Play audio, Download, or Refresh previews, Boop adds a peak meter to the Output node, displaying the peak in dBFS. The colour is red if the output clipped, yellow if it was near clipping, or neutral otherwise.

To fix clipped output, you can change the Gain on the Output node. You can use dB units, like -4.5dB.

Project progress

I've built most of the core technology, and I'm currently adding more node types, features, and UI. I have a prioritized plan of how Boop should develop. Feel free to play with Boop, and use its sounds in your own creative works.

Please note that this is an early access version, and although you can import and export patches, the patch format might change in future. It saves your current state in your browser, so you can close the Boop browser tab, and resume later.

I lurk on Surge Synth Team Discord, where there's a channel for Boop, but this is not a SST project.