JACK/LV2 CV

Support & discussion regarding DAWs and MIDI sequencers.

Moderators: khz, MattKingUSA

User avatar
milkii
Established Member
Posts: 291
Joined: Tue Jan 05, 2016 9:08 am
Location: Edinburgh
Has thanked: 16 times
Been thanked: 4 times
Contact:

JACK/LV2 CV

Post by milkii »

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

Image

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 (v), Synthpod, Jalv, mod-host and Zrythm, plus hardware support on the MOD Duo X, Poly Beebo/Digit and (soon) Zynthian.

Image

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, plus Carla allows plug-in parameters to be exposed as CV ports. There is also carla-git / carla-debug-git (better crash information) available in the AUR for Arch (and Manjaro, etc. users).

Image

In JACK:
* https://jackaudio.org/metadata/signal-type
* https://github.com/jackaudio/jack2/blob ... metadata.h
* https://github.com/jackaudio/headers/bl ... metadata.h - jack1

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

JACK client/LV2 hosts (* = commits):
* Ingen - original modular LV2 environment *
* Non-Mixer - modular JACK channel strip (LV2 plugin host fork) *
* Jalv - simple yet featureful host that exposes ports to JACK, essentially making any LV2 plugin function as a JACK app *
* mod-host - an LV2 host for JACK, controllable via socket or command-line, used on MOD Devices hardware *
* Carla - graph, rack and single host, JACK/ALSA/PulseAudio *
* Synthpod - in the gap between pure textual (e.g. SuperCollider) and pure visual flow (e.g. Pure Data) audio programming paradigms *
* Zrythm - a new DAW focused on electronic music production *
* GStreamer - library for constructing graphs of media-handling components *
* Spaghettis - Pure Data fork with metadata support *

Plugin bundles and suites with CVPort support:
* ams-lv2 - port of the AlsaModularSynth (AMS) internal modules to LV2 (archived older version; avw.lv2)
* 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
* vcf-lv2 - filters: two low pass, a high pass, two band pass, notch, peaking EQ, low shelf, high shelf
* 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
* mephisto.lv2 - a Just-in-Time FAUST compiler embedded in an LV2 plugin
* mod-cv-plugins - a multitude of handy utility bundles
* cv-lfo-blender-lv2 - 4 synced LFOs with blended output, made using DPF
* arpeggiator_LV2 - an arpeggiator and a MIDI-pattern plugin
* non-zyn-CV - automate zynaddsubfx using non-timeline CV automation via synthpod
* uhhyou.lv2 - various filters, oscillators, slew limiters, envelopes
* cv_to_cc.lv2 - translate CV to MIDI CC
* audio-to-cv-pitch-lv2 - converts audio to CV pitch (1 volt per Octave)
* lenticular.lv2 - port of MI modules to LV2
* PolyLV2 - a collection of LV2 plugins designed for modular / eurorack style use.

Image

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
* jack_property(1) - JACK client to list, set and delete metadata information

Frameworks supporting CV ports:
* DPF (template)

Basic 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. Possibly a more advanced UX might come first from a project like Zrythm, Radium, ossia score, QMidiArp or Element.

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

VCV uses -1..+1 (evenly distributed 24bit, no exponent). MOD uses 0..10 or -5..+5 Volts directly, also for internal signals. Since the default is 10V peak-to-peak, a conversion is easy to handle; 0.1 .. 0.2 <> 1 to 2V. LV2 does in theory allow min/max range for CV ports, but anything other than -1..+1 or 0..+1 for unipolar doesn't make much sense.

Extra notes:
* 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.
* VCV doesn't have JACK CV support, and skjack-vcv is currently undeveloped.
* See also Bigwig Studio CV and Ableton CV Tools?


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.

Edit: LV2/JACK Modular - Facebook group
Last edited by milkii on Tue May 04, 2021 6:12 am, edited 94 times in total.
they/them ta / libreav.org / wiki.thingsandstuff.org/Audio and related pages / Linux Digital Audio and Music Workstation Comparison Matrix - collaborative Google Sheet (old, broken, no time/cpu power to fix here)
User avatar
milkii
Established Member
Posts: 291
Joined: Tue Jan 05, 2016 9:08 am
Location: Edinburgh
Has thanked: 16 times
Been thanked: 4 times
Contact:

