Kara-Moon Forum
April 20, 2024, 05:23:53 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] 2
  Print  
Author Topic: A suggestion to MMA easer to use  (Read 13488 times)
louisjb
Jr. Member
*
Posts: 16


« on: August 09, 2010, 10:56:25 PM »

Hi Bob + everyone,

I have been using MMA for some time now with mixed results. However there is a significant learning curve to using MMA.

I never been able to make my own arrangements of music before and MMA is helping me with that. However what I want to do next is to use a library musical PARTS as easily as I can use Bob's library of musical GROOVEs.

For example look at AmazingGrace on this page http://pianobooster.sourceforge.net/music.html

http://pianobooster.sourceforge.net/MusicSource/AmazingGrace.mma

Now countrywaltz is made up of the following parts.

A Base part, a Chord part, a Bass-Chord part and Drum Drum-Kick part

now lets assume that the following parts "Base-CountryWaltz", "Chord-CountryWaltz", "Bass-ChordCountryWaltz", "Drum-CountryWaltz", "Drum-KickCountryWaltz" have already been defined.
(perhaps these could defined using a new BeginPart keyword)

Then all we have to do to build up the countrywaltz GROOVE one would write the following

SeqClear
Time 3
Timesig 3 4
PART Base-CountryWaltz
PART Chord-CountryWaltz
PART Bass-ChordCountryWaltz
PART Drum-CountryWaltz
PART Drum-KickCountryWaltz
DefGroove CountryWaltz

Now what I would really like to do is define my own custom countrywaltz groove as follows

SeqClear
Time 3
Timesig 3 4
PART Base-CountryWaltz Voice=SynthBass1 Volume=mp
//PART Base-JazzWaltz Voice=SynthBass1 Volume=mp
PART Chord-CountryWaltz Voice=Banjo Volume=ff
PART Bass-ChordCountryWaltz
PART Drum-CountryWaltz
PART Drum-KickCountryWaltz
DefGroove CustomCountryWaltz

I have just changed the standard volume and the voice used on the Base and the Chord parts of country waltz. If PART ran to the end of the line then I could easily comment it out and a replace that part with a totally different part from a different groove.

This is just a suggestion.  May be there is a way to this already. What do you think?

Thanks

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


WWW
« Reply #1 on: August 09, 2010, 11:33:32 PM »

Hi Bob + everyone,

I have been using MMA for some time now with mixed results. However there is a significant learning curve to using MMA.

Yeah, there are too many options. Sorry Smiley

Quote
I never been able to make my own arrangements of music before and MMA is helping me with that. However what I want to do next is to use a library musical PARTS as easily as I can use Bob's library of musical GROOVEs.

Okay, I seem to be missing a concept here ... I think (and I could be wrong) that we're able to do this already.

<snip>
Quote
PART Base-CountryWaltz
PART Chord-CountryWaltz
PART Bass-ChordCountryWaltz
PART Drum-CountryWaltz
PART Drum-KickCountryWaltz
DefGroove CountryWaltz

I _think_ you can do this already with existing groove notation. So, to create a modified "Countrywaltz" you can do:

// make the existing groove active
// and load all the grooves in the countrywaltz file into memory.

Groove Countrywaltz 

// now modify the bass line

Begin Bass
  Sequence ...
  Octave ..
  Voice ..
End

// And bring in the strings from another groove

Chord-Strings Groove CountryWaltzSus

// Create a new/modified groove                             

DefGroove CountryWaltz

I think the key here is the "Trackname Groove existing-groove-name" option.

