New modules by CV funk

Oh, I did not see this before my latest post.

By golly, I think this is what I was asking for! I think I can make this work. I will play more with it tomorrow in my use case with Meander progressions and see what I can do and will let you know.

Thank you very much for adding these features for testing! :grinning:

It seems that even in the classical chord set, playing the module as you intended works very well and mostly sounds pleasant, but dim requires some judicious use.

Meander is playing STRINGS fine now. I need to add a BASICally script to translate the Meander chord type output to STRINGS row.

1 Like

looking good hope I get some more time to test tomorrow

think about the moving bass idea, opens up a whole nother dimension (modal voicings)

maybe you could have root note input and then a separate bass note input that overrides the root note output at end of chain , I dunno may be too off the wall for the guitar based thing, it could even be fun to walk the bass a little with that bass note input moving at a different pace, like a Joe Pass walking bass

but really most excellent stuff

Yes, I like the walking bass/slash chords idea. I use it a lot when I play too, but to implement this requires a bit of thinking and organizing. So, there is already a ROOT out (for patching to a sub or an organ sound), and with a bit of patching outside the module you can add/subtract semitones from that output to make a 7th string that walks… but that isn’t an integrated solution.

Here’s my plan for a fully integrated walking bassline function (I’m still not sure this is gonna be elegant enough to make the cut though):

0-The module interface needs to remain clean and intuitive. I probably need to code up some dynamic Panel re-labeling (similar to what I implemented to show the chord type changes), this could make the remapping of panel controls less confusing (as they would be marked when options are enabled). Then I need to enable detection of state changes so we only run these text display code when the options are swapped.

1-Adding another panel input is gonna be way way too cluttered, so instead let’s give a context menu option to remap the Whammy bar to be the input for walking bass lines. This doesn’t really lose functionality since there are all the per-note bends.

2-Currently, muted strings get mapped to the root note, this is so that if you don’t mute the strings you just get the same chord but with doubled up roots. But which root notes does the walking bass change? Just the lowest one I expect, so I’ll have to add an array to tell which string is the actual bass string for each chord shape. This way just the one note changes.

3-Detection for change in root note. It’ll need to detect if this input changes more than a semitone, and at that point change the chord form and send a trigger output. There’s already a process cycle for this at least.

4-Disable whammy bar and swap in the new bassline function dynamically. This involves setting up a context menu option for the feature and intercepting the whammy bar bend value before the output processing.

5-Json serialization of context menu state for the walking bassline. This way each instance of the module remembers the selected option upon patch loading.

6-Update the chord display to show the modified chord shape. Maybe we need something different to mark the modified part, like a hollow circle instead of filled one. I’ll have to edit chord_display.hpp to read the extra info.

7-Perhaps limit the range of the walking bass to something reasonable like -1…+4 frets. My hands just cannot reach further than that, and it would sound very unnatural to walk to the 12 fret playing an open E.

8-Should the walking bass instead walk up a typical chromatic scale pattern over multiple strings? That’s more like how I would do it. I would then need to define a chromatic scale pattern over all the strings and then count up semitones from the root note starting point. This gets a bit complicated.

I’m still on the fence about if it’s worth it… but I’ll keep thinking about it. I can certainly code all that up no problem, and probably pretty fast too, but I’m not sure that I perfectly like the implementation concept (esp step8). How would you like to use walking basslines and how would we sequence them in an intuitive way?

2 Likes

Aye Carumba that is quite a list of issues regarding a just ok idea.

Such a beauty module, yeah don’t add an input, the whammy input would fine with the menu option.

Would there be a way to display this new bass as a slash notation in the display or the display a more static affair? If not so be it, just would be so good to see that Am/G# to Am/G to Am/F# type thing go by as you change the bass.

I understand the idea of limiting the walking bass, but I would submit a fifth is not uncommon, So you can get a 1-3-5 type blues bassline, of course once you above that third you start looking for other voicings anyway. Maybe at least a third, up or down to get the line cliches and bluesy basslines going.

Of course I treat a lot of Slash chords like static type chords and don’t need to actually move like a bassline, just a variant bass note for many of the choices I have in mind. This could generate nearly walking lines by just choosing a passing chord that connects the important chords and continue choosing more and more passing chords as you see fit. Don’t know if that helps to visualize that.

I know little about the C++ core or the VCV specific structure to make any useful comments about implementation.

I hope I have been less burdensome than I feel at the moment, you already have a killer concept and complexity can drive a great module to be too fiddly to operate sometimes, clarity of function is ideal and jettison all this if it makes a mess.

1 Like

Hmm. Still thinking on it. I think I have to leave it for a future project, it’s a bit complicated to get it right. I also think this is probably trying to make the little guy do too many different things at once. In trying to mix a melodic pattern into a chord pattern, it gets confusing how I would trigger the strumming to properly emphasize the right string. And after playing around in this mindset I figured that basically what you would have to use to sequence the module bassline - you could just add to the ROOT output CV .

I made another demo patch that shows how you can patch a walking bassline, or walking melody or whatnot. Sounds a bit horror movie sorry, but I’m sure you can tame it with a better sequence!

CVfunk-Strings2_TestPatch2.vcv (4.8 KB)

See what you can do with using the ROOT output to sum with another sequencer, I think you can get a similar effect to what you want this way.

