unless modules : new ( avoider, pianoid )

for me - apart from playing snake on my first cell phone - the most played incarnation was Curve Fever 2, which was (maybe still is) also a flash based online multiplayer thing. it features smoothly curving snakes instead of only 90 degree turns. has ffa, teams and powerups. great game! easy to start, hard to master.

1 Like

My most played version of Snakes was one I wrote on my Amiga in AmigaE.

1 Like

that looks cool.

1 Like

@nnbveh!

here is a possible workaround for what you wanted (at least how I understood it)

It makes use of a new feature coming to towers, that lets you sample the IN port for setting the faders.

In this example the top bank (A) is used by MIDI-CAT and the bottom (B) by TRANSIT.

Each bank’s output is connected to the other bank’s input.

The lower half of the screen is a simple virtual midi controller running outside of Rack.

Creating presets work like this:

  • move faders on midi controller to set bank A
  • click “=” button on bank B to copy faders from A
  • write to snapshot in TRANSIT

Reading presets with fade requires some helpers from Bogaudio

  • LFO to trigger the COPY/RAND input periodically with squarewave
  • BOOL with AND operation to mute the triggers when TRANSIT isn’t fading
  • OFFSET to scale up the fade input (needed for smoothness at the start of the fade)

Further you could hook-up external controls to trigger the copy action and save snapshot, and of course you need to switch between the outputs of bank A and B whatever they are controlling.

This “copy” feature is not yet available in the library, but you can download dev builds from here.

In case someone tries out these builds, please report back if they aren’t working, as this is the first time I use github to automate cross-platform builds.

Btw, thanks to everyone who contributed to this thread on Azure Pipelines!

EDIT : realized I’ve been going off-topic and turning into a tutorial on towers with this so I’ve moved this comment from here to here.

using the mod inputs on towers to modulate fixed voltages selectively

The EXP random out from VCV Random is inputted to the top fixed voltage row.

The bottom row is controlling how much modulation to apply. It is set to bipolar mode to be able to go down or up. Since it’s output is also polyphonic it can control the faders individually. In case the channel count doesn’t match perfectly, towers wraps around whatever it gets.

Here 4 channels control 8 (based on a mono IN), in a way that every 1st in a row gets increased, every 3rd gets lowered and 2nd/4th are left as they are.

The mod knob is turned a bit to the right. It controls the overall scaling so when on zero (12 o’clock), no modulation gets applied.

This way you can selectively introduce randomness or controlled change to your fixed voltages without having to break in or out of polyphony.

3 Likes

Made a new module, pianoid!

I also improved on towers’ music notation view (seen above), added a “windows” view for better viewing of gate signals and fixed some things (see changelog for details)

If anyone wants to try this out before it goes to the library, here are my dev builds

below, I paste the entry on pianoid from the manual…

pianoid

polyphonic note monitor and controller

made for visualizing notes coming from a midi keyboard, generative sources etc. it can function as a sort of “sample and chord” for people who are comfortable with playing chords on a piano keyboard. inputting notes with mouse is also possible.

usage

  • connect cv and gate from a MIDI-CV module
  • play notes or chords to see them on the piano
  • drag the left bar vertically to scroll up and down the keyboard
  • drag horizontally to zoom in and out

sustain

toggle sustain with the sus button

when sustaining, pianoid will sample notes that are pressed together and hold them until you play the next chord

sustained notes get saved with the patches (and presets), so if you close a patch, you don’t lose what you had sustained, you can also use 8FACE to buffer different chords and automate progressions etc.

no input

if no input is connected, you can play notes with your mouse

enable sustain to input chords.

8 Likes

Haven’t said this elsewhere, but I sure do love the aesthetic of your modules! This new module looks super cool.

3 Likes

Thanks! This one was inspired by messing with a toy melodica, wish that had sustain too though :stuck_out_tongue:

4 Likes

new module incoming, thanks to this post!

I had this module on my computer for a while now (actually pianoid was made so it could help visualize this amongst others), maybe it will be ready faster if I share it as it is now.

avoider

based around the idea of avoid notes, it takes a note input and a polyphonic chord input and has a few knobs to set intervals you want to avoid.

  • By default the first interval is set to 1, meaning “avoid minor seconds”, aka those notes that are 1 step from any of the notes inside the chord.
  • The second interval is set to 6, meaning “avoid tritones”, it does the same as the first one, but with 6 step intervals to the chord input.
  • The rest of the knobs start out with -1, which means they are disabled.

Input notes that are contained in the chord aren’t avoided.

The defaults will give you nice harmonies if you input 4-note chords.

For example on a C major seventh chord (C E G A), it will automatically avoid everything outside the C major scale, and also F, which tend to sound dissonant over this chord because it is 1 step from E.

detailed break-down : when I say it “automatically avoids everything outside the C major scale”, I don’t mean it makes a “guess” based on the inputted CM7 chord that we are in C major, it has zero knowledge of scales, the “majory” scale arises from checking for the “forbidden intervals”.
If you look at a keyboard and press down the C major seventh chord (C E G A), every black key will be at 1 step from one of the those notes, and since the first interval is set to 1, these are all avoided, leaving a major scale.
Furthermore, F is 1 step from E (also 6 steps from B), so it will be avoided as well.
The exception in this case is B that is 1 step from C but since it is in the chord it will not be avoided. Every other white key is fair game since they are either contained in the chord, or they aren’t 1 nor 6 steps from any of its notes. Of course this works with different chords, intervals, but the piano layout makes it easy to explain it with C major.