I don't see making multiple commands on a line at this point. If nothing else, I don't like the appearance of (note to mention the fact that I'd need to do a lot of parser rewriting and probably end up with version clash):

       Bass  Voice=xxx Sequence={zzz} Rtime=44

I just find it ends up looking like old-time basic Smiley The way it is right now is certainly more verbose. Yes, being able to out-comment an entire set of changes would be handy. Not sure if there an easy solution to this?

But, really, the solution is to create your groove files as LIBRARY files. Not as user stuff in a song file. At which point it really doesn't matter much if you have long or short lines, etc. It's all hidden from the user (a good thing). If you don't like the distro files you are encouraged to write you own! Yes, encouraged! And please share. I'm the first to admit that some (all?) of the existing lib is not-the-best.

Now, thinking a bit more ... you might have point in that as we create/define tracks they get amalgamated. So, if you create 3 drum tracks, a bass and a chord you might find it useful to have the drum tracks under 1 name (ie, cwaltz-basedrum, cwaltz-bassbass, etc) and then you could create a new groove with something like:

Seqclear   /// don't try this ... it's just an idea!!
Use-named-groove cwaltz-basedrum
Use-named-groove cwaltz-bassbass
Defgroove SomethingWonderful

Right now you could use the exiting defgroove and seqclear to create the individual parts.

Seqclear
 drumstuff
defgroove drumname
Seqclear
  bass main stuff
DefGroove bassname

The problem is that you can't load them up. This will NOT work:

Seqclear
Groove Drumname // fine so far
Groove bassname   // opps, the drums are gone

So, how about a mechanism to load parts as per above without others being wiped? Maybe an AddGroove command or something?

Now, let me know if I'm close to understanding your original request!

Logged

My online life: http://www.mellowood.ca
kara
Kara-Moon, a site built by and for musicians
Global Moderator
Kara-Moon Master
*****
Posts: 4907


Music is my middle name


WWW
« Reply #2 on: August 10, 2010, 03:58:52 PM »

This is a coincidence but was I was thinking of something slightly different but in the same logic. I was keeping in on hold, giving Bob a summer break keeping this for the long winter evenings. Anyway here's my take....
First the logic behind it.
At the moment the libs are defined as complete orchestrations for a certain type of music and contain all the instruments, ex countrywaltz.

Another possible logic is to organise a lib could be by instrument.
Example, purely theoritical :
Instrument name bass : (bas would be the filename
     - Style : Rock
                    -IronMaidenrock1 Groove {......,.....,.....,....}
                    -DeepPurpleCildinTime Groove  {......,.....,.....,....}
     - Style : Balad
                    - DylanBlowing {......,.....,.....,....}
                    - FramptomTalk {......,.....,.....,....}
Other file : Drums
     - Style : Rock
                    - PCollinIntheAir {......,.....,.....,....}
                    - PinkfloydFriends {......,.....,.....,....}
And the same for instruments

Now when you want to assemble a style for your song, you could do something similar to :

Groove Mysonggroove
Bass
        from bass use Rock-Ironmaidenrock1
Drums
        from drums use Rock-PinkFloydFriends
Keys
        from piano use Ballad-Arp1
Defgroove Mysonggroove

See the logic ? it's easy to combine element to create a style.
Another argument would be that it is easier to exchange style elements between different users.
I'm a bass & keyboard player. If i have a drumgroove I can easily create a bassgroove and a synthgroove on top of it. But if I need guitars, well I have no idea how a guitar is played.

This is just my idea on an alternative, perhaps there is a more logical or more easy way to implement this but it is a first take.

k
 
Logged

_____oOo______ http://www.myspace.com/kaazduo

www.kara-moon.com, a site built by and for musicians
Support us at : http://www.mymajorcompany.com/Artistes/kaaz/
kara
Kara-Moon, a site built by and for musicians
Global Moderator
Kara-Moon Master
*****
Posts: 4907


Music is my middle name


WWW
« Reply #3 on: August 10, 2010, 04:07:19 PM »

Quote
to use a library musical PARTS as easily as .....

having said that (see my previous post), if you have half of a style and you need bass or keyboard, I'm willing to write it for you and add it to your style....
just ask here


k
Logged

_____oOo______ http://www.myspace.com/kaazduo

www.kara-moon.com, a site built by and for musicians
Support us at : http://www.mymajorcompany.com/Artistes/kaaz/
bvdp
Kara-Moon Master
****
Posts: 1437


WWW
« Reply #4 on: August 10, 2010, 04:32:35 PM »

Louis and Kara,

I've been thinking a bit more about all this (in my morning shower ... so they are clean thoughts).

First, on multi-line commands and commenting out: You can easily out-comment a section of "test" code with a Begin Comment/End block. Also, one of the seriously complex multi-command issues is how MMA lets you have different settings on a per-bar basis. I'll keep it in mind, but don't hold your breath Smiley

Now, back to Kara's suggestion ... yes, you could do something like this with the envisioned "AddGroove" command. One could even have all the different base tracks in different files. Again, I've not studied code and this is from memory, but there is no reason you could not have a number of files (eg. Bass, Chord, etc.) and then load them into your lib file (or song, but I do like libs).

I guess this would be like an uber form of the existing DEFINEs in the include files which define patterns. One might even want to put files of track-groove definitions in the include directory (MMA doesn't care about what in in a file, so long as it has ".mma" extension).


I do wonder if this quite-complex structure would be used?Huh I think a lot of the stuff I've been doing in MMA lately is fun for me to code ... but is anyone using it? I've still to get a comment back on MidiInc additions Smiley

But, I do think that "addGroove" would be very simple to add. I'll look later today.


Logged

My online life: http://www.mellowood.ca
kara
Kara-Moon, a site built by and for musicians
Global Moderator
Kara-Moon Master
*****
Posts: 4907


Music is my middle name


WWW
« Reply #5 on: August 10, 2010, 05:10:58 PM »


Now, back to Kara's suggestion ... yes, you could do something like this with the envisioned "AddGroove" command. One could even have all the different base tracks in different files. Again, I've not studied code and this is from memory, but there is no reason you could not have a number of files (eg. Bass, Chord, etc.) and then load them into your lib file (or song, but I do like libs).

Exactly what I had in mind and yes it could be libs.

Quote
I do wonder if this quite-complex structure would be used?Huh I think a lot of the stuff I've been doing in MMA lately is fun for me to code ... but is anyone using it? I've still to get a comment back on MidiInc additions Smiley

I have no idea.
In my opinion you added a lot of GOOD stuff since I use it, and I use a lot of it.
To be honest, I won't use the MidiInc, from the beginning I thought this was beyond the main scope of MMA, which should be the accompany part of music, and there it is very strong. But that's only my opinion, others may differ.


Logged

_____oOo______ http://www.myspace.com/kaazduo

www.kara-moon.com, a site built by and for musicians
Support us at : http://www.mymajorcompany.com/Artistes/kaaz/
bvdp
Kara-Moon Master
****
Posts: 1437


WWW
« Reply #6 on: August 10, 2010, 07:04:19 PM »

Instead of doing yard work, I've been looking at code so I can figure out what I did Smiley

Here's the simple list of what GROOVE does currently:

1. It DOES not do any clearing of existing patterns/settings.

2. I does restore a number (just about all) "global" settings like quarters-per-bar, sequence size, etc.

3. For each track saved in the DefGroove, it restores that. So, there is a separate call for each track (DRUM-1, DRUM-2, Chord, Chord-Foo, etc).

That's it.

So, I could do a separate command which would do just a subset of what is saved or ...

Ideas:

1. Leave Defgroove alone.

2. Have a command which lets you select the parts to restore. So, you might have something (not this ugly syntax) like:

       Groove {Drum-1, Drum-2, Chord-Foo} MyGroove

So, in this case only the specifed tracks would be loaded. Much like the current setting

      Drum-1 Groove MyGroove

which just loads drum-1.

So, if this is okay, why not do:

     Drum-1 Drum-2 Drum-3 Groove MyGroove

which would extract 3 tracks from MyGroove.

And, if this works, you could use macros. Something like:

Set MetalDrums Drum-1 Drum-2 Drum-3 Groove Metal
$MetalDrums

My thought here is that you could easily extract stuff from an existing "complete" library.

Feedback please.
Logged

My online life: http://www.mellowood.ca
louisjb
Jr. Member
*
Posts: 16


« Reply #7 on: August 10, 2010, 09:20:28 PM »

Wooh, there have been lots of reply to this thread before I have had a chance to reply to Bob's first reply. Here is what I prepared earlier (not in the shower but on the train on my way to work)

Quote
Ok That was most helpful

I am call them different PARTS and you are calling them TRACKS. we both mean the same thing so I will call them TRACKS from now on.

I will first try and summarise what I am trying to do.

1) I want to easily build up a complete GROOVE by mixing and matching different TRACKS from different GROOVES (maybe some from my own TRACKS maybe some from Bob)

2) I want a very easy way to swap in and out different TRACKS. (For example lets try Bob BASS part then try with my BASS part)

3) I want a very easy way to change the instrument and the volume of TRACK with out editing the lirbray code. (For example, I like this GROOVE but what would it sound with a Harp instead of a guitar).

