Kara-Moon Forum
April 25, 2024, 02:12:42 AM *
Welcome, Guest. Please login or register.

Login with username, password and session length
News: You can go back to the main site here: Kara-Moon site
 
   Home   Help Search Login Register  
Pages: [1]
  Print  
Author Topic: Handling harmonic rhythm changes in MMA  (Read 10355 times)
alexis
Jr. Member
*
Posts: 62


« on: June 29, 2012, 12:15:48 PM »

Hello all,

No, no, Bob, take it easy: no feature request here! I'd just like to ask something Smiley

It happens sometimes that harmonic rhythm changes in a song.
For instance, it's basically 2 chords per bar with 4/4 time sig, but it may switch to 1 chord per bar (often at end of a phrase).

I was thinking about the most elegant way to handle this in MMA.
I simply use 2 different grooves, which differ only by their sequence (please see attached files).
But isn't there something easier/more straightforward I can do in MMA?

Thanks,

Alexis

* HarmonicRhythm.mma (0.57 KB - downloaded 378 times.)
* HarmonicRhythm.mid (0.23 KB - downloaded 480 times.)
Logged
bvdp
Kara-Moon Master
****
Posts: 1437


WWW
« Reply #1 on: June 29, 2012, 04:06:57 PM »

Sure there is Smiley

Most of the time you will find that a song is constructed with 4 or 8 bar phrases. And (assume 4 bar) you'll want your rhythm to be something like P1 P1 P1 P2.

And, that is why, most of MMA's setting are for the sequence size you set. So, set the sequence size to 4 (SeqSize 4) and have a set of patterns to follow (this applies to most things like octave, articulate, etc). So, we end up with a pattern like (and this is a silly example):

   SeqSize 4
    Begin Chord
       Octave 4 / / 5    /// so the 4th bar is "higher" sounding
       Articulate  90 / / 120  /// and the 4 bar is most sustained
       etc ...   /// not a valid mma command, but it should be
       Sequence   P1 / / P2   
     End

Now, if the sequence of the pattern and song don't match up,you can resync it with the SEQ command.

Am I close to solving the problem here?
Logged

My online life: http://www.mellowood.ca
alexis
Jr. Member
*
Posts: 62


« Reply #2 on: July 03, 2012, 03:46:36 PM »

Am I close to solving the problem here?
Closer, yes, since your approach prevents from switching grooves among data.
It's more elegant, for sure.

But... but we're assuming harmonic rhythm (let's abbreviate it HR) is part of the groove, here.
If HR changes in data, you have to modify the groove.
Groove and data are highly coupled here.
If you think HR is part of the groove, it's fine.
But I do think HR is rather part of data.
...and I have an idea to handle HR another way. But, yes, this is another feature request! Embarrassed

Bob, you may be saturated or exhausted with my demands.
Still, are you interested in reading this idea?

Best,

Alexis
Logged
bvdp
Kara-Moon Master
****
Posts: 1437


WWW
« Reply #3 on: July 03, 2012, 07:03:40 PM »

I take it that you are suggesting something like this:

You have a set of grooves. Let's say it's a bossanova and you have P1, P2and P3 (just 3 to keep it simple).

Now, in your song you decide that for bars with major and minor chords you want a P1, augmented a P2 and 7ths a P3 (overly simplistic). I don't see how a machine can figure that out Smiley What if you have both in the same bar? Etc.

Did I mention that you can always set a SEQ to get the proper part of the groove for a bar?

I sort of base all this on my learning to play with auto-accomp on a old (1970s?) Yamaha organ Smiley
Logged

My online life: http://www.mellowood.ca
alexis
Jr. Member
*
Posts: 62


« Reply #4 on: July 06, 2012, 04:20:14 PM »

Now, in your song you decide that for bars with major and minor chords you want a P1, augmented a P2 and 7ths a P3 (overly simplistic). I don't see how a machine can figure that out Smiley What if you have both in the same bar? Etc.
I guess I wasn't very clear, because what you're describing isn't what I have in my (somewhat twisted  Smiley) mind.
Out of question to let machine work here, everything is human.

Please have a look to the attached sample file.
Propositions are marked with a special comment: "// ***"

Here is the concept:
I consider the default HR is 1 (Chords change every beat).
User may change HR in data like this :
Code:
HR2 C / G /
The data format permits to specify a new HR (here, it has been changed to 2)

User may also change default HR with a new command:
Code:
SetDefaultHR 2

