drumpatterns 0.55 guide
Gilles LAMIRAL
$Id: lidoma-guide.en.m4,v 1.9 2001/04/16 04:25:09 gilles Exp
$
How to install and use drumpatterns 0.55
______________________________________________________________________
Table of Contents
1. Introduction
2. Acknowledgments
3. Licenses
4. Glossary
5. History
6. Installation
7. Using drumpatterns
7.1 General Interface
7.2 The top 3 buttons
7.3 The configuration table
7.3.1 The lines
7.3.2 The first column
7.3.3 The column `Seleted members'
7.3.4 The column `Max Consecutive tricks'
7.3.5 The column `Opposite Members'
7.4 The sequences length
7.5 The presentation style
7.6 The estimations
7.7 Save your memory
7.8 The sequences running time
7.9 The sequences number
7.10 The sequence real length
7.11 The sequences
7.12 The complete running time
8. Validity
9. The `To Do'
______________________________________________________________________
Documentation index
You can find the latest release of drumpatterns, by Gilles LAMIRAL,
located at:
http://www.linux-france.org/prj/drumpatterns/
Courageous drummer scales
1. Introduction
This document describes the history and the use of a pattern generator
for drummers called "DrumPatterns". For the moment, we will only
focus on the member coordination (arms and feet). Independence and
polyrythm will be taken into account later.
To introduce the subject, the best is to try the program available
online from the DrumPatterns Home Page, with its default values. If
you are already a drummer, the score will remind you something.
Download the midi file and play it with a midi sequencer.
What DrumPatterns is useful for ? Practicing drum patterns.
This little program is a interesting demonstration of what can be done
with Perl , CGI.pm and the HTTP protocol.
The software archive can be downloaded with ftp on the site linux-
france.com .
I start with an analogy with the written language. We write texts
which are made up of paragraphs. Paragraphs are made up of sentences,
sentences are made up of words and words are made up of letters.
When someone wants to become a drummer, he has to work lots of
exercises, stodgy at first sight, that help learning words, the
vocabulary. The analogy is limited because the letters (the alphabet)
are only a few. These letters are the strokes done by both hands and
feet, right and left. The vocabulary is not predefined, it is "free".
The goal is to generate all the possible words (patterns) from an
alphabet (right hand, left hand, right foot, left foot, silence) and
some work rules (max consecutive tricks, patterns length), proved by
experience.
2. Acknowledgments
I enumerate here the tools and their creator which helped me to
build this little software and this documentation. I thank them
all. I cite only the creators, the people that have collaborated are
as deserving as them.
· Linux (Linus Torvalds), for this beautiful jewel which made me buy
a computer after 15 years of "I wait that technology stagnates".
· Perl (Larry Wall), for having discharged me
from `core dump'.
· CGI.pm (Lincoln Stein).
· TclMidi (Mike durian) durian@boogie.com
· Apache, (The Apache Group).
· SgmlTools (Cees de Groot).
· Ispell (Geoff Kuenning).
· Emacs (Richard M. Stallman).
· Xpaint (David Koblas).
· Mozilla (Netscape Communications Corporation).
Thanks to Stan Mulder for the quality of his Steve Gadd site and the
inspiration he gave me involuntarily.
I also thanks Julien Cassaigne who, by his mathematical knowledge,
gave me a remarkable method to estimate the generated sequences
number. It is not the one I used because it needs a formal calculator,
heavy to run on a web server.
Many thanks to Nat Makarévitch who agreeded without hesitation the
presence of DrumPatterns on his excellent French site linux-france
.
3. Licenses
This software is protected by the GPL, the GNU Public License Version
2, in order to avoid to be ousted from it but I am really sceptic
regarding any interest from a commercial compagny. The ugly
drumpattern source code is in the bin/ directory.
I put this documentation under the opencontent
license. This means this
document is given without any warranty. You can use it, redistribute
it, modify it, by respecting the following conditions: You have to
clearly specify the nature and the content of the modifications, their
date and keep the opencontent license in case of redistribution. If
you sell it, you sell the medium, not the content. This is a summary,
read the license to get more details.
4. Glossary
Stroke
A hit.
Sequence
A pattern, a combinaison, a word.
5. History
Originally, I was waiting for the announcement of a similar software
on the excellent Steve gadd site. Steve Gadd is a red-hot and
brilliant user of these basic scales. The site has been developed and
it is still maintained by Stan Mulder. The url address is
.
I have been waiting for several weeks but nothing came. So I wrote it
myself. When I finally contacted Stan to give him my little program,
he gave me the web address where was standing his. What a pity for me
! More, his program made more beautiful results than mine. I worked
harder to offer a better interface and much more functionalities.
Rivalry is beautiful !
This program has been sleeping for a time in one of my directories.
Before putting it on line, I had to polish it because it can be very
greedy for resources (CPU and especially the memory) and it can blow
its running server brains out. I took good care to be sure that
nobody could go beyond the interface and play with the server memory.
I added a configuration file in order to allow the webmaster to adapt
the beast according to the server availability.
6. Installation
The software drumpatterns runs only on Unix systems. Read the file
INSTALL.
7. Using drumpatterns
First, I will describe the graphic interface globally, then I will
detail each part.
7.1. General Interface
The interface presents in order :
· Three buttons. Details are on section ``The top 3 buttons''. The
first one runs the computation according to the input parameters,
the second one cancels the last changes and replaces them with the
last ones, the third one runs the computation with the default
values (like the first time you went there).
· The configuration table. Details are on section ``The configuration
table'' which allows you to define the patterns construction rules.
· The option menu which defines the generated sequences length.
Details are on section ``The sequences length''.
· The radio buttons which allow to choose the output format, score or
text. Details are on section ``The presentation style''.
· The table which presents the number of solutions and their kilo-
octet rounded up HTML weight as a function of the sequence length.
Details are on section ``The estimations''.
· A link to the same cgi page with the HTTP GET method to save the
configuration in the bookmark. Details are on section ``Save your
memory''.
· The running time of all sequences. Details are on section ``The
sequence running time''.
· The number of sequences. Details are on section ``The sequences
number''.
· The real weight of the sequences in Ko, once computation and
filtering are done. Details are on section ``The sequence real
lenght''.
· The patterns. Details are on section ``The sequences''.
· The whole computation time, filtering, formating and printing.
Details are on section ``The complete running time''.
7.2. The top 3 buttons
The first, called "Go !", runs the computation and presents the
results if they respect the limits defined by the Web Master.
The second cancels the last interface manipulation and replaces the
values with those that fit the submitted results; it does not run any
computation.
The last runs the computation with the default values, as though you
were loading the page for the first time.
7.3. The configuration table
It is a table composed with 5 lines and 4 columns. The lines represent
the 5 members. The columns define the rules applied to each member.
7.3.1. The lines
Each line defines the member behavior rules set. The 5 members are the
right hand, the left hand, the right foot, the left foot and the
silence. I know the silence is not a member but fonctionnally speaking
this corresponds.
7.3.2. The first column
It just numbers the lines. Nothing else to say.
7.3.3. The column `Seleted members'
This column is made of toggle buttons. The button defines whether the
member takes part in the generated sequences. Take notice that it is
necessary to toggle at least two member in this column to make
relevant results because the one member sequences offer few interest.
7.3.4. The column `Max Consecutive tricks'
This column is made up with option menus, one per member. The chosen
value (from 0 to 16) specifies the maximal number of consecutive
strokes appearing in the sequences. It is useful to limit the
exercises number.
Even if the toggle button that unselect the member is off, this value
is useful. It is used to determine if an opposite sequence is good or
not, regarding to this value. For example, if you choose the following
parameters:
Right Hand selected, Max Selected = 2, opposite = L
Left Hand selected, Max Selected = 2, opposite = R
Sequence length = 4
the sequence `RRLR' is not good in the normal loop `RRLR RRLR' but it
is good in the opposite loop `RRLR LLRL'.
7.3.5. The column `Opposite Members'
This column is made up with option menus, one per member. The chosen
value specifies the member to use to compose the opposite sequence.
For example, if you choose left hand as the right hand opposite then
the opposite sequence of `RLRR RLRR' is `RLRR LRLL'.
7.4. The sequences length
This option menu allows to define the sequences length. From 0 to 16.
Nought is a value with no interest, it was included to check the
program side effects, it has remained. Pay attention, beyond 5 the
number of generated sequences can be very long to download. To
estimate this time the table ``estimations'' can help you.
7.5. The presentation style
These are radio buttons. Choose the `character' mode or the `score'
mode. The character mode is less greedy for place and is loaded faster
than the score mode containing the images (You can compare the HTML
source code in both case). But the score mode is very more readable. I
thanks Stan Mulder for the trick (by an examination of his HTML)
allowing to generate HTML scores with only 8 small images (look at the
HTML source).
7.6. The estimations
The program is exhaustive, it looks for all the possible sequences.
This can reach 152 587 890 625 combinations (5^16, five power sixteen)
that is to say 124 Tera-octets of HTML page ! You certainly understand
that I muzzled it to avoid overloading the server that put them up.
Having said that, you can use this program yourself and jump the gate
by editing the configuration file. The estimation table is made up of
4 lines and 17 columns :
· The first line gives the sequence length. It's the value you fill
in the option menu called "Length". Take a look at the section
``sequences length''
· The second, the number of sequences.
· The third, the length of the output in character mode (text).
· The fourth, the length of the output in image mode (score).
7.7. Save your memory
One time you've chosen a configuration and you've run a sequence
computation you can save the configuration by using this link. You
have two possibilities :
1. You follow this link to run again the same computation and you
bookmark the resulting page.
2. If you use Mozilla from Netscape or communicator or any advanced
browser, you put your mouse on the link and you click on the right
button. A contextual menu appears and you choose "Add Bookmark for
link".
7.8. The sequences running time
It is the time that figures out how long it takes to compute the
sequences, without any formatting neither a looping. You can notice
that this time is always really shorter than the total time where are
included the formatting and printing time. This part is really well
traited.
7.9. The sequences number
This is computed sequences number, without any loop.
7.10. The sequence real length
The estimations about the length of the HTML pages are appraised by
multiplying the line length by the number of lines. The line length
can vary because some don't contain the marks and upon the
sequence numbers. These are the sequences that do not respect the
rules when they are looped with themselves or with their opposite and
the numbers are not bolded. The estimate value is then always upper or
equal to the real value.
7.11. The sequences
They are the pertinent data of the program. You can see for yourself
that the generated sequences number is twice the announced number of
sequences. More, each sequence has a length twice the one chosen in
the configuration.
That's normal. In fact, each sequence has to be worked out in loop.
First with itself and then with its opposite, knowing that the
opposite of a sequence is the sequence of the opposite strokes. The
opposite strokes are defined in the fourth column of the configuration
table, see details on section ``The column `Opposite Members'''.
7.12. The complete running time
It's the total computation time, included looping, filtering,
formatting, and printing.
8. Validity
If you find a bug, don't hesitate to inform me. In the same way for
the spelling and the grammatical mistakes of this document (a lot to
be done). If you find that the source code is horrible and dirtily
written then we are both to think the same thing. I intend to
transform the code towards the object oriented paradigm but I fear to
loose in efficiency what I'll win in quality and maintenance (seeing
the computer hardware progress, my fear is light).
The program has been developed on Linux, in Perl. I've tested it on
Solaris 2 and it should run wherever Perl runs , that is to say
everywhere, even on the dark side.
I've tested it with the following browsers : Lynx, Grail, Mosaic,
Mozilla, TkWeb, RedBaron, Qweb, Amaya, Arena, W3. Let me know your
results. Here are mine :
· Lynx is good. But it is difficult to read the estimations tables.
It is the faster, as usual.
· Grail does a very good presentation but suffer from an unbearable
slowness while developing on a local server.
· Mosaic : Table difficulties.
· Mozilla : Good boy. You're the better, but not the fastest.
· RedBaron : How about 16 bit color map ?
· TkWeb : HTML is difficult, isn't it, TkWeb ?
· Qweb : Poor boy ! It asks the server each image for each occurrence
in the page...
· Arena : Error while fetching
http://louloutte.est.belle/sequencesHTML.cgi
· Amaya : A little too young.
· W3 (xemacs) : Same error than Qweb.
9. The `To Do'
Here is how I see the possible evolutions of the program. If you are
interested , contact me, I can privilege the development of the part
you prefer.
Midi
That's done.
Midi file generation is an excellent medium in order to work
this exercices with a Midi engine, without reading anything, at
different tempi. I found tclmidi. It is a very good tool. I
won't make one.
Beautifull score
Nice scores in LaTeX, DVI, PostScript formats (A4, Letter, ...).
Lilypond sounds very good.
Accents
Further variations. Accents are excellent to fix stroke control.
Polyrythms
Here, more work in view, for me and for drummers. A code
remodelling is needed. The opportunity to switch towards an
object oriented architecture.
The blue java
A complete rewriting in an Java applet would be saving for the
server's ressources. There is also Python (Is Grail still so low
?), and PerlTk (easier because in PerlTk there is Perl and Tk)