Ok that summarised what I want to do.


Then on the train home then I played with the "Trackname Groove existing-groove-name" option and this does exactly (well almost exactly) what I want to do.

So I think the following will work that I could write in my mma file:

Include CountryWatlz

SeqClear
 Time 3
 Timesig 3 4
 Bass Groove CountryWaltz
 // Bass Groove JazzWaltz
 Chord Groove CountryWaltz
 Bass-Chord Groove CountryWaltz
 Drum Groove CountryWaltz
 Drum-Kick Groove CountryWaltz
DefGroove MyCountryWaltz

 Then I can easily try the JazzWaltz Bass part instead of the  CountryWaltz Bass part.

I would then keep the above code code in my MMA files as the syntax is nice and clean and easy to understand.

By the way Bob where is the documentation for the "Trackname Groove existing-groove-name" option? I have looked and looked but I cannot find it.

To do 100% exactly what I want to do, how about allowing me to easily change the volume and voice for each part. yes you have probably guessed my syntax:

Include CountryWatlz

SeqClear
 Time 3
 Timesig 3 4
 Bass Groove CountryWaltz           Volume=mp   Voice=SynthBass1 
 // Bass Groove JazzWaltz
 Chord Groove CountryWaltz         Volume=100% Voice=Harp       
 Bass-Chord Groove CountryWaltz  Volume=90%  Voice=SlapBass1 
 Drum Groove CountryWaltz          Volume=90%
 Drum-Kick Groove CountryWaltz
