Kara-Moon Forum
March 28, 2024, 09:12:50 PM *
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: Extending DupRoot  (Read 9964 times)
alexis
Jr. Member
*
Posts: 62


« on: February 08, 2012, 06:44:30 PM »

Hello all,

Another request!
The command duproot allows to duplicate the root into another octave.
But it isn't cumulative. We sometimes need to duplicate the root into 2 octaves.
We could have something like :
Code:
DupRoot -1 -1 -1 -1
DupRoot 1 1 1 1
...to thicken a chord's root into the lower and the higher octave at the same time.

And we may also generalize the idea with another command:
Code:
DupTone -1 1 -1 3 -1 5 -1 1
The idea would be to specify which tone is duplicated.
In this example, we double into the lower octave respectively : the root, the third, the fifth and the root.

Is it hard to implement?
Thanks.

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


WWW
« Reply #1 on: February 08, 2012, 08:39:30 PM »

This is doable. But, I think that the usefulness is limited and will most likely cause more grief than joy Smiley

However, the simpler solution might be just to create a 2nd track with the same sequence, etc. So, if you have a piano seq you want to thicken up, try something like:

   Begin Chord-1
       Voice Piano1
       Octave 5
       Sequence {1 1 90 * }  // chords on 1,2,3,4
    End

   Begin Chord-2
       Voice Piano1
       Octave 6
      Sequence {....}
   End

One problem with this is that all notes might not be in time depending on the seq and random settings.

Another approach is to use polychords chords in the bars where you need the added boast. See the section of the manual for this. But, a simple example is to use the chord "C:+C" to get a 2 octave C chord. You could even do "C:C-:C+" and get a 3 octave version.

I will add the request to my todo. It would end up being a comma joined list: "duproot -1,1 1,2 -1 2" or something. No promises.

Let me know if the polychord stuff helps.

Logged

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


« Reply #2 on: February 10, 2012, 05:42:55 PM »

This is doable. But, I think that the usefulness is limited and will most likely cause more grief than joy Smiley
For me, it would bring more joy than grief Grin

Quote
However, the simpler solution might be just to create a 2nd track with the same sequence, etc.
Yes, I know. But it is a "waste" of tracks and not as consistent as everything in the same track.

Quote
One problem with this is that all notes might not be in time depending on the seq and random settings.
Sure.

Quote
Another approach is to use polychords chords in the bars where you need the added boast. See the section of the manual for this. But, a simple example is to use the chord "C:+C" to get a 2 octave C chord. You could even do "C:C-:C+" and get a 3 octave version.
Huuum. I read the manual again, and I wonder if there isn't a confusion here. Colon (":") seems used for barre in PLECTRUM tracks. And if you want to combine chord, you have to use a pipe ("|"). Did I miss something?

Here what I get in mma version 12.01a :
  • C:+C => error: Expecting integer after ':'
  • C|+C => works
  • C|+C|-C => error: Polychord marker '|' can only be used once.

Apparently, you can't combine more than 2 chords.
So, polychords don't solve my problem.
Besides, polychords are applied to every CHORD track. And I might want to thicken my chords for only one instrument.
Plus, I can't choose which tones to duplicate!

Quote
I will add the request to my todo.
Thanks!  Cheesy

Quote
It would end up being a comma joined list: "duproot -1,1 1,2 -1 2" or something. No promises.
dupTone would be also nice.

Quote
Let me know if the polychord stuff helps.
Not really. Sad

Thanks for your help, Bob.

Alexis
« Last Edit: February 10, 2012, 06:21:43 PM by alexis » Logged
bvdp
Kara-Moon Master
****
Posts: 1436


WWW
« Reply #3 on: February 10, 2012, 10:44:55 PM »

I don't see much difficulty in doing the multiple duproot stuff. Esp. now that I simplfied the Stretch commands and got them working Smiley Not that they are related ... but I though it'd be a lot more work.

Don't worry about "wasting" tracks. You really are not limited at all in the number of tracks you have. Yes, you only have 16 MIDI channels, but you can easily combine multiple MMA tracks onto 1 MIDI channel.

Quote
Huuum. I read the manual again, and I wonder if there isn't a confusion here. Colon (":") seems used for barre in PLECTRUM tracks. And if you want to combine chord, you have to use a pipe ("|"). Did I miss something?