MMA with then switch Groove according to current HR.
How do we associate a groove to a HR?
Like this:
Code:
DefGroove MyGroove-HR4
The "HR" suffix is of course optional. When no HR is precised, the groove is affected to default HR.

Here we go. The good side of this formalism is that nothing preexisting is broken.

Hope I'm clearer this time... Smiley

Best,

Alexis



* HarmonicRhythmProposal.mma (0.82 KB - downloaded 404 times.)
Logged
bvdp
Kara-Moon Master
****
Posts: 1437


WWW
« Reply #5 on: July 06, 2012, 05:15:39 PM »

Okay ... I think I may be seeing a little into your mind. Not a pretty sight Smiley

But, I think that what you are trying to do is to combine chord (data) lines and groove changes into the same line. So, assuming we have 2 grooves: G1 and G2 with 1 and 2 beats per bar ... and i suppose we could have a bunch of grooves with an indicator field in each setting the number of beats ... ummm, something like:

1Beat - g1 Gsus1
2Beat - g2 Gsus2 GplusSus2

Or perhaps ...

....  a 1 beat per bar groove
Begin Chord ...
Begin Bass
SetHr 1
defgroove G1
....  a 2 beat per bar groove
Begin Chord ...
Begin Bass
SetHr 2
defgroove SillyName


etc ... but that's a minor issue Smiley

Now, assuming a short song, we could right now do:

Groove G1   /// set the 1 per bar groove
C  /  E
C  /  F
Groove SillyName  /// the 2 per bar groove
G7
D7
Groove G1  /// and back, etc.

Now, what you want is something like:

Set to use grooves from the "G" set (whatever that is).

HR1  C / E
     C / F
Hr2  G7
     D7
HR1
     ....

Again, you and I might be in different worlds on this Smiley But am I getting closer?

BTW, I'm not a fan right now of combining the HR stuff into the data lines. I could be persuaded, I suppose.

So, we end up with a "rhythm feeling" field in each groove and a mechanism to set up in the song file the current "feel". You could have a "sus", "plus", "harsh", etc groove defined for 1-per-bar, 2-per-bar, 4-per-bar, etc. Set a section of the song as "harsh" and then toogle using the HR thingie depending on the "feel". Close?