DefGroove MyCustomCountryWaltz


Just the volume and the voice nothing else. I don't think that syntax is too bad is it?

Also I don't think I would use your AddGroove command As I would always want to add one track at a time. (although the drums are a complication here as I always think of the drums as ONE part)

Kara would this meet your needs as well?

Quote
if you have half of a style and you need bass or keyboard, I'm willing to write it for you and add it to your style....
just ask here
That would be great I am gradually building up a range of different finger picking styles Plectrum tracks. I will post this on another thread later.

Thanks

Louis


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


WWW
« Reply #8 on: August 11, 2010, 12:24:22 AM »

Wooh, there have been lots of reply to this thread before I have had a chance to reply to Bob's first reply. Here is what I prepared earlier (not in the shower but on the train on my way to work)

Ya gotta be alert ... things move quickly Smiley

So, I think we're close to fixing the problem with no code being
written. Cool.

Quote
By the way Bob where is the documentation for the "Trackname Groove existing-groove-name" option? I have looked and looked but I cannot find it.

It's in the groove section of the manual. The label is "OverLay Grooves".

Quote
To do 100% exactly what I want to do, how about allowing me to easily change the volume and voice for each part. yes you have probably guessed my syntax:

Include CountryWatlz

SeqClear
 Time 3
 Timesig 3 4
 Bass Groove CountryWaltz           Volume=mp   Voice=SynthBass1 
 // Bass Groove JazzWaltz
 Chord Groove CountryWaltz         Volume=100% Voice=Harp       
 Bass-Chord Groove CountryWaltz  Volume=90%  Voice=SlapBass1 
 Drum Groove CountryWaltz          Volume=90%
 Drum-Kick Groove CountryWaltz
DefGroove MyCustomCountryWaltz

I really prefer  the harder way:

Begin Bass
  Groove Countrywaltz
  Volume mp
  Voice ...
End

I know it looks like a simple request ... but consider

