mirror of
https://github.com/microtherion/VocalEasel.git
synced 2024-12-23 03:34:00 +00:00
786 lines
23 KiB
HTML
786 lines
23 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
|
|
|
<!--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">
|
|
|
|
<DIV CLASS="navigation"><!--Navigation Panel-->
|
|
<A NAME="tex2html339"
|
|
HREF="node2.html">
|
|
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
|
<A NAME="tex2html337"
|
|
HREF="mma.html">
|
|
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
|
<A NAME="tex2html331"
|
|
HREF="mma.html">
|
|
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
|
<BR>
|
|
<B> Next:</B> <A NAME="tex2html340"
|
|
HREF="node2.html">Running</A>
|
|
<B> Up:</B> <A NAME="tex2html338"
|
|
HREF="mma.html">Reference Manual</A>
|
|
<B> Previous:</B> <A NAME="tex2html332"
|
|
HREF="mma.html">Reference Manual</A>
|
|
<BR>
|
|
<BR></DIV>
|
|
<!--End of Navigation Panel-->
|
|
<!--Table of Child-Links-->
|
|
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
|
|
|
|
<UL CLASS="ChildLinks">
|
|
<LI><A NAME="tex2html341"
|
|
HREF="node1.html#SECTION00110000000000000000">License, Version and Legalities</A>
|
|
<LI><A NAME="tex2html342"
|
|
HREF="node1.html#SECTION00120000000000000000">About this Manual</A>
|
|
<UL>
|
|
<LI><A NAME="tex2html343"
|
|
HREF="node1.html#SECTION00121000000000000000">Typographic Conventions</A>
|
|
<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"
|
|
HREF="node1.html#SECTION00123000000000000000">Other Documentation</A>
|
|
<LI><A NAME="tex2html346"
|
|
HREF="node1.html#SECTION00124000000000000000">Music Notation</A>
|
|
</UL>
|
|
<BR>
|
|
<LI><A NAME="tex2html347"
|
|
HREF="node1.html#SECTION00130000000000000000">Installing
|
|
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> </A>
|
|
<LI><A NAME="tex2html348"
|
|
HREF="node1.html#SECTION00140000000000000000">Running
|
|
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> </A>
|
|
<LI><A NAME="tex2html349"
|
|
HREF="node1.html#SECTION00150000000000000000">Comments</A>
|
|
<LI><A NAME="tex2html350"
|
|
HREF="node1.html#SECTION00160000000000000000">Theory Of Operation</A>
|
|
<LI><A NAME="tex2html351"
|
|
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>
|
|
<SPAN CLASS="textit">Musical MIDI Accompaniment</SPAN>,
|
|
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> ,<A NAME="tex2html1"
|
|
HREF="#foot192"><SUP><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN></SUP></A> generates standard
|
|
MIDI<A NAME="tex2html2"
|
|
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.
|
|
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,
|
|
2002--2007.
|
|
|
|
<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>
|
|
This document reflects version 1.4
|
|
of
|
|
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> .
|
|
<DIV ALIGN="CENTER">
|
|
|
|
<Table CellSpacing=0 Width="80%" Align="Center" CellPadding=10 BGColor="#dddddd" Border=3>
|
|
<tr> <td>
|
|
<BR>
|
|
<BR><SPAN CLASS="textit">This program
|
|
has recently changed its status from beta to a 1.x version.
|
|
I have done everything I can to ensure that the program functions
|
|
as advertised, but I assume no responsibility for <SPAN CLASS="textbf">anything</SPAN>
|
|
it does to your computer or data.</SPAN>
|
|
</DIV>
|
|
<P>
|
|
<DIV ALIGN="CENTER">
|
|
<BR>
|
|
<BR>
|
|
</DIV>
|
|
<P>
|
|
<DIV ALIGN="CENTER">Sorry for this disclaimer, but we live in paranoid times.
|
|
</DIV>
|
|
<P>
|
|
<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.
|
|
|
|
</td></tr>
|
|
</Table>
|
|
|
|
</DIV>
|
|
<P>
|
|
<DIV ALIGN="CENTER">
|
|
<BR>
|
|
<BR>
|
|
</DIV>
|
|
<P>
|
|
<DIV ALIGN="CENTER">
|
|
</DIV>
|
|
|
|
<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"
|
|
HREF="#foot232"><SUP><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN></SUP></A>
|
|
<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
|
|
the program. Even the author frequently refers to the manual. Really.
|
|
|
|
<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>
|
|
<LI>Important stuff is emphasized: <SPAN CLASS="textit">important</SPAN>.
|
|
|
|
<P>
|
|
</LI>
|
|
<LI>Websites look like this: <TT><A NAME="tex2html5"
|
|
HREF="http://www.mellowood.ca/mma/index.html">http://www.mellowood.ca/mma/index.html</A></TT>
|
|
<P>
|
|
</LI>
|
|
<LI>Filenames are set in bold typewriter font: <TT><SPAN CLASS="textbf">filename.mma</SPAN></TT>
|
|
|
|
<P>
|
|
</LI>
|
|
<LI>Lines extracted from a
|
|
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> input file are set on individual
|
|
lines:
|
|
|
|
<P>
|
|
|
|
<Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3>
|
|
<tr><td>
|
|
<B>A command from a file </B>
|
|
|
|
</td></tr>
|
|
</Table>
|
|
|
|
<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>
|
|
|
|
<Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3>
|
|
<tr><td>
|
|
<B>$ enter this </B>
|
|
|
|
</td></tr>
|
|
</Table>
|
|
|
|
<P>
|
|
</LI>
|
|
</UL>
|
|
|
|
<P>
|
|
|
|
<H2><A NAME="SECTION00122000000000000000">
|
|
<SPAN CLASS="logo,LaTeX">L<SUP><SMALL>A</SMALL></SUP>T<SMALL>E</SMALL>X</SPAN> and HTML</A>
|
|
</H2>
|
|
|
|
<P>
|
|
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.
|
|
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
|
|
<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
|
|
...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>
|
|
<LI>Various <TT><SPAN CLASS="textbf">README</SPAN></TT> files in the distribution.
|
|
|
|
<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>
|
|
You'll need a text editor like <SPAN CLASS="textit">vi</SPAN>, <SPAN CLASS="textit">emacs</SPAN>, etc. to create
|
|
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"
|
|
HREF="#foot347"><SUP><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">4</SPAN></SUP></A>, must somewhere in your
|
|
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
|
|
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.
|
|
|
|
<P>
|
|
</LI>
|
|
<LI>A number of library files defining standard rhythms. These
|
|
should all be installed under the directory
|
|
<TT><SPAN CLASS="textbf">/usr/local/share/mma/lib/stdlib</SPAN></TT>.
|
|
|
|
<P>
|
|
</LI>
|
|
</UL>
|
|
|
|
<P>
|
|
The scripts <TT><SPAN CLASS="textbf">cp-install</SPAN></TT> or <TT><SPAN CLASS="textbf">ln-install</SPAN></TT> will install
|
|
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> properly on most Linux
|
|
systems. Both scripts assume that main script is to be installed in
|
|
<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
|
|
can edit the paths in the script. The only supported alternate to use
|
|
is <TT><SPAN CLASS="textbf">/usr/share/mma</SPAN></TT>.
|
|
|
|
<P>
|
|
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.
|
|
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>
|
|
In addition, you <SPAN CLASS="textit">can</SPAN> run
|
|
<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
|
|
<TT>/usr/local/</TT>) to run either install script. Use the ``su'' or
|
|
``sudo'' command for this.
|
|
|
|
<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>
|
|
|
|
<Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3>
|
|
<tr><td>
|
|
<B>$ mma myfile <ENTER> </B>
|
|
|
|
</td></tr>
|
|
</Table>
|
|
|
|
<P>
|
|
will invoke
|
|
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> and, assuming no errors are found, create a MIDI
|
|
file <TT><SPAN CLASS="textbf">myfile.mid</SPAN></TT>.
|
|
|
|
<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>,
|
|
V<SMALL>OLUME</SMALL>, etc. <A HREF="node23.html#sec-directives">Directives</A>.
|
|
|
|
<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
|
|
<SPAN CLASS="textit">good thing</SPAN>--and you really should use them. But, in most cases
|
|
|
|
<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"
|
|
HREF="#foot315"><SUP><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">5</SPAN></SUP></A>
|
|
<P>
|
|
Comments are stripped from the input stream. Lines starting with the
|
|
C<SMALL>OMMENT</SMALL> directive are also ignored. See the
|
|
<A HREF="node23.html#comment">comment discussion</A> for details.
|
|
|
|
<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>
|
|
|
|
<Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3>
|
|
<tr><td>
|
|
<B>Tempo 120
|
|
<BR>
|
|
Fm
|
|
<BR>
|
|
C7
|
|
<BR> ...</B>
|
|
|
|
</td></tr>
|
|
</Table>
|
|
|
|
<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
|
|
<SPAN CLASS="textit">D.S.</SPAN> and <SPAN CLASS="textit">Coda</SPAN> are not internally supported (but can be
|
|
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>
|
|
|
|
<Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3>
|
|
<tr><td>
|
|
<B>Tempo 120 </B>
|
|
|
|
</td></tr>
|
|
</Table>
|
|
|
|
<P>
|
|
could be entered in your file as:
|
|
|
|
<P>
|
|
|
|
<Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3>
|
|
<tr><td>
|
|
<B>TEMPO 120 </B>
|
|
|
|
</td></tr>
|
|
</Table>
|
|
|
|
<P>
|
|
or even
|
|
|
|
<P>
|
|
|
|
<Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3>
|
|
<tr><td>
|
|
<B>TeMpO 120 </B>
|
|
|
|
</td></tr>
|
|
</Table>
|
|
|
|
<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
|
|
<A HREF="node26.html#sec-paths">Paths and Filenames</A>.
|
|
|
|
<P>
|
|
<BR><HR><H4>Footnotes</H4>
|
|
<DL>
|
|
<DT><A NAME="foot192">...,</A><A
|
|
HREF="node1.html#tex2html1"><SUP><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN></SUP></A></DT>
|
|
<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>
|
|
<DT><A NAME="foot193">...
|
|
MIDI</A><A
|
|
HREF="node1.html#tex2html2"><SUP><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN></SUP></A></DT>
|
|
<DD>MIDI is an acronym for Musical Instrument Digital
|
|
Interface.
|
|
|
|
</DD>
|
|
<DT><A NAME="foot232">... perspectives.</A><A
|
|
HREF="node1.html#tex2html4"><SUP><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN></SUP></A></DT>
|
|
<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>
|
|
<DT><A NAME="foot347">...mma</A><A
|
|
HREF="node1.html#tex2html7"><SUP><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">4</SPAN></SUP></A></DT>
|
|
<DD>In the
|
|
distribution this is <TT>mma.py</TT>. It is renamed to save a few
|
|
keystrokes when entering the command.
|
|
|
|
</DD>
|
|
<DT><A NAME="foot315">... slashes).</A><A
|
|
HREF="node1.html#tex2html9"><SUP><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">5</SPAN></SUP></A></DT>
|
|
<DD>The first choice for
|
|
a comment character was a single ``#'', but that sign is used for
|
|
``sharps'' in chord notation.
|
|
|
|
</DD>
|
|
</DL>
|
|
<DIV CLASS="navigation"><HR>
|
|
<!--Navigation Panel-->
|
|
<A NAME="tex2html339"
|
|
HREF="node2.html">
|
|
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
|
<A NAME="tex2html337"
|
|
HREF="mma.html">
|
|
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
|
<A NAME="tex2html331"
|
|
HREF="mma.html">
|
|
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
|
<BR>
|
|
<B> Next:</B> <A NAME="tex2html340"
|
|
HREF="node2.html">Running</A>
|
|
<B> Up:</B> <A NAME="tex2html338"
|
|
HREF="mma.html">Reference Manual</A>
|
|
<B> Previous:</B> <A NAME="tex2html332"
|
|
HREF="mma.html">Reference Manual</A></DIV>
|
|
<!--End of Navigation Panel-->
|
|
<ADDRESS>
|
|
bob
|
|
2008-09-28
|
|
</ADDRESS>
|
|
</BODY>
|
|
</HTML>
|