2 Likes

Can your modules be run from an external clock? Whereas I have Meander sending chord progression roots to STRINGS, I have so far been unable to synchronize. I see the SYNC input on HEX MOD but have not gotten a good result when trying to sync to an external clock or clock source. I see COLLATZ and suppose this is the means to sync to an external clock and it has a reset input. In general, how should COLLATZ be used to clock your sequencers? Or, is there another way? Thanks. P.S., I am reading the manual :wink:

Oh, yes HexMod is a bit funny. Sync will sync the clock to an external clock signal, but it doesn’t sync the phase. The top input will sync the phase of all outputs to the incoming pulse (then they spread back to whatever nodal pattern you set over about a couple seconds). If you want to perfectly match a clock, you need to patch your clock to one of the top inputs and Sync.

Also, if you right click on HexMod you can set the Clock setting to multiply/divide the incoming clock signal. I find this useful for chaining up a few of the HexMods at different multiples of a clock.

The Collatz module multiplies an incoming clock signal, so it can get pretty fast for sequencing unless you run it on a very slow clock signal. It won’t output unless it has a clock plugged in. Typically I plug the START and RESET together on Collatz so that it’ll cycle through its pulse patterns. When you hit start it samples the input to pick the starting number for the sequence. It’s more of a percussive burst trigger generator, very experimental (but surprisingly musical).

I wrote a BASICally script to translate the Meander chord output types to the STRINGS classic setting rows. So now STRINGS can play any Meander chord progression with the correct chord root and chord type (mostly). Meander supports 4 types of 7th chords. My BASICally script converts these to just the STRINGS 7 chord type.

This is all working well except for clock synchronization between Meander and your modules. I will continue working on that and eventually post a patch here demoing what I am doing.

I see that in the classic mode with v/oct chord input, for maj, min and dim chords are playing Eb when E is input and Bb when B is input. Is this intended behavior? Well, it is worse than that. I’m not seeing how the STRINGS playing chord is related to the CHORD v/oct input. I’m inputting Gmaj, Cmaj, and Dmin and getting Fmaj, Bbmaj and Gm.

So, obviously I am misunderstanding the v/oct translation to chord root. It is hard to see how I can play any chord root in the Diatonic scale since STRINGS only has 7 possible roots per row. This gets back to my concern on how to play any circle of 5ths chord without knowing the scale mode and root (key).

What STRINGS is playing sounds good. It is just not what I input.

Do you make any assumptions of key in STRINGS?

The current design maps your root input to one of the 7 top row buttons. And if it is not one of the options, then it transposes the next closest chord form into that key. So you should be able to get a 7th chord for all 12 root notes now (some will be capo +1). The key root is however defined by the top row. So G → Fmaj, for Row2 and G7 for Row1.

For Rows 2,3,4, the notes still map like on the button pad (with the applied capo settings). Thus, if you select A, and minor, you would get Dm since it works perfect with A maj as the root chord. If you pan the ROW setting you’ll still get the same A7, G, Dm, Gdim progression.

Under the suggested mapping you would instead get A7, A, Am, Adim when you pan ROW under the v/oct mode (it would snap to the nearest root each chord change). It would be less interesting to pan ROW, but it would allow you to directly select any chord this way. Let me know.

I appreciate the testing and input!

I’m going to have take a break from it. No matter what I do, I cannot input an arbitrary root and row or bank and get the expected chord out.

@k-chaffin try the new update.

I have to admit that this upgrade is for the better. Thanks for the push to make these improvements. I think this will be much more intuitive for anyone to sequence.

I think I fixed it for you in this update. Now you will be able to directly control each row with the keyboard. Make sure the CHORD input is set to zero if you are gonna sequence it, since it sums with the CV (not sure if that was contributing to the confusion or not).

Ah, I think I understand my confusion. There is no way to tell from the panel display what the final chord is. But if I look at the first 6 v/oct OUTs, I see the current notes. For example, in this image I input a C# from TWELVE-KEY and have row set to 2. The panel shows Cmaj but the output shows C#maj. Is there a better chord display module out there that can take 6 string guitar chords and display the chord name correctly? I had to pick and choose which output channels to connect to FOUR-VIEW in chord mode and note view to verify the chord notes, whereas Chinenual NoteMeter shows all of the notes.

Does it sound like I have reached enlightenment now? :wink:

Just underneath the C you can see the fingering pattern and a little number. This is the Capo setting. The number represents the number of semitones shifted (which looks like you are 2 octaves too low on the keys).

I had shifted octaves in my debugging. Now fixed. Do you think it would be possible to display the played chord name and type on the panel, perhaps in the output section?

Ah, so when I corrected the root octave, now the panel displays the correct chord and type?

Yes, for example, for F# input it will display the F chord shape and show +1 as the capo setting. the +1 just means sharp in this case.

image

Thanks. I was still misunderstanding how it works. The current song I am playing is showing the correct chords with no capo. So, it would still be cool to display the final chord notation root and type on the panel, perhaps in the output section.

My current test patch has Meander playing a Dorian A blues progression and both your arpeggiator patch and Squinktronics Arpeggiator are arping the STRINGS chords at different clock speeds. It sounds very good. Meander is also playing the bass line.