Kara-Moon Forum

Developers & Technology => Musical MIDI Accompaniment (MMA) => Topic started by: sciurius on April 08, 2020, 08:49:21 AM



Title: Chord specific plectrum patterns
Post by: sciurius on April 08, 2020, 08:49:21 AM
We can already define plectrum chord shapes, what we need now is chord sequences.

In typical fingerpicking settings, the patterns depends on the chords. For example a simple pick:

Code:
Plectrum Sequence {
            1.0    0   5:90;
            2.0    0   3:70;
            3.0    0   2:70;
            4.0    0   4:80;
            5.0    0   3:70;
            6.0    0   2:70;
    }

This uses the 5th string (low A string) as bass and is applicable for chords that have their bass notes on this string, e.g. A, Am, C, B, and so on.

For chords with bass on the 6th string (E, F, G, ...) the pattern would be:

Code:
Plectrum Sequence {
            1.0    0   6:90;
            2.0    0   3:70;
            3.0    0   2:70;
            4.0    0   4:80;
            5.0    0   3:70;
            6.0    0   2:70;
    }

Would it be feasible to have something similar to

Code:
Plectrum ChordSequence Am { 1 0 5:90; 2 0 4:80; ... }
Plectrum ChordSequence C  { 1 0 5:90; 2 0 4:80; ... }
Plectrum ChordSequence Em { 1 0 6:90; 2 0 4:80; ... }
...

So that you can write

Code:
Groove Whatever
  1    Am
  2    C
...

and have each chord played using the defined shape and sequence.

What do you think?


Title: Re: Chord specific plectrum patterns
Post by: bvdp on April 08, 2020, 05:03:55 PM
So, what you are suggesting is a command which lets you define a different sequence depending on the chord being used.

Sure, it'd be possible ... but since there are about 100 different chords defined by MMA, that means you'd really need about 100 different sequence patterns to do it properly ... and then you'd really need to multiply that by 12 for each possible key ... and then by another 3-7 for each octave. Now, you can argue "but I don't use all those chords" and that's legit ... but the minute you do something with you limited chord set the next fellow or your next song will come along needing "just one more". And, that's all fine 'cause you're suggesting to do this in a user-mode type of situation. Right?

That's why MMA relies on voicing for it's chord patterns so that the different notes can be munged into something that "probably sounds good" :)

I'm not closing the door on this, at all. But: That is why plugins exist! It should be relatively easy to create a plugin:

   - call it PlectrumSequence
   - load it with Plugin @PlectrumSequence
   - In your MMA code have something like this:  @PatternSequence Am  /  Bm
   - The plugin would read that and return the Am and Bm as a chord line for other tracks to use. Internally it would need to set up a call to create the needed internal sequence
   - Or, in the about you might just set it up as a Riff?

I'm flying on no coffee right now, so I have no idea what might or might not work. But, when we get into real specific stuff like this request I'm reminded that this is why the plugin idea was created.

Now, it might not be feasible to do this with a plugin. Does that mean we need to change internal MMA define behaviour and add more commands ... or do we need to fix or expand the way plugins work?


Title: Re: Chord specific plectrum patterns
Post by: bvdp on April 09, 2020, 03:31:53 AM
Just a little comment to add to the discussion :) Would using inversions of your chords help in achieving the sound you want?BTW, it is possible to specify different chords for different tracks. So assuming that you have a Chord and Plectrum track you could do something like:

    C / Am   /// set the chord track chord
    Plectrum Chords C / Am<2  /// and the plectrum chord ... the Am is has the C in root position

(And, yes, I know exactly what you are asking ... just want to avoid a lot of work!)


Title: Re: Chord specific plectrum patterns
Post by: sciurius on April 09, 2020, 06:06:54 AM
LMAO!

All I was thinking is a little lookup table that one (=me, not you) can populate with plectrum pattern overrides for selected chords...
It is quite similar to Plectrum Shape, which is a little lookup table that one can populate with plectrum shape overrides for selected chords.


Title: Re: Chord specific plectrum patterns
Post by: bvdp on April 09, 2020, 04:33:50 PM
Yeah, I know. It is on my list. But I'd really like to come up with more generic solutions to this. Have you tried using chord rotations?


Title: Re: Chord specific plectrum patterns
Post by: sciurius on April 09, 2020, 05:20:46 PM
Chord rotations are not related to this.

For finger picking guitar, I must be able to totally control what strings are plucked, when, how strong, and at what position. Plectrum Sequence in combination with Plectrum Shape gives me all the power I need. It is just tedious to write.

Alternative one: use different Grooves (now we solved the sounding issues):

Code:
Groove PluckWithARoot
  10    Am
  11    C
Groove PluckWithDRoot
  12    D
Groove PluckWithERoot
  13    F

This is very hard to combine with ordinary use of Grooves for e.g. piano or organ.

Alternative two: override the Plectrum Sequence:

