Ryth(M)aid + GUI
UPDATE [Oct. 22, 2003]: I'm, once again redoing this beast. This time i'll try to make it right [odd meters, event based system, portable [win32, linux, etc], support for different styles and instrumentation [via a plugin mechanism, which makes it easily extensible]]. If anyone is interested in getting involved, send me an email [mista.tapas@gmx.net]..
UPDATE!UPDATE!
The author of tse3 has released a new version which fixes this bug. please use this version. grab it from here
UPDATE!UPDATE!
I think i found out why many had problems compiling the app (unresolved symbol: TSE3::Clock::PPQN)... read the news on the Ryth(M)aid gui project
page to get a solution.
Here is a direct link to the relevant news
Hi. on this page you find Information to my rewrite of rythmaid. Like the name
says, it has a gui now. First release available now. plays only drums and bass.
Docs unexistant ;).. Feedback appreciated :) I have to mention, that when
u decide to check out this program, please DON'T do "make install".
Run it from the build dir, since it expects crucial files in current path
and will create them if they are not found.
This is in no way a "clean" release.. And: it's built against latest tse3. Debian package won't work. i haven't checked other dists.. the configure script will not really check for the location of the header files..
here's a little ExampleMidiFile: another.mid
Link to project page: Ryth(M)aid gui project
page
You might ask: "what the hell is this thing?". It is a little program which
plays drums bass and piano to a given set of changes. The Program works best for
swing jazz style. It is based on probabilities. Refer to the readme at the
bottom for more info.
Or email me at: mista.tapas@gmx.net
Ah, i have to mention that it uises the wonderful TSE3 library for midi
capabilities and gtk+ for the GUI.
finally a link to a page where you can hear me play the guitar (still from my old indows days using band in a box):
mista tapas' mysterious homepage
Here are some screenshots:
Main Window:
Midi parameters:
Song Parameters:
Here's the readme:
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
Here come the reasons. why i haven't released any source yet ;) the TODO file:
- on startup init all song options from the appropriate spin buttons, to ensure
integrity - ALMOST FIXED ;) i even load them from a file, but not all of them yet
- select loop start and loop end by clicking onto chord field
- issue with scrollpanel not resizing when chords are inserted.. - FIXED
- options dialog.. need to be smart modeled..
- TSE3 integration
- cleanup configure.in, so it gets tse3 right linked
- need to honour killing gui window with windowmanager.. do i need
to check for signals or what?
- need to correctly create basicSong.. Confusion about 4 bars = 8 beats or whatever ;) - FIXED
- tse3 version problems.. argh.. i'll use frshest.. - FIXED
- load chords file from $HOME/.rythmaid/ and check for success (give error message)
- add commandline switches for different audio systems
- set midiParameters from file. also be able to save them - FIXED
- fix tempo for values greater that 256 (tse3 limit) by reducing PPQN
- need to save stuff, even when killed by window manager
- make parameterload/save platform independant
- playback is too cpugreedy.. need to sleep a certain time while polling
- make mainwindow insensitiv while playback..
- oh oh.. mean bug in playback code.. song is too long starts from wrong bar.. etc. external measure 1 = beat[0] in basicSong
- cleartext for all note numbers and drum sounds
- make comma seperated entries available for one chord on every beat
- fix all kinds of error checking which is not happening right now ;) especially if saving or loading was succesfull. but this is much work
- plays min7 instead of maj7.. very weird..