JACK/LV2 CV

Support & discussion regarding DAWs and MIDI sequencers.

Moderators: MattKingUSA, khz

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

JACK/LV2 CV

Post by milk »

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. If you're going to try Carla, you need to use the develop branch available via GitHub, or carla-git / carla-debug-git (better crash information) from 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 host 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
* lenticular.lv2 - port of VCV Rack modules to LV2

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.

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 that is currently undeveloped)? With Bigwig Studio CV and Ableton CV Tools?
* If a CV stream can be translated/related to control port input, how best 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)? Possibly 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 Wed Jun 24, 2020 4:32 pm, edited 80 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: 258
Joined: Tue Jan 05, 2016 9:08 am
Location: Edinburgh
Contact:

Re: Sequencing and recording of JACK/LV2 CV?

Post by milk »

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: 258
Joined: Tue Jan 05, 2016 9:08 am
Location: Edinburgh
Contact:

Re: Sequencing and recording of JACK/LV2 CV?

Post by milk »

<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 milk on Wed Jun 03, 2020 8:24 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
milk
Established Member
Posts: 258
Joined: Tue Jan 05, 2016 9:08 am
Location: Edinburgh
Contact:

Re: Sequencing and recording of JACK/LV2 CV?

Post by milk »

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: 258
Joined: Tue Jan 05, 2016 9:08 am
Location: Edinburgh
Contact:

Re: Sequencing and recording of JACK/LV2 CV?

Post by milk »

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: 2434
Joined: Mon Apr 07, 2008 5:09 pm

Re: Sequencing and recording of JACK/LV2 CV?

Post by studio32 »

I can't resist. But Non-Daw does automation via CV. How could you've missed that? :)
Non-Session-Manager | FYI: Arch Linux / KXstudio do offer graphically less optimized packages (without NTK toolkit) of the original NSM GUI since June 2020. Original NSM GUI with NTK toolkit here

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

Re: Sequencing and recording of JACK/LV2 CV?

Post by milk »

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: 2434
Joined: Mon Apr 07, 2008 5:09 pm

Re: Sequencing and recording of JACK/LV2 CV?

Post by studio32 »

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.
Non-Session-Manager | FYI: Arch Linux / KXstudio do offer graphically less optimized packages (without NTK toolkit) of the original NSM GUI since June 2020. Original NSM GUI with NTK toolkit here

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

Re: Sequencing and recording of JACK/LV2 CV?

Post by milk »

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)

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

Re: JACK/LV2 CV

Post by milk »

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 / 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: 258
Joined: Tue Jan 05, 2016 9:08 am
Location: Edinburgh
Contact:

Re: JACK/LV2 CV

Post by milk »

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 / 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: 258
Joined: Tue Jan 05, 2016 9:08 am
Location: Edinburgh
Contact:

Re: JACK/LV2 CV

Post by milk »

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 / 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: 258
Joined: Tue Jan 05, 2016 9:08 am
Location: Edinburgh
Contact:

Re: JACK/LV2 CV

Post by milk »

I've made an LV2/JACK Modular Synthesis Facebook group if anyone is interested.
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)

Post Reply