Re: Sequencing and recording of JACK/LV2 CV?

Post by milkii »

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 milkii on Mon Jan 27, 2020 1:37 pm, edited 1 time in total.
they/them ta / libreav.org / wiki.thingsandstuff.org/Audio and related pages / Linux Digital Audio and Music Workstation Comparison Matrix - collaborative Google Sheet (old, broken, no time/cpu power to fix here)
User avatar
milkii
Established Member
Posts: 291
Joined: Tue Jan 05, 2016 9:08 am
Location: Edinburgh
Has thanked: 16 times
Been thanked: 4 times
Contact:

Re: Sequencing and recording of JACK/LV2 CV?

Post by milkii »

<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 possibly will. and likely a good idea to record min/max range inside the file too
.wcv is already "Wavelet Compressed Video"

.wacv? who knows..
Last edited by milkii on Wed Jun 03, 2020 8:24 pm, edited 2 times in total.
they/them ta / libreav.org / wiki.thingsandstuff.org/Audio and related pages / Linux Digital Audio and Music Workstation Comparison Matrix - collaborative Google Sheet (old, broken, no time/cpu power to fix here)
User avatar
milkii
Established Member
Posts: 291
Joined: Tue Jan 05, 2016 9:08 am
Location: Edinburgh
Has thanked: 16 times
Been thanked: 4 times
Contact:

Re: Sequencing and recording of JACK/LV2 CV?

Post by milkii »

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 / libreav.org / wiki.thingsandstuff.org/Audio and related pages / Linux Digital Audio and Music Workstation Comparison Matrix - collaborative Google Sheet (old, broken, no time/cpu power to fix here)
User avatar
milkii
Established Member
Posts: 291
Joined: Tue Jan 05, 2016 9:08 am
Location: Edinburgh
Has thanked: 16 times
Been thanked: 4 times
Contact:

Re: Sequencing and recording of JACK/LV2 CV?

Post by milkii »

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 / libreav.org / wiki.thingsandstuff.org/Audio and related pages / Linux Digital Audio and Music Workstation Comparison Matrix - collaborative Google Sheet (old, broken, no time/cpu power to fix here)
studio32

Re: Sequencing and recording of JACK/LV2 CV?

Post by studio32 »

something removed later
Last edited by studio32 on Mon Jul 27, 2020 4:30 am, edited 1 time in total.
User avatar
milkii
Established Member
Posts: 291
Joined: Tue Jan 05, 2016 9:08 am
Location: Edinburgh
Has thanked: 16 times
Been thanked: 4 times
Contact:

Re: Sequencing and recording of JACK/LV2 CV?

Post by milkii »

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 milkii on Tue Feb 04, 2020 3:42 pm, edited 2 times in total.
they/them ta / libreav.org / wiki.thingsandstuff.org/Audio and related pages / Linux Digital Audio and Music Workstation Comparison Matrix - collaborative Google Sheet (old, broken, no time/cpu power to fix here)
studio32

Re: Sequencing and recording of JACK/LV2 CV?

Post by studio32 »

something removed later
Last edited by studio32 on Mon Jul 27, 2020 4:30 am, edited 1 time in total.
User avatar
milkii
Established Member
Posts: 291
Joined: Tue Jan 05, 2016 9:08 am
Location: Edinburgh
Has thanked: 16 times
Been thanked: 4 times
Contact:

Re: Sequencing and recording of JACK/LV2 CV?

Post by milkii »

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 / libreav.org / wiki.thingsandstuff.org/Audio and related pages / Linux Digital Audio and Music Workstation Comparison Matrix - collaborative Google Sheet (old, broken, no time/cpu power to fix here)
User avatar
milkii
Established Member
Posts: 291
Joined: Tue Jan 05, 2016 9:08 am
Location: Edinburgh
Has thanked: 16 times
Been thanked: 4 times
Contact:

