JACK/LV2 CV

Support & discussion regarding DAWs and MIDI sequencers.

Moderators: khz, MattKingUSA

User avatar
milk
Established Member
Posts: 209
Joined: Tue Jan 05, 2016 9:08 am
Location: Edinburgh
Contact:

JACK/LV2 CV

Postby milk » Wed Nov 20, 2019 2:02 am

The JACK audio system and LV2 plugin format both provide support for digital "CV" (analogous to the control voltage mechanism of hardware modular synths) for patching audio-rate parameter control signals between clients/plugins and enabling a multi-app modular synthesis environment that can connect with real world hardware to form a hybrid modular setup.

Ingen was the first LV2 host to support CVPort, then Non-Mixer and Non-Timeline followed with JACK CV support for automation. More recently the JACK metadata mechanism enabling CV ports was added to JACK2, and CV support can be found in JACK clients/LV2 hosts Carla, Synthpod, Jalv, mod-host and Zrythm, plus hardware support on the MOD Duo X and (soon) Zynthian.

The LV2 format also allows for metadata relating to the min, max and "unit" values for the CVPort. Carla also passes this metadata on to any exposed JACK CV ports. Carla also allows plug-in parameters to be exposed as CV ports.

In LV2/Ingen:
* http://lv2plug.in/ns/lv2core/#CVPort
* http://lac.linuxaudio.org/2015/papers/24.pdf - see section 2.4

JACK client/LV2 host commits:
* Ingen
* Non-Mixer
* Synthpod
* Carla
* Jalv
* mod-host
* Zrythm
* GStreamer
* Spaghettis - Pure Data fork with metadata support

Plugins and plugin suites with support:
* ams-lv2 - port of the AlsaModularSynth (AMS) internal modules to LV2
* avw.lv2 - same as above
* blop-lv2 - generators, filters, and various utility plugins
* fomp - 1 auto-wah, 1 EQ, 3 chorus, 2 phasers, 5 filters, 3 oscillators, and 2 reverbs
* ZLFO - multi waveform oscillator, comes with Zrythm
* infamousPlugins - envelope follower & stop/start effects
* beatslash-lv2 - beat repeater & beat slicer
* vm.lv2 - programmable stack-based virtual machine
* mod-cv-plugins - handy utility plugins
* cv-lfo-blender-lv2 - 4 synced LFOs with blended output
* arpeggiator_LV2 - an arpeggiator and a MIDI-pattern plugin
* non-zyn-CV - automate zynaddsubfx using non-timeline CV automation via synthpod

Conversion/testing:
* mod-spi2jack - JACK client for converting SPI to a JACK control-voltage stream and vice-versa
* midimsg-lv2 - basic MIDI aftertouch, CC and mod wheel to CV
* MIDIMonster - Multi-protocol translation software (ArtNet, MIDI, OSC, ...)
* mod-fake-control-voltage - A small Jack-internal client to simulate the physical CV-ports
* jm2cv - older, doesn't use JACK metadata

Plug-in frameworks that support CV:
* DPF

Sequencing is possible from MIDI (via mod-midi-to-cv-mono, mod-midi-to-cv-poly, midi2cv of Carla, Note of Ingen, or MIDIMonster), or by using Non-Timeline.

True CV recording and sequencing does not exist yet. Possibly it might possibly come first from a project like Zrythm, Radium or ossia score. QMidiArp and Element apparently have it planned.

More info on the MOD plugins here, here and here, with discussion on the MOD forums, and more on Zynthian here.

Some notes and questions so far:
* Hardware compatibility requires a DC-coupled device audio interface. The MOD Duo X is DC-coupled, but the original MOD Duo and the MOD Dwarf are not.
* Hardware DACs and ADCs vary, the MOD Duo X DAC and ADC are 12-bit. See also Choosing a DAC for Control Voltages.
* Interoperability with VCV Rack? Maybe JACK CV support will come from skjack-vcv (though the developers laptop died) or VCV Rack itself? With Bigwig Studio CV and Ableton CV Tools?
* Is there a better name? drobilla has said they regretted labelling it "CV".
* If a CV stream can be translated/related to control port input, how might new and existing synths/effects be able to relate to that CV stream (given they might expect discrete parameter data and have smoothing/interpolation/etc mechanisms)? Probably via a translation mechanism in the form of a plugin or as a built-in host feature.