Begin Bass
  Groove Countrywaltz
  Volume mp mf f ff
  Voice Bass1 Bass2
End

With your request we would need to group things and end up with something like:

 Chord Groove CountryWaltz  Volume={mp mf ff mf} Voice={harp bass  piano football}

which is certainly doable, but introduces a whole new layer of
complexity into the parser. And, that particular grouping {} is already being used in a number of places when defining patterns ...  But, let me think about it.

Of course, you say "just these 2 items" ... and the next fellow's request? Oh, the joys of writing software Smiley

I think that kara is thinking of being able to group a number of different items (say 2 drums, a bass and chord) into a "style" and then mix and match 2 or three chunks. I'm thinking that he wants something like:

    FunkyMonkey -- 2 drum tracks, bass and chord
    MetalMonkey  -- 5 drums tracks and bass
    Bassy            -- just a bass
    Sweet            -- a SCALE and CHORD

and then he wants to combine things with something like:

Seqclear
Addgroove FunkyMonkey
Addgroove Sweet
........

and end up with the 2 drums, bass, scale and 2 chords.

I see the biggest problem is not with figuring out the code ... but actually using this might be a nightmare. It might be a lot easier to just cut/paste various bits (and use the existing DEFINE in different include files!) to come up with a much more readable result.

Lets think and discuss this a bit more.

Also, read my next message Smiley


Logged

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


WWW
« Reply #9 on: August 11, 2010, 12:39:04 AM »


I've spent some time in figuring out exactly how the groove stuff works. Yes, I know I wrote it ... but just looking at code and some test files made no sense. So, as much for my future sanity as anything else ... here's a recap:

In a fresh mma file we start out by creating a few tracks. Let's assume that we do:

Code:
Begin Drum-1
  stuff
End
Begin Chord-1
  stuff
End
and save this into a groove:

Code:
DefGroove First

Now clear things out and create another groove:

Code:
Seqclear
Begin Scale
  stuff
End

