DanT :: NuMetal - Beta [v2.0.9] Kalkatron & PolySplice

Hi, thanks for the feedback!

tl;dr New beta version with some bug fixes Release v2.0.3-NuMetal-Beta · Miff-Real/DanTModules-Manual · GitHub

Yes, as I mentioned in the initial post, these are prototype modules, so it is minimum viable product development to enable testing. Once the module design is stable, then I might start adding the additional features. Having said that, I have added more information to the plugin.json file.

Indeed, for prototypes I am drawing the panel programmatically so that I do not need to spend time working on SVGs whilst the module is still in design flux. The layout is subject to change during this design phase, so changing the SVG every time would just slow me down, especially if the width of the module changes.

Any specific reason? A knob allows the user to right-click and input the desired advance mode directly, a button would need a custom implementation and would require multiple clicks to get to a specific mode.

Also, a button would naturally imply a trigger CV input rather than a continuous signal, similarly meaning that you have to switch through all the modes to get to the target mode, rather than simply jumping directly to the target mode.

Why do you suggest this? I see that if you modulate the advance mode at high/audio rates then it is hard to understand which mode is currently active, however to me there doesn’t seem to be a reason that you would want to modulate this mode at high rates?

These are just the stock VCV lights, they look the same as lights on all the VCV modules don’t they? Obviously once I start adding the panels I will consider custom graphics for all the module controls, but for prototyping I’ll stick with these.

Typically I set my CV inputs so that 10 volts is equal to the maximum parameter value. This means that if you use a unipolar LFO you can modulate the parameter through its full range. This also means that if you were to use a bipolar LFO from -5 volts to +5 volts on a bipolar parameter, using the attenuvertor you can also scale this up to match the full parameter range as well.

Whoops, this is a bug, I actually forgot to scale the CV inputs to match the parameter ranges, should be fixed in the new build.

This wasn’t intended either, the bug was that I wasn’t explicitly turning off the slew once it reached the target value, so manually changing the slew to a longer value caused the slew to resume from where it was left. This should also be fixed in the new build.

2 Likes

To be clear, I don’t mean replace the knob to select the Advance Mode, but including a button as well would be faster sometimes, I think? Maybe working how synthesis mode select buttons on the Audible Instruments Macro Oscillator 2 (aka Plaits) work?

Another idea is to keep the knob but have a button under each light to quickly select that mode directly? Something like in the mock up image below?

Please ignore this one. After playing with the module for a while, this is fine as it is. :slight_smile:

Thinking about this, I can just zoom in to the display. Please ignore this one as well. Apols.

Yes, the slew CV and the trigger bug are fixed for me in v2.0.3. Thanks!

Edit: Forgot to say. This is a great idea for a module. I can see this being useful for all sorts of things, like:

  • Slowing moving between different sources of note sequences.
  • Complex modulation envelopes for physical modelling.
  • A kind of super advanced Bernoulli Gate.

Using a drop down menu, while not very “modular like” is extremely effective for this. And of course no need for knobs, buttons, lights.

2 Likes

Small update to v2.0.4 adds a reset input to PolySplice

Reseters.vcv (8.1 KB)

Nearly finished a new module for this beta plugin, should be able to post new builds soon

3 Likes

Hi all, Friday lunchtime for me means new release announcement (finally, after months of being distracted), woot!

Here is a new build for the plugin (it does include both mac builds, but I have personally only tested windows):

This 2.0.6 version adds an experimental new module called Kalkatron

This module might look a little bit crazy or intimidating, but its really quite a simple idea.

When I was doing some generative patching, I often found I wanted to count something, like gates from a sequencer for example, so that I could automatically change something in the composition during playback.

There are ways to do this of course, but I figured I’d like to just have a dedicated module that does exactly what I want. (This is typically how all my modules start).

So the core concept of this module is: count when something happens, have a signal that allows me to act on that count.

This then grew, because if you can count (ie add), then why not subtract? And if you can add and subtract, then why not multiply and divide? And if we are outputting a signal, then you should have some control over that signal…

