Lately, while looking at screenshots of a few VST(i) plugins, i began to wonder what makes them different from LADSPA plugins. Not technically, but from the philosophical point of view.
VST plugins tend to be rather complex, offering tons of features and eyecandish GUIs, while LADSPAs usually offer limited functionality, no GUI at all(hosts usually provide simple ones to control the parameters). But what's interesting is that each LADSPA plugin usually implements exactly one type of DSP technique, for example, an oscillator, or a delay. This basically leads to a situation where a certain DSP technique is 'isolated' in a separate plugin. Now if we look at an arbitrary VST plugin we'll see that it's fairly complex, and that there's a large amount of creativity involved both visually and featurewise. But if you look at it closer, you'll recognize that each such plugin is actually a bunch of DSP techniques put together in a creative way. Let's look at JAMin. What makes JAMin interesting is that it's basically(although probably not entirely, haven't looked at the code) a collection of LADSPA plugins where each of those plugins implements a DSP technique dedicated to improve the characteristics of a sound in a certain way. So JAMin tends to "package" these DSP techniques into a standalone JACK effect client. Now imagine you'd replace the gtk+ based GUI with a 3d eyecandish GUI. What would you get? A typical audiomastering VST plugin. Except - it's a JACK client. So LADSPA becomes LA-DSP-A and each such plugin becomes a basic building block for a complex JACK effect or synth. The benefits i see: 1. It unifies the way audio is routed from/to/through daws, effects, synths and other audio applications. The VST(i) vs. Rewire situation becomes one - JACK. 2. If offers unlimited flexibility (together with MIDI over JACK) - for example controlling a synth with a DAW via a midi track while letting the DAW record the output of the synth. 3. It simplifies the notion of handling effects, synths etc in hosts for the users. No need for insert vs. send. 4. No need for a GUI standard. Simply write your own Gtk+/Qt frontend whether widget or pixmap based. 5. Allows developers to design complex 'plugins' i.e. JACK effect/synth clients and be creative in picking DSP algorithms and wiring them together *even* if they don't have any background in DSP programming. 6. Allows DSP developers to fully concentrate on the DSP part, only developing the desired DSP technique without caring about the rest. 7. Points 5. and 6. help to accelerate development of complex and high quality effects and synths that we all miss and the win32 and macosx users already have. 8. It would unify the LinuxAudio scene in terms of DSP code - DSP = LADSPA. Political issues: 1. we'd need to centralize the LADSPA scene on the web, using the www.ladspa.org site, building a unified ladspa directory, each entry would describe the plugin(category, author, decription, purpose) 2. the centralised site should make some general suggestions on how to build complex JACK clients out of LADSPAs, for example splitting the JACK client in two parts (GUI/engine) communicating via a standard msg bus system, such as D-BUS, which in turn would make it easier to write different GUIs for the same JACK client, Gtk+/Qt, pixmap/widget based etc. Moreover, it would help to set and improve a standard msg bus such as D-BUS. D-BUS seems to be very attractive since it's binary and comes from the desktop world which would make this issue interdisciplinary(linux desktop / linux audio) - a thing which i believe is crucial for linux in order to become a successful platform. 3. LADSPA should allow to build both complex effects and synths(technical issues? time-stamped events?) Comments? Marek
