VocalEasel/mma/docs/html/ref/node1.html

786 lines
23 KiB
HTML
Raw Normal View History

2009-05-17 22:34:44 +00:00
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2006-11-10 08:07:56 +00:00
<!--Converted with LaTeX2HTML 2002-2-1 (1.71)
original version by: Nikos Drakos, CBLU, University of Leeds
* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
* with significant contributions from:
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>Overview and Introduction</TITLE>
<META NAME="description" CONTENT="Overview and Introduction">
<META NAME="keywords" CONTENT="mma">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<LINK REL="STYLESHEET" HREF="mma.css">
<LINK REL="next" HREF="node2.html">
<LINK REL="previous" HREF="mma.html">
<LINK REL="up" HREF="mma.html">
<LINK REL="next" HREF="node2.html">
</HEAD>
<BODY bgcolor="#ffffff">
2009-05-17 22:34:44 +00:00
<DIV CLASS="navigation"><!--Navigation Panel-->
<A NAME="tex2html339"
2006-11-10 08:07:56 +00:00
HREF="node2.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
2009-05-17 22:34:44 +00:00
<A NAME="tex2html337"
2006-11-10 08:07:56 +00:00
HREF="mma.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
2009-05-17 22:34:44 +00:00
<A NAME="tex2html331"
2006-11-10 08:07:56 +00:00
HREF="mma.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<BR>
2009-05-17 22:34:44 +00:00
<B> Next:</B> <A NAME="tex2html340"
2006-11-10 08:07:56 +00:00
HREF="node2.html">Running</A>
2009-05-17 22:34:44 +00:00
<B> Up:</B> <A NAME="tex2html338"
2006-11-10 08:07:56 +00:00
HREF="mma.html">Reference Manual</A>
2009-05-17 22:34:44 +00:00
<B> Previous:</B> <A NAME="tex2html332"
2006-11-10 08:07:56 +00:00
HREF="mma.html">Reference Manual</A>
<BR>
2009-05-17 22:34:44 +00:00
<BR></DIV>
2006-11-10 08:07:56 +00:00
<!--End of Navigation Panel-->
<!--Table of Child-Links-->
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
2009-05-17 22:34:44 +00:00
<UL CLASS="ChildLinks">
<LI><A NAME="tex2html341"
2006-11-10 08:07:56 +00:00
HREF="node1.html#SECTION00110000000000000000">License, Version and Legalities</A>
2009-05-17 22:34:44 +00:00
<LI><A NAME="tex2html342"
2006-11-10 08:07:56 +00:00
HREF="node1.html#SECTION00120000000000000000">About this Manual</A>
<UL>
2009-05-17 22:34:44 +00:00
<LI><A NAME="tex2html343"
2006-11-10 08:07:56 +00:00
HREF="node1.html#SECTION00121000000000000000">Typographic Conventions</A>
2009-05-17 22:34:44 +00:00
<LI><A NAME="tex2html344"
HREF="node1.html#SECTION00122000000000000000"><SPAN CLASS="logo,LaTeX">L<SUP><SMALL>A</SMALL></SUP>T<SMALL>E</SMALL>X</SPAN> and HTML</A>
<LI><A NAME="tex2html345"
2006-11-10 08:07:56 +00:00
HREF="node1.html#SECTION00123000000000000000">Other Documentation</A>
2009-05-17 22:34:44 +00:00
<LI><A NAME="tex2html346"
2006-11-10 08:07:56 +00:00
HREF="node1.html#SECTION00124000000000000000">Music Notation</A>
</UL>
<BR>
2009-05-17 22:34:44 +00:00
<LI><A NAME="tex2html347"
2006-11-10 08:07:56 +00:00
HREF="node1.html#SECTION00130000000000000000">Installing
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> </A>
2009-05-17 22:34:44 +00:00
<LI><A NAME="tex2html348"
2006-11-10 08:07:56 +00:00
HREF="node1.html#SECTION00140000000000000000">Running
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> </A>
2009-05-17 22:34:44 +00:00
<LI><A NAME="tex2html349"
2006-11-10 08:07:56 +00:00
HREF="node1.html#SECTION00150000000000000000">Comments</A>
2009-05-17 22:34:44 +00:00
<LI><A NAME="tex2html350"
2006-11-10 08:07:56 +00:00
HREF="node1.html#SECTION00160000000000000000">Theory Of Operation</A>
2009-05-17 22:34:44 +00:00
<LI><A NAME="tex2html351"
2006-11-10 08:07:56 +00:00
HREF="node1.html#SECTION00170000000000000000">Case Sensitivity</A>
</UL>
<!--End of Table of Child-Links-->
<HR>
<H1><A NAME="SECTION00100000000000000000">
Overview and Introduction</A>
</H1>
<P>
2009-05-17 22:34:44 +00:00
<SPAN CLASS="textit">Musical MIDI Accompaniment</SPAN>,
2006-11-10 08:07:56 +00:00
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> ,<A NAME="tex2html1"
2009-05-17 22:34:44 +00:00
HREF="#foot192"><SUP><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN></SUP></A> generates standard
2006-11-10 08:07:56 +00:00
MIDI<A NAME="tex2html2"
2009-05-17 22:34:44 +00:00
HREF="#foot193"><SUP><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN></SUP></A> files which can be used as a backup track for a soloist.
2006-11-10 08:07:56 +00:00
It was written especially for me--I am an aspiring saxophonist and
wanted a program to ``play'' the piano and drums so I could practice
my jazz solos. With
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> I can create a track based on the chords in
a song, transpose it to the correct key for my instrument, and play my
very bad improvisations until they get a bit better.
<P>
I also lead a small combo group which is always missing at least one
player. With
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> generated tracks the group can practice and perform even
if a rhythm player is missing. This all works much better than I
expected when I started to write the program ...so much better
that I have used
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> generated tracks for live performances with great
success.
<P>
Around the world musicians are using
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> for practice, performance
and in their studios. Much more than ever imagined when this project was started!
<P>
<H1><A NAME="SECTION00110000000000000000">
License, Version and Legalities</A>
</H1>
<P>
The program
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> was written by and is copyright Robert van der Poel,
2007-04-29 06:47:40 +00:00
2002--2007.
2006-11-10 08:07:56 +00:00
<P>
This program, the accompanying documentation, and library files can be
freely distributed according to the terms of the GNU General Public
License (see the distributed file ``COPYING'').
<P>
If you enjoy the program, make enhancements, find bugs, etc. send a
note to me at
<A HREF="mailto:bob@mellowood.ca"> Bob van der Poel </A>; or a postcard (or even money) to PO Box 57,
Wynndel, BC, Canada V0B 2N0.
<P>
The current version of this package is maintained at: <TT><A NAME="tex2html3"
HREF="http://www.mellowood.ca/mma/">http://www.mellowood.ca/mma/</A></TT>.
<P>
2009-05-17 22:34:44 +00:00
This document reflects version 1.4
2006-11-10 08:07:56 +00:00
of
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> .
<DIV ALIGN="CENTER">
2007-04-29 06:47:40 +00:00
<Table CellSpacing=0 Width="80%" Align="Center" CellPadding=10 BGColor="#dddddd" Border=3>
<tr> <td>
<BR>
2009-05-17 22:34:44 +00:00
<BR><SPAN CLASS="textit">This program
2007-04-29 06:47:40 +00:00
has recently changed its status from beta to a 1.x version.
I have done everything I can to ensure that the program functions
2009-05-17 22:34:44 +00:00
as advertised, but I assume no responsibility for <SPAN CLASS="textbf">anything</SPAN>
it does to your computer or data.</SPAN>
2007-04-29 06:47:40 +00:00
</DIV>
2006-11-10 08:07:56 +00:00
<P>
2007-04-29 06:47:40 +00:00
<DIV ALIGN="CENTER">
2006-11-10 08:07:56 +00:00
<BR>
<BR>
2007-04-29 06:47:40 +00:00
</DIV>
<P>
<DIV ALIGN="CENTER">Sorry for this disclaimer, but we live in paranoid times.
</DIV>
2006-11-10 08:07:56 +00:00
<P>
2007-04-29 06:47:40 +00:00
<DIV ALIGN="CENTER">
<BR>
<BR>
</DIV>
<P>
<DIV ALIGN="CENTER">This manual most likely has lots of errors. Spelling, grammar, and
probably a number of the examples need fixing. Please give me a hand
and report anything...it'll make it much easier for me to
generate a really good product for all of us to enjoy.
2006-11-10 08:07:56 +00:00
2007-04-29 06:47:40 +00:00
</td></tr>
</Table>
2006-11-10 08:07:56 +00:00
2007-04-29 06:47:40 +00:00
</DIV>
2006-11-10 08:07:56 +00:00
<P>
2007-04-29 06:47:40 +00:00
<DIV ALIGN="CENTER">
2006-11-10 08:07:56 +00:00
<BR>
<BR>
2007-04-29 06:47:40 +00:00
</DIV>
2006-11-10 08:07:56 +00:00
<P>
2007-04-29 06:47:40 +00:00
<DIV ALIGN="CENTER">
</DIV>
2006-11-10 08:07:56 +00:00
<P>
<H1><A NAME="SECTION00120000000000000000">
About this Manual</A>
</H1>
<P>
This manual was written by the program author--and this is always a
very bad idea. But, having no volunteers, the choice is no manual at
all or my bad perspectives.<A NAME="tex2html4"
2009-05-17 22:34:44 +00:00
HREF="#foot232"><SUP><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN></SUP></A>
2006-11-10 08:07:56 +00:00
<P>
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> is a large and complex program. It really does need a manual;
and users really need to refer to the manual to get the most out of
2007-04-29 06:47:40 +00:00
the program. Even the author frequently refers to the manual. Really.
2006-11-10 08:07:56 +00:00
<P>
I have tried to present the various commands in a logical and useful
order. The table of contents should point you quickly to the relevant
sections.
<P>
<H2><A NAME="SECTION00121000000000000000">
Typographic Conventions</A>
</H2>
<P>
<UL>
<LI>The name of the program is always set in the special logo type:
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> .
<P>
</LI>
<LI>
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> commands and directives are set in small caps:
D<SMALL>IRECTIVE</SMALL>.
<P>
</LI>
2009-05-17 22:34:44 +00:00
<LI>Important stuff is emphasized: <SPAN CLASS="textit">important</SPAN>.
2006-11-10 08:07:56 +00:00
<P>
</LI>
<LI>Websites look like this: <TT><A NAME="tex2html5"
2007-04-29 06:47:40 +00:00
HREF="http://www.mellowood.ca/mma/index.html">http://www.mellowood.ca/mma/index.html</A></TT>
2006-11-10 08:07:56 +00:00
<P>
</LI>
2009-05-17 22:34:44 +00:00
<LI>Filenames are set in bold typewriter font: <TT><SPAN CLASS="textbf">filename.mma</SPAN></TT>
2006-11-10 08:07:56 +00:00
<P>
</LI>
<LI>Lines extracted from a
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> input file are set on individual
lines:
<P>
2007-04-29 06:47:40 +00:00
<Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3>
<tr><td>
<B>A command from a file </B>
2006-11-10 08:07:56 +00:00
2007-04-29 06:47:40 +00:00
</td></tr>
</Table>
2006-11-10 08:07:56 +00:00
<P>
</LI>
<LI>Commands you should type from a shell prompt (or other operating
system interface) have a leading <TT>$</TT> (to indicate a shell
prompt) and are shown on separate lines:
<P>
2007-04-29 06:47:40 +00:00
<Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3>
<tr><td>
<B>$ enter this </B>
2006-11-10 08:07:56 +00:00
2007-04-29 06:47:40 +00:00
</td></tr>
</Table>
2006-11-10 08:07:56 +00:00
<P>
</LI>
</UL>
<P>
<H2><A NAME="SECTION00122000000000000000">
2009-05-17 22:34:44 +00:00
<SPAN CLASS="logo,LaTeX">L<SUP><SMALL>A</SMALL></SUP>T<SMALL>E</SMALL>X</SPAN> and HTML</A>
2006-11-10 08:07:56 +00:00
</H2>
<P>
2009-05-17 22:34:44 +00:00
The manual has been prepared with the <SPAN CLASS="logo,LaTeX">L<SUP><SMALL>A</SMALL></SUP>T<SMALL>E</SMALL>X</SPAN> typesetting system.
2006-11-10 08:07:56 +00:00
Currently, there are two versions available: the primary version is a
PDF file intended for printing or on-screen display (generated with
<TT>dvipdf</TT>); the secondary version is in HTML (transformed with
2009-05-17 22:34:44 +00:00
<SPAN CLASS="logo,LaTeX2HTML">L<SUP><SMALL>A</SMALL></SUP>T<SMALL>E</SMALL>X2<TT>HTML</TT></SPAN>) for electronic viewing. If other formats are needed
2006-11-10 08:07:56 +00:00
...please offer to volunteer.
<P>
<H2><A NAME="SECTION00123000000000000000">
Other Documentation</A>
</H2>
<P>
In addition to this document the following other items are recommended
reading:
<P>
<UL>
<LI>The standard library documentation supplied with this document
in PDF and HTML formats.
<P>
</LI>
<LI>The
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> tutorial supplied with this document in pdf and html
formats.
<P>
</LI>
2009-05-17 22:34:44 +00:00
<LI>Various <TT><SPAN CLASS="textbf">README</SPAN></TT> files in the distribution.
2006-11-10 08:07:56 +00:00
<P>
</LI>
<LI>The Python source files.
<P>
</LI>
</UL>
<P>
<H2><A NAME="SECTION00124000000000000000">
Music Notation</A>
</H2>
<P>
The various snippets of standard music notation in this manual have
been prepared with the MUP program. I highly recommend this program
and use it for most of my notation tasks. MUP is available from Arkkra
Enterprises, <TT><A NAME="tex2html6"
HREF="http://www.Arkkra.com/">http://www.Arkkra.com/</A></TT>.
<P>
<H1><A NAME="SECTION00130000000000000000">
Installing
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> </A>
</H1>
<P>
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> is a Python program developed with version 2.4 of Python. At the
very least you will need this version (or later) of Python!
<P>
To play the MIDI files you'll need a MIDI player. Pmidi, tse3play, and
many others are available for Linux systems. For Windows and Mac
systems I'm sure there are many, many choices.
<P>
2009-05-17 22:34:44 +00:00
You'll need a text editor like <SPAN CLASS="textit">vi</SPAN>, <SPAN CLASS="textit">emacs</SPAN>, etc. to create
2006-11-10 08:07:56 +00:00
input files. Don't use a word processor!
<P>
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> consists of a variety of bits and pieces:
<P>
<UL>
<LI>The executable Python script, <TT>mma</TT><A NAME="tex2html7"
2009-05-17 22:34:44 +00:00
HREF="#foot347"><SUP><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">4</SPAN></SUP></A>, must somewhere in your
2006-11-10 08:07:56 +00:00
path. For users running Windows or Mac, please check
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> website
for details on how to install on these systems.
<P>
</LI>
<LI>A number of Python modules. These should all be installed under
2009-05-17 22:34:44 +00:00
the directory <TT><SPAN CLASS="textbf">/usr/local/share/mma/MMA</SPAN></TT>. See the enclosed file
<TT><SPAN CLASS="textbf">INSTALL</SPAN></TT> for some additional commentary.
2006-11-10 08:07:56 +00:00
<P>
</LI>
<LI>A number of library files defining standard rhythms. These
should all be installed under the directory
2009-05-17 22:34:44 +00:00
<TT><SPAN CLASS="textbf">/usr/local/share/mma/lib/stdlib</SPAN></TT>.
2006-11-10 08:07:56 +00:00
<P>
</LI>
</UL>
<P>
2009-05-17 22:34:44 +00:00
The scripts <TT><SPAN CLASS="textbf">cp-install</SPAN></TT> or <TT><SPAN CLASS="textbf">ln-install</SPAN></TT> will install
2006-11-10 08:07:56 +00:00
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> properly on most Linux
2007-04-29 06:47:40 +00:00
systems. Both scripts assume that main script is to be installed in
2009-05-17 22:34:44 +00:00
<TT><SPAN CLASS="textbf">/usr/local/bin</SPAN></TT> and the support files in
<TT><SPAN CLASS="textbf">/usr/local/share/mma</SPAN></TT>. If you want an alternate location, you
2006-11-10 08:07:56 +00:00
can edit the paths in the script. The only supported alternate to use
2009-05-17 22:34:44 +00:00
is <TT><SPAN CLASS="textbf">/usr/share/mma</SPAN></TT>.
2006-11-10 08:07:56 +00:00
<P>
2009-05-17 22:34:44 +00:00
The difference between the two scripts is that <TT><SPAN CLASS="textbf">ln-install</SPAN></TT> creates
symbolic links to the current location; <TT><SPAN CLASS="textbf">cp-install</SPAN></TT> copies the files.
2007-04-29 06:47:40 +00:00
Which to use it up to you, but if you have unpacked the distribution in
a stable location it is probably easier to use the link version.
<P>
2009-05-17 22:34:44 +00:00
In addition, you <SPAN CLASS="textit">can</SPAN> run
2006-11-10 08:07:56 +00:00
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> from the directory created by
the untar. This is not recommended, but will show some of
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> 's
stuff. In this case you'll have to execute the program file
<TT>mma.py</TT>.
<P>
You should be ``root'' (or at least, you need write permissions in
2009-05-17 22:34:44 +00:00
<TT>/usr/local/</TT>) to run either install script. Use the ``su'' or
``sudo'' command for this.
2006-11-10 08:07:56 +00:00
<P>
If you want to install
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> on a platform other than Linux, please get the
latest updates from our website at <TT><A NAME="tex2html8"
HREF="www.mellowood.ca/mma">www.mellowood.ca/mma</A></TT>.
<P>
<H1><A NAME="SECTION00140000000000000000">
Running
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> </A>
</H1>
<P>
For details on the command line operations in
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT>
<A HREF="node2.html#sec-running">see the "running" section</A>.
<P>
To create a MIDI file you need to:
<P>
<OL>
<LI>Create a text file (also referred to as the ``input file'') with
instructions which
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> understands. This includes the chord
structure of the song, the rhythm to use, the tempo, etc. The file
can be created with any suitable text editor.
<P>
</LI>
<LI>Process the input file. From a command line the instruction:
<P>
2007-04-29 06:47:40 +00:00
<Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3>
<tr><td>
<B>$ mma myfile &lt;ENTER&gt; </B>
2006-11-10 08:07:56 +00:00
2007-04-29 06:47:40 +00:00
</td></tr>
</Table>
2006-11-10 08:07:56 +00:00
<P>
will invoke
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> and, assuming no errors are found, create a MIDI
2009-05-17 22:34:44 +00:00
file <TT><SPAN CLASS="textbf">myfile.mid</SPAN></TT>.
2006-11-10 08:07:56 +00:00
<P>
</LI>
<LI>Play the MIDI file with any suitable MIDI player.
<P>
</LI>
<LI>Edit the input file again and again until you get the perfect
track.
<P>
</LI>
<LI>Share any patterns, sequences and grooves with the author so
they can be included in future releases!
</LI>
</OL>
<P>
An input file consists of the following information:
<P>
<OL>
<LI>
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> directives. These include T<SMALL>EMPO</SMALL>, T<SMALL>IME</SMALL>,
2009-05-17 22:34:44 +00:00
V<SMALL>OLUME</SMALL>, etc. <A HREF="node23.html#sec-directives">Directives</A>.
2006-11-10 08:07:56 +00:00
<P>
</LI>
<LI>P<SMALL>ATTERN</SMALL>, S<SMALL>EQUENCE</SMALL> and G<SMALL>ROOVE</SMALL> detailed in
<A HREF="node4.html#sec-pats">Patterns</A>,
<A HREF="node5.html#sec-seqs">Sequences</A>, and
<A HREF="node6.html#sec-grooves">Grooves</A>.
<P>
</LI>
<LI>Music information. See <A HREF="node8.html#sec-music">Musical
Data</A>.
<P>
</LI>
<LI>Comment lines and blank lines. See below.
<P>
</LI>
</OL>
<P>
Items 1 to 3 are detailed later in this manual. Please read them
before you get too involved in this program.
<P>
<H1><A NAME="SECTION00150000000000000000">
Comments</A>
</H1>
<P>
Proper indentation, white space and comments are a
2009-05-17 22:34:44 +00:00
<SPAN CLASS="textit">good thing</SPAN>--and you really should use them. But, in most cases
2006-11-10 08:07:56 +00:00
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> really doesn't care:
<P>
<UL>
<LI>Any leading space or tab characters are ignored,
<P>
</LI>
<LI>Multiple tabs and other white space are treated as single
characters,
<P>
</LI>
<LI>Any blank lines in the input file are ignored.
<P>
</LI>
</UL>
<P>
Each line is initially parsed for comments. A comment is anything
following a ``//'' (2 forward slashes).<A NAME="tex2html9"
2009-05-17 22:34:44 +00:00
HREF="#foot315"><SUP><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">5</SPAN></SUP></A>
2006-11-10 08:07:56 +00:00
<P>
Comments are stripped from the input stream. Lines starting with the
C<SMALL>OMMENT</SMALL> directive are also ignored. See the
2009-05-17 22:34:44 +00:00
<A HREF="node23.html#comment">comment discussion</A> for details.
2006-11-10 08:07:56 +00:00
<P>
<H1><A NAME="SECTION00160000000000000000">
Theory Of Operation</A>
</H1>
<P>
To understand how
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> works it's easiest to look at the initial
development concept. Initially, a program was wanted which would take
a file which looked something like:
<P>
2007-04-29 06:47:40 +00:00
<Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3>
<tr><td>
<B>Tempo 120
2006-11-10 08:07:56 +00:00
<BR>
Fm
<BR>
C7
2007-04-29 06:47:40 +00:00
<BR> ...</B>
2006-11-10 08:07:56 +00:00
2007-04-29 06:47:40 +00:00
</td></tr>
</Table>
2006-11-10 08:07:56 +00:00
<P>
and end up with a MIDI file which played the specified chords over a
drum track.
<P>
Of course, after starting this ``simple'' project a lot of
complexities developed.
<P>
First, the chord/bar specifications. Just having a single chord per
bar doesn't work--many songs have more than one chord per bar.
Second, what is the rhythm of the chords? What about bass line? Oh,
and where is the drummer?
<P>
Well, things got more complex after that. At a bare minimum, the
program or interface should have the ability to:
<P>
<UL>
<LI>Specify multiple chords per bar,
<P>
</LI>
<LI>Define different patterns for chords, bass lines and
drum tracks,
<P>
</LI>
<LI>Have easy to create and debug input files,
<P>
</LI>
<LI>Provide a reusable library that a user could simply plug in, or
modify.
<P>
</LI>
</UL>
<P>
From these simple needs
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> was created.
<P>
The basic building blocks of
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> are P<SMALL>ATTERN</SMALL>s. A pattern is a
specification which tells
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> what notes of a chord to play, the
start point in a bar for the chord/notes, and the duration and the
volume of the notes.
<P>
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> patterns are combined into S<SMALL>EQUENCE</SMALL>s. This lets you
create multi-bar rhythms.
<P>
A collection of patterns can be saved and recalled as G<SMALL>ROOVE</SMALL>s.
This makes it easy to pre-define complex rhythms in library files and
incorporate them into your song with a simple two word command.
<P>
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> is bar or measure based (we use the words interchangeably in
this document). This means that
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> processes your song one bar at a
time. The music specification lines all assume that you are specifying
a single bar of music. The number of beats per bar can be adjusted;
however, all chord changes must fall on a beat division (the playing
of the chord or drum note can occur anywhere in the bar).
<P>
To make the input files look more musical,
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> supports
R<SMALL>EPEAT</SMALL>s and R<SMALL>EPEAT</SMALL>E<SMALL>NDING</SMALL>s. However, complexities like
2009-05-17 22:34:44 +00:00
<SPAN CLASS="textit">D.S.</SPAN> and <SPAN CLASS="textit">Coda</SPAN> are not internally supported (but can be
2006-11-10 08:07:56 +00:00
created by using the G<SMALL>OTO</SMALL> command).
<P>
<H1><A NAME="SECTION00170000000000000000">
Case Sensitivity</A>
</H1>
<P>
Just about everything in a
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> file is case insensitive.
<P>
This means that the command:
<P>
2007-04-29 06:47:40 +00:00
<Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3>
<tr><td>
<B>Tempo 120 </B>
2006-11-10 08:07:56 +00:00
2007-04-29 06:47:40 +00:00
</td></tr>
</Table>
2006-11-10 08:07:56 +00:00
<P>
could be entered in your file as:
<P>
2007-04-29 06:47:40 +00:00
<Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3>
<tr><td>
<B>TEMPO 120 </B>
2006-11-10 08:07:56 +00:00
2007-04-29 06:47:40 +00:00
</td></tr>
</Table>
2006-11-10 08:07:56 +00:00
<P>
or even
<P>
2007-04-29 06:47:40 +00:00
<Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3>
<tr><td>
<B>TeMpO 120 </B>
2006-11-10 08:07:56 +00:00
2007-04-29 06:47:40 +00:00
</td></tr>
</Table>
2006-11-10 08:07:56 +00:00
<P>
for the exact same results.
<P>
Names for patterns, and grooves are also case insensitive.
<P>
The only exceptions are the names for chords, notes in S<SMALL>OLO</SMALL>s,
and filenames. In keeping with standard chord notation, chord names
are in mixed case; this is detailed in <A HREF="node8.html#sec-music">Musical
Data</A>. Filenames are covered in
2009-05-17 22:34:44 +00:00
<A HREF="node26.html#sec-paths">Paths and Filenames</A>.
2006-11-10 08:07:56 +00:00
<P>
<BR><HR><H4>Footnotes</H4>
<DL>
2007-04-29 06:47:40 +00:00
<DT><A NAME="foot192">...,</A><A
2009-05-17 22:34:44 +00:00
HREF="node1.html#tex2html1"><SUP><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN></SUP></A></DT>
2006-11-10 08:07:56 +00:00
<DD>Musical MIDI
Accompaniment and the short form
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> in the distinctive script are
names for a program written by Bob van der Poel. The ``MIDI
Manufacturers Association, Inc.'' uses the acronym MMA, but there is
no association between the two.
</DD>
2007-04-29 06:47:40 +00:00
<DT><A NAME="foot193">...
2006-11-10 08:07:56 +00:00
MIDI</A><A
2009-05-17 22:34:44 +00:00
HREF="node1.html#tex2html2"><SUP><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN></SUP></A></DT>
2006-11-10 08:07:56 +00:00
<DD>MIDI is an acronym for Musical Instrument Digital
Interface.
</DD>
2007-04-29 06:47:40 +00:00
<DT><A NAME="foot232">... perspectives.</A><A
2009-05-17 22:34:44 +00:00
HREF="node1.html#tex2html4"><SUP><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN></SUP></A></DT>
2006-11-10 08:07:56 +00:00
<DD>The problem, all humor aside, is
that the viewpoints of a program's author and user are quite
different. The two ``see'' problems and solutions differently, and for
a user manual the programmer's view is not the best.
</DD>
2007-04-29 06:47:40 +00:00
<DT><A NAME="foot347">...mma</A><A
2009-05-17 22:34:44 +00:00
HREF="node1.html#tex2html7"><SUP><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">4</SPAN></SUP></A></DT>
2006-11-10 08:07:56 +00:00
<DD>In the
distribution this is <TT>mma.py</TT>. It is renamed to save a few
keystrokes when entering the command.
</DD>
2007-04-29 06:47:40 +00:00
<DT><A NAME="foot315">... slashes).</A><A
2009-05-17 22:34:44 +00:00
HREF="node1.html#tex2html9"><SUP><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">5</SPAN></SUP></A></DT>
2006-11-10 08:07:56 +00:00
<DD>The first choice for
a comment character was a single ``#'', but that sign is used for
``sharps'' in chord notation.
</DD>
2009-05-17 22:34:44 +00:00
</DL>
<DIV CLASS="navigation"><HR>
2006-11-10 08:07:56 +00:00
<!--Navigation Panel-->
2009-05-17 22:34:44 +00:00
<A NAME="tex2html339"
2006-11-10 08:07:56 +00:00
HREF="node2.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
2009-05-17 22:34:44 +00:00
<A NAME="tex2html337"
2006-11-10 08:07:56 +00:00
HREF="mma.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
2009-05-17 22:34:44 +00:00
<A NAME="tex2html331"
2006-11-10 08:07:56 +00:00
HREF="mma.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<BR>
2009-05-17 22:34:44 +00:00
<B> Next:</B> <A NAME="tex2html340"
2006-11-10 08:07:56 +00:00
HREF="node2.html">Running</A>
2009-05-17 22:34:44 +00:00
<B> Up:</B> <A NAME="tex2html338"
2006-11-10 08:07:56 +00:00
HREF="mma.html">Reference Manual</A>
2009-05-17 22:34:44 +00:00
<B> Previous:</B> <A NAME="tex2html332"
HREF="mma.html">Reference Manual</A></DIV>
2006-11-10 08:07:56 +00:00
<!--End of Navigation Panel-->
<ADDRESS>
2007-04-29 06:47:40 +00:00
bob
2009-05-17 22:34:44 +00:00
2008-09-28
2006-11-10 08:07:56 +00:00
</ADDRESS>
</BODY>
</HTML>