1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//en">
<!--Converted with LaTeX2HTML 2021 (Released January 1, 2021) -->
<HTML lang="en">
<HEAD>
<TITLE>Grooves</TITLE>
<META NAME="description" CONTENT="Grooves">
<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="viewport" CONTENT="width=device-width, initial-scale=1.0">
<META NAME="Generator" CONTENT="LaTeX2HTML v2021">
<LINK REL="STYLESHEET" HREF="mma.css">
<LINK REL="next" HREF="node7.html">
<LINK REL="previous" HREF="node5.html">
<LINK REL="next" HREF="node7.html">
</HEAD>
<BODY bgcolor="#ffffff">
<DIV CLASS="navigation"><!--Navigation Panel-->
<A
HREF="node7.html">
<IMG WIDTH="37" HEIGHT="24" ALT="next" SRC="next.png"></A>
<A
HREF="mma.html">
<IMG WIDTH="26" HEIGHT="24" ALT="up" SRC="up.png"></A>
<A
HREF="node5.html">
<IMG WIDTH="63" HEIGHT="24" ALT="previous" SRC="prev.png"></A>
<BR>
<B> Next:</B> <A
HREF="node7.html">Riffs</A>
<B> Up:</B> <A
HREF="mma.html">Reference Manual</A>
<B> Previous:</B> <A
HREF="node5.html">Sequences</A>
<BR>
<BR></DIV>
<!--End of Navigation Panel-->
<!--Table of Child-Links-->
<A ID="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
<UL CLASS="ChildLinks">
<LI><A ID="tex2html532"
HREF="node6.html#SECTION00610000000000000000">Creating A Groove</A>
<LI><A ID="tex2html533"
HREF="node6.html#SECTION00620000000000000000">Using A Groove</A>
<UL>
<LI><A ID="tex2html534"
HREF="node6.html#SECTION00621000000000000000">Extended Groove Notation</A>
<LI><A ID="tex2html535"
HREF="node6.html#SECTION00622000000000000000">Groove Search Summary</A>
<LI><A ID="tex2html536"
HREF="node6.html#SECTION00623000000000000000">Overlay Grooves</A>
</UL>
<BR>
<LI><A ID="tex2html537"
HREF="node6.html#SECTION00630000000000000000">Groove Aliases</A>
<LI><A ID="tex2html538"
HREF="node6.html#SECTION00640000000000000000">AllGrooves</A>
<UL>
<LI><A ID="tex2html539"
HREF="node6.html#SECTION00641000000000000000">Options</A>
</UL>
<BR>
<LI><A ID="tex2html540"
HREF="node6.html#SECTION00650000000000000000">Deleting Grooves</A>
<LI><A ID="tex2html541"
HREF="node6.html#SECTION00660000000000000000">Sticky</A>
<LI><A ID="tex2html542"
HREF="node6.html#SECTION00670000000000000000">Library Issues</A>
</UL>
<!--End of Table of Child-Links-->
<HR>
<H1><A ID="SECTION00600000000000000000"></A>
<A ID="sec-grooves"></A>
<BR>
Grooves
</H1>
<P>
Grooves, in some ways, are
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> 's answer to macros ... but they
are cooler, easier to use, and have a more musical name.
<P>
Really, though, a groove is just a simple mechanism for saving and
restoring a set of patterns and sequences. Using grooves it is easy to
create sequence libraries which can be incorporated into your songs
with a single command.
<P>
<H1><A ID="SECTION00610000000000000000">
Creating A Groove</A>
</H1>
<P>
A groove can be created at anytime in an input file with the command:
<P>
<Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3>
<tr><td>
<B>DefGroove SlowRhumba </B>
</td></tr>
</Table>
<P>
Optionally, you can include a documentation string to the end of this
command:
<P>
<Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3>
<tr><td>
<B>DefGroove SlowRumba A descriptive comment! </B>
</td></tr>
</Table>
<P>
A groove name can include any character, including digits and
punctuation. However, it cannot include a space character (used as a
delimiter), a colon “:” or a '/'.<A ID="tex2html36"
HREF="#foot1011"><SUP><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></SUP></A>
<P>
In normal operation the documentation strings are ignored. However,
when
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> is run with the -Dx command line option these strings are
printed to the terminal screen in <SPAN CLASS="logo,LaTeX">L<SUP><SMALL>A</SMALL></SUP>T<SMALL>E</SMALL>X</SPAN> format. The standard library
document is generated from this data. The comments <SPAN CLASS="textit">must</SPAN> be
suitable for <SPAN CLASS="logo,LaTeX">L<SUP><SMALL>A</SMALL></SUP>T<SMALL>E</SMALL>X</SPAN>: this means that special symbols like “#”,
“&”, etc. must be “quoted” with a preceding “ \”.
<P>
At this point the following information is saved:
<P>
<UL>
<LI>Current Sequence size,
</LI>
<LI>The current sequence for each track,
</LI>
<LI>Time setting (quarter notes per bar),
</LI>
<LI>“Accent”,
</LI>
<LI>“Articulation” settings for each track,
</LI>
<LI>“Compress”,
</LI>
<LI>“Direction”,
</LI>
<LI>“DupRoot”,
</LI>
<LI>“Harmony”,
</LI>
<LI>“HarmonyOnly”,
</LI>
<LI>“HarmonyVolume”,
</LI>
<LI>“Invert”,
</LI>
<LI>“Limit”,
</LI>
<LI>“Mallet” (rate and decay),
</LI>
<LI>“MidiSeq”,
</LI>
<LI>“MidiVoice”,
</LI>
<LI>“MidiClear”
</LI>
<LI>“NoteSpan”,
</LI>
<LI>“Octave”,
</LI>
<LI>“Range”,
</LI>
<LI>“RSkip”,
</LI>
<LI>“Rtime”,
</LI>
<LI>“RDuration”,
</LI>
<LI>“Rvolume”,
</LI>
<LI>“Scale”,
</LI>
<LI>“SeqRnd”, globally and for each track,
</LI>
<LI>“SeqRndWeight”, globally and for each track,
</LI>
<LI>“Strum”,
</LI>
<LI>“SwingMode” Status and Skew,
</LI>
<LI>“Time Signature”,
</LI>
<LI>“Tone” for drum tracks,
</LI>
<LI>“Unify”,
</LI>
<LI>“Voice”,
</LI>
<LI>“VoicingCenter”,
</LI>
<LI>“VoicingMode”,
</LI>
<LI>“VoicingMove”,
</LI>
<LI>“VoicingRange”,
</LI>
<LI>“Volume” for tracks and master,
</LI>
<LI>“VolumeRatio”.
<P>
</LI>
</UL>
<P>
<H1><A ID="SECTION00620000000000000000">
Using A Groove</A>
</H1>
<P>
You can restore a previously defined groove at anytime in your song
with:
<P>
<Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3>
<tr><td>
<B>Groove Name </B>
</td></tr>
</Table>
<P>
At this point all of the previously saved information is restored.
<P>
If the specified groove is not in memory
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> will search the
library files on disk for a file containing it. The search is done in
the files in the L<SMALL>IB</SMALL>P<SMALL>ATH</SMALL> directory
<A HREF="node33.html#libpath">here</A>. Please note, the search
ends with the <SPAN CLASS="textit">first</SPAN> matching groove name found. The search
begins with <SPAN CLASS="texttt"><SPAN CLASS="textbf">stdlib</SPAN></SPAN> and continues though the other directories
in your library (in alphabetical order). If you have two
grooves with the same name in different directories or files, please
read the section below on extended groove notation.
<P>
A few cautions:
<P>
<UL>
<LI>Pattern definitions are <SPAN CLASS="textit">not</SPAN> saved in grooves. Redefining
a pattern results in a new pattern definition. Sequences use the
pattern definition in effect when the sequence is declared. In
short, if you do something like:
<P>
<Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3>
<tr><td>
<B>Chord Define MyPat 1 2.2 90 </B>
</td></tr>
</Table>
<P>
and use the pattern “MyPat” in a chord sequence <SPAN CLASS="textit">and</SPAN> save that
pattern into a groove you should be careful <SPAN CLASS="textit">not to</SPAN> redefine
“MyPat”.
<P>
On the other hand, if you dynamically define patterns for your
sequences:
<P>
<Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3>
<tr><td>
<B>Chord Sequence {1 2.2 90} </B>
</td></tr>
</Table>
<P>
you'll be safe since you can't change these kind of settings (other
than by issuing a new S<SMALL>EQUENCE</SMALL> command.
<P>
</LI>
<LI>The “SeqSize” setting is restored with a groove. The sequence
point is also reset to bar 1. If you have multi-bar sequences,
restoring a groove may upset your idea of the sequence pattern.
<P>
</LI>
</UL>
<P>
To make life (infinitely) more interesting, you can specify more than
one previously defined groove. In this case the next groove is
selected after each bar. For example:
<P>
<Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3>
<tr><td>
<B>Groove Tango LightTango LightTangoSus LightTango </B>
</td></tr>
</Table>
<P>
would create the following bars:
<P>
<OL>
<LI>Tango
</LI>
<LI>LightTango
</LI>
<LI>LightTangoSus
</LI>
<LI>LightTango
</LI>
<LI>Tango
</LI>
<LI>...
</LI>
</OL>
<P>
Note how the groove pattern wraps around to the first one when the
list is exhausted. There is no way to select an item from the list,
except by going though it.
<P>
You might find this handy if you have a piece with an alternating time
signature. For example, you might have a <SPAN CLASS="textbf">3/4</SPAN> <SPAN CLASS="textbf">4/4</SPAN>
song. Rather than creating a 2 bar groove, you could do something
like:
<P>
<Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3>
<tr><td>
<B>Groove Groove34 Groove44 </B>
</td></tr>
</Table>
<P>
For long lists you can use the “/” to repeat the last groove in the
list. For example, this:
<P>
<Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3>
<tr><td>
<B>Groove G1 G1 G1 G3 G3 G4 G4 </B>
</td></tr>
</Table>
<P>
could be written as:
<P>
<Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3>
<tr><td>
<B>Groove G1 / / G3 / G4 </B>
</td></tr>
</Table>
<P>
When you use the “list” feature of G<SMALL>ROOVE</SMALL>s you should be
aware of what happens with the bar sequence number. Normally the
sequence number is incremented after each bar is processed; and, when
a new groove is selected the sequence number is reset (see S<SMALL>EQ</SMALL>,
<A HREF="node30.html#seqnumber">discussed here)</A>. When you use a
list which changes the G<SMALL>ROOVE</SMALL> after each bar the sequence
number is reset after each bar ... with one exception: if the same
G<SMALL>ROOVE</SMALL> is being used for two or more bars the sequence will not
be reset.<A ID="tex2html37"
HREF="#foot9411"><SUP><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN></SUP></A>
<P>
Another way to select G<SMALL>ROOVE</SMALL>s is to use a list of grooves with
a leading value. In its simplest form the leading value will just
select a groove from this list:
<P>
<Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3>
<tr><td>
<B>Groove 3 Grv1 Grv2 Grv3 Grv4 </B>
</td></tr>
</Table>
<P>
will select G<SMALL>RV3</SMALL> which gives the identical result as:
<P>
<Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3>
<tr><td>
<B>Groove Grv3 </B>
</td></tr>
</Table>
<P>
But, if you use a <SMALL>VARIABLE</SMALL>, you can select the G<SMALL>ROOVE</SMALL> to use based
on the value of that variable ... handy if you want different sounds
for repeated sections. Again, an example:
<P>
<Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3>
<tr><td>
<B>Set loop 1 // create counter with value of 1
<BR>
Repeat
<BR> Groove $loop BossaNovaSus BossaNova1Sus BossaNovaFill
<BR> print This is loop $Loop ...Groove is $_Groove
<BR> 1 A / Am
<BR> Inc Loop // Bump the counter value
<BR>
RepeatEnd 4 </B>
</td></tr>
</Table>
<P>
If you use this option, make sure the value of the counter is greater
than 0. Also, note that the values larger than the list count are
“looped” to be valid. The use of “/”s for repeated names is also
permitted. For an example have a look at the file <SPAN CLASS="texttt"><SPAN CLASS="textbf">grooves.mma</SPAN></SPAN>,
included in this distribution. You could get the same results with
various “if” statements, but this is easier.
<P>
<H2><A ID="SECTION00621000000000000000"></A>
<A ID="extended-groove"></A>
<BR>
Extended Groove Notation
</H2>
<P>
In addition to only loading a new groove by using the <SPAN CLASS="textit">name</SPAN> of a
G<SMALL>ROOVE</SMALL> you can also set the specific file that the
G<SMALL>ROOVE</SMALL> exists in by using a filename prefix:
<P>
<Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3>
<tr><td>
<B>Groove stdlib/rhumba:rhumbaend </B>
</td></tr>
</Table>
<P>
would load the “RhumbaEnd” groove from the file <SPAN CLASS="texttt"><SPAN CLASS="textbf">rhumba.mma</SPAN></SPAN>
file located in the <SPAN CLASS="texttt"><SPAN CLASS="textbf">stdlib</SPAN></SPAN> directory. In most cases the use of
an extended groove name is only required once (if at all) since the
command forces the file containing the named groove to be completely
read and all grooves defined in that file will now be in memory and
available with simple G<SMALL>ROOVE</SMALL> commands.
<P>
Extended groove names, in just about all cases, eliminate the need for
the U<SMALL>SE</SMALL> command. For a complete understanding you should also
read the PATHS section, <A HREF="node33.html#lib-files">here</A>,
of this manual.
<P>
<SPAN CLASS="textit">Important</SPAN>: The filename to the left of the “:” is a system
pathname, not a
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> variable. As such it <SPAN CLASS="textit">must match the case</SPAN>
for the filename/path on your system. If, for example, you have a file
<SPAN CLASS="texttt"><SPAN CLASS="textbf">casio/poprock1.mma</SPAN></SPAN> and attempt to access it with G<SMALL>ROOVE</SMALL>
<SPAN CLASS="texttt"><SPAN CLASS="textbf">Casio/Poprock1:PopRock1End</SPAN></SPAN> it will not work. You must use the
form G<SMALL>ROOVE</SMALL> <SPAN CLASS="texttt"><SPAN CLASS="textbf">casio/poprock1:PopRock1End</SPAN></SPAN>. The case of the
data to the right of the “:” is not important. <SPAN CLASS="textit">Do not use
quotation marks</SPAN> when specifying a filename.
<P>
When using an extended name, you (probably) only need to use the full
name once ... the entire file is read into memory making all of its
content available. For a, contrived, example:
<P>
<OL>
<LI>Assume you have two files, both called <SPAN CLASS="texttt"><SPAN CLASS="textbf">swing.mma</SPAN></SPAN>. One
file is in <SPAN CLASS="texttt"><SPAN CLASS="textbf">stdlib</SPAN></SPAN>; the other in <SPAN CLASS="texttt"><SPAN CLASS="textbf">mylib</SPAN></SPAN>. Both directories can be found in
P<SMALL>ATH</SMALL>L<SMALL>IB</SMALL>.
<P>
</LI>
<LI><SPAN CLASS="texttt"><SPAN CLASS="textbf">stdlib/swing.mma</SPAN></SPAN> defines grooves “g1”, “g2”, “g3” and “gspecial”.
<P>
</LI>
<LI><SPAN CLASS="texttt"><SPAN CLASS="textbf">mylib/swing.mma</SPAN></SPAN> defines grooves “g1”, “g2” and
“g3”. It <SPAN CLASS="textit">does not</SPAN> define “gspecial”.
<P>
</LI>
<LI>Near the top of your song file you issue:
<P>
<Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3>
<tr><td>
<B>Groove mylib/swing:g1 </B>
</td></tr>
</Table>
<P>
The file <SPAN CLASS="texttt"><SPAN CLASS="textbf">mylib/swing.mma</SPAN></SPAN> is read and the groove “g1” is enabled.
<P>
</LI>
<LI>Later in the file you issue the command:
<P>
<Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3>
<tr><td>
<B>Groove g2 </B>
</td></tr>
</Table>
<P>
Since this groove is already in memory, it is enabled.
<P>
</LI>
<LI>Next:
<P>
<Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3>
<tr><td>
<B>groove Gspecial </B>
</td></tr>
</Table>
<P>
Since this groove is <SPAN CLASS="textit">not</SPAN> in memory (it wasn't in the file
<SPAN CLASS="texttt"><SPAN CLASS="textbf">mylib/swing.mma</SPAN></SPAN>)
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> now searches its database files and finds
the requested groove in <SPAN CLASS="texttt"><SPAN CLASS="textbf">stdlib/swing.mma</SPAN></SPAN>. The file is read and
“Gspecial” is enabled.
<P>
</LI>
<LI>Now you want to use groove “g1” again:
<P>
<Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3>
<tr><td>
<B>Groove g1 </B>
</td></tr>
</Table>
<P>
Since the file <SPAN CLASS="texttt"><SPAN CLASS="textbf">stdlib/swing.mma</SPAN></SPAN> has been read the “g1” groove
from <SPAN CLASS="texttt"><SPAN CLASS="textbf">mylib/swing.mma</SPAN></SPAN> has been replaced. You, probably, have the
wrong groove in memory.
<P>
</LI>
</OL>
<P>
To help find problems you may encounter managing multiple libraries,
you can enable the special warning flag (see <A HREF="node28.html#debugging">here</A>):
<P>
<Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3>
<tr><td>
<B>Debug Groove=On </B>
</td></tr>
</Table>
<P>
which will issue a warning each time a G<SMALL>ROOVE</SMALL> name is
redefined. You must enable this option from within a file; it is not
available on the command line.
<P>
A further, and most useful, method of dealing with multiple libraries
is to specify the groove name relative to the library name. In this
case we will assume you have a library directory “casio” and wish to
load the groove “80sPopIntro”. That particular groove is in the file
<SPAN CLASS="texttt"><SPAN CLASS="textbf">casio/80spop</SPAN></SPAN> and you could load it using:
<P>
<Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3>
<tr><td>
<B>Groove casio/80spop:80sPopIntro </B>
</td></tr>
</Table>
<P>
however, you'll find it easier to use the shorter notation:
<P>
<Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3>
<tr><td>
<B>Groove casio:80sPopIntro </B>
</td></tr>
</Table>
<P>
In this case the name on the left side of the “:” is taken to be the
name of the library and the various files in that, and only that,
library are searched. The only caution is that if you have more than
one file containing a groove named “80sPopIntro” in the casio
library, the first one found will be loaded ... and you will
not be informed of other matches.
<P>
Again, note that the name to the left of the “:” is a system
directory name and must be in the appropriate case for your
filesystem. <SPAN CLASS="texttt"><SPAN CLASS="textbf">Casio</SPAN></SPAN> and <SPAN CLASS="texttt"><SPAN CLASS="textbf">casio</SPAN></SPAN> are <SPAN CLASS="textit">not</SPAN> the same.
<P>
<H2><A ID="SECTION00622000000000000000">
Groove Search Summary</A>
</H2>
<P>
Whenever a G<SMALL>ROOVE</SMALL> command is issued a search for the named
groove is done. To help the unweary, here's a brief summary of the
logic (or, perhaps, lack thereof) of the method used:
<P>
<OL>
<LI>When a simple groove name, i.e., “swing”, is used
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> first
looks in memory for that groove name. If found, it is activated.
If not found,
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> will look for
a library file containing that groove. The library files are
examined in alphabetical order, except for <SPAN CLASS="texttt"><SPAN CLASS="textbf">stdlib</SPAN></SPAN> which is
always searched first.
<P>
</LI>
<LI>If an extended name with a filename is used, i.e.,
“casio/80spop:80sPopIntro”, is used the library file <SPAN CLASS="texttt"><SPAN CLASS="textbf">80spop</SPAN></SPAN>
will be loaded and the groove will be enabled.
<P>
</LI>
<LI>If the extended name is a directory name, i.e.,
“casio:80sPopIntro”, the files in the library directory
<SPAN CLASS="texttt"><SPAN CLASS="textbf">casio</SPAN></SPAN> will be checked for the groove. The first file found
containing the groove will be loaded.
</LI>
</OL>
<P>
For the last two cases, above:
<P>
<UL>
<LI>The groove will always be replaced (reloaded) by one from the
file each time it is requested. All other duplicated groove names in
memory will be re-read as well.
<P>
</LI>
<LI>You can simply use the non-extended version in subsequent
calls.This avoids reloading the file.
</LI>
</UL>
<P>
<H2><A ID="SECTION00623000000000000000"></A>
<A ID="track-groove"></A>
<BR>
Overlay Grooves
</H2>
<P>
To make the creation of variations easier, you can use G<SMALL>ROOVE</SMALL>
in a track setting:
<P>
<Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3>
<tr><td>
<B>Scale Groove Funny </B>
</td></tr>
</Table>
<P>
In this case only the information saved in the corresponding
D<SMALL>EF</SMALL>G<SMALL>ROOVE </SMALL>F<SMALL>UNNY</SMALL> for the S<SMALL>CALE</SMALL> track will be restored.
You might think of this as a “groove overlay”. Have a look at the
sample song “Yellow Bird” for an example.
<P>
When restoring track grooves, as in the above example, the
S<SMALL>EQ</SMALL>S<SMALL>IZE</SMALL> is not reset. The sequence size of the restored track
is adjusted to fit the current sequence size setting.
<P>
One caution with these “overlays” is that no check is done to see if
the track you're using exists. Yes, the G<SMALL>ROOVE</SMALL> must have been
defined, but not the track. Huh? Well, you need to know a bit about
how
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> parses files and how it handles new tracks. When
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> reads
a line in a file it first checks to see if the first word on the line
is a simple command like P<SMALL>RINT</SMALL>, MIDI or any other
command which doesn't require a leading trackname. If it is, the
appropriate function is called and file parsing continues. If it is
not a simple command
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> tests to see if it is a track specific
command. But to do that, it first has to test the first word to see if
it is a valid track name like <SPAN CLASS="textit">Bass</SPAN> or <SPAN CLASS="textit">Chord-Major</SPAN>. And,
if it is a valid track name and that track doesn't exist, the track is
created ... this is done <SPAN CLASS="textit">before</SPAN> the rest of the command is
processed. So, if you have a command like:
<P>
<Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3>
<tr><td>
<B>Bass-Foo Groove Something </B>
</td></tr>
</Table>
<P>
and you really meant to type:
<P>
<Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3>
<tr><td>
<B>Bass-Foe Groove Something </B>
</td></tr>
</Table>
<P>
you'll have a number of things happening:
<P>
<OL>
<LI>The track <SPAN CLASS="textit">Bass-Foo</SPAN> will be created. This is not an issue
to be concerned over since no data will be created for this new
track unless you set a S<SMALL>EQUENCE</SMALL> for it.
<P>
</LI>
<LI>As part of the creation, all the existing G<SMALL>ROOVE</SMALL>s will
have the <SPAN CLASS="textit">Bass-Foo</SPAN> track (with its default/empty settings)
added to them.
<P>
</LI>
<LI>And the current setting you think you're modifying with the
<SPAN CLASS="textit">Bass-Foe</SPAN> settings will be created with the <SPAN CLASS="textit">Bass-Foo</SPAN>
settings (which are nothing).
<P>
</LI>
<LI>Eventually you'll wonder why
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> isn't working.
<P>
</LI>
</OL>
<P>
So, be very careful using this command option. Check your spelling.
And use the P<SMALL>RINT</SMALL>A<SMALL>CTIVE</SMALL> command to verify your G<SMALL>ROOVE</SMALL>
creations. A basic test is done by
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> when you use a G<SMALL>ROOVE</SMALL>
in this manner and if the sequence for the named track is not defined
you will get a warning.
<P>
In most cases you will find the C<SMALL>OPY</SMALL> command detailed
<A HREF="node30.html#copy">here</A> to be more robust.
<P>
<H1><A ID="SECTION00630000000000000000">
Groove Aliases</A>
</H1>
<P>
In an attempt to make the entire groove naming issue simpler, an
additional command has been added. More complication to make life
simpler.
<P>
You can create an alias for any defined G<SMALL>ROOVE</SMALL> name with:
<P>
<Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3>
<tr><td>
<B>DefAlias SomeGroove NewAlias </B>
</td></tr>
</Table>
<P>
Now you can refer to the groove “SomeGroove” with the name
“NewAlias”.
<P>
A few rules:
<P>
<UL>
<LI>the alias name must not be the name of a currently defined
groove,
</LI>
<LI>when defining a new groove you cannot use the name of an alias.
</LI>
</UL>
<P>
Groove aliases are a tool designed to make it possible to have a
standard set of groove names in
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> usable at the same time as the
standard library.
<P>
There is a major difference between a groove alias and the simple act
of assigning two names to the same groove. Consider this snippet:
<P>
<Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3>
<tr><td>
<B>...define some things ...
<BR>
Defgroove Good
<BR>
Defgroove Good2 </B>
</td></tr>
</Table>
<P>
You now have both “good” and “good2” assigned to the same set of
sequences, etc. Now, let's change something:
<P>
<Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3>
<tr><td>
<B>Groove Good
<BR>
Chord Voice Accordion
<BR> ...
<BR> </B>
</td></tr>
</Table>
<P>
Now, the groove “good” has an accordion voicing; “good2” still has
whatever the old “good” had. Compare this with:
<P>
<Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3>
<tr><td>
<B>...define some things ...
<BR>
DefGroove Good
<BR>
DefAlias Good2 Good </B>
</td></tr>
</Table>
<P>
Now, make the same change:
<P>
<Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3>
<tr><td>
<B>Groove Good
<BR>
Chord Voice Accordion </B>
</td></tr>
</Table>
<P>
By using an alias “good2” now points to the changed “good”.
<P>
<H1><A ID="SECTION00640000000000000000">
AllGrooves</A>
</H1>
<P>
There are times when you wish to change a setting in a set of library
files. For example, you like the <SPAN CLASS="textit">Rhumba</SPAN> library sounds, but,
for a particular song you'd like a punchier bass sound. Now, it is
fairly easy to create a new library file for this; or you can set the
new bass settings each time you select a different G<SMALL>ROOVE</SMALL>.
<P>
Much easier is to apply your changes to all the G<SMALL>ROOVE</SMALL>s in the
file. For example:
<P>
<Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3>
<tr><td>
<B>Use Rhumba
<BR>
Begin AllGrooves
<BR> Bass Articulate 50
<BR> Bass Volume +20
<BR> Walk Articulate 50
<BR> Walk Volume +10
<BR>
End
<BR> ...</B>
</td></tr>
</Table>
<P>
The A<SMALL>LL</SMALL>G<SMALL>ROOVES</SMALL> command operates by applying its arguments to
each G<SMALL>ROOVE</SMALL> currently defined. This includes the environment
you are currently in, even if this is not a defined G<SMALL>ROOVE</SMALL>.
<P>
Everything after A<SMALL>LL</SMALL>G<SMALL>ROOVES</SMALL> is interpreted as a legitimate
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT>
command. The syntax definition for A<SMALL>LL</SMALL>G<SMALL>ROOVES</SMALL> is “Allgrooves
MMA-Command”, so
<P>
<Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3>
<tr><td>
<B>AllGrooves Chord Octave 5 </B>
</td></tr>
</Table>
<P>
sets the O<SMALL>CTAVE</SMALL> to 5 for track Chord (and only Chord, not
Chord-Foo, etc.) in all grooves.
<P>
Note: this is different from the A<SMALL>LL</SMALL>T<SMALL>RACKS</SMALL><A HREF="node30.html#alltracks">,
here,</A> command which lets
you specify tracks for track types. Or course, there is nothing to
stop you from combining these with something like:
<P>
A<SMALL>LL</SMALL>G<SMALL>ROOVES </SMALL>A<SMALL>LL</SMALL>T<SMALL>RACKS </SMALL>C<SMALL>HORD </SMALL>O<SMALL>CTAVE 5</SMALL>
<P>
the results of which are left as an exercise for the reader.
<P>
A warning message will be displayed if the command had no
effect. The warning “No tracks affected with ...” will be
displayed if nothing was done. This could be due to a misspelled
command or track name, or the fact that the specified track does not
exist.
<P>
If you want to “undo” the effect of the A<SMALL>LL</SMALL>G<SMALL>ROOVES</SMALL> just
import the library file again with:
<P>
<Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3>
<tr><td>
<B>Use stdlib/rhumba
<BR>
Groove Rhumba </B>
</td></tr>
</Table>
<P>
or remove all the current G<SMALL>ROOVE</SMALL>s from memory with:
<P>
<Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3>
<tr><td>
<B>GrooveClear
<BR>
Groove Rhumba </B>
</td></tr>
</Table>
<P>
In both cases you'll end up with the original G<SMALL>ROOVE</SMALL> settings.
<P>
<H2><A ID="SECTION00641000000000000000">
Options</A>
</H2>
<P>
The A<SMALL>LL</SMALL>G<SMALL>ROOVES</SMALL> can take options in the “Option=Value” format.
Please note that options must be at the start of the line. The first
non-option pair (or a “–”) will terminate the scan for options.
<P>
<DL>
<DT><STRONG>NoWarn=True/False</STRONG></DT>
<DD>You can disable <SPAN CLASS="textit">all</SPAN> warning messages which might
be displayed when using A<SMALL>LL</SMALL>G<SMALL>ROOVE</SMALL> by using the command
modifier N<SMALL>O</SMALL>W<SMALL>ARN=</SMALL>T<SMALL>RUE</SMALL> as an argument. For example:
<P>
<Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3>
<tr><td>
<B>AllGrooves Bass Sequence B11 </B>
</td></tr>
</Table>
<P>
will display a warning message (it's not recommended to change all
sequence definitions like this), but:
<P>
<Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3>
<tr><td>
<B>AllGrooves NoWarn=True Bass Sequence B11 </B>
</td></tr>
</Table>
<P>
will complile cleanly. We recommend you get your file working
properly <SPAN CLASS="textit">before</SPAN> adding this modifier.
<P>
</DD>
<DT><STRONG>Verbose=True/False</STRONG></DT>
<DD>Print the names of the affected grooves.
<P>
</DD>
<DT><STRONG>Only=A[,B..]</STRONG></DT>
<DD>Specify a list of grooves to apply the command.
Only the grooves in memory <SPAN CLASS="textit">and</SPAN> listed will be affected. You
cannot use this option in conjunction with the S<SMALL>KIP</SMALL> option.
<P>
</DD>
<DT><STRONG>Skip=A[,B..]</STRONG></DT>
<DD>All the grooves in memory will be affected with
the exception of the grooves specified. You cannot use this option
in conjunction with the O<SMALL>NLY</SMALL> option.
<P>
</DD>
</DL>
<P>
A few notes:
<P>
<UL>
<LI>This command only effects G<SMALL>ROOVE</SMALL>s which have been loaded
into memory either by loading a library file or otherwise creating a
G<SMALL>ROOVE</SMALL>.
<P>
</LI>
<LI>The in memory grooves can all have different sequence sizes.
Special code inhibits the printing of warning messages when you use
a too-long list (of sequence points) of commands. For example,
“AllGrooves Chord Octave 3 4 5 6” will not generate a warning with
a groove with a sequence size of 2, it will just be truncated.
<P>
</LI>
<LI>Be careful what commands you use since they are applied rather
blindly. For example, the command:
<P>
<Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3>
<tr><td>
<B>AllTracks BeatAdjust 2 </B>
</td></tr>
</Table>
<P>
will insert 2 additional beats for each G<SMALL>ROOVE</SMALL> you have. So,
if you have 10 G<SMALL>ROOVE</SMALL>s you would insert 20 beats. Not what
you intended. T<SMALL>EMPO</SMALL> and other commands will cause similar
problems. Actually, B<SMALL>EAT</SMALL>A<SMALL>DJUST</SMALL> is not permitted in
A<SMALL>LL</SMALL>G<SMALL>ROOVES</SMALL>, but it's a cool example.
<P>
</LI>
</UL>
<P>
<H1><A ID="SECTION00650000000000000000">
Deleting Grooves</A>
</H1>
<P>
There are times when you might want
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> to forget about all the
G<SMALL>ROOVE</SMALL>s in its memory. Just do a:
<P>
<Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3>
<tr><td>
<B>GrooveClear </B>
</td></tr>
</Table>
<P>
at any point in your input file and that is exactly what happens. But,
“why”, you may ask, “would one want to do this?” One case would be
to force the re-reading of a library file. For example, a library file
might have a user setting like:
<P>
<Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3>
<tr><td>
<B>If Ndef ChordVoice
<BR>
Set ChordVoice Piano1
<BR>
Endif </B>
</td></tr>
</Table>
<P>
In this case you could set the variable “ChordVoice” before loading
any of the G<SMALL>ROOVE</SMALL>s in the file. All works! Now, assume that you
have a repeated section and want to change the voice. Simply changing
the variable <SPAN CLASS="textit">does not work</SPAN>. The library file isn't re-read
since the existing G<SMALL>ROOVE</SMALL> data is already in memory. Using
G<SMALL>ROOVE</SMALL>C<SMALL>LEAR</SMALL> erases the existing data and forces a re-reading of
the library file.
<P>
Please note that low-level settings like MIDI track assignments are
<SPAN CLASS="textit">not</SPAN> changed by this command.
<P>
Groove aliases are also deleted with this command.
<P>
<H1><A ID="SECTION00660000000000000000"></A>
<A ID="sect-sticky"></A>
<BR>
Sticky
</H1>
In most cases the method used to save and restore grooves works just
fine. However, you may want a certain track be invisible to the groove
mechanism. You may find this option convenient if you creating a
“click track” or if you are using triggers (see
<A HREF="node26.html#sec-triggers">here</A>) across different
grooves.
<P>
Setting a track as S<SMALL>TICKY</SMALL>
<P>
<Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3>
<tr><td>
<B>Drum-Testing Sticky True </B>
</td></tr>
</Table>
<P>
solves the problem.
<P>
The command takes a single value of “True” or “False”. “On”,
“1”, “Off” and “0” may also be used. The only way a sticky track can
become un-sticky is with a command like:
<P>
<Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3>
<tr><td>
<B>Drum-Testing Sticky False </B>
</td></tr>
</Table>
<P>
You can set the sticky bit from a T<SMALL>RIGGER</SMALL> command as well. The
results are the same.
<P>
Note: Sticky tracks are <SPAN CLASS="textit">not</SPAN> deleted with the S<SMALL>EQ</SMALL>C<SMALL>LEAR</SMALL> command.
<P>
<H1><A ID="SECTION00670000000000000000">
Library Issues</A>
</H1>
<P>
If you are using a groove from a library file, you just need to do
something like:
<P>
<Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3>
<tr><td>
<B>Groove Rhumba2 </B>
</td></tr>
</Table>
<P>
at the appropriate position in your input file.
<P>
One minor problem which <SPAN CLASS="textit">may</SPAN> arise is that more than one library
file has defined the same groove name. This might happen if you have a
third-party library file. For the proposes of this example, let's
assume that the standard library file “rhumba.mma” and a second file
“xyz-rhumba.mma” both define the groove “Rhumba2”. The
<A HREF="node33.html#lib-use">auto-load</A> routines
which search the library database will load the first “Rhumba2” it
finds, and the search order cannot be determined. To overcome this
possible problem, do a explicit loading of the correct file. In this
case, simply do:
<P>
<Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3>
<tr><td>
<B>Use xyz-rhumba </B>
</td></tr>
</Table>
<P>
near the top of your file. And if you wish to switch to the groove
defined in the standard file, you can always do:
<P>
<Table Hspace="40%" CellSpacing=0 CellPadding=10 BGColor="OldLace" Border=3>
<tr><td>
<B>Use rhumba </B>
</td></tr>
</Table>
<P>
just before the groove call. The U<SMALL>SE</SMALL> will read the specified
file and overwrite the old definition of “Rhumba2” with its own.
<P>
This issue in covered in more detail <A HREF="node33.html#library-maint">here in</A> this manual. Most problems of this kind
are easily avoided by using the extended groove notation, detailed above.
<P>
<BR><HR><H4>Footnotes</H4>
<DL>
<DT><A ID="foot1011">... '/'.</A><A
HREF="node6.html#tex2html36"><SUP><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></SUP></A></DT>
<DD>The '/' and ':' are used
in extended names.
</DD>
<DT><A ID="foot9411">... reset.</A><A
HREF="node6.html#tex2html37"><SUP><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN></SUP></A></DT>
<DD>Actually,
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> checks to see the next
G<SMALL>ROOVE</SMALL> in the list is the same as the current one, and if it
is then no change is done.
</DD>
</DL>
<DIV CLASS="navigation"><HR>
<!--Navigation Panel-->
<A
HREF="node7.html">
<IMG WIDTH="37" HEIGHT="24" ALT="next" SRC="next.png"></A>
<A
HREF="mma.html">
<IMG WIDTH="26" HEIGHT="24" ALT="up" SRC="up.png"></A>
<A
HREF="node5.html">
<IMG WIDTH="63" HEIGHT="24" ALT="previous" SRC="prev.png"></A>
<BR>
<B> Next:</B> <A
HREF="node7.html">Riffs</A>
<B> Up:</B> <A
HREF="mma.html">Reference Manual</A>
<B> Previous:</B> <A
HREF="node5.html">Sequences</A></DIV>
<!--End of Navigation Panel-->
</BODY>
</HTML>
|