All Parts of this Program  are protected by the Gnu General Public 
License  GPL!! Check the file "License" for details..


Hi, this is a new version of Ryth(M)aid.. 

Q: What's that?
A: nuting really special. it's a little program that 
   generates a bass, drum, and piano track after
   a given set of changes


Q: What other lis do i need
A: only 2: gtk+ and tse3

Q: where do i get these?
A: 1. www.gtk.org
   3. http://tse3.sourceforge.net/index.html

it has a gui now! yeah!
..as u probably can clearly see ;)  It is indeed a complete rewrite 
with an, i hope at least, improved midi generating functionoality
it uses TSE3 now for midi handling. this is a very cool lib, which 
provides much more power than i need here. but anyways..

you can even export the song as midi files, if you don't have a
midi synth. there's midi players out there, which take a midi file 
as input, and render a wave file, which you can play with an
ordinary soundcard.. :)

check out "timidity".. it is a cool midifile player..

Ryth(M)Aid expects a file called "CHORDS" in the directory where 
you start it from.. in this file are the chord definitions.. if you
fidddle with it, be certain to not enter any whitespaces after or in
between lines. they'll confuse my poor little program..


when u use it, remember this program is really dumb, so it just de-
termines the possible note choices from the specified chord and ex-
tensions.. when parsing the chord name, it starts at the mostleft 
character in the chordname, andtreats it as  the root of the chord. 
if  there is an accidental on second pos in buffer, root is modified
accordingly. 

then it takes the remaining string and compares it with every entry 
in the "chords" section of the CHORDS file from the BOTTOM UP. if it 
finds a match, it takes the specified scale degrees relative to the 
root as possible note choices and doesn't look further up in the file.. 

this means for example, that m7b5 is to be located further to the 
bottom than m7.. since it needs to be found first, otherwise the
m7 would match and the b5 interpreted as additional notechoice.
but m7b5 only contains a b5, no plain 5.. 

then the remaining string is compared to the "extensions" section of
the CHORDS file. the found extension scale degrees and the note 
choices from the chord type get OR'ed..  

this is repeated till either end of string or a
"/" is found. then the note after the "/" is considered to be the 
prefered note for a bass line on strong beats, but the old root
still exists as note choice. 

an example:

dbm7b5b9#5/g

the parsing goes like this

d

the root



 b 

accidental for root, changing the root to db



  m7b5

first match from bottom in "chords" section in CHORDS file.



      b9

ORify note choices with extension b9 (first match from
bottom in "extensions" section




        #5

ORify note choices with extension #5




          /g

make g "root" of chord


the resulting note choices would be:

root db; notes: xx0x00x0x0x0 (these are aways halfsteps 
                              with the root on the left)

read:

Db D E G A B


strings are always compared from left to right.

ah, i forgot to mention... Ryth(M)Aid does _not_ make any 
assumptions about note choices. if you just enter

cM7           dm7   g7    cM7

it will only use the notes CEGB on cM7, DFAC on dm7, and
GBDF on g7. to get more fancy sounds you have to specify 
more precisely:

cM7913        dm79  g7#59 cM7#11 cM7913

look at the CHORDS file to see more details and add your 
own chord types and extensions..

if you want more infos, have suggestion or bug reports
(many), feel free to send them to:

mista.tapas@gmx.net

if you ever get to use this software i would like to
hear some recording of you using it and playing along :)
my mailbox accepts mp3 up to 3mb file size ;)

happy jammin!

-florian schmidt