Although the core concept is simple, i’ve found that the module is actually quite versatile now that I have implemented everything. You can use it as a sequencer, a mixer, a generative source, a quantizer, an arp… and i’m sure you will come up with more ways.

  • A: Input section - This is where the signal is tracked or generated. There is a signal input with attenuvertor & offset param, and there is a signal sample trigger input and button. When signal sample is triggered, the value at the input will be added to the offset and displayed in the xInput box. Since the value inputs have an offset, you can set this offset to a specific value and leave the input disconnected if you want a static value.

  • B: Maths section - This is where the maths operations can be performed. You can add, subtract, multiply or divide the input signal by a specific value. Each operation has its own controls and they all work in the same way. There is an operation trigger input and button. A value input with attenuvertor and offset. And a sample value trigger input and button. When sample value is triggered, the value at the input will be added to the offset and displayed in the operation box at the bottom. When the operation is triggered, the value in the operation box will be used to perform the operation upon the current xInput value. Note that divide by 0 is a no-op.

  • C: Calculation section - This is where the current calculation result = Equals is displayed. Note that this display is affected by the output mode, output slew, output attenuvertor and output clip.

  • D: Mode & Output section - This is where you control the module output. The lights indicate the currently selected output mode. There is an output mode selector knob, and input with attenvertor. The main module output is bottom right, and it has an attenuvertor and Clip output switch. When clip is active the output will be limited between -10.0 and 10.0. There are 6 output modes:

    • Floating Point - The standard calculation result
    • Rounded .1 - The calculation will be rounded to the nearest .1
    • Rounded .2 - The calculation will be rounded to the nearest .2
    • Rounded .5 - The calculation will be rounded to the nearest .5
    • Integer - The calculation will be rounded to the nearest whole number
    • Quantized - The calculation will be quantized to the nearest note frequency and a note display will be shown next to the Calculation box
  • E: Slew section - This allows you to slew between the previous calculation result and the current calculation result. There is a slew length knob, with an input and attenuvertor. The slew length is in milliseconds, and has a light to show when its actively slewing the output.

  • F: Auto-reset & Bounds section - This area allows you to set an upper and lower bound for the output signal. When the calculation result is out of bounds there are gates output and you can also automatically reset the module. The switch activates auto-reset. The top row is for the upper bound and the bottom row is for the lower bound. The gate outputs for out of bounds signals are to the right. The other controls are the same as the operations, a value input with attenuvertor and offset, and a sample trigger and button.

  • G: Reset section - This is simply a trigger input and button to reset the module, however, the reset behaviour can be customised:

  • Initialize Parameters - On a reset, all the parameters will be set to their default values, the same as if you select Initialize from the context menu
  • Zero Signal Value - On a reset, the xInput value will be set to 0
  • Zero Plus Value - On a reset, the + Plus value will be set to 0
  • Zero Subtract Value - On a reset, the - Subtract value will be set to 0
  • Zero Multiply Value - On a reset, the × Multiply value will be set to 0
  • Zero Divide Value - On a reset, the ÷ Divide value will be set to 0
  • Zero Calculation - On a reset, the = Equals calculation result will be set to 0
  • Reset Upper-bound - On a reset, the upper bound value will be set to the default of 10
  • Reset Lower-bound - On a reset, the lower bound value will be set to the default of -10
  • Sample Signal Value - On a reset, the xInput value sample will be triggered
  • Sample Plus Value - On a reset, the + Plus value sample will be triggered
  • Sample Subtract Value - On a reset, the - Subtract value sample will be triggered
  • Sample Multiply Value - On a reset, the × Multiply value sample will be triggered
  • Sample Divide Value - On a reset, the ÷ Divide value sample will be triggered
  • Sample Upper-bound - On a reset, the upper bound value sample will be triggered
  • Sample Lower-bound - On a reset, the lower bound value sample will be triggered
  • Reset Slew - On a reset, any currently active slew will be ended and the slew value will be set to 0. If the slew length is > 0 this will instigate a new slew, this is great for creating boing noises

Experi-Mental I anticipate a few bugs or undefined behaviours with this module because the complexity of the code grew significantly during development, so I appreciate any reports, please be patient with me.

Ideally I would like to (at some point in the future) expand the functionality of this module, perhaps with new controls, perhaps with an expander that has more output options, perhaps with polyphony (although that most likely needs a complete code refactor, and maybe needs me to learn simd too).

I’d love to hear if you find uses for this module and any suggestions on how it might be more useful.

Thanks, DanT.

11 Likes
4 Likes

The best reason in the world to make a module is to make a module you want/need yourself. Looks like a very interesting module that Kalkatron.

1 Like

Look forward to giving it a go, and “scratching your own itch” is often a good place to start!

New minor release

