benkuper / Chataigne

Artist-friendly Modular Machine for Art and Technology
https://benjamin.kuperberg.fr/chataigne
GNU General Public License v3.0
1.22k stars 58 forks source link

Support for JACK/LV2 CV? #47

Open mxmilkiib opened 4 years ago

mxmilkiib commented 4 years ago

The JACK system (along with the LV2 plugin format) has support for passing audio rate parameter control "CV" signals between apps (and plugins) for uses including gate/triggers and modulation.

This port type ("CV" in JACK, "CVPort" in LV2) has more recently started seeing support in various software projects. More details on the subject can be found on this post.

Might this be something Chataigne could get support for?

benkuper commented 4 years ago

I'm not that familiar with this (and it seems very linux oriented as well), but it could be interesting, though it also seems to be a bit too advanced for Chataigne, meaning that it's something that you will want to control from an actual DAW, or someting dedicated to music. The audio support in Chataigne is very basic and allows for basic mic analysis (as a sensor), and audio playback so you don't need a DAW to play a soundtrack, but I'm not sure about integrating more advanced functions in it, as its primary role is to only control other, dedicated systems. But maybe I'm wrong and this would fit perfectly its purpose ?

mxmilkiib commented 4 years ago

General JACK audio support would seem disconnected from the control theme, but CV port/signal support (essentially an "audio" signal that doesn't ever get sent to the speaker) is not to far from that.

CV support would allow interfacing with hardware modular synths. The concept of a "higher resolution than MIDI" control signal can be translated to drive other systems (see MIDIMonster).

JACK and LV2 are multiplatform. A problem though might be any non-Linux platform audio backend library used in Chataigne.

LV2 itself is a system that has been used for various purposes. Potentially even direct support might be advantageous?

On the subject of JACK; JACK MIDI, with its graph routing and lower latency, might also be of interest.

benkuper commented 4 years ago

It looks interesting for sure, I personally have a lot of other priorities for this dev right now, if you feel like taking on this part as a new module or integrated in the Sound Card module, this would be great !

benkuper commented 3 years ago

Seems old enough, anybody still willing to do something ?

dromer commented 1 year ago

JUCE7 now supports LV2 at least ;)

(no CV ports yet though)

benkuper commented 1 year ago

But LV2 is a VST right ? What would you do with that in Chataigne, as it's not an DAW ?

dromer commented 1 year ago

True, I haven't fully grokked how to use Chataigne so where this would make sense in this case ;)

However being able to route/manage CV ports, could certainly be useful. VST3 technically also has a CV specification (which is just a tag on regular audio ports).

Ultimately these can be used to do audio-rate modulation and connect to physical hardware. Rather than using normal audio ports, as you can seriously damage equipment using CV signals.

mxmilkiib commented 1 year ago

LV2 is a plugin format, like VST, though it's more open and has some better features.

Chataigne can be used to sequence/compose many protocols.

The ability to output a digital CV signal to a [JACK] port would allow it to be patched to and drive modular softsynths, or mmodulate parameters in other software, or could be connected to the outside world via an appropriate soundcard, in a "DAW-less" manner.

cabaleiro commented 1 year ago

I was about to post a new feature request until I noticed that this topic is extremely similar.

An example of using a plugin to pass parameters to an intermediary software is EMU by ENTTEC, that includes a VST plugin for this exact purpose. It's GUI-less, and it simply declares 512 faders plus a handful of additional parameters (tempo, bar length, PPQ, bank, program). The purpose of this is to use DAW FX automation to write very precise, MIDI-synchronized sequences. This is useful for effects lights that are song-specific and are part of the live show, when the band is in control of this.

image

image

It is possible to do something very similar to this manually, declaring 512 OSC parameters as a sort of 'virtual console' and mapping them on both the DAW and Chataigne; but it's extremely time consuming, and it would have to be done per project and per universe. The advantage of a plugin over this, is that one can choose the refresh speed. OSC has speed limitations; whereas a plugin can read the parameter in a sample-accurate way and send the data packages with little to no delay. Additionally, an universe selection could allow for multiple plugins to be run simultaneously, one per universe; which is not possible with any other solutions that I'm aware of.

I can imagine a multi-format plugin (VST2/3, AU, CLAP, LV2) that declares 512 parameters (one DMX universe), allows to select the universe to send data on, and then emits this parameters either through ART-NET (for direct output) or into Chataigne. The EMU VST plugin I mentioned sends the raw parameter values through local network and the controller software picks this data up then processes it.

dromer commented 1 year ago

@cabaleiro how is this similar? It doesn't relate to sample-accurate CV ports at all, but to plugin parameters.