Venom 2.5 beta: Mix expanders, Linear Drumming, and Quantizer - Testers and feedback wanted

I am working on my next Venom release - v2.5.0

EDIT Final release version is at Release v2.5.0 · DaveBenham/VenomModules · GitHub. All beta binaries have been purged from github

At the moment I have developed the following 7 expanders Mix Expanders

To be used with the following existing Mix modules: Mix Modules

Documentation is available at VenomModules/README.md at Dev · DaveBenham/VenomModules · GitHub

As long as you have a GitHub account, I think you can access the most recent build under GitHub Actions:
Workflow runs · DaveBenham/VenomModules · GitHub.
But the latest version may not be stable!

As of this writing, a stable version with the mixer expanders only is available at
https://github.com/DaveBenham/VenomModules/actions/runs/6305902557

Before releasing, I plan to develop at least one more new module - a non-octave scale quantizer based on intervals that was inspired by the new Cute Fox Modules Intervallic Pair Quantizer.

Now for the big ask:

The Mix modules were already quite complicated with many features. With the addition of the expanders they become much more complicated, creating an explosion of feature permutations.

I am sorely in need of at least one rigorous tester to look for bugs. Respond or contact me if you are interested.

I did a decent job at keeping the coding for each feature fairly isolated from other features. But I will be shocked if I haven’t broken something. Also, my object oriented programming is fairly weak, and there is not as much code shared across all the mixers as there ought to be. There is a lot of code that was cut, pasted, and merged between modules. So a feature combination that works for one may not work for another.

Of particular concern is the interaction of the new expander features with the simd code dealing with polyphony. So trying out various feature permutations with different polyphony combinations is critical.

I certainly welcome casual testing and feedback by anyone, but I am particularly looking for rigorous testing. A list of feature permutations that were tested would be amazing.

5 Likes

I’ve added a Linear Beats module that converts multiple channels of coincident gates into a linear drumming pattern where only one channel transitions to high at a time. It also includes an expander module for mutes and disabling.

Documentation is available at VenomModules/README.md at Dev · DaveBenham/VenomModules · GitHub

Latest stable version is available at https://github.com/DaveBenham/VenomModules/actions/runs/6378139020

Still hoping for testers and feedback.

I still plan to develop the Non-Octave Intervallic Scale Quantizer for this release.

7 Likes

Sweet! I’ll aim to give this a try this week and will report back. Nice work!

1 Like

Thanks! If you are feeling ambitious, check out the mixer expanders as well.

1 Like

Did you have a chance to try any of the new modules out? Was it useful? Any issues or recommendations for improvements?

1 Like

Hey! Sorry–got life-clobbered these past two weeks, but I may be able to give these a try tonight or tomorrow–will report back if possible!

1 Like

Just downloaded latest action build, and on arm64 only a few modules draw in the module browser, the rest show up as an empty space, and clicking anywhere in the empty space hangs Rack hard, so has to be killed. So something not kosher with that build… Just a heads-up, have reverted back to functioning version. Same issue on mac x64 latest action build, FYI.

Beta 2.5 141be45 works fine still, so something broke between there and latest build

Thanks - Yes, I’m in the midst of developing the Non-Octave Repeating Scale Intervallic Quantizer, and the most recent pushed version only has the ivory faceplate defined. That version is definitely not stable.

I posted a link to the most recent stable version in my Linear Beats post in this thread. I’ll update my prior posts to make the distinction more clear. I will also put the most recent stable version at the top of the first post.

1 Like

My new Non-Octave Repeating Scale Intervallic Quantizer is now available for testing. All planned functionality is present, except the display panel has not yet been implemented. The panel will display the effective values after summing the inputs with the control knobs. It should also indicate the quantized value for each note.

NORS_IQ

Rather than specify specific notes in the scale, you specify the interval between each note in the scale. Importantly, the last interval defines the jump from the last note in the scale to the root of the next scale in the series. This allows you to define scales that repeat at any interval - not just octaves.

Intervals are defined as integral multiples of some equal division of a pseudo-octave. Define the pseudo-octave as 1 octave with 12 divisions, and you have standard 12 tone equal temperament. But you can use any pseudo-octave between 0 and 2 octaves, with divisions between 1 and 100. For example, define a pseudo octave of 1900 cents (an octave plus a perfect fifth), with 13 equal divisions, and you have a Bohlen-Pierce equal tempered scale.

Full documentation is available at VenomModules/README.md at Dev · DaveBenham/VenomModules · GitHub

A stable beta build is available at https://github.com/DaveBenham/VenomModules/actions/runs/6598461618

