Coder Social home page Coder Social logo

ardura / actuate Goto Github PK

View Code? Open in Web Editor NEW
52.0 1.0 2.0 581 KB

Synthesizer, Sampler, Granulizer written in Rust with Nih-Plug and egui

License: GNU General Public License v3.0

Rust 100.00%
granular-synthesis rust sampler synthesis synthesizer

actuate's Introduction

Actuate

A Synthesizer, Sampler, and Granulizer built in Rust + Nih-Plug Written by Ardura

Please note this project is still a work in progress/alpha - I got a lot of traction once I posted on KVR and wanted to clarify that!

Join the discord! https://discord.com/invite/hscQXkTdfz Check out the KVR Page: https://www.kvraudio.com/product/actuate-by-ardura

image

Features

Hover over any knob (or some labels) for an explanation!

image

  • Two SVF Filters, a VCF inspired filter, and Tilt inspired filters that can be parallel, serial, or bypassed with ADSR Envelopes
  • Pitch modulation with ASDR

image

  • 12 Oscillator shapes:
    • The standard: Sine, Triangle, Saw, Ramp, Square, Pulse, Noise
    • WSaw - Saw with noise variance to create crispyness
    • SSaw - Saw with small variance to create shimmer
    • RSaw - Rounded saw wave
    • RASaw - Rounded saw wave with random variances
    • RSquare - Rounded square wave
  • 7 Filter resonance approximations for different sweeps in SVF filters
    • Default - Allegedly the "ideal" response when tying Q to angular sin response
    • Moog - Allegedly a Moog Ladder Q approximation further modified
    • TB - Allegedly an approximation of a TB-303 LP further modified
    • Arp - Allegedly an approximation of an Arp 2600 further modified
    • Res - I made this up - kind of a hyper resonance while still being gentle
    • Bump - I made this up - a gentle bump resonance different from the others
    • Powf - I made this up - Curves based on Powf math function as it scales
  • 10 Different FX for post processing

image

  • 3 LFO controllers

image

  • 4 Modulators that can be linked to multiple things

image

  • Sampler with pitch shifting or resample stretching
  • Sampler supports single cycle waveforms for wavetable-like functions
  • Granulizer with ADSR and crossfading between grains
  • Any generator can go to any filter
  • Samples can be saved into presets
  • Stereo width and ultra wide controls

Signal Path

actuate_flow