This is the important part of the process to understand:

 - in memory we have 3 tracks Drum-1, Chord-1 and Scale (actually, we also have DRUM and CHORD, but we'll ignore that for now).

 - the sequences for Drum-1 and Chord-1 have been set to null or 'z' by the seqclear

 - the existing groove container "First" has a Scale track. Huh? Yes, when the track was created it was added to any existing grooves in memory. And since at track creation time the sequence was null, that is how it was saved.

Now, save our new state:

Code:
DefGroove Second

The groove for second will contain the Drum-1, Chord-1 and Scale tracks. Only the Scale has a sequence, so that is only one played.

When we restore:

Code:
 Groove First

Three tracks are restored: Drum-1, Chord-1 and SCALE. The Scale track data is null. So, it all works as advertised.

Remember: In mma this stuff is all accumulated as the file(s) are parsed. Nothing is deleted, just piled on (well, not quite true ... but for conceptualization it is).

There, now I understand Smiley

Logged

My online life: http://www.mellowood.ca
kara
Kara-Moon, a site built by and for musicians
Global Moderator
Kara-Moon Master
*****
Posts: 4907


Music is my middle name


WWW
« Reply #10 on: August 11, 2010, 07:19:17 AM »

Quote
I think that kara is thinking of being able to group a number of different items (say 2 drums, a bass and chord) into a "style" and then mix and match 2 or three chunks. I'm thinking that he wants something like:

    FunkyMonkey -- 2 drum tracks, bass and chord
    MetalMonkey  -- 5 drums tracks and bass
    Bassy            -- just a bass
    Sweet            -- a SCALE and CHORD

and then he wants to combine things with something like:

Seqclear
Addgroove FunkyMonkey
Addgroove Sweet
........

and end up with the 2 drums, bass, scale and 2 chords.

I see the biggest problem is not with figuring out the code ... but actually using this might be a nightmare. It might be a lot easier to just cut/paste various bits (and use the existing DEFINE in different include files!) to come up with a much more readable result.


Yes that's exactly what I have in mind.
At the moment I do it by storing my grooves in textfiles by instrument and copy/paste it to assemble it when I create a new style. I does work but it's not an ideal workflow.

But in worst case, if we don't find a good alternatif I can continu doing it like that...

k
Logged

_____oOo______ http://www.myspace.com/kaazduo

www.kara-moon.com, a site built by and for musicians
Support us at : http://www.mymajorcompany.com/Artistes/kaaz/
louisjb
Jr. Member
*
Posts: 16


« Reply #11 on: August 11, 2010, 12:16:33 PM »

Kara

Have you looked at the "Trackname Groove existing-groove-name" option as documented in the "Overlay Grooves" section that already exsits? You could add all your existing tracks to different Grooves named by instrument in one library file? Then just use the “Overlay Grooves" option to add each track (one track at a time) to your final groove. Would this meet your needs? The only down side is Overlay Grooves" option only works on a single track, for me this is not a problem. The plus side is this command already exists and can be used straight away. 

Please let me know if you think this existing "Overlay Grooves" command will meet your needs?

Louis
Logged
kara
Kara-Moon, a site built by and for musicians
Global Moderator
Kara-Moon Master
*****
Posts: 4907


Music is my middle name


WWW
« Reply #12 on: August 11, 2010, 01:32:58 PM »

Yes I did, but
1. I don't like that much and doubt that 'basic-non power user' will understand
2. It doesn't fit my need, which is primary to share some grooves.

Unless Bob comes up with some magic solution, I've found some quite easy solution.

1. I create a standard lib for a certain style, say strock.mma

Code:

// Standard rock patterns
// All patterns here assume that TIME is set to 4.


if NE  $_TIME 4
Print Warning: Including pattern defs for TIME-4, but TIME is $_TIME !
Endif

Begin Bass Define
Root4x    1 4 1 90 ; 2 4 1 80 ; 3 4 1 90 ; 4 4 5 80
Root3xand5   1 4 1 90; 2.5 8 1 90; 3 4 1 90; 4.5 8 5 90
End
Simple example with only 1 instrument, could contain grooves for all instruments.

2. We store that file in /mma/include

3. Now we create a style, using the grooves out of my standard rock library.
Code:
include strock

SeqClear
SeqSize 2

Begin Bass
Voice FingeredBass
Sequence  Root4x Root3xand5
Volume f
Octave 3
Articulate 80
Rvolume 10
End
DefGroove Mygroove


4. Now we can create a song
Code:
KeySig A
TimeSig 4 4
Tempo 120

SwingMode On

Groove Mygroove
1 E
2 D
3 A
4 E


This looks simple and straightforward to me.

And I can share a library, saying : Take this file and drop it in /mma/include, include it in your style definition file and choose the grooves you want

What do you think ?

k
Logged

_____oOo______ http://www.myspace.com/kaazduo

www.kara-moon.com, a site built by and for musicians
Support us at : http://www.mymajorcompany.com/Artistes/kaaz/
bvdp
Kara-Moon Master
****
Posts: 1437


WWW
« Reply #13 on: August 11, 2010, 04:37:29 PM »


You can also use macros to hide a lot of this.

Create tracks, etc in your include or lib file. Now write a macro to encapsulate all the tracks you want to combine:

MSet FunkyMonkey
   Drum-1 Groove abc
   Chord-2 Groove xyx
endmset

Then it is just a

  $FunkyMonkey

in your main file.

I'm still thinking about the other issue. But, we have Louis happy ... next comes Kara Smiley
Logged

My online life: http://www.mellowood.ca
kara
Kara-Moon, a site built by and for musicians
Global Moderator
Kara-Moon Master
*****
Posts: 4907


Music is my middle name


WWW
« Reply #14 on: August 11, 2010, 05:34:26 PM »

Don't worry, I'm happy with my system
I'll send you an example when I'm ready with it

The macro function is indeed powerfull !
But I want to limit my contribution to grooves.

k
Logged

_____oOo______ http://www.myspace.com/kaazduo

www.kara-moon.com, a site built by and for musicians
Support us at : http://www.mymajorcompany.com/Artistes/kaaz/
Pages: [1] 2
  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.054 seconds with 20 queries.