Re: JACK/LV2 CV

Post by milkii »

I made a couple of wee-ish test videos of a modular synth drone, Carla + LV2 Modular Synth - "Drone Winds On" and Carla + LV2 Modular Synth - "Drone Winds On2". They're mostly the same, second is longer with more GUIs and controls visible more of the time.

Plugins included ZLFO, various AMS, various MOD, x42 Whirl Speaker, Dragonfly Hall Reverb and LSP Stereo Compressor.

Edit: https://github.com/mxmilkb/carla-modular-synth-tests - see Drone Winds On
they/them ta / libreav.org / wiki.thingsandstuff.org/Audio and related pages / Linux Digital Audio and Music Workstation Comparison Matrix - collaborative Google Sheet (old, broken, no time/cpu power to fix here)
User avatar
milkii
Established Member
Posts: 291
Joined: Tue Jan 05, 2016 9:08 am
Location: Edinburgh
Has thanked: 16 times
Been thanked: 4 times
Contact:

Re: JACK/LV2 CV

Post by milkii »

A new bunch of CV plugins are available from ryukau in the Uhhyou LV2Plugins set;

https://github.com/ryukau/LV2Plugins/bl ... /lv2cvport

Image
they/them ta / libreav.org / wiki.thingsandstuff.org/Audio and related pages / Linux Digital Audio and Music Workstation Comparison Matrix - collaborative Google Sheet (old, broken, no time/cpu power to fix here)
User avatar
milkii
Established Member
Posts: 291
Joined: Tue Jan 05, 2016 9:08 am
Location: Edinburgh
Has thanked: 16 times
Been thanked: 4 times
Contact:

Re: JACK/LV2 CV

Post by milkii »

Two updates!

B.Shapr CV

https://github.com/sjaehn/BShapr

The beat / envelope shaper plugin gets CV shape output;

Image

Poly Effects Plugins

https://github.com/polyeffects/lenticular_lv2 - VCV Rack ports

https://github.com/polyeffects/cv_to_cc.lv2 - CV to MIDI CC

Image
they/them ta / libreav.org / wiki.thingsandstuff.org/Audio and related pages / Linux Digital Audio and Music Workstation Comparison Matrix - collaborative Google Sheet (old, broken, no time/cpu power to fix here)
User avatar
milkii
Established Member
Posts: 291
Joined: Tue Jan 05, 2016 9:08 am
Location: Edinburgh
Has thanked: 16 times
Been thanked: 4 times
Contact:

Re: JACK/LV2 CV

Post by milkii »

I've made an LV2/JACK Modular Synthesis Facebook group if anyone is interested.
they/them ta / libreav.org / wiki.thingsandstuff.org/Audio and related pages / Linux Digital Audio and Music Workstation Comparison Matrix - collaborative Google Sheet (old, broken, no time/cpu power to fix here)
User avatar
Capoeira
Established Member
Posts: 1313
Joined: Tue May 12, 2009 1:01 pm
Location: Brazil
Been thanked: 1 time

Re: JACK/LV2 CV

Post by Capoeira »

is there any way to control a plugin knob with multimedia keys on a "writing" keyboard?
User avatar
milkii
Established Member
Posts: 291
Joined: Tue Jan 05, 2016 9:08 am
Location: Edinburgh
Has thanked: 16 times
Been thanked: 4 times
Contact:

Re: JACK/LV2 CV

Post by milkii »

In Carla, at least, one can link either incoming MIDI CC or CV to change a parameter. There are various keyboard2midi apps, many listed here. I think though most of these are about inputting MIDI notes, but then there are various MIDI filter/conversion plugins that could map notes to CC or even CV, like x42 MIDI Filters, or apps like MIDIMonster, etc.

Edit; specifically multimedia keys; would that be like an "up" and "down" two key kinda thing, or a one key to set to a preset level?
they/them ta / libreav.org / wiki.thingsandstuff.org/Audio and related pages / Linux Digital Audio and Music Workstation Comparison Matrix - collaborative Google Sheet (old, broken, no time/cpu power to fix here)
Post Reply