<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <!--Converted with LaTeX2HTML 2008 (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>Other Commands and Directives</TITLE> <META NAME="description" CONTENT="Other Commands and Directives"> <META NAME="keywords" CONTENT="mma"> <META NAME="resource-type" CONTENT="document"> <META NAME="distribution" CONTENT="global"> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8"> <META NAME="Generator" CONTENT="LaTeX2HTML v2008"> <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css"> <LINK REL="STYLESHEET" HREF="mma.css"> <LINK REL="next" HREF="node25.html"> <LINK REL="previous" HREF="node23.html"> <LINK REL="up" HREF="mma.html"> <LINK REL="next" HREF="node25.html"> </HEAD> <BODY bgcolor="#ffffff"> <DIV CLASS="navigation"><!--Navigation Panel--> <A NAME="tex2html794" HREF="node25.html"> <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> <A NAME="tex2html792" HREF="mma.html"> <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> <A NAME="tex2html786" HREF="node23.html"> <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> <BR> <B> Next:</B> <A NAME="tex2html795" HREF="node25.html">Begin/End Blocks</A> <B> Up:</B> <A NAME="tex2html793" HREF="mma.html">Reference Manual</A> <B> Previous:</B> <A NAME="tex2html787" HREF="node23.html">Fine Tuning (Translations)</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="tex2html796" HREF="node24.html#SECTION002410000000000000000">AllTracks</A> <LI><A NAME="tex2html797" HREF="node24.html#SECTION002420000000000000000">Articulate</A> <LI><A NAME="tex2html798" HREF="node24.html#SECTION002430000000000000000">Copy</A> <LI><A NAME="tex2html799" HREF="node24.html#SECTION002440000000000000000">Comment</A> <LI><A NAME="tex2html800" HREF="node24.html#SECTION002450000000000000000">Debug</A> <LI><A NAME="tex2html801" HREF="node24.html#SECTION002460000000000000000">Delete</A> <LI><A NAME="tex2html802" HREF="node24.html#SECTION002470000000000000000">Direction</A> <LI><A NAME="tex2html803" HREF="node24.html#SECTION002480000000000000000">KeySig</A> <LI><A NAME="tex2html804" HREF="node24.html#SECTION002490000000000000000">Mallet</A> <UL> <LI><A NAME="tex2html805" HREF="node24.html#SECTION002491000000000000000">Rate</A> <LI><A NAME="tex2html806" HREF="node24.html#SECTION002492000000000000000">Decay</A> </UL> <BR> <LI><A NAME="tex2html807" HREF="node24.html#SECTION0024100000000000000000">Octave</A> <LI><A NAME="tex2html808" HREF="node24.html#SECTION0024110000000000000000">Off</A> <LI><A NAME="tex2html809" HREF="node24.html#SECTION0024120000000000000000">On</A> <LI><A NAME="tex2html810" HREF="node24.html#SECTION0024130000000000000000">Print</A> <LI><A NAME="tex2html811" HREF="node24.html#SECTION0024140000000000000000">PrintActive</A> <LI><A NAME="tex2html812" HREF="node24.html#SECTION0024150000000000000000">Restart</A> <LI><A NAME="tex2html813" HREF="node24.html#SECTION0024160000000000000000">ScaleType</A> <LI><A NAME="tex2html814" HREF="node24.html#SECTION0024170000000000000000">Seq</A> <LI><A NAME="tex2html815" HREF="node24.html#SECTION0024180000000000000000">Strum</A> <LI><A NAME="tex2html816" HREF="node24.html#SECTION0024190000000000000000">Synchronize</A> <LI><A NAME="tex2html817" HREF="node24.html#SECTION0024200000000000000000">Transpose</A> <LI><A NAME="tex2html818" HREF="node24.html#SECTION0024210000000000000000">Unify</A> </UL> <!--End of Table of Child-Links--> <HR> <H1><A NAME="SECTION002400000000000000000"></A> <A NAME="sec-directives"></A> <BR> Other Commands and Directives </H1> <P> In addition to the “Pattern”, “Sequence”, “Groove” and “Repeat” and other directives discussed earlier, and chord data, <FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> supports a number of directives which affect the flavor of your music. <P> The subjects presented in this chapter are ordered alphabetically. <P> <H1><A NAME="SECTION002410000000000000000"></A> <A NAME="alltracks"></A> <BR> AllTracks </H1> <P> Sometimes you want to apply the same command to all the currently defined tracks; for example, you might want to ensure that <SPAN CLASS="textit">no</SPAN> tracks have S<SMALL>EQ</SMALL>R<SMALL>ND</SMALL> set. Yes, you could go though each track (and hope you don't miss any) and explicitly issue the command: <P> <Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3> <tr><td> <B>Bass SeqRnd Off ... <BR> Chord SeqRnd Off </B> </td></tr> </Table> <P> But, <P> <Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3> <tr><td> <B>AllTracks SeqRnd Off </B> </td></tr> </Table> <P> is much simpler. Similarly, you can set the articulation for all tracks with: <P> <Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3> <tr><td> <B>AllTracks Articulate 80 </B> </td></tr> </Table> You can even combine this with a B<SMALL>EGIN</SMALL>/E<SMALL>ND</SMALL> like: <P> <Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3> <tr><td> <B>Begin AllTracks <BR> Articulate 80 <BR> SeqRnd Off <BR> Rskip 0 <BR> End </B> </td></tr> </Table> <P> This command is handy when you are changing an existing G<SMALL>ROOVE</SMALL>. <P> There are two forms of the A<SMALL>LL</SMALL>T<SMALL>RACKS</SMALL> command. The first, as discussed above, applies to all tracks that are currently defined. Please note that S<SMALL>OLO</SMALL>, M<SMALL>ELODY</SMALL> and A<SMALL>RIA</SMALL> tracks are <SPAN CLASS="textit">not</SPAN> modified. <P> The second form of the command lets you specify one or more track types. For example, you may want to increase the volume of all the D<SMALL>RUM</SMALL> tracks: <P> <Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3> <tr><td> <B>AllTracks Drum Volume +20 </B> </td></tr> </Table> <P> Or to set the articulation on B<SMALL>ASS</SMALL> and W<SMALL>ALK</SMALL> tracks: <P> <Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3> <tr><td> <B>AllTracks Bass Walk Articulate 55 </B> </td></tr> </Table> <P> If you specify track types you can use any of B<SMALL>ASS</SMALL>, C<SMALL>HORD</SMALL>, A<SMALL>RPEGGIO</SMALL>, S<SMALL>CALE</SMALL>, D<SMALL>RUM</SMALL>, W<SMALL>ALK</SMALL>, M<SMALL>ELODY</SMALL>, S<SMALL>OLO</SMALL> and A<SMALL>RIA</SMALL> tracks. <P> <H1><A NAME="SECTION002420000000000000000"></A> <A NAME="articulate"></A> <BR> Articulate </H1> <P> When <FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> processes a music file, all the note lengths specified in a pattern are converted to MIDI lengths. <P> For example in: <P> <Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3> <tr><td> <B>Bass Define BB 1 4 1 100; 2 4 5 90; 3 4 1 80; 4 4 5 90 </B> </td></tr> </Table> <P> bass notes on beats 1, 2, 3 and 4 are defined. All are quarter notes. <FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> , being quite literal about things, will make each note exactly 192 MIDI ticks long--which means that the note on beat 2 will start at the same time as the note on beat 1 ends. <P> <FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> has an A<SMALL>RTICULATE</SMALL> setting for each voice. This value is applied to shorten or lengthen the note length. By default, the setting is 90. Each generated note duration is taken to be a percentage of this setting, So, a quarter note with a MIDI tick duration of 192 will become 172 ticks long. <P> If A<SMALL>RTICULATE</SMALL> is applied to a short note, you are guaranteed that the note will never be less than 1 MIDI tick in length. <P> To set the value, use a line like: <P> <Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3> <tr><td> <B>Chord-1 Articulate 96 </B> </td></tr> </Table> <P> A<SMALL>RTICULATE</SMALL> values must be greater than 0 and less than or equal to 200. Values over 100 will lengthen the note. Settings greater than 120 will generate a warning. <P> You can specify a different A<SMALL>RTICULATE</SMALL> for each bar in a sequence. Repeated values can be represented with a “/”: <P> <Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3> <tr><td> <B>Chord Articulate 50 60 / 30 </B> </td></tr> </Table> <P> Notes: The full values for the notes are saved with the pattern definition. The articulation adjustment is applied at run time. The A<SMALL>RTICULATE</SMALL> setting is saved with a G<SMALL>ROOVE</SMALL>. <P> Articulate settings can easily be modified by prefacing the values with a “+” or “-” which will increment or decrement the existing values. For example: <P> <Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3> <tr><td> <B>Chord Articulate 80 85 90 95 <BR> Chord Articulate +10 -10 </B> </td></tr> </Table> <P> results in the C<SMALL>HORD </SMALL>A<SMALL>RTICULATE</SMALL> setting of: “90 75 100 85”. Having fewer values that the current sequence size is fine. The inc/dec values get expanded to the sequence size and are applied to the existing settings. <P> <H1><A NAME="SECTION002430000000000000000"></A> <A NAME="copy"></A> <BR> Copy </H1> <P> Sometimes it is useful to duplicate the settings from one voice to another. The C<SMALL>OPY</SMALL> command does just that: <P> <Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3> <tr><td> <B>Bass-1 Copy Bass </B> </td></tr> </Table> <P> will copy the settings from the <SPAN CLASS="textit">Bass</SPAN> track to the <SPAN CLASS="textit">Bass-1</SPAN> track. <P> The C<SMALL>OPY</SMALL> command only works between tracks of the same type. <P> The following settings are copied: <P> <UL> <LI><A HREF="#articulate">Articulate</A> </LI> <LI><A HREF="node14.html#compress">Compress</A> </LI> <LI><A HREF="#scale-direction">Direction</A> </LI> <LI><A HREF="node15.html#harmony">Harmony</A> </LI> <LI><A HREF="node14.html#chord-invert">Invert</A> </LI> <LI><A HREF="#octave">Octave</A> </LI> <LI><A HREF="node13.html#rskip">RSkip</A> </LI> <LI><A HREF="node13.html#rtime">RTime</A> </LI> <LI><A HREF="node18.html#rvolume">RVolume</A> </LI> <LI><A HREF="#scale-type">ScaleType</A> </LI> <LI><A HREF="#strum">Strum</A> </LI> <LI><A HREF="node22.html#set-voice">Voice</A> or <A HREF="node4.html#drum-tone">Tone</A> </LI> <LI><A HREF="node18.html#volume">Volume</A> <P> </LI> </UL> <P> Warning: You are probably better off to use internal macros for this. <P> <H1><A NAME="SECTION002440000000000000000"></A><A NAME="comment"></A> <BR> Comment </H1> <P> As previously discussed, a comment in <FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> is anything following a “//” in a line. A second way of marking a comment is with the C<SMALL>OMMENT</SMALL> directive. This is quite useful in combination the B<SMALL>EGIN</SMALL> and E<SMALL>ND</SMALL> directives. For example: <P> <Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3> <tr><td> <B>Begin Comment <BR> This is a description spanning <BR> several lines which will be <BR> ignored by MMA. <BR> End </B> </td></tr> </Table> <P> You could achieve the same with: <P> <Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3> <tr><td> <B>// This is a description spanning <BR> // several lines which will be <BR> // ignored by MMA. </B> </td></tr> </Table> <P> or even: <P> <Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3> <tr><td> <B>Comment This is a description spanning <BR> Comment several lines which will be <BR> Comment ignored by MMA. </B> </td></tr> </Table> <P> One minor difference between <SPAN CLASS="textbf">//</SPAN> and C<SMALL>OMMENT</SMALL> is that the first is discarded when the input stream is read; the more verbose version is discarded during line processing. <P> Quite often it is handy to delete large sections of a song with a B<SMALL>EGIN </SMALL>C<SMALL>OMMENT/</SMALL>E<SMALL>ND</SMALL> on a temporary basis. <P> <H1><A NAME="SECTION002450000000000000000"></A> <A NAME="debug"></A> <A NAME="debugging"></A> <BR> Debug </H1> <P> To enable you to find problems in your song files (and, perhaps, even find problems with <FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> itself) various debugging messages can be displayed. These are normally set from the command line <A HREF="node2.html#sec-running">command line</A>. <P> However, it is possible to enable various debugging messages dynamically in a song file using the D<SMALL>EBUG</SMALL> directive. In a debug statement you can enable or disable any of a variety of messages. A typical directive is: <P> <Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3> <tr><td> <B>Debug Debug=On Expand=Off Patterns=On </B> </td></tr> </Table> <P> Each section of the debug directive consists of a <SPAN CLASS="textit">mode</SPAN> and the command word ON or O<SMALL>FF</SMALL>. The two parts must be joined by a single “<SPAN CLASS="textit"><SPAN CLASS="MATH">=</SPAN></SPAN>”. You may use the values “0” for “Off” and “1” for “On” if desired. <P> The available modes with the equivalent command line switches are: <P> <BLOCKQUOTE> <TABLE CELLPADDING=3 BORDER="1"> <TR><TD ALIGN="LEFT"><SPAN CLASS="textit">Mode</SPAN></TD> <TD ALIGN="LEFT" COLSPAN=2><SPAN><SPAN CLASS="textit">Command Line Equivalent</SPAN></SPAN></TD> </TR> <TR><TD ALIGN="LEFT">Debug</TD> <TD ALIGN="LEFT">-d</TD> <TD ALIGN="LEFT">debugging messages</TD> </TR> <TR><TD ALIGN="LEFT">Filenames</TD> <TD ALIGN="LEFT">-o</TD> <TD ALIGN="LEFT">display file names</TD> </TR> <TR><TD ALIGN="LEFT">Patterns</TD> <TD ALIGN="LEFT">-p</TD> <TD ALIGN="LEFT">pattern creation</TD> </TR> <TR><TD ALIGN="LEFT">Sequence</TD> <TD ALIGN="LEFT">-s</TD> <TD ALIGN="LEFT">sequence creation</TD> </TR> <TR><TD ALIGN="LEFT">Runtime</TD> <TD ALIGN="LEFT">-r</TD> <TD ALIGN="LEFT">running progress</TD> </TR> <TR><TD ALIGN="LEFT">Warnings</TD> <TD ALIGN="LEFT">-w</TD> <TD ALIGN="LEFT">warning messages</TD> </TR> <TR><TD ALIGN="LEFT">Expand</TD> <TD ALIGN="LEFT">-e</TD> <TD ALIGN="LEFT">display expanded lines</TD> </TR> <TR><TD ALIGN="LEFT">Plectrum</TD> <TD ALIGN="LEFT"> </TD> <TD ALIGN="LEFT">display Plectrum chord shapes</TD> </TR> <TR><TD ALIGN="LEFT">Roman</TD> <TD ALIGN="LEFT"> </TD> <TD ALIGN="LEFT">display Roman numeral chord conversions</TD> </TR> </TABLE> </BLOCKQUOTE> <P> The modes and command are case-insensitive (although the command line switches are not). The options for P<SMALL>LECTRUM</SMALL> and R<SMALL>OMAN</SMALL> are not accessible from the command line. <P> The current state of the debug flags is saved in the variable $_Debug and the state prior to a change is saved in $_LastDebug. <P> <H1><A NAME="SECTION002460000000000000000"></A> <A NAME="sec-delete"></A> <BR> Delete </H1> <P> If you are using a track in only one part of your song, especially if it is at the start, it may be wise to free that track's resources when you are done with it. The D<SMALL>ELETE</SMALL> command does just that: <P> <Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3> <tr><td> <B>Solo Delete </B> </td></tr> </Table> <P> If a MIDI channel has been assigned to that track, it is marked as “available” and the track is deleted. Any data already saved in the MIDI track will be written when <FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> is finished processing the song file. <P> <H1><A NAME="SECTION002470000000000000000"></A> <A NAME="scale-direction"></A> <BR> Direction </H1> <P> In tracks using chords or scales you can change the direction in which they are applied: <P> <Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3> <tr><td> <B>Scale Direction UP </B> </td></tr> </Table> <P> The effects differ in different track types. For S<SMALL>CALE</SMALL> and A<SMALL>RPEGGIO</SMALL> tracks: <P> <BLOCKQUOTE> <TABLE CELLPADDING=3> <TR><TD ALIGN="RIGHT">UP</TD> <TD ALIGN="LEFT">Plays in upward direction only</TD> </TR> <TR><TD ALIGN="RIGHT">DOWN</TD> <TD ALIGN="LEFT">Plays in downward direction only</TD> </TR> <TR><TD ALIGN="RIGHT">BOTH</TD> <TD ALIGN="LEFT">Plays upward and downward (<SPAN CLASS="textit">default</SPAN>)</TD> </TR> <TR><TD ALIGN="RIGHT">RANDOM</TD> <TD ALIGN="LEFT">Plays notes from the chord or scale randomly</TD> </TR> </TABLE> </BLOCKQUOTE> <P> <BLOCKQUOTE>When this command is encountered in a S<SMALL>CALE</SMALL> track the start point of the scale is reset. </BLOCKQUOTE> <P> <P> A W<SMALL>ALK</SMALL> track recognizes the following option settings: <P> <BLOCKQUOTE> <TABLE CELLPADDING=3> <TR><TD ALIGN="RIGHT">BOTH</TD> <TD ALIGN="LEFT">The default. The bass pattern will go up and down a partial scale. Some notes may be repeated.</TD> </TR> <TR><TD ALIGN="RIGHT">UP</TD> <TD ALIGN="LEFT">Notes will be chosen sequentially from an ascending, partial scale.</TD> </TR> <TR><TD ALIGN="RIGHT">DOWN</TD> <TD ALIGN="LEFT">Notes will be chosen sequentially from a descending, partial scale.</TD> </TR> <TR><TD ALIGN="RIGHT">RANDOM</TD> <TD ALIGN="LEFT">Notes will be chosen in a random direction from a partial scale.</TD> </TR> </TABLE> </BLOCKQUOTE> <P> <BLOCKQUOTE>All four patterns are useful and create quite different effects. </BLOCKQUOTE> <P> The C<SMALL>HORD</SMALL> tracks D<SMALL>IRECTION</SMALL> only has an effect when the S<SMALL>TRUM</SMALL> setting has a non-zero value. In this case the following applies: <P> <BLOCKQUOTE> <TABLE CELLPADDING=3> <TR><TD ALIGN="RIGHT">UP</TD> <TD ALIGN="LEFT">The default. Notes are sounded from the lowest tone to the highest.</TD> </TR> <TR><TD ALIGN="RIGHT">DOWN</TD> <TD ALIGN="LEFT">Notes are sounded from the highest to the lowest.</TD> </TR> <TR><TD ALIGN="RIGHT">BOTH</TD> <TD ALIGN="LEFT">The UP and DOWN values are alternated for each successive chord.</TD> </TR> <TR><TD ALIGN="RIGHT">RANDOM</TD> <TD ALIGN="LEFT">A random direction is selected for each chord.</TD> </TR> </TABLE> </BLOCKQUOTE> <P> You can specify a different D<SMALL>IRECTION</SMALL> for each bar in a sequence. Repeated values can be represented with a “/”: <P> <Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3> <tr><td> <B>Arpeggio Direction Up Down / Both </B> </td></tr> </Table> <P> The setting is ignored by B<SMALL>ASS</SMALL>, D<SMALL>RUM</SMALL> and S<SMALL>OLO</SMALL> tracks. <P> <H1><A NAME="SECTION002480000000000000000"></A> <A NAME="keysig"></A> <A NAME="keysignature"></A> <BR> KeySig </H1> <P> The key signature is an underlining concept in all modern music. In <FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> it will effect the notes used in S<SMALL>OLO</SMALL> or M<SMALL>ELODY</SMALL> tracks, is a basic requirement for R<SMALL>OMAN</SMALL> numeral chords, and sets a MIDI Key Signature event.<A NAME="tex2html91" HREF="#foot12981"><SUP><SPAN CLASS="arabic">24</SPAN>.<SPAN CLASS="arabic">1</SPAN></SUP></A> In most cases you should set the key signature in all your songs. <P> Setting the key signature is simple to do: <P> <Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3> <tr><td> <B>KeySig 2b </B> </td></tr> </Table> <P> The argument consists of a single digit “0” to “7” followed by a “b” or “&” for flat keys or a “#” for sharp keys. <P> As a more musical alternate, you can use a pitch name like “F” or “G#”. <P> The optional keywords “Major” or “Minor” (these can be abbreviated to “Maj” or “Min” ... and case doesn't count) can be added to this command. This will accomplish two things: <P> <OL> <LI>The MIDI track Key Signature event will be set to reflect minor or major. <P> </LI> <LI>If you are using a musical name the proper key (number of flats or sharps) will be used. <P> </LI> </OL> <P> To summarize, the following are all valid K<SMALL>EY</SMALL>S<SMALL>IG</SMALL> directives: <P> <Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3> <tr><td> <B>KeySig 2# Major <BR> KeySig 1b <BR> KeySig 0b Min <BR> KeySig F Min <BR> KeySig A Major </B> </td></tr> </Table> <P> <H1><A NAME="SECTION002490000000000000000"> Mallet</A> </H1> <P> Some instruments (Steel-drums, banjos, marimbas, etc.) are normally played with rapidly repeating notes. Instead of painfully inserting long lists of these notes, you can use the M<SMALL>ALLET</SMALL> directive. The M<SMALL>ALLET</SMALL> directive accepts a number of options, each an OPTION=VALUE pair. For example: <P> <Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3> <tr><td> <B>Solo-Marimba Mallet Rate=16 Decay=-5 </B> </td></tr> </Table> <P> This command is also useful in creating drum rolls. For example: <P> <Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3> <tr><td> <B>Begin Drum-Snare2 <BR> Tone SnareDrum1 <BR> Volume F <BR> Mallet Rate=32 Decay=-3 <BR> Rvolume 3 <BR> Sequence z z z 1 1 100 <BR> End </B> </td></tr> </Table> <P> The following options are supported: <P> <H2><A NAME="SECTION002491000000000000000"> Rate</A> </H2> <P> The R<SMALL>ATE</SMALL> must be a valid note length (i.e., 8, 16, or even 16.+8). <P> For example: <P> <Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3> <tr><td> <B>Solo-Marimba Mallet Rate=16 </B> </td></tr> </Table> <P> will set all the notes in the “Solo-Marimba” track to be sounded a series of 16th notes. <P> <UL> <LI>Note duration modifiers such as articulate are applied to each resultant note, <P> </LI> <LI>It is guaranteed that the note will sound at least once, <P> </LI> <LI>The use of note lengths assures a consistent sound independent of the song tempo. <P> </LI> </UL> <P> To disable this setting use a value of “0”. <P> <H2><A NAME="SECTION002492000000000000000"> Decay</A> </H2> <P> You can adjust the volume (velocity) of the notes being repeated when M<SMALL>ALLET</SMALL> is enabled: <P> <Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3> <tr><td> <B>Drum-Snare Mallet Decay=-15 </B> </td></tr> </Table> <P> The argument is a percentage of the current value to add to the note each time it is struck. In this example, assuming that the note length calls for 4 “strikes” and the initial velocity is 100, the note will be struck with a velocity of 100, 85, 73 and 63. <P> Important: a positive value will cause the notes to get louder, negative values cause the notes to get softer. <P> Note velocities will never go below 1 or above 255. Note, however, that notes with a velocity of 1 will most likely be inaudible. <P> The decay option value must be in the range -50 to 50; however, be cautious using any values outside the range -5 to 5 since the volume (velocity) of the notes will change quite quickly. The default value is 0 (no decay). <P> <H1><A NAME="SECTION0024100000000000000000"></A> <A NAME="octave"></A> <BR> Octave </H1> <P> When <FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> initializes and after the S<SMALL>EQ</SMALL>C<SMALL>LEAR</SMALL> command all track octaves are set to “4”. This will place most chord and bass notes in the region of middle C. <P> You can change the octave for any voice with O<SMALL>CTAVE</SMALL> command. For example: <P> <Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3> <tr><td> <B>Bass-1 Octave 3 </B> </td></tr> </Table> <P> Sets the notes used in the “Bass-1” track one octave lower than normal. <P> The octave specification can be any value from 0 to 10. Various combinations of I<SMALL>NVERT</SMALL>, T<SMALL>RANSPOSE</SMALL> and O<SMALL>CTAVE</SMALL> can force notes to be out of the valid MIDI range. In this case the lowest or highest available note will be used. <P> You can specify a different O<SMALL>CTAVE</SMALL> for each bar in a sequence. Repeated values can be represented with a “/”: <P> <Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3> <tr><td> <B>Chord Octave 4 5 / 4 </B> </td></tr> </Table> <P> Octave settings can easily be modified by prefacing the values with a “+” or “-” which will increment or decrement the existing values. For example: <P> <Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3> <tr><td> <B>Bass Octave 2 3 4 5 <BR> Bass Octave +1 +2 -1 -3 </B> </td></tr> </Table> <P> results in the B<SMALL>ASS </SMALL>O<SMALL>CTAVE</SMALL> setting of: “3 5 3 2”. Having fewer values that the current sequence size is fine. The inc/dec values get expanded to the sequence size and are applied to the existing settings. <P> <H1><A NAME="SECTION0024110000000000000000"></A> <A NAME="set-off"></A> <BR> Off </H1> <P> To disable the generation of MIDI output on a specific track: <P> <Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3> <tr><td> <B>Bass Off </B> </td></tr> </Table> <P> This can be used anywhere in a file. Use it to override the effect of a predefined groove, if you wish. This is simpler than resetting a voice in a groove. The only way to reset this command is with a O<SMALL>N</SMALL> directive. <P> <H1><A NAME="SECTION0024120000000000000000"></A> <A NAME="set-on"></A> <BR> On </H1> <P> To enable the generation of MIDI output on a specific track which has been disabled with an O<SMALL>FF</SMALL> directive: <P> <Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3> <tr><td> <B>Bass On </B> </td></tr> </Table> <P> Attempts to enable tracks disabled with the -T command line option generate a warning (the command is ignored). <P> <H1><A NAME="SECTION0024130000000000000000"> Print</A> </H1> <P> The P<SMALL>RINT</SMALL> directive will display its argument to the screen when it is encountered. For example, if you want to print the file name of the input file while processing, you could insert: <P> <Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3> <tr><td> <B>Print Making beautiful music for MY SONG </B> </td></tr> </Table> <P> No control characters are supported. <P> This can be useful in debugging input files. <P> <H1><A NAME="SECTION0024140000000000000000"> PrintActive</A> </H1> <P> The P<SMALL>RINT</SMALL>A<SMALL>CTIVE</SMALL> directive will the currently active G<SMALL>ROOVE</SMALL> and the active tracks. This can be quite useful when writing groove files and you want to modify and existing groove. <P> Any parameters given are printed as single comment at the end of the header line. <P> This is strictly a debugging tool. No P<SMALL>RINT</SMALL>A<SMALL>CTIVE</SMALL> statements should appear in finalized grooves or song files. <P> <H1><A NAME="SECTION0024150000000000000000"> Restart</A> </H1> <P> This command will reset a track (or all tracks) to a default state. You may find this particularly handy in S<SMALL>CALE</SMALL> and A<SMALL>RPEGGIO</SMALL> tracks when you want note selection to start in a particular place, not left over from previous bars. <P> Usage is simple: <P> <Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3> <tr><td> <B>Arpeggio Restart </B> </td></tr> </Table> <P> or to do the whole lot: <P> <Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3> <tr><td> <B>Restart </B> </td></tr> </Table> <P> You will find very few cases where the use of this command is necessary. <P> <H1><A NAME="SECTION0024160000000000000000"></A> <A NAME="scale-type"></A> <BR> ScaleType </H1> <P> This option is only used by S<SMALL>CALE</SMALL> tracks. It can be set for other tracks, but the setting is not used. <P> By default, the S<SMALL>CALE</SMALL>T<SMALL>YPE</SMALL> is set to A<SMALL>UTO</SMALL>. The settings permissible are: <P> <BLOCKQUOTE> <TABLE CELLPADDING=3> <TR><TD ALIGN="RIGHT">CHROMATIC</TD> <TD ALIGN="LEFT">Forces use of a chromatic scale</TD> </TR> <TR><TD ALIGN="RIGHT">AUTO</TD> <TD ALIGN="LEFT">Uses scale based on the current chord (default)</TD> </TR> </TABLE> </BLOCKQUOTE> <P> When this command is encountered in a S<SMALL>CALE</SMALL> track the start point of the scale is reset. <P> <H1><A NAME="SECTION0024170000000000000000"></A> <A NAME="seqnumber"></A> <BR> Seq </H1> <P> If your sequence, or groove, has more than one pattern (i.e., you have set SeqSize to a value other than 1), you can use this directive to force a particular pattern point to be used. The directive: <P> <Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3> <tr><td> <B>Seq </B> </td></tr> </Table> <P> resets the <SPAN CLASS="textit">sequence counter</SPAN> to 1. This means that the next bar will use the first pattern in the current sequence. You can force a specific pattern point by using an optional value after the directive. For example: <P> <Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3> <tr><td> <B>Seq 8 </B> </td></tr> </Table> <P> forces the use of pattern point 8 for the next bar. This can be quite useful if you have a multi-bar sequence and, perhaps, the eight bar is variation which you want used every eight bars, but also for a transition bar, or the final bar. Just put a <SMALL>SEQ 8</SMALL> at those points. You might also want to put a <SMALL>SEQ</SMALL> at the start of sections to force the restart of the count. <P> If you have enable sequence randomization with the S<SMALL>EQ</SMALL>R<SMALL>ND </SMALL>O<SMALL>N</SMALL> command, the randomization will be disabled by a S<SMALL>EQ</SMALL> command.<A NAME="tex2html92" HREF="#foot12904"><SUP><SPAN CLASS="arabic">24</SPAN>.<SPAN CLASS="arabic">2</SPAN></SUP></A> However, settings of track S<SMALL>EQ</SMALL>R<SMALL>ND</SMALL> will not be effected. One difference between S<SMALL>EQ</SMALL>R<SMALL>ND </SMALL>O<SMALL>FF</SMALL> and S<SMALL>EQ</SMALL> is that the current sequence point is set with the latter; with S<SMALL>EQ</SMALL>R<SMALL>ND </SMALL>O<SMALL>FF</SMALL> it is left at a random point. <P> Note: Using a value greater than the current S<SMALL>EQ</SMALL>S<SMALL>IZE</SMALL> is not permitted. <P> This is a very useful command! For example, look at the four bar introduction of the song “Exactly Like You”: <P> <Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3> <tr><td> <B>Groove BossanovaEnd <BR> seq 3 <BR> 1 C <BR> seq 2 <BR> 2 Am7 <BR> seq 1 <BR> 3 Dm7 <BR> seq 3 <BR> 4 G7 / G7#5 </B> </td></tr> </Table> <P> In this example the four bar “ending groove” has been used to create an interesting introduction. <P> <H1><A NAME="SECTION0024180000000000000000"></A> <A NAME="strum"></A> <BR> Strum </H1> <P> When <FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> generates a chord,<A NAME="tex2html93" HREF="#foot12914"><SUP><SPAN CLASS="arabic">24</SPAN>.<SPAN CLASS="arabic">3</SPAN></SUP></A> all the notes are played at the same time.<A NAME="tex2html94" HREF="#foot12983"><SUP><SPAN CLASS="arabic">24</SPAN>.<SPAN CLASS="arabic">4</SPAN></SUP></A> <P> To make the notes in a chord sound like something a guitar or banjo might play, use the S<SMALL>TRUM</SMALL> directive. For example: <P> <Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3> <tr><td> <B>Chord-1 Strum 5 </B> </td></tr> </Table> <P> sets the strumming factor to 5 for track Chord-1. The strum factor is specified in MIDI ticks. Usually values around 10 to 15 work just fine. The valid range for S<SMALL>TRUM</SMALL> is -300 to 300 (just under the duration of a quarter note). <P> In the previous example the first note in the chord will be played on the beat indicated by the pattern definition, the second note will be played 5 ticks later, etc. <P> You can specify a different S<SMALL>TRUM</SMALL> for each bar in a sequence. Repeated values can be represented with a “/”. Assuming that there are four bars in the current sequence: <P> <Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3> <tr><td> <B>Chord Strum 20 5 / 10 </B> </td></tr> </Table> <P> To make the effect of S<SMALL>TRUM</SMALL> more random (and human) you can set a range for the delay. For example: <P> <Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3> <tr><td> <B>Chord Strum 20,25 </B> </td></tr> </Table> <P> will cause <FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> to select a value between 20 and 25 ticks for each successive note. You can have a different range for each bar in your sequence. In most cases a small range is adequate. Large values can create “odd” effects. Note that the syntax calls for exactly two values and a comma, no spaces are permitted. <P> S<SMALL>TRUM</SMALL> can be used in all tracks except for D<SMALL>RUM</SMALL>. Since tracks other than C<SMALL>HORD</SMALL> only generate single notes, the command will only effect notes added via a H<SMALL>ARMONY</SMALL> or H<SMALL>ARMONY</SMALL>O<SMALL>NLY</SMALL> directive. Judicious use of S<SMALL>TRUM</SMALL> can add depth and a “cascading” effect. <P> Notes: <UL> <LI>When notes in a C<SMALL>HORD</SMALL> track have both a <SMALL>STRUM</SMALL> and <SMALL>INVERT</SMALL> applied, the order of the notes played will not necessarily be root, third, etc. The notes are sorted into ascending order, so for a C major scale with and <SMALL>INVERT</SMALL> of 1 the notes played would be “E G C”. <P> </LI> <LI>The strumming direction of notes in a C<SMALL>HORD</SMALL> track can be changed with the <A HREF="#scale-direction">D<SMALL>IRECTION</SMALL></A> command. <P> </LI> <LI>The D<SMALL>IRECTION</SMALL> directive only effects S<SMALL>TRUM</SMALL> timing in C<SMALL>HORD</SMALL> tracks. <P> </LI> <LI>In tracks other than C<SMALL>HORD</SMALL> the strum delays apply to notes after the initial note. In the case of H<SMALL>ARMONY</SMALL>O<SMALL>NLY</SMALL> tracks the delay will apply to the first generated note. <P> </LI> </UL> <P> <H1><A NAME="SECTION0024190000000000000000"></A> <A NAME="synchronize"></A> <BR> Synchronize </H1> <P> The MIDI tracks generated by <FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> are perfectly “legit” and should be playable in any MIDI file player. However, there are a few programs and/or situations in which you might need to use the <SMALL>SYNCHRONIZE</SMALL> options. <P> First, when a program is expecting all tracks to start at the same location, or is intolerant of “emptiness” at the start of a track, you can add a “tick note” at the start of each track.<A NAME="tex2html95" HREF="#foot12953"><SUP><SPAN CLASS="arabic">24</SPAN>.<SPAN CLASS="arabic">5</SPAN></SUP></A> <P> <Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3> <tr><td> <B>Synchronize START </B> </td></tr> </Table> <P> will insert a one tick note on/off event at MIDI offset 1. You can also generate this with the “-0” command line option. <P> Second, some programs think (wrongly) that all tracks should end at the same point.<A NAME="tex2html96" HREF="#foot12955"><SUP><SPAN CLASS="arabic">24</SPAN>.<SPAN CLASS="arabic">6</SPAN></SUP></A> Adding the command: <P> <Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3> <tr><td> <B>Synchronize END </B> </td></tr> </Table> <P> will delete all MIDI data past the end of the last bar in your input file and insert MIDI “all notes off” events at that point. You can also generate this effect with the “-1” command line option. <P> The commands can be combined in any order: <P> <Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3> <tr><td> <B>Synchronize End Start </B> </td></tr> </Table> <P> is perfectly valid. <P> <H1><A NAME="SECTION0024200000000000000000"> Transpose</A> </H1> <P> You can change the key of a piece with the “Transpose” command. For example, if you have a piece notated in the key of “C” and you want it played back in the key of “D”: <P> <Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3> <tr><td> <B>Transpose 2 </B> </td></tr> </Table> <P> will raise the playback by 2 semi-tones. Since <FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> 's author plays tenor saxophone <P> <Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3> <tr><td> <B>Transpose -2 </B> </td></tr> </Table> <P> which puts the MIDI keyboard into the same key as the horn, is not an uncommon directive <P> You can use any value between -12 and 12. All tracks (with the logical exception of the drum tracks) are effected by this command. <P> <H1><A NAME="SECTION0024210000000000000000"> Unify</A> </H1> <P> The U<SMALL>NIFY</SMALL> command is used to force multiple notes of the same voice and pitch to be combined into a single, long, tone. This is very useful when creating a sustained voice track. For example, consider the following which might be used in real groove file: <P> <Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3> <tr><td> <B>Begin Bass-Sus <BR> Sequence 1 1 1 90 &sstarf#star; 4 <BR> Articulate 100 <BR> Unify On <BR> Voice TremoloStrings <BR> End </B> </td></tr> </Table> <P> Without the U<SMALL>NIFY </SMALL>O<SMALL>N</SMALL> command the strings would be sounded (or hit) four times during each bar; with it enabled the four hits are combined into one long tone. This tone can span several bars if the note(s) remain the same. <P> The use of this command depends on a number of items: <P> <UL> <LI>The V<SMALL>OICE</SMALL> being used. It makes sense to use enable the setting if using a sustained tone like “Strings"; it probably doesn't make sense if using a tone like “Piano1”. <P> </LI> <LI>For tones to be combined you will need to have A<SMALL>RTICULATE</SMALL> set to a value of 100. Otherwise the on/off events will have small gaps in them which will cancel the effects of U<SMALL>NIFY</SMALL>. <P> </LI> <LI>Ensure that R<SMALL>TIME</SMALL> is not set for U<SMALL>NIFY</SMALL> tracks since the start times may cause gaps. <P> </LI> <LI>If your pattern or sequence has different volumes in different beats (or bars) the effect of a U<SMALL>NIFY</SMALL> will be to ignore volumes other than the first. Only the first N<SMALL>OTE </SMALL>O<SMALL>N</SMALL> and the last N<SMALL>OTE </SMALL>O<SMALL>FF</SMALL> events will appear in the MIDI file. <P> </LI> </UL> <P> You can specify a different U<SMALL>NIFY</SMALL> for each bar in a sequence. Repeated values can be represented with a “/”: <P> <Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3> <tr><td> <B>Chord Unify On / / Off </B> </td></tr> </Table> <P> But, you probably don't want to use this particular feature. <P> Valid arguments are “On” or “1” to enable; “Off” or “0” to disable. <BR><HR><H4>Footnotes</H4> <DL> <DT><A NAME="foot12981">... event.</A><A HREF="node24.html#tex2html91"><SUP><SPAN CLASS="arabic">24</SPAN>.<SPAN CLASS="arabic">1</SPAN></SUP></A></DT> <DD>For the most part, MIDI Key Signature events are ignored by playback programs. However, they <SPAN CLASS="textit">may</SPAN> be used in other MIDI programs which handle notation. </DD> <DT><A NAME="foot12904">... command.</A><A HREF="node24.html#tex2html92"><SUP><SPAN CLASS="arabic">24</SPAN>.<SPAN CLASS="arabic">2</SPAN></SUP></A></DT> <DD>A warning message will also be displayed. </DD> <DT><A NAME="foot12914">... chord,</A><A HREF="node24.html#tex2html93"><SUP><SPAN CLASS="arabic">24</SPAN>.<SPAN CLASS="arabic">3</SPAN></SUP></A></DT> <DD>In this case we define “chord” as two or more notes played at the same time. </DD> <DT><A NAME="foot12983">... time.</A><A HREF="node24.html#tex2html94"><SUP><SPAN CLASS="arabic">24</SPAN>.<SPAN CLASS="arabic">4</SPAN></SUP></A></DT> <DD>An exception to this are notes generated if R<SMALL>TIME</SMALL> <A HREF="node13.html#rtime">13.3</A> is set. </DD> <DT><A NAME="foot12953">... track.</A><A HREF="node24.html#tex2html95"><SUP><SPAN CLASS="arabic">24</SPAN>.<SPAN CLASS="arabic">5</SPAN></SUP></A></DT> <DD>Timidity truncates the start of tracks up to the first MIDI event when splitting out single tracks. </DD> <DT><A NAME="foot12955">... point.</A><A HREF="node24.html#tex2html96"><SUP><SPAN CLASS="arabic">24</SPAN>.<SPAN CLASS="arabic">6</SPAN></SUP></A></DT> <DD>Seq24 does strange looping if all tracks don't end identically. </DD> </DL> <DIV CLASS="navigation"><HR> <!--Navigation Panel--> <A NAME="tex2html794" HREF="node25.html"> <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> <A NAME="tex2html792" HREF="mma.html"> <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> <A NAME="tex2html786" HREF="node23.html"> <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> <BR> <B> Next:</B> <A NAME="tex2html795" HREF="node25.html">Begin/End Blocks</A> <B> Up:</B> <A NAME="tex2html793" HREF="mma.html">Reference Manual</A> <B> Previous:</B> <A NAME="tex2html787" HREF="node23.html">Fine Tuning (Translations)</A></DIV> <!--End of Navigation Panel--> <ADDRESS> bob 2010-11-07 </ADDRESS> </BODY> </HTML>