This is just to fix a bug with the Kalkatron reset, where certain configurations would cause the reset not to execute. Reset should now take priority over any other triggered operation.

2 Likes

Update

added inverted gate outputs for the bounds: They output 10v when the signal is inside the bounds.

added output rectification, controlled by a new 3-way switch in the output section.

You can have half rectify: negative = Equals values will be set to 0

or full rectify, negative values will be changed to positive values.

Notes: The rectification will respect the output attenuvertor, so for example if that is set to -1, the output will negatively rectified.

Currently the auto-reset bounds and the gates are tested before the output attenuvertor, should I change this to after?

3 Likes

Wow, this was perfect for an example I wanted to implement today. I probably massively overcomplicated it, but essentially I have a pitch that is held for a long time and every so often it changes to another, random pitch. I wanted to step between them (ie. if the change was from F2 to C3 then I want up to 4 steps in between, in this case G2, A2, B2 or however they quantize out). I was able to calculate the step size using a cf’s ALG then pass that value into the “Plus” value input et voila along with the outgoing pitch in the main value input. It works great! Thank you for this!

One bit of feedback, since you say “Subtract”, “Multiply”, “Divide”, have you considered saying “Add” instead of “Plus”?

1 Like

It really is the best thing to hear that someone found a use for your module, very happy to have helped you create something.

Maybe this is just because I am stubbornly English, or because I studied maths in higher education (20+ years ago), or maybe there is no real reason other than personal preference, but this + is a plus symbol to me, not an add symbol. Plus is just more mathematics than add. Add feels like the amateur version of plus.

I do realise that some languages struggle with how in English there are multiple words that have the same or similar meaning, it is probably true that in some there is a translation for add and not for plus. I would certainly consider changing something on my modules if it is causing an accessibility or usability issue. But otherwise I’ll chalk it up to my identity being present in my designs. :disguised_face:

Many languages have the ‘one word, meaning and usage depends on situation’ thing :wink:

Oh for sure, but as far as I can tell, the majority of VCV modules are labelled in English and have English manuals (though a fair majority being US English I would guess).

In general I would expect that most British users would not immediately question Add vs Plus, since it is very common to say something like Two plus two is four.

It is also very common to say something like Two times three is six, but I use Multiply not Times, and Equals not Is, for the same reason I use Plus not Add.

Another reason is that sometimes context can mean Add is concatenation rather than addition, for example To pluralise this word you would add an S. Using the word Plus instead of Add in this sentence doesn’t work.

1 Like

indeed, we all have cultural prefs I guess, whatever culture that may be. And our so far life influences our prefs as well. A nice philosophical side-journey :wink:

1 Like

I don’t think this is a case of British vs American. Certainly + is a plus sign, but then - is a minus sign, not a substract sign. So why did you use Subtract?

Subtract, Multiply, and Divide are all verbs. Plus is a preposition, adjective, or noun, but not a verb. Grammatically it makes more sense to use Add in this case for both British and American usage.

I have no problem with inclusion of your “identity” in your design, and Plus certainly is understandable. But I for one will always find the labeling a bit jarring - although nothing to lose sleep over.

2 Likes

I did use Minus originally, but I didn’t like how it sat in the design. I guess Minus has a negative feel to it that Subtract does not, but also - Minus could potentially (admittedly unlikely) be misunderstood as making the number negative rather than, as we describe it in school, taking away, so there is another reason why I chose Subtract…

True, but they are also all nouns in the same way as Plus is, they name the symbol that appears next to them on the module panel, in my eyes all four words are grammatically consistent.

No, the nouns are Addition, Subtraction, Multiplication, and Division.

Subtract and Multiply are exclusively verbs, and within a mathematical context, so are Add and Divide.

There is no verb definition for Plus

The labeling may seem grammatically consistent to you, but I believe if you look up the words in your favorite dictionary, you will find that they are not consistent.

Again, I am OK if you would rather maintain the inconsistency. This is all rather pedantic, and not important in the grand scheme of things.

They are some nouns, they are not the nouns.

Now I don’t want to enter into a grammar argument, so I will simply state this:

A noun is commonly described as a word that refers to a thing.

Here are some things: +, -, ×, ÷

Here are some nouns that I use to refer to those things: Plus, Subtract, Multiply and Divide

We are both entitled to use whatever nouns we feel are appropriate to those things, and as long as others understand which things we are referring to, that’s all that really matters…