micknoise / Maximilian

C++ Audio and Music DSP Library
http://www.maximilian.strangeloop.co.uk
MIT License
1.58k stars 279 forks source link

Supporting Maximilian on OWL platform #97

Open pingdynasty opened 3 years ago

pingdynasty commented 3 years ago

Hello, great to see the project being actively maintained.

We're adding support for compiling Maximilian patches on the OWL platform, which is an open source embedded hardware ecosystem thingy-jig. We've got an online patch library and compiler here.

This means in short that our users will be able to write their own patches using Maximilian and run them on OWL hardware. Other supported languages are plain C++, FAUST, Pure data, Max Gen and most recently SOUL, so you're in good company :)

To get this to work on a bare-bones (no OS) embedded audio device we've had to adapt the library files a bit. Some of these changes are specific to our platform, others would be nice to contribute back upstream.

In particular I'd like to lobby for a new feature (which I briefly discussed with Mick ages ago), which is maxiParam. maxiParam is a value object which can be used instead of a double, but which can be updated outside of the patch context. Using maxiParam allows us to map parameters to a hardware knob or button, and so provides easy user control for patch parameters like gain, frequency, et c. It's just as useful for connecting into any other user interface, a GUI or plugin format.

Rather than post a big PR I decided to open this issue and start a dialogue. What is the best way to proceed?

pingdynasty commented 3 years ago

This is now deployed on our live server. A Maximilian example straight from your repo is here: https://www.rebeltech.org/patch-library/patch/Maximilian_AM1

and another example adapted to show how we use maxiParam is here (click Start Audio to try it out in the browser): https://www.rebeltech.org/patch-library/patch/Maximilian_Monosynth

micknoise commented 3 years ago

Thanks ! So awesome.

micknoise commented 3 years ago

What is the best way to proceed?

It's a good question. Chris has often talked about refactoring so there's a more structured data type for parameters (templates etc.). However, the move to version 2 has introduced a bunch of problems that we're still trying to find time to work on, in particular with the FFT related processes that are more or less crucial to the more advanced functions and that we want to keep across javascript and C++ and so no use to you I appreciate. Perhaps the thing to do is organise a Hackathon and just do a bunch of stuff altogether.

pingdynasty commented 3 years ago

Okay sounds good, I'd be up for that.