Saturday, May 6, 2017

Neat use of the AFTER command

I wanted to play a nice little song "Maria Bonita" written in the 1940s by Agustin Lara. Copied out a chart from a fake book and then transfered this to MMA. Simple ... until I realized that the time signature was 6/8. Ouch ... and this is not really the "normal" duple time; it's a waltz. So, each bar sounds like 2 bars of 3/4.

What to do?

A first I was going to write a new LatinWaltz groove. But, I'm feeling a bit lazy today and figured there should be an easier way. Yeah, right.

The LatinWaltz groove really doesn't work for 6/8. The timing is just wrong. Hmmm, off to work:

1. In the MMA file split each bar in two. Essentially, we now have a 3/4 file. A minor result of this is that I now have bars which look like:

1  Am
    Fm
2  Gm
    Am
 
I don't like un-numbered bars, but going with 1,2,3,etc. isn't right either. So, we'll leave the un-numbered alone.

The 3/4 groove works okay. But, it's not quite right. So, a bit of playing around.

2. To make the difference between the first and second bars in each pair I created a little sequence which sounds a triangle at the start of the odd numbered bars:

Begin Drum-Solo-Triangle
     Sticky On
     Tone OpenTriangle
     Volume m
     Sequence D1 z
End
Cool, that was easy.

3.  Now, I found the bass beats at the start of each bar needed to lighten up on the even numbered bars. So, right before bar one I did:
Begin After Repeat=2   // for bars 3,5,7...
   Bass Accent    /// no accent
   Walk Accent
End
and, right after bar one (right before the original 2nd half of the bar):

Begin After Repeat=2   // This is done on bars 2,4,6
   Bass Accent 1 -40
   Walk Accent 1 -40
End
And ... that's it.

Only problem is that bar 1/2 still has the original accents. I could play around and fix that, but it's not worthwhile.

I did learn something: AFTER is really neat and powerful!

No comments:

Post a Comment

Truncate

I just found a minor bug in the TRUNCATE code. It didn't accept an integer argument for the Side= option. The underlying code all worked...