P.S. N.b. I was compiling things on this GitHub issue before making this post, and I have heavily copyedited the above as things have changed.
Last edited by milk on Sun Feb 16, 2020 2:54 pm, edited 52 times in total.
they/them ta / wiki.thingsandstuff.org/Audio and related pages - a collection of mostly Linux and free links / Linux Digital Audio and Music Workstation Comparison Matrix - collaborative Google Sheet (slightly broken, no time/cpu power to fix here)

User avatar
milk
Established Member
Posts: 209
Joined: Tue Jan 05, 2016 9:08 am
Location: Edinburgh
Contact:

Re: Sequencing and recording of JACK/LV2 CV?

Postby milk » Wed Dec 04, 2019 1:44 pm

Happy day, Carla now has a midi2cv internal plugin, so the possibility of driving a complex CV signal (with a level of ease 'higher' than MIDIMonster for that job, though as limited as driving CV with MIDI is) has now opened up.

And an interesting video I watched last night regarding getting CV from the computer out into the real world without a DC-coupled interface (which is a follow up to the Bitwig Studio CV video link above); Molten Modular 12 - AC coupling, CV and DAW control with Bitwig 2.1
Last edited by milk on Mon Jan 27, 2020 1:37 pm, edited 1 time in total.
they/them ta / wiki.thingsandstuff.org/Audio and related pages - a collection of mostly Linux and free links / Linux Digital Audio and Music Workstation Comparison Matrix - collaborative Google Sheet (slightly broken, no time/cpu power to fix here)

User avatar
milk
Established Member
Posts: 209
Joined: Tue Jan 05, 2016 9:08 am
Location: Edinburgh
Contact:

Re: Sequencing and recording of JACK/LV2 CV?

Postby milk » Fri Dec 13, 2019 12:02 am

<milkii> is there an existing "recording of a CV stream" file format already? despite my interest in CV, I've only just thought about that whilst looking at what Audio File in Carla supports.
<@falktx> well, cv capture would just be an audio file in a specific format. 32bit float wav file
<milkii> falktx: true, though if a point of CV port metadata is to distinguish listenable audio rate signals from non-listenable audio rate signals using a very simple out-of-band system [i.e.] that's not part of the data itself, then I think a method to distinguish a 'non-listenable pcm CV' file by extension only (.wcv?) goes well with that concept, making it like an 'end-to-end' actualisation
<@falktx> milkii: that is a good idea, though stuff like libsndfile would then needs patching :)
<@falktx> we basically need to create the standard ourselves
...
<@falktx> milkii: I think a custom/new magic-code for cv data would be nice, to do things proper
<@falktx> wav files, even in floating point, often do not go beyond abs(1.0) value
<@falktx> cv recordings most likely will. and likely a good idea to record min/max range inside the file too


.wcv is "Wavelet Compressed Video"

.wacv?
they/them ta / wiki.thingsandstuff.org/Audio and related pages - a collection of mostly Linux and free links / Linux Digital Audio and Music Workstation Comparison Matrix - collaborative Google Sheet (slightly broken, no time/cpu power to fix here)

User avatar
milk
Established Member
Posts: 209
Joined: Tue Jan 05, 2016 9:08 am
Location: Edinburgh
Contact:

Re: Sequencing and recording of JACK/LV2 CV?

Postby milk » Tue Jan 14, 2020 8:33 pm

Spaghettis, a Pure data fork, now has JACK CV support - https://github.com/Spaghettis/Spaghettis/pull/229

Code: Select all