In this patch and video I test the quantizer with random notes using four different scales, the last three of which are non-octave repeating

  • 0:00 12ET intervals 3,2,2,3,2 (Minor Pentatonic)
  • 2:00 12ET intervals 3,4,5,4,3
  • 4:00 12ET intervals 2,3,4,3,2
  • 6:00 Bohlen-Pierce intervals 3,2,2,2,2,2

NORS_IQ Random Test.vcv (4.7 KB)

4 Likes

that sounds cool.

1 Like

Hey Dave! I’ve played a bit with the new scale quantizer now. It’s pretty fun! :slight_smile: I have some feedback points.

By far the biggest shortcoming right now (in my humble opinion of course) is that the scale steps must be defined as equal divisions. This rules out many interesting scales which use Just Intervals. You could argue that it’s usually possible to approximate those with equal-tempered scales, which is true. But the logic that translates between the two approaches is non-trivial. As an example, notes 8 to 12 from the overtone series is a very nice and non-octave Just Intonation scale. It’s quite simple in Just Intonation ratios, but requires dividing its pseudo-octave (a just fifth) into 80 parts to get a really good approximation!

I’d recommend allowing the EDPO to be disabled somehow (maybe when turned down to 0), enabling an un-equal mode in which scale intervals are set as voltages directly instead of equal steps. Bonus points if it’s possible to set the steps as a ratio. :slight_smile:

Another reason this would be cool is the “chord memory” function. If the steps could be set voltages, you could make chords that gradually retune, say from major-ish to minor-ish or whatever. That might be neat.

You asked for feedback on the ranges. I’d personally love more scale steps. An expander could work, but then the expander would have to be in place to load >10note presets right? Perhaps that’s ok, but otherwise it may be worth considering other solutions.

Great module otherwise! Thanks for sharing it.

1 Like

All the currently planned functionality for my quantizer is now complete! I am very happy with how the display panel turned out. Here is a quick demo using that same patch as last time, just with the minor pentatonic scale. I don’t use any CV in this demo, but the display panel will always show the effective values after combining any CV with the knob values.

The updated beta binary is at Completed all functionality! · DaveBenham/VenomModules@5d18fb1 · GitHub

Thanks @andreya.ek.frisk for the valuable feedback. My mind is kind of fried after painting my house and pushing hard to finish up the quantizer functionality. I will try to formulate an intelligent response tomorrow.

3 Likes

Looking great! :slight_smile:

Yes, that was a conscious decision baked into my original design.

I am thinking of revising the design to incorporate this. I’m not sure if this would be in the initial release though, and no promise that it will ever get done. I would probably add a button that enables/disables equal division mode. If disabled, then the unit switch would apply to the 10 interval knobs.

Entering ratios would be easy. I would simply add a ratio option to the switch that really is mathematically the same as the frequency option for the Scale Root (log2 of the freq yields the V/Oct value). But in this case the “frequency” would be limited to a value between 1 and 4, and I would not display a Hz unit. VCV Rack supports manual entry of simple formulas, so to introduce a perfect fifth ratio of 3:2 you would simply enter 3/2. Unfortunately the original entry would be lost once you press Enter, and the display would be 1.5.

One important thing - my quantizer is based on the intervals between the notes of the scale, not the interval from the root to each note. So suppose you wanted to enter intervals for the 5-limit diatonic major scale (1:1, 9:8, 5:4, 4:3, 3:2, 5:3, 15:8, 2:1). The first interval would simply be entered as 9/8. But the second interval would be entered as 5/4 - 9/8 (5/4)/(9/8).

There are two issues that give me pause.

  1. Currently my interval knobs are positionally limited to integral values. Obviously that won’t work in this case. The knobs do not function well if I change between free and integral values while running. So I would have to always keep the knobs in free mode, but the value would be rounded to the nearest integer if using ED(P)O mode. Not ideal, but certainly doable.

  2. I really want to display the interval above each knob in the display panel. There is not much width to do so. Not a problem when in ED(P)O mode because there are never more than 3 digits. But in free mode the number of characters is much greater, and the font would have to be very small. I worry it might become unreadable at typical zoom levels.

Thats sounds like the isoharmonic chord idea you suggested a while ago. (Or a variation there of) I am still thinking of doing that at some point. One question - When used as a scale, is the last note in the series the root of the next pseudo-octave? Or is the final interval the difference between the octave and the last note?

That does sound cool. Though I’m not exactly sure how it would work in practices. If you hold the V/Oct input steady as you adjust the interval(s), the quantized pitch will bend smoothly, but then may suddenly jump if the change results in quantization to a different note in the scale.

Good point about the expander.

So how many steps do you recommend? There is no theoretical limit, but I have to stop somewhere. I also want to keep everything linear on a single row of knobs. I don’t want a matrix of interval knobs.

I am seriously considering expanding to 13 intervals (steps). I don’t think I want to go beyond that, but I am curious what you think.

