TheTechnobear / Orac

Orac : virtual modular synth
GNU General Public License v3.0
349 stars 26 forks source link

display symbol parameters? #17

Open sebshader opened 2 years ago

sebshader commented 2 years ago

Hello, I'm not sure if this is the right place to ask but I'm trying to convert an organelle patch to orac. Most things make sense, except for being able to display symbols. For instance, if I want to select a scale from a number of scales in a patch, how do I display the scale name for a parameter, if the underlying parameter is an "int" representing the "scale number"? Is there some example orac module I can look at that implements that? thanks

Lcchy commented 2 years ago

Hi there, as I understand it, Orac itself does not allow for string-like parameters as it wouldn't be easy to handle in a platform-agnostic way. If you are using an organelle, you can print to the screen via the usual osc messages (i.e. /oled/... msgs) from inside the module. Yet it is important to note that this should be limited to non-essential information as it would make the module unusable for other Orac-capable devices of which some don't have a screen.

TheTechnobear commented 2 years ago

actually not quite true ;)

so Orac has a concept of 'resource strings' , so you can use these for things like scale names. (this is also how module names and presets get sent around)

remember, Orac supports the client to run on a remote machine so we cannot just simply pick up the 'names' from a local file etc.

the 'issue' is rather than there currently is no param type that maps to a resource i.e to say that a control maps to a scale name. - so currently the patches that do display things like scale name , tend to do it on the 'aux line' rather than in the parameter space. this is not ideal, as I don't really like using this aux line in this general purpose/catch all method.

so the 'fix' here is to create more parameter control types for thing like scale name/tonics. or, what Id planned was some kind of 'enum' type.

also id do NOT like the use of things like /oled/ messages on the organelle as it means you cannot share the patch with other platforms, which is a strong motivation for why I created Orac in the first place ;)

note: the idea that all parameters are numeric, and that the likes of scales name are 'enumerations' is not that 'odd', VST/AU also only store parameter values as numeric, and then 'map' these to display values.