Roadmap

  • Create a Preset Browser
  • Add more reverb styles
  • Add more decay styles
  • Fix some bandpass glitching on certain filter types
  • Create different stereo spreading algorithms
  • Make the GUI nicer - see Discussion #26
  • Look into making the preset loading more reliable
  • Fix text input not working (right now it's a OS safe workaround)
  • Fix file dialog in the process thread (right now it's a OS safe workaround)

DAWS and compatibility

  • Compatible with Windows 10 and up
  • Compatible with Linux
  • Compatible with Mac
  • DAWS
    • FL Studio tested compatible
    • Ableton tested compatible
    • Reaper tested compatible
    • Ardour tested compatible with some reported performance issues
    • Bitwig tested compatible
    • Cantibile tested uncompatible and has issues
    • VSTHost tested compatible but has gui issues

Other Build information

The builds on GitHub and KVR are VST3 and CLAP format, and are compiled on the following machine types:

  • Ubuntu 22.04
  • Windows' 2022 build (Win10? The Github runner just lists "Windows-2022")
  • MacOS 12 (Other MacOS versions are available but I picked 12 for compatibility for now. I have not tested on M1 Macs.)

Known Issues

  • Naming presets and info may be unstable in non-windows environments as I have not tested those sorry

actuate's People

Contributors

ardura avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

actuate's Issues

Filter cutoff not realtime for long pad sounds

When a long note is held and the filter cutoff is moved there is no change until you let go of the cutoff knob(s)

This should change to be real time rather than on release like the detune knobs on audio modules

Weird DC Behavior when 3 Pulses and Filter Routing toggled

Somehow DC Offset is created when there are 3 pulse wave Osc and the routing is changed on the middle one with the filter 1 being VCF and filter routing = parallel
image
I'm not sure what is causing this but it seems like an unstable filter either the VCF losing that full on/off signal or the SVF gaining a full signal immediately is likely causing this.

Samples don't reload on saved project open

  1. Load sample and make sounds
  2. Save your project in your DAW and close the DAW
  3. Reopen DAW and open project
  4. try to play your sound again (nothing loads)

I'm thinking this either needs to store the sample in the nih param struct or call that regenerate samples function on reload/detection of nothing in the memory + Sampler/Granulizer Audio Module in use

Linux - Inconsistent MIDI behavior

I was testing Actuate on different hosts and I noticed that Actuate behave inconsistently on MIDI note input:

Bespoke Synth

  • Actuate responds to midi notes from MIDI external devices/ports.
  • Actuate doesn't respond when MIDI is generated/played inside Bespoke Synth itself.

Ardour

  • Actuate doesn't respond to midi notes from MIDI external devices/ports.
  • Actuate responds to MIDI when playing MIDI clips but:
  1. Only a long sustained (stuck?) note is played
  2. Only the first note of the MIDI clip is played, the other notes of the MIDI clip are ignored.

Carla

  • Actuate doesn't respond to midi notes regardless of their origin (external devices/ports, other plugins, etc.)

Entry Point Not Found

Upon loading both the VST 3 and CLAP flavor, I get this error message:
Entry Point Not Found - The procedure entry point SetProcessDpiAwarenessContext could not be located in the dynamic link library USER32.dll.
I assume it's worth mentioning that I'm still using good old Windows 7...

I'd very much appreciate it, if Actuate could be made to run on this OS, but if the effort is too much, I understand that this will not happen. In this case please mention somewhere (e.g. on KVR Actuate page or at least in some README coming with the download) what is the minimum supported OS (maybe not only for Windows but also the other supported OSes.

Linux - Errors when building

After latest update I have the following errors when building on Linux, Debian sid, cargo 1.77.0-nightly (add15366e 2024-01-02) with cargo xtask bundle Actuate:

...
Compiling Actuate v1.1.0 (/home/user/opt/audioplugins/Actuate)
error[E0583]: file not found for module `FX`
  --> src/lib.rs:87:1
   |
87 | mod FX;
   | ^^^^^^^
   |
   = help: to create the module `FX`, create file "src/FX.rs" or "src/F
X/mod.rs"

error[E0432]: unresolved imports `FX::StateVariableFilter`, `FX::compressor`, `FX::delay`, `FX::reverb`, `FX::biquad_filters`, `FX::biquad_filters`, `FX::saturation`, `FX::phaser`, `FX::buffermodulator`, `FX::flanger`, `FX::limiter`
  --> src/lib.rs:72:5
   |
72 |     StateVariableFilter::{ResonanceType, StateVariableFilter},
   |     ^^^^^^^^^^^^^^^^^^^ could not find `StateVariableFilter` in `FX`
73 |     compressor::Compressor,
   |     ^^^^^^^^^^ could not find `compressor` in `FX`
74 |     delay::{Delay, DelayType, DelaySnapValues},
   |     ^^^^^ could not find `delay` in `FX`
75 |     reverb::StereoReverb,
   |     ^^^^^^ could not find `reverb` in `FX`
76 |     biquad_filters::{FilterType, self},
   |     ^^^^^^^^^^^^^^               ^^^^ no `biquad_filters` in `FX`
   |     |
   |     could not find `biquad_filters` in `FX`
77 |     saturation::{Saturation, SaturationType},
   |     ^^^^^^^^^^ could not find `saturation` in `FX`
78 |     phaser::StereoPhaser,
   |     ^^^^^^ could not find `phaser` in `FX`
79 |     buffermodulator::BufferModulator,
   |     ^^^^^^^^^^^^^^^ could not find `buffermodulator` in `FX`
80 |     flanger::StereoFlanger,
   |     ^^^^^^^ could not find `flanger` in `FX`
81 |     limiter::StereoLimiter,
   |     ^^^^^^^

Some errors have detailed explanations: E0432, E0583.
For more information about an error, try `rustc --explain E0432`.
error: could not compile `Actuate` (lib) due to 2 previous errors
Error: Could not build Actuate

Change presets to use GUI context state?

See if using the state is better than doing the setter for params and reloading things manually they way it is done currently. This would still need to work with the way samples are stored in presets.

File Dialog not working in Bitwig/Linux

Bitwig shows a message that processing has stopped when it opens.

I haven't tested with Bitwig but in windows this process did throw exceptions that windows/FL allowed so it could be something like moving it to a background thread to fix this?

Please list plugin types

Found your synth, looks nice!

I was just gonna ask you to kindly list somewhere what kind of plugins it implements.
Unless I'm blind and it's already there...

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.