No, you are correct. I just used the wrong symbol. It is a | for polychords.

Putting multiple chords together would be a minor mod. But, it's probably silly.

Quote
dupTone would be also nice.

One question on dupTone: Which tone is the 3rd? Do we select before any chord mangling (invert, voicing)?

I assume that you'd like to take, for example, the 3rd (or 5th, or whatever) and duplicate that in a higher/lower octave. Yeah, this is getting complicated Smiley Let me think on it.

In the meantime, have a look at BASS tracks as an option. In a bass track you can specify multiple notes:

       Bass Sequence {1 4 1 90; 1 4 -1 80; 1 4 +1 90}

And since bass lines share the chord notes, you should be okay with minor chords, etc. Also, Bass supports harmony which is even easier.

Now, you have me going and I'm wondering if simply extending harmony to work with chords would be an option? A couple of new methods for harmonizing chords would be needed ... but that isn't too hard Smiley

But, (any more buts and I'll think I'm on the beach), here's a simple solution. Let's say you want to duplicate the 3rd using chord.

       Begin Chord-1
           Channel 14
           Voice Piano1
            Voicing Mode=Optimal
           Octave 6
            Sequence {1 1 90 * 4}  // 1/4 notes on 1,2,3, and 4.
       End

       Begin Chord-2
           Channel 14
           Voice Piano1
           Voicing None   // not needed since this is the default
           Octave 5
           Sequence {1 1 0 90 0 * 4} 3rd only on 1,2,3 and 4
      End

In the last def we have used chord volumes to enable ONLY the 3rd (2nd note of the chord). Note we do not use voicing on the chord-2 since the volume stuff in done after chord mangling, so it might be the wrong note.

« Last Edit: February 10, 2012, 10:47:07 PM by bvdp » Logged

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


WWW
« Reply #4 on: February 11, 2012, 05:32:03 PM »

I've been working on the duproot code.

First off, the way it was generated wrong notes, esp. if transpose was on. Got that fixed.

Second, in my earlier message I should have said that the right way to share midi channels is with the CHSHARE command.

Third, I've modified the duproot code so that it now uses the HarmonyVolume setting for the additional note(s). Before it used a hardcoded 50% of the chord volume. So, now you can even make the dup notes louder if you want.

So, let me test this a bit and I'll get a new MMA up later this week. Yes, with the STRETCH stuff as well (if you don't already know, I'm quite excited about this!).

For DupTone ... I still think that you should use a bass track. Try it and let me know Smiley
Logged

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


WWW
« Reply #5 on: February 11, 2012, 08:46:34 PM »

Here is a very simple example of how to use a bass track to duplicate a select number of tones from a chord track:

Begin Chord
  Voice piano1
  Octave 6
  Sequence {1 1 90 * 4}
End

Begin Bass-dupchord
  ChShare Chord
  Octave 5
  Sequence { 1 1 1- 90 * 4; 1 1 5- 90 * 4}
End

One nice thing about this is that you could set things up to only duplicate the 5ths on beats 1 and 3, etc.

Hope this helps.
Logged

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


« Reply #6 on: February 11, 2012, 09:33:32 PM »

I've been working on the duproot code.

Third, I've modified the duproot code so that it now uses the HarmonyVolume setting for the additional note(s). Before it used a hardcoded 50% of the chord volume. So, now you can even make the dup notes louder if you want.
Great!

Quote
Second, in my earlier message I should have said that the right way to share midi channels is with the CHSHARE command.
I understand this chshare command works for different track types. But it doesn't work if you have the same instrument in the same track type.
This doesn't work for me, for instance (it creates only one track, and only one chord line):

Code:
Begin Chord-1
   Voice Piano1
   Octave 6
Sequence {1 1 90 * 4}  // 1/4 notes on 1,2,3, and 4.
End

Begin Chord-2
   Voice Piano1
   Octave 5
   Sequence {1 1 80 90 70 * 4}
End

Chord-2 ChShare Chord-1

And I'd like MMA to assign only one MIDI channel for the 2 tracks without having to force the MIDI channel number.
Can I do that?