Well, I’ve gone and done it - I implemented all Andreya’s requests, and I think the module is much better for it! Thanks again Andreya!

The quantizer now allows up to 13 intervals per scale instead of 10, and I added a poly input for the intervals. So each interval has two CV inputs - one channel from the poly, and the monophonic input.

The most important change is the addition of the Equal Divs button - if off, then the intervals are specified directly and independently, so you can get most any scale up to length 14, and it can use just intonation.

The display of the intervals is miniscule, but I think it is just big enough to still be useful (you might have to zoom in a bit).

The intervals can be specified using Volts (V/Oct), Cents, or most importantly as Ratios. VCV parameter input has a built in calculator function, so you can enter the ratios in a natural fashion, and VCV will compute the decimal ratio to 1.

The most recent stable build is at https://github.com/DaveBenham/VenomModules/actions/runs/6648914407

Barring any bugs, this may be the plugin code that actually gets released.

I was thinking of adding some factory presets, but I am a bit thrown by just how many scales the music world has invented. I haven’t any idea how I would choose what scales to include.

At some point I would like to add the ability to load a scala file into the quantizer, but I will save that for another release.

In the patch and video below I test out the new just intonation capability. It uses two quantizers, both tuned to just intonation scales (chords). The top one is the very harmonious isoharmonic chord formed from harmonics 4, 5, 6, 7, 8. The intervals were simply entered as 5/4, 6/5, 7/6, and 8/7. The polyphonic scale output is used to generate a droning chord. In addition, two random signals are quantized to create two moving lines based on the same intervals.

The root of the top quantizer is controlled by the 2nd quantizer that uses the non-octave scale formed by harmonics 8, 9, 10, 11, 12 (intervals 9/8. 10/9, 11/10, 12/11). Every time the bottom quantizer changes its output, it effectively changes the key of the top quantizer.

All voices are created by a single polyphonic VCV Wave Table VCO (7 channels used total). The moving lines pass through the polyphonic ADSR / VCA pair, and the chord simply drones. About 1.5 minutes in I introduce through zero linear frequency modulation where the moving lines cross modulate each other.

NORS_IQ IsoHarmonicScales.vcv (10.4 KB)

4 Likes

Quick update - I extended the range of the pseudo-octave that gets divided into equal divisions. It now ranges from 0 to 4 octaves.

Here is the link to the beta binaries: Update README.md: Allow up to 4 octaves for pseudo octave interval · DaveBenham/VenomModules@d39e09b · GitHub

Hi Dave

LINEAR BEATS in ivory look weird.

1 Like

Whoa - freaky! Thanks for the heads up.

Somehow the ivory Linear Beats faceplate file got overwritten by the quantizer faceplate.

I’ll get that fixed ASAP

1 Like

All fixed, with new binaries at Fix Linear Beats ivory faceplate · DaveBenham/VenomModules@392b765 · GitHub

2 Likes

I am working on some presets for the quantizer, and thinking about adding the ability to import and export Scala .scl files. I am also considering adding context menu options to automatically configure the quantizer for isoharmonic chords. I still haven’t decided if I should add these features in a later release, or wait until they are done.

In the mean time, here are two more non-octave-repeating scale experiments.

  1. NORS_IQ 12ET non octave proteus.vcv (10.2 KB)

I find this experiment calm and soothing, yet also creepy. The scale (intervals of 2,2,3,2,2) repeats at 11 semitones instead of 12. Each scale repetition is 1 semitone offset from the previous one, so you have to go 2 full octaves before you get a single octave interval.

I think this shows off the Cytomic CF100 filter nicely. Having three inputs for frequency modulation is really handy. I use the V/Oct to follow the pitch. I apply an envelope to the bipolar FM input. And at 2:15 I apply audio rate FM to the unipolar input, with each voice cross modulating the other. It produces some really nice bell tones. I had never thought to apply audio rate FM to a filter before.

  1. NORS_IQ 25 ED 5o1.vcv (10.6 KB)

I really like the sound of this scale. The intervals are derived from 25 equal divisions of a 5:1 interval (5th harmonic - a major third above 2 octaves). Each step is ~111.5 cents, not so different from 12ET. It sounds both familiar and foreign. Definitely non-octave repeating. The interval of 11 steps is ~1226 cents, a very sharp octave. For this experiment I used a scale composed of intervals of 4, 4, 4, 3. A second quantizer configured as a chromatic version of 25 ED 5:1 changes the 1st quantizer root note at regular intervals, thus changing the key.

I have 8 voices in this piece, all produced by a single VCV WT VCO. I use the polyphonic Scale output to create a 5 tone droning chord. Random modules create two random moving lines. An LFO creates a ping-pong arpeggiator. The chord uses a cross between triangle and saw waves, while the moving lines use square waves to accentuate them relative to the chord.

1 Like