[ ; pd metadata input 1 cv 1 (
[ ; pd metadata input 1 minimum 0 (
[ ; pd metadata input 1 maximum 10 (
[ ; pd metadata output 2 name Foo (
[ ; pd metadata reset (
they/them ta / wiki.thingsandstuff.org/Audio and related pages - a collection of mostly Linux and free links / Linux Digital Audio and Music Workstation Comparison Matrix - collaborative Google Sheet (slightly broken, no time/cpu power to fix here)

User avatar
milk
Established Member
Posts: 209
Joined: Tue Jan 05, 2016 9:08 am
Location: Edinburgh
Contact:

Re: Sequencing and recording of JACK/LV2 CV?

Postby milk » Fri Jan 17, 2020 3:58 am

MOD fully released (not just the artwork) their mod-cv-plugins suite recently also! It's available in the AUR now.

Edit: and now BramGiesen has released cv-lfo-blender-lv2.
they/them ta / wiki.thingsandstuff.org/Audio and related pages - a collection of mostly Linux and free links / Linux Digital Audio and Music Workstation Comparison Matrix - collaborative Google Sheet (slightly broken, no time/cpu power to fix here)

User avatar
studio32
Established Member
Posts: 2394
Joined: Mon Apr 07, 2008 5:09 pm

Re: Sequencing and recording of JACK/LV2 CV?

Postby studio32 » Sat Jan 25, 2020 12:57 pm

I can't resist. But Non-Daw does automation via CV. How could you've missed that? :)

User avatar
milk
Established Member
Posts: 209
Joined: Tue Jan 05, 2016 9:08 am
Location: Edinburgh
Contact:

Re: Sequencing and recording of JACK/LV2 CV?

Postby milk » Sat Jan 25, 2020 5:26 pm

I think I didn't add it before because when I tried jm2cv, which was created for Non-Mixer, the ports didn't register as a CV ports, but I see now in Non-Mixer that ventosus added JACK CV metadata support in 2014. Thanks for making me look again, I'll add a mention above.

Given the context of this discussion, I'll note that I personally believe it's a missed opportunity to not officially support LV2 in Non-Mixer, given the CV features of LV2 (aside from the obvious power of the being able to store and leverage semantic/relational information).

You'd think LV2 used XML rather than TTL from the OTT tone of some previous discussions ;)

I'm so interested in all this now because JACK2 gained support (although, at this very moment, it has turned out that there is a big problem with JACK2 internal clients and metadata, a problem that shows up when you rename those clients).
Last edited by milk on Tue Feb 04, 2020 3:42 pm, edited 2 times in total.
they/them ta / wiki.thingsandstuff.org/Audio and related pages - a collection of mostly Linux and free links / Linux Digital Audio and Music Workstation Comparison Matrix - collaborative Google Sheet (slightly broken, no time/cpu power to fix here)

User avatar
studio32
Established Member
Posts: 2394
Joined: Mon Apr 07, 2008 5:09 pm

Re: Sequencing and recording of JACK/LV2 CV?

Postby studio32 » Sat Jan 25, 2020 9:58 pm

non-mixer patched for LV2 is in Kxstudio
https://github.com/falkTX/non

So non-mixer in kxstudio has LV2 support. The author of NON has his good reasons for only LADSPA support. But those who disagree can use the kxstudio version.

FYI short explanation from the author of NON:
Software CV is just digital sampled version of hardware CV. You can control real hardware CV with software CV, but you either need special hardware for the task or need to modify the hardware you have (CV is DC voltage and soundcards usually have DC blocking filter capacitors on their outputs ). Using software CV between two applications is equivalent to using MIDI NRPN or OSC or whatever with one control message per sample (at whatever sample rate). Conceptually, it's much simpler, with one channel per control (rather than multiplexed as MIDI and OSC are, with their many channels+CC and paths, respectively), but technically its a bit wasteful of bandwidth for the most comon use cases.

User avatar
milk
Established Member
Posts: 209
Joined: Tue Jan 05, 2016 9:08 am
Location: Edinburgh
Contact:

Re: Sequencing and recording of JACK/LV2 CV?

Postby milk » Sat Jan 25, 2020 10:28 pm

studio32 wrote:non-mixer patched for LV2 is in Kxstudio


True, and it's also available in the AUR for Arch users - https://aur.archlinux.org/packages/non-mixer-lv2-git
they/them ta / wiki.thingsandstuff.org/Audio and related pages - a collection of mostly Linux and free links / Linux Digital Audio and Music Workstation Comparison Matrix - collaborative Google Sheet (slightly broken, no time/cpu power to fix here)


Return to “Recorders & Sequencers”

Who is online

Users browsing this forum: No registered users and 3 guests