Quote
So, let me test this a bit and I'll get a new MMA up later this week. Yes, with the STRETCH stuff as well (if you don't already know, I'm quite excited about this!).
I'm quite impatient to try it as well Smiley

Quote
For DupTone ... I still think that you should use a bass track. Try it and let me know Smiley
Well, Bob, I thought my DupTone request wasn't very difficult to implement. But it is apparently.
I think the bass track and the sequence tricks are good enough for me. If you can do DupRoot cumulative and enhance the CHSHARE command, it's okay.

Cheers,

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


WWW
« Reply #7 on: February 11, 2012, 10:47:37 PM »



Quote
I understand this chshare command works for different track types. But it doesn't work if you have the same instrument in the same track type.
This doesn't work for me, for instance (it creates only one track, and only one chord line):

Oppps, I think there is a bug somewhere. Let me look at this. Quick testing shows that the 2nd chord track is being ignored (or something).


Quote
Well, Bob, I thought my DupTone request wasn't very difficult to implement. But it is apparently.
I think the bass track and the sequence tricks are good enough for me. If you can do DupRoot cumulative and enhance the CHSHARE command, it's okay.

Not that it's terribly hard to duplicate a 3rd or whatever .. but it gets harder and harder to come up with a reasonable user interface.

We could do:

     DupTone (DupPitch?)   5,-1  ...

and then the 5th would be added at a lower octave.

But, you might want both the 3rd and 5th? So ... DupTone 5&3,-1?? Hmmm, 1:3:5,-1,-2

which would do the 1, 3 and 5 both down and octave. But, what if you want the 5th down 1 and 2 and the 3rd up one ... just gets complicated.

The bass route makes it much simpler Smiley
Logged

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


WWW
« Reply #8 on: February 11, 2012, 11:04:12 PM »

That was simple Smiley

For some dumb reason which probably made sense when I did it (or not), the duproot code assigns the voice and the octave of the 1st track to the 2nd. Copying the voice makes sense since it'll be using that anyway. Copying the octave makes no sense at all Smiley

So, for now you can reset the octave for the 2nd track after doing the chshare. Or modify pat.py around line 424 and out-comment the line:

    self.octave = gbl.tnames[sc].octave[:]

Logged

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


« Reply #9 on: February 12, 2012, 05:58:09 PM »

Quote
Oppps, I think there is a bug somewhere. Let me look at this. Quick testing shows that the 2nd chord track is being ignored (or something).

So, for now you can reset the octave for the 2nd track after doing the chshare. Or modify pat.py around line 424 and out-comment the line:
Yeaaah, it works! And I have everything in one track only. Nice! I have just to wait for next version to get things working without "tweaking".


Quote
Not that it's terribly hard to duplicate a 3rd or whatever
Nice, then. Smiley

Quote
.. but it gets harder and harder to come up with a reasonable user interface.
No, don't really think so. See below.

Quote
But, you might want both the 3rd and 5th? So ... DupTone 5&3,-1?? Hmmm, 1:3:5,-1,-2
which would do the 1, 3 and 5 both down and octave. But, what if you want the 5th down 1 and 2 and the 3rd up one ... just gets complicated.

Actually, my idea was to have something cumulative. To get was you want in your example, you would write :
Code:
DupPitch 3 1
DupPitch 5 -1
DupPitch 5 -2
IMHO, it isn't an issue to stack DupPitch commands.


Thanks for investigating anyway.

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


WWW
« Reply #10 on: February 12, 2012, 06:50:32 PM »

Actually, my idea was to have something cumulative. To get was you want in your example, you would write :
Code:
DupPitch 3 1
DupPitch 5 -1
DupPitch 5 -2
IMHO, it isn't an issue to stack DupPitch commands.

Except that it breaks all the current conventions in mma ... ie, a new directive overrides the old one.

But, let me get the current version out and I'll give this some more thought.
Logged

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


« Reply #11 on: February 12, 2012, 10:22:06 PM »

Quote
Except that it breaks all the current conventions in mma ... ie, a new directive overrides the old one.
I see. If it breaks a paradgim in MMA, then it shouldn't be implemented. Sad
So, forget it.
Existing workarounds suffice.

Alexis
Logged
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.052 seconds with 19 queries.