Of course, the other (and it's in the you can do this right now department) method is:

   1. Create 3 groove files. Have the same groove names in each, but have each with a different "feel".
   2. In you song file, simple do a USE when switching.

So, you song file ends up looking like:

Use Bossa1
...
Use Bossa2
....
Use Bossa1
...

Huh

Essentially, you are getting closer to the naming used by the Yamaha styles. They all have names like INTRO-A, MAIN-A, MAIN-B, etc. The nice thing about this is that one can set the grooves in a song file and do a "USE Bossanova" for a 1st try. Now, you decide that it's a ChaCha ... so you leave all the groove names in the file and simply change the header in the song to  "Use ChaCha".

I started, at one point, to set up existing files to do this. It's simple, really. Just do a bunch of alias settings at the bottom of the groove file. Have a look at son.mma in the stdlib. I stopped this, mainly due to the way mma can handle an unlimited number of groove names, etc and couldn't figure out why I'd limit it to the 16 (?) names permitted in the yamaha set.

Again, is any of this bs I'm spewing here close to what you are meaning?


   
Logged

My online life: http://www.mellowood.ca
alexis
Jr. Member
*
Posts: 62


« Reply #6 on: July 09, 2012, 11:54:59 AM »

Now, what you want is something like:

Set to use grooves from the "G" set (whatever that is).

HR1  C / E
     C / F
Hr2  G7
     D7
HR1
     ....

Again, you and I might be in different worlds on this Smiley But am I getting closer?
Yes, definitely. Smiley

BTW, I'm not a fan right now of combining the HR stuff into the data lines.
This is the key. You might decide that inserting HR (optional, I mention again)
stuff in data line isn't worth it, since it'd load down MMA notation.
And I recognize this is highly debatable!

Again, is any of this bs I'm spewing here close to what you are meaning?
The Yamaha style stuff you've described isn't very conceptually different than doing:
Code:
Groove Bossa1
....
Groove Bossa2
....
Groove Bossa3
...
...or is there a specific benefit I can't see?

Best,

Alexis
Logged
bvdp
Kara-Moon Master
****
Posts: 1437


WWW
« Reply #7 on: July 09, 2012, 04:14:02 PM »


The Yamaha style stuff you've described isn't very conceptually different than doing:
Code:
Groove Bossa1
....
Groove Bossa2
....
Groove Bossa3
...
...or is there a specific benefit I can't see?


Yes, there is. By setting up a standard set of names you can set a section of the song as "sustained", "1", "2" or whatever. So far, same as the way MMA does things.

But, if the names are standardized then you can simply load a different file and retain the changes. Mostly, I think this applies when figuring out what style to use. You could set the names in the file, then try with "chacha" ... doesn't work? Try with "rhumba", etc.

It also makes the database management issues easier to deal with.

But, it limits things and, honestly, that's just not the way MMA works Smiley

Logged

My online life: http://www.mellowood.ca
bvdp
Kara-Moon Master
****
Posts: 1437


WWW
« Reply #8 on: July 09, 2012, 04:19:32 PM »


BTW, I'm not a fan right now of combining the HR stuff into the data lines.
This is the key. You might decide that inserting HR (optional, I mention again)
stuff in data line isn't worth it, since it'd load down MMA notation.
And I recognize this is highly debatable!

So, if the HR changes are not in the data lines ... what is the point? Can't you just do groove changes?

Oh, maybe I'm seeing something ...

You set different grooves, and label each with a HR value ... 1, 2, 3, etc to the bar.

Now, you select a "sustained" groove. And if you want to switch between sustain-2-to-the-bar and sustain-4-to-the-bar you only need to put in a marker in the song file (HR2 or HR4) and things switch to the right "sustain" version. I suppose the SEQ point would stay the same as the current one (well, incremented by 1).

Would this mean that you would need as many versions of each groove as there are HR settings? Reason for the question: What happens if I set HR4 in a sustained set but don't have an 4-to-the-bar sustained?
Logged

My online life: http://www.mellowood.ca
alexis
Jr. Member
*
Posts: 62


« Reply #9 on: July 10, 2012, 01:02:37 PM »

You set different grooves, and label each with a HR value ... 1, 2, 3, etc to the bar.
Yes.

Now, you select a "sustained" groove. And if you want to switch between sustain-2-to-the-bar and sustain-4-to-the-bar you only need to put in a marker in the song file (HR2 or HR4) and things switch to the right "sustain" version. I suppose the SEQ point would stay the same as the current one (well, incremented by 1).
Yesssss! Exactly.

Quote
Would this mean that you would need as many versions of each groove as there are HR settings?
Idealy, yes. But this wouldn't be compulsory.

Quote
Reason for the question: What happens if I set HR4 in a sustained set but don't have an 4-to-the-bar sustained?
Then MMA would fall back on default groove.

Without precision, default HR would be 1.
and DefGroove myGroove <=> DefGroove myGroove-HR1

You could define local default HR with a command:
Quote
SetDefaultHR 2
In this case, every groove would me associated with HR2.
and DefGroove myGroove <=> DefGroove myGroove-HR2

For an alternate syntax, here is a proposal:
Simply:
Code:
DefGroove myGroove-1

And in data, instead of
Code:
HR2 C G C G

we could use:
Code:
"2" C G C G 

Alexis

Logged
alexis
Jr. Member
*
Posts: 62


« Reply #10 on: July 10, 2012, 01:05:59 PM »

Quote
Yes, there is. By setting up a standard set of names you can set a section of the song as "sustained", "1", "2" or whatever. So far, same as the way MMA does things.

But, if the names are standardized then you can simply load a different file and retain the changes. Mostly, I think this applies when figuring out what style to use. You could set the names in the file, then try with "chacha" ... doesn't work? Try with "rhumba", etc.

It also makes the database management issues easier to deal with.
Yes, I had understood. Ingenious stuff.
But this doesn't help us for HR management, does it?
Logged
bvdp
Kara-Moon Master
****
Posts: 1437


WWW
« Reply #11 on: July 11, 2012, 02:32:45 AM »

I see some nice things coming from this idea.

I do need to think a lot about the syntax issues before I start to code. It all has to be lose enough to be robust and not crash/burn when things are improperly  set up, etc.

I want to finish off the enhancements to the solo/harmony tracks first. Alexis had a good idea that it'd be nice to import existing midi tracks to sequences. I think this would be fairly simple to do, esp. since we can already import them into a solo riff.

So, let me get that working and get a beta up for that.

One thing at a time Smiley

Keep the wonderful ideas coming!
Logged

My online life: http://www.mellowood.ca
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2015, Simple Machines Valid XHTML 1.0! Valid CSS!
Page created in 0.06 seconds with 19 queries.