Giter Site home page Giter Site logo

superclick's Introduction

SuperClick

CI Release

GitHub Pages documentation

SuperClick is a CLAP click track generator plugin for CLAP hosts including REAPER. I'm building this to generate signals for devices such as the Peterson Body Beat Pulse Solo. This project is at the "proof of concept" stage: it generates an audible click in time with the song etc.

This project makes uses of the NIH-plug framework. For those interested in developing Rust applications for audio, please check out Rust Audio and the Rust Audio Discord.

Released under MIT License

Installation

See GitHub Pages documentation for installation instructions.

Development

After installing Rust, you can use all of the usual Cargo commands. You can also build a bundle as follows: follows:

cargo xtask bundle superclick

This will build the target and bundle it correctly as CLAP plugin—by renaming the target binary to SuperClick.clap etc.

This command will report the location of the .clap file at the end, e.g.

Created a CLAP bundle at 'target/bundled/SuperClick.clap'

You can also bundle a release build as follows:

cargo xtask bundle superclick --release

The absolute path to the bundle directory (i.e. /path/to/target/bundled or X:\path\to\target\bundled) is the CLAP plugin path you will need to add to the set of paths scanned by your host DAW.

superclick's People

Contributors

rcook avatar dependabot[bot] avatar

Stargazers

 avatar Bart Brouns avatar

Watchers

 avatar

superclick's Issues

Allow clicks to be customized

Currently this plugin targets a very specific use case: generating panned clicks to trigger the accent/subaccent/normal vibrations from the Peterson Body Beat Pulse Solo metronome. A long-term goal of the project would be to allow some customization of the clicks:

  • Customization of waveform (currently a windowed sine wave)
  • Customization of frequency (currently fixed frequencies for accent/subaccent/normal)
  • Customization of panning (currently fixed corresponding to Body Beat Pulse Solo's requirements)
  • Generation of MIDI notes instead of audio waveforms

Properly bundle the output

Currently the GitHub workflows just run cargo build or equivalent. This generates a regular .dll or .dylib. When building on my local dev environment, I run cargo xtask bundle reaclick which renames the .dll to .clap etc. and creates a proper app directory structure on macOS etc. I think I'll need to modify the Rust build workflow to properly support this. Right now, just having a .dll is sufficient, since users can simply download it and rename it to take the .clap extension instead.

Address crashes when running under macOS

The nih_plug_iced integration crashes on macOS. In fact, I can reproduce similar crashes using nih_plug_egui and nih_plug_vizia with a trivial plugin, so this is likely a bug in the underlying framework. When I get time I'll put together a repro. What I can say is that the problem seems to be something to do with mutexes. Specifically, lines such as https://github.com/rcook/reaclick/blob/main/src/reaclick/plugin.rs#L61 simply segfault on macOS. There is no panic and so the condition cannot be handled on the Rust side of things.

Re-enable building for Linux

This was originally disabled because it was erroring out. Figure out how to fix this and re-enable this target.

Studiorack Integration

It's an open-source plugin manager called StudioRack:
https://github.com/studiorack

The aim of the project is to provide a free open-source way to manage plugin dependencies and their versions. It would involve the following steps:

Publish a Github release containing the plugin source along with metadata plugins.json
Tag your Github repository with studiorack-plugin so it can be discovered
Wait for the studiorack-registry to index your plugin (every 24 hours)
Check the registry feed for your plugin to appear

If you have any questions or issues, make an issue in the Github repo or join the DIscord https://discord.gg/9D94f98PxP
This project is currently in alpha and would massively be helped by early adopters to iron out bugs and guide development!!

Consider publishing VST3 version of plugin

I've shied away from building a VST3 plugin since I would rather release it under the MIT License instead of GPLv3. I'm not sure why this bothers me. Enabling VST3 support should be fairly straightforward:

  • Use the nih_export_vst! macro etc.
  • Modify the build and bundling
  • etc.

I think licensing is the main sticking point for me. VST3 would, of course, broaden the appeal of the plugin.

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.