CV logic plugins - in/out?

hey folks… i’m trying to start experimenting with the CV logic plugins…

the info on, for instance, the “Logic Smaller” plugin says:

When 'CV input1' and 'CV input2' are connected, the plugin will compare these incoming signals with each other. It can also be used to compare one incoming signal with the value set by the 'Compare Value' parameter, in this case only 'CV Input1' needs to be used.

…but i don’t see any way to connect to CV input1 or 2, or to get the logic output.

what am i missing? :stuck_out_tongue:

Hi @plutek,

There is a new plugin in BETA that is named “Logic operators” this plugin contains all current CV Logic operators. The other ones, “Logic Smaller”, “Logic Equal”, etc, where more of an experiment so I would advise on trying the “Logic Operators” plugin instead.

Regarding the not visible in- and outputs:

For CV plugins to work correctly on our system, especially the “Assign to parameter” functionality, all CV plugins have to follow the standard that we have created for this. This means that the plugin needs to use one of the following ranges: inverted uni-polar -10 to 0, bi-polar -5 to +5 or uni-polar 0 to 10.

In order for the host to know if a plugin is suitable to use within the MOD system we have created an extensionmod:CVPort, this needs to be added in the ttl in order for the port to visible in mod-ui. Because this extension is not added to the “Logic smaller” plugin, the in- and outputs are not visible.

1 Like

So I’ve been planning on porting the infamous envelope follower to mod, but since this CV standard didn’t exist when I created it it just uses a unipolar 0 to 1 range. So I guess… don’t bother? I don’t really want to maintain another version, nor break backward compatibility.

thanks!.. got it!

you dont have to maintain 2 versions, just modify behaviour a bit.
we had to define a range for our cv ports as LV2 does not provide one for us.
minor docs at, but it is the same as @BramGiesen already explained.

it is possible to have both desktop and mod versions within the same code base.
steps are:

  1. add mod:CVPort as an extra port type for your plugin cv ports (so it is type atom:CVPort and mod:CVPort; multiple types work fine)
  2. specify the ranges as needed for MOD by using mod:minimum and mod:maximum properties. this way regular hosts will not care for those, but the MOD stuff will. This is basically used in place of lv2:minimum, so developers can have different ranges depending on mod vs desktop
  3. in the code, check for __MOD_DEVICES__ compiler macro, with #ifdef or similar. the portion of the code inside can scale up or down the input values, as you prefer.

with those 3 steps, you can have the same codebase working for desktop and mod systems.
it is more work than regular plugins, but not that much more.
if you have any questions, just let me know.

and regarding “linting” or validation of data, the definitions of these properties are in the mod-sdk repo.
so ttl validation is possible with our custom properties.

thats a good thought, I hadn’t considered just making it a build option.

Though in all honesty I’m not sure anyone is actually using the CV version anyway so I might not break anything anyone cares about…