in case you are wondering why 6 is the max interval steps you can set: intervals have no direction (at least not here), so for example 7 steps up is the same as 5 steps down (C + 7 = G, C - 5 = G) etc.

Overall it seems to be a good way of generating melodies from chords instead of scales, it’s useful for playing notes above subsequent chords that aren’t in the same scale, or that don’t fit into a list of pre-known scales.

Below is an example walking through some chords

  • in the top-left there’s a basic chromatic note generator with an LFO as clock
  • then avoider itself with the yellowish pianoid showing the output
  • the bottom left is where the chords are coming from.

The interval knobs are at the default settings so if the input random note is a minor second or a tritone away from any of the chord notes, it will be avoided, and the closest note from the current chord will be used instead. I’m not changing anything to these settings here, only inputing different chords with keyboard.

The inputs use gates as well as cv here, but I might leave this out later (although this is good for not having to calculate new notes all the time, and for “keeping a voice together” as the gate cables follow the corresponding cv through a patch).

The panel is definitely not final (I’ll add small displays to show the interval steps for sure, and change the layout), how it works is up to changes as well, but I’m not sure what else it needs…

Tell me what you think!

download in dev-builds here

4 Likes

now that I start to remember where I left this off, here some things I’ll do before it could be considered finished:

  • cv mod for intervals, maybe allowing for more than max 4 intervals?
  • output “all possible notes” as poly cv
  • decide whether avoiding means “quantize to closest chord note” as it is now or something else…
  • gate output to show if currently avoiding or not to be able to use this info as modulation elsewhere

  • made a simplified panel
  • removed the gate in for the chord since it wasn’t used anyway
  • made the gate inputs optional
  • added the avoiding output at the top : a gate out that shows if the input is being corrected or not

updates are in the dev-builds

Any thoughts on how clear what the module does based on the above explanation or the new panel?

3 Likes

nevermind, added it back, it was meant to be used just its function wasn’t implemented yet (it is now), which is to ignore notes when playing from keyboard and not holding down the maximum allowed polyphony.

it’s optional tho

this layout might be confusing in that it makes it seem like the CHORD input is an optional cv input for the interval knobs, when actually, they are separate things. maybe adding cv in to the knobs will make this a non-issue.

hmm… maybe it would be much more clear if there would be 6 on/off switches for each possible interval instead of the knobs.

1 Like
  • switching to buttons instead of the knobs

  • if no cv input is present, it will generate a random note by itself when the NOTE gate is triggered (or constantly if not :))

  • added SCALE poly outputs that send the possible notes with the avoid rules applied

    • PES is the Poly External Scale format
    • PLS is the Poly Less Scale format :slight_smile: which is a poly cv out with as many channels as there are notes (I have a quantizer and other stuff that will work with this)
  • fixed a bug where notes were being quantized to the chord notes’ octave instead of their own, although this makes some sense and might make a good companion module

  • added sample divider to optimize performance

the MODS input is not working now, but it will let you set all the intervals at once through a 6 channel polyphonic cable.

updates in the dev-builds

also changed the styling on the sus button of pianoid to use the same color logic as here : bright means on, dark means off now, but it might be better to use the accent color in place of bright, or add some lights, cause it is a bit confusing…

ups! the PLS was outputting the notes to avoid, instead of the notes to keep :smiley: fixed it, now this can be used to see the “scale” you get for different chords and intervals

2 Likes

the problem with the buttons is it is much easier to enable too many of them and being left with just the chord-notes as output, while using the knobs meant you changed intervals instead of add/remove

so it is more understandable but gives more chance to have uninteresting results.

1 Like

Trying out a third option, that is just one knob that goes through all the permutations of the six toggles. It is impossible to have a “best” order in which it does that, so I’m a bit hesitant with this solution, but overall it is much better to experiment with than the buttons, it is faster! But if you want to have a specific setting it might be frustrating to find it…

Trying to order the permutations now, they are separated by how many intervals are being avoided, and inside those groups I also try to make it so it goes from avoiding more of the “dissonant” intervals (m2/m3/TT or steps 1 3 6) towards avoiding more “consonant” stuff (M2/M3/P4 or steps 2 4 5). I got bored with it for now, so only the first 2 group is ordered, but I’ll do the rest later. Maybe I should just leave out the groups with 4 and 5 avoided intervals altogether, since those avoid almost everything on even single-note chord inputs, also turning the knob would be more comfortable if there weren’t 64 separate states.

Reworked the panel too, it is getting slimmer which is weird. :slight_smile:

Here is an example:

  • blue is the chord that gets arpeggiated (only 3-note chords now)
  • red is the scale out, just to see what are the available notes
  • yellow is the note output

updated the builds

2 Likes

Here comes a fourth option, which is having two knobs, one for selecting the group of intervals and one for setting how many of them are active.

I came to this solution as the number of intervals you’d want to avoid depends mostly on how many notes your inputted “chords” have, so it feels better to have this setting separate.

There is also a “keep chord notes” toggle now, that can disable the chord notes in the output in case you wanted to avoid duplicating notes in your harmony.

Instead of ordering the intervals over the knob’s range by intuition I made up a rule to get an order procedurally.

more

Basically each interval gets a rating from -3 to +3 depending on how simple their “ideal” ratio is compared to a root note. Each permutation then gets rated by adding up the contained intervals’ rating (ties get solved by checking the sign of the highest rated value). Based on this they get spread around the “harmony” knob. This at least results in a symmetric order…

Reordered the panel to fit everything.

Overall I’m still not sure about this module: what it needs or if it is needed at all.

Here’s a self-playing patch to reflect on this feeling :wink:

download builds

4 Likes