Git Product home page Git Product logo

juce-template's Introduction

juce-template

The aim of this project is to create a template plugin that contains common features that exist across plugins. The implementation tries to handle "Everything but the processing". In short, it handles all the other stuff your plugin should need besides DSP, whether that be audio or MIDI. The project includes a script written in python that can be used to generate a new JUCE project from the template.

Components

The project contains a few different components that I found useful.

Testing

This folder contains sample audio files, a python and Max8 prototype, and a coq file for verification. There is also a python script that can be used to verify the prototype matches the implementation. These files aren't necessarily needed but I found them useful to include.

Implementation

The implementation contains the following features.

  • audio block to manipulate signal or midi
  • Rust DSP
  • User Interface heirarchy + LookAndFeel
  • reactjs user interface
  • parameters that can be programmatically initialized
  • save and load parameters
  • create/load parameter presets; share params via website
  • parameter controllers (slider, button, etc)
  • key registration
  • right click component to bring up sub menu (link to website for manual)
  • A/B to switch between presets fast
  • save presets in whatever folder you want!
  • right click context menu

juce-template's People

Contributors

dromer avatar nberr 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

Watchers

 avatar  avatar  avatar

juce-template's Issues

Advanced button consistency

Currently, the advanced button (button that shows the side panel) doesn't work consistently. Depending on the settings (always show side panel or not), the button may need to be clicked twice. Need to fix this behavior while also making sure the side panel is shown when necessary.

python tip

Don't use logical operators on strings. use f-strings instead :)

(can do a PR if you want. it just hurts me to see + used on strings :#)

A/B quick swap issue

Current issue is a result of sliderValueChanged and comboBoxChanged in the MainPanel. Unlike buttons, these functions get called when a value is changed so swapping between A and B causes the value to "change".

Delete presets

Add a way to delete user presets. This process will require some adjusting how the preset manager iterates over the presets.

Modal Loops usage for ContextMenu

Current solution uses modal loops which should be avoided in the future. figure out a way to use the context menu without modal loops

Drag and drop user presets

Add a way to drag and drop the user presets so they can be reordered. Make sure not to drag/drop factory presets.

Next/Prev Preset inconsistency

When there are two presets with the same name, the next/prev preset buttons don't behave properly. Need to add some checks to see if the user saves a preset with an existing name.

Additionally, if the user saves a preset with the name of a factory preset, what should happen?

Duplication script errors

duplication script produces errors if .DS_Store file is present. Additional errors occur with jsui and rust-dsp folders. need to add a way to recursively copy these directories.

Right clicking presets

Currently when a preset is right clicked, it is also selected. Need to find a way to right click but avoid selecting.

Additionally, building the context menu depending on the preset type (factory vs user).

Loading setting and preset xml files

The program currently loads these files correctly but if the xml tree structure changes, the program crashes. Figure out a way to avoid this even if the xml changes.

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.