Code:
Plectrum Sequence { 1 0 5:90; 2 0 4:80; ... }
  10    Am
  11    C
Plectrum Sequence { 1 0 4:90; 2 0 4:80; ... }
  12    D
Plectrum Sequence { 1 0 6:90; 2 0 4:80; ... }
  13    F

Even with macros (either approach)

Code:
$PluckWithARoot
  10    Am
  11    C
$PluckWithDRoot
  12    D
$PluckWithERoot
  13    F

Since, and that may sound alien to non-fingerpickers, the picking pattern is related to the chord, a simple lookup table to associate a picking pattern with a chord would make this easier and more elegant.

But it is not an urgent issue since I can already do what I want anyway.


Title: Re: Chord specific plectrum patterns
Post by: bvdp on April 10, 2020, 04:55:40 PM
Like I said, it's on the list.

Another suggestion ... if you really need to control each and every note plucked, then perhaps you should be looking at solo tracks which let you set lots of stuff for every note. Only "problem" is that there is no indefinite ringing with a solo.


Title: Re: Chord specific plectrum patterns
Post by: sciurius on April 10, 2020, 05:12:38 PM
... then perhaps you should be looking at solo tracks which let you set lots of stuff for every note. Only "problem" is that there is no indefinite ringing with a solo.

Which is a showstopper.

Besides, it would require explicit coding of each and every chord in each and every measure which is a bit too much ;) .

But there are always more ways to obtain a specific result, and MMA is awesome.


Title: Re: Chord specific plectrum patterns
Post by: bvdp on April 10, 2020, 11:01:58 PM
Yeah, I figured that Solo would present some "problems".

But, I see a problem with your chord specific sequence definitions ... maybe you've see it as well? What happens when you have more than one chord in a bar ... That would mean that you'd need to set up a sequence for "Am", a different one for "Am / C7 /", etc.

So, it's getting more complicated?  ???

So, maybe having a Riff-like substitution that would rely on a macro? So, you could define the macro $Am to pluck a specific set of strings ... then in your music line you'd have "C Em $Am C@4" ....  I'm showing this with a specific position for the final chord since the $Am would probably not be seen by the chord parser??? This is not a suggestion, just some ideas.


Title: Re: Chord specific plectrum patterns
Post by: bvdp on April 11, 2020, 09:08:12 PM
How about using riffs created via macros?

Code:
Mset Aminor
  Plectrum Sequence {
    1.0    0   5:90;
    2.0    0   3:70;
}
MsetEnd

Plectrum Sequence {
   1.0    0   6:90;
   2.0    0   3:70;
}

Plectrum Voice JazzGuitar

C          // chord with default pattern
$Aminor 
Am       // Am chord with "special" pattern
Am       // Am chord with default

Should do what you want without all the grooves you are using now. Plus, this way you can continue with the other tracks in the current groove. You could even put the chord right in the MSET if you want :)


Title: Re: Chord specific plectrum patterns
Post by: sciurius on April 12, 2020, 12:40:54 PM
But, I see a problem with your chord specific sequence definitions ... maybe you've see it as well? What happens when you have more than one chord in a bar ... That would mean that you'd need to set up a sequence for "Am", a different one for "Am / C7 /", etc.

As a typical example, a 6/8 song plays strings 6-3-2-4-3-2 for E and G and 5-3-2-4-3-2 for Am and C. So I have Grooves that define these patterns. For the cases where I need to change chord halfway I have Grooves that are half of these, 3/8.

Code:
Groove G6E
   1   E                // 6-3-2-4-3-2
Groove G3E
   2   G                // 6-3-2
Groove G3A
   3   Am               // 5-3-2
Groove G6A
   4   C                // 5-3-2-4-3-2

This is easier than defining 6-beat grooves for all combinations (G6EE, G6EA, G6AE. G6EE, ...).

Quote
So, it's getting more complicated?

Hardly.



Title: Re: Chord specific plectrum patterns
Post by: sciurius on April 12, 2020, 12:42:41 PM
How about using riffs created via macros?

Yes, that is what I mentioned in reply #5.


Title: Re: Chord specific plectrum patterns
Post by: bvdp on April 12, 2020, 05:00:06 PM
I'm just trying to help here by making the solution more encompassing ... esp. if you add in other tracks other than a single guitar to the mix. Using a RIFF lets you modify just the Plectrum track and leaves the others (if any) alone.

As for multiple chords per bar ... instead of switching timesigs, you can also use truncate. Nice thing about that is the resulting Midi file will not be cluttered with different time sig markers. Again, no big deal if you're just doing one instrument.

Glad to hear that you are coping with the limitations of the program :) I wish I were doing as well, mentally, with the limitations of being under a "lockdown" here. Yeah, I've got a large property and house ... but it's the knowledge that I'm not to go anywhere other than a brief grocery run that's starting to wear me down. Oh well, this too will pass :)