A cosmic, polyphonic, additive FM synthesizer.

Related tags

GUI orbital
Overview

🪐 Orbital 🪐

A cosmic, polyphonic, additive FM synthesizer.

dependency status ko-fi

Banner

Features

  • Relative (to the oscillator frequency) and absolute frequency modulation: This allows you to either model interesting absolute soundscapes, or soundscapes that change relative to the currently played key.
  • Polyphony: Up to 10 concurrent voices.
  • Sample correct midi event offsets
  • 5 stage ADSR Midi-filter including: delay, attack, hold, decay, sustain level, release.
  • High quality sin based oscillators
  • Two voice composition options: Linear (clear for less voices), Sigmoid (Warm distortion for more voices).

Planed features

  • SIMD implementation: Currently all oscillators in a bank are processed sequentially using sine waves. This produces a high quality result. The CPU load hover could be reduced dramatically if SIMD and, for lower frequencies a sine approximation was used.
  • Phase modulation and amplitude: Maybe let the user chose the type of modulation on a per planet basis.

Getting the plugin

There are two ways: Either you use the build instructions below, or you write me on one of the platforms mentioned on siebencorgie.rs and I'll try to send you a recent version when I have time.

Building

To build, install a Rust toolchain and Cargo. After that issue the following command in a terminal:

cargo xtask bundle orbital --release

This will build the VST3 and Clap version of the plugin in target/bundled.

Now copy the desired plugin somewhere your DAW can find it.

Quick start guide:

The synthesizer is fundamentally a frequency modulation based synthesizer. Each orbit represents a oscillator with a given speed and possibly a parent that is modulated with that frequency. If the orbit is around the sun, the orbit is considered "primary". This means that the frequency of the oscillator is a fundamental frequency of the resulting sound.

You add a primary frequency by clicking somewhere into the void around the sun. Note that you can change the orbit height and the location of the planet by dragging one of those with your pointer. You can add a child modulator to a planet by dragging the edge of the planet out. The orbits height of a child changes the influence to the parent. The speed of an oscillator is (octave wise) increased or decreased when scrolling while hovering over its orbit.

This is the main interface to the synth. However, apart from a standard ADSR filter three parameters at the top are interesting. The most left parameter changes the relation between a modulator and its parent. When set to relative the modulator takes the parents frequency and changes that. When set to absolute the reference frequency will always be 440 Hz. The next parameter changes how voices are mixed. Linear takes the ground truth output and clamps it to -1.0 - 1.0. Sigmoid uses a function to map any value in that range.

Finally you can enable reset phase, which will reset the internal oscillator before playing a new not. This is interesting if you want to be sure that successive played notes sound the same.

License

The whole project is licensed under MPL v2.0, all contributions will be licensed the same. Have a look at Mozilla's FAQ to see if this fits your use-case.

If you use the VST3 plugin, note the following (from nih-plug):

However, the VST3 bindings used by nih_export_vst3!() are licensed under the GPLv3 license. This means that unless you replace these bindings with your own bindings made from scratch, any VST3 plugins built with NIH-plug need to be able to comply with the terms of the GPLv3 license.

You might also like...
The frequency-perfect synthesizer for a PC-speaker

🎵 BeeSynth Project The frequency-perfect synthesizer for a PC speaker ✔️ Features Written in Rust 🦀 Support playing MP3, WAV, FLAC, tracker music an

6 operator FM synthesizer. VST3/CLAP plugin.
6 operator FM synthesizer. VST3/CLAP plugin.

Foam 6 operator FM synth with a cross-oscillator modulation matrix, available in VST3 and CLAP plugin formats. Open source under GPLv3. In development

Owner
Tendsin Mende
Mainly a Rust programmer. Most of my projects involve graphics programming or other types of multi-media topics.
Tendsin Mende
A Rust library for lattice-based additive homomorphic encryption.

Cupcake Cupcake is an efficient Rust library for the (additive version of) Fan-Vercauteren homomorphic encryption scheme, offering capabilities to enc

Facebook Research 365 Dec 11, 2022
This is the settings app for Pop!_OS's new COSMIC desktop.

cosmic-settings This is the settings app for Pop!_OS's new COSMIC desktop. It is currently WIP and not ready for use, although if you want to run it a

Pop!_OS 53 Dec 11, 2022
An implementation of Piet's text interface using cosmic-text

piet-cosmic-text Implements piet's Text interface using the cosmic-text crate. License piet-cosmic-text is free software: you can redistribute it and/

John Nunley 7 Mar 12, 2023
Use your computer as a cosmic ray detector! One of the memory errors Rust does not protect against.

Your computer can double up as a cosmic ray detector. Yes, really! Cosmic rays hit your computer all the time. If they hit the RAM, this can sometimes

Johanna Sörngård 110 Jun 16, 2023
A collection of COSMIC projects developed by the community.

COSMIC Project Collection A collection of COSMIC projects developed by the community. Applications Name Description Image tasks A simple task manageme

Eduardo Flores 94 Jul 25, 2024
Comprehensive DSP graph and synthesis library for developing a modular synthesizer in Rust, such as HexoSynth.

HexoDSP - Comprehensive DSP graph and synthesis library for developing a modular synthesizer in Rust, such as HexoSynth. This project contains the com

Weird Constructor 45 Dec 17, 2022
VST2 frequency modulation synthesizer written in Rust

OctaSine VST2 frequency modulation synthesizer written in Rust. Official website with downloads OctaSine.com Audio examples SoundCloud Screenshots Lig

Joakim Frostegård 412 Dec 30, 2022
A very simple audio synthesizer with a tuix gui

In this tutorial we'll create a very simple audio synthesiser application from scratch with a ui using tuix. The finished code for this tutorial can b

George Atkinson 24 Jan 6, 2023
MIDI-controlled stereo-preserving granular-synthesizer LV2 plugin

Stereog "Stereog" rhymes with "hairy dog." Stereog is a MIDI-controlled stereo-preserving granular synthesizer LV2 plugin. It is experimental software

Ed Cashin 6 Jun 3, 2022
Generic and extensible egui widgets to create analog synthesizer-like UI with data-oriented API

egui_cable A generic and extensible data-oriented widget for connecting ports by cables. I create this for the visual programming editor of Hihaheho/D

Ryo Hirayama 44 Dec 30, 2022