rafalcieslak / vmodsynth

a modular software synthesizer
GNU General Public License v3.0
6 stars 3 forks source link

Separating module logic from UI #8

Open rafalcieslak opened 9 years ago

rafalcieslak commented 9 years ago

Currently the code is not perfectly organized. One of it's problems is that the module DSP processing methods co-reside with it's UI layout and behaviour-related source code. While this keeps things simple, it's not the perfect style - it would be easier to maintain module classes (in long-term) if DSP logic was separated from graphics and display. This issue does not suggest to completely separate vmodsynth audio logic from the interface (This might be a nice goal in far future, but it requires much more work and implies major general architecture redesign, which costs lots of effort and provides no exciting result).

blinry commented 9 years ago

I don't know how realistic this is: But it would be interesting to be able to take a LADSPA plugin, put some meta-information somewhere regarding how the module should look like, and then being able to use that in vmodsynth. That would allow access to thousands of new modules and reduce code duplication.

In fact, we could even try to generate a module layout from a LADSPA plugin's description automatically...

rafalcieslak commented 9 years ago

I am a bit sceptical about LADSPA integration. First, it would be a really big deal to implement. That's probably realistic, and yes, it should be even possible to generate the UI automatically [but it would never look any fancy, let's not end up with ams-like boring style :-)], but it would certainly cost lots of effort. Second, because of the huge amount of LADSPA plugins already available, vmodsynth would completely loose it's identity - only a small percentage of modules used in an avarage path would be vmodsynth native modules, and most of them would be LADSPA plugins, because they offer so much. So generally vmodsynth becomes solely an adapter and UI for LADSPA. It's true that it immediately grants limitless features thanks to the number of LADSPA modules available, but it kills the idea of keeping the style of a physical modular synthesizer. Next, I am quite convinced that there is already a number of software that does exactly that - they let the player connect LADSPA plugins together, present a nice UI for them, so that one can easily set up any path they want (and that software does it probably much better than vmodsynth, since they are much more mature). So this might also lead to code duplication - if we start focusing on LADSPA integration, it would be dangerously easy for the whole project to become another boring LADSPA user interface, with no unique identity whatsoever. And the fourth problem I see is that LADSPA plugins rarely focus on imitating analog circuits - and this is one of the core ideas behind vmodsynth. Ideally, vmodsynth would emulate all the problems and limitations of an analog synthesizer. This forces a particular workflow on the player, sometimes even cause interesting challenges for them, which leads to experimentation and completely weird results, which is a very fun feature of analog modular synths. The way I see how the player's workflow would change is something like: 1) [without LADSPA] "Yeah, I need a nice arpeggio, how do I set it up with an osscilator, a quantizer, a distortion module and a mixer? hmmm, oh, that way it might work - it sounds slightly weird, but it as a nice 'analog' feel to it" 2) [with LADSPA] "I need a nice arpeggio, let's search the LADSPA catalogue for one... Well, this one sucks, that other does not have a feature I need, and that third one doesn't really work. What do I do without an arpeggio?" Or, maybe even, in a more extreme case: 2) [with LADSPA] "[..] doesn't really work. Screw this, what a useless piece of software, it lacks a module I need."

So basically what I am afraid of is that LADSPA plugin suport could very easily kill the "analog modular" style of vmodsynth. I'd rather not have too many effect modules available [which stays close to what a real synth has to offer], than have an easy support for any possible signal transformation. Which is probably exactly what physical analog modules offer.

There are applications that allow setting up complicated synths with just a few modules, and there are applications that emulate real hardware, and I'm not convinced about falling into both categories.

I might be too conservative on this, though, so discussion is welcome.