MMA is very versatile when it comes to the volumes or dynamics used in your song.
Each generated note goes though 4 volume adjustments:
For the most part MMA uses conventional musical score notation for volumes. Internally, the dynamic name is converted to a percentage value. The note volume is adjusted by the percentage.
The following table shows the available volume settings and the adjustment values.
|
The setting Off is useful for generating fades at the end of a piece. For example:
Volume ff |
will cause the last 5 bars of your music to fade from a ``ff'' to silence.
The initial volume (or velocity) is set in the pattern definition (see chapter 4). The following commands set the master volume, track volume and random volume adjustments.
In addition to the volumes (velocities) generated by MMA your MIDI device can also change the mix between channels. See the discussion for ChannelVolume (prefchannelvol).
``Real'' musicians, in an almost automatic manner, emphasize notes on certain beats. In popular Western music written in 4/4 time this is usually beats one and three. This emphasis sets the pulse or beat in a piece.
In MMA you can set the volumes in a pattern so that this emphasis is done. For example, when setting a walking bass line pattern you could use a pattern definition like:
Define Walk W1234 1 4 100; 2 4 70; 3 4 80; 4 4 70 |
However, it is much easier to use a definition which has all the volumes the same:
Define Walk W1234 1 1 90 * 4 |
and use the Accent command to increase or decrease the volume of notes on certain beats:
Walk Accent 1 20 2 -10 4 -10 |
The above command will increase the volume for walking bass notes on beat 1 by 20%, and decrease the volumes of notes on beats 2 and 4 by 10%.
You can use this command for all tracks.
When specifying the accents, you must have matching pairs of data. The first item in the pair is the beat (which can be fractional), the second is the volume adjustment. This is a percentage of the current note volume that is added (or subtracted) to the volume. Adjustment factors must be in the range -100 to 100.
The Accents apply to all bars in a track. You cannot set different accents for different bars. If you need to do this it's a simple matter to create duplicate tracks (which can even share the same MIDI channel). For example, you might want even bars to have beats 1 and 3 accented and odd bars to have only beat 1 accented. An abbreviated attempt might look like:
Begin Chord-1 |
The ratios used to adjust the volume can be changed from the above table. For example, to change the percentage used for the ``mf'' setting:
AdjustVolume MF 95 |
If you want to adjust a number of settings:
Begin AdjustVolume |
All values must be positive integers. Any value over 180 will be reported as a warning.
You might want to do these adjustment in your MMArc file(s).
The volume for a track, or all tracks, is given the ``Volume'' command. Volumes can be specified much like standard sheet music with the conventional dynamic names. These volumes can be applied to a track or to the entire song. For example:
Arpeggio1 Volume p |
sets the volume for Arpeggio1 track to something approximating piano.
Volume f |
sets the master volume to forte.
In most cases the volume for a track will be set with the sequence definition; the master volume is used in the music file to adjust the overall feel of the piece.
If you wish to adjust over a series of bars use the Cresc or Decresc commands. These commands are only valid in the master context; they can not be applied to individual tracks.
For all practical purposes, the two commands are equivalent, expect for the warning. If the new volume in less than the current volume in a Cresc a warning will be displayed; the converse applies to a Decresc.
The command requires two arguments. The first is the new volume, the second is the number of bars to adjust it over.
For example:
Cresc fff 5 |
will gradually vary the master volume from its current setting to a triple forte over the next 5 bars.
Similarly:
Decresc mp 2 |
will decrease the master volume to mezzo piano over the next 2 bars.
A SeqClear command will reset all track volumes to the default mf (ie. no adjustment).
When using Volume for a specific track, you can use a different value for each bar in a sequence:
Drum Volume mp ff / ppp |
A ``/'' can be used to repeat values.
Not even the best musician can play each note at the same volume. Nor would he or she want to--the result would be quite unmusical. The note volumes can be randomly adjusted with the Rvolume command.
The command can be applied to a specific track or (if you're brave) to all tracks.12.1 Examples:
Chord RVolume 10 |
The RVolume argument is a percentage value by which a volume is adjusted. A setting of 0 disables the adjustment for a track (this is the default).
When set, the note velocity (after the track and master volume adjustments) is randomized up or down by the value. Again, using the above example, let us assume that a note in the current pattern gets a MIDI velocity of 88. The random factor of 10 will adjust this by 10% up or down-- the new value can be from 78 to 98.
The idea behind this is to give the track a more human sounding effect. You can use large values, but it's not recommended. Usually, values in the 5 to 10 range work well. You might want slightly larger values for drum tracks. Using a value greater than 30 will generate a warning message.
Notes:
Scale RVolume 10 0 / 20 |
Dynamics can get quite complicated, especially when you are adjusting the volumes of a track inside a repeat.
You can save all the current volume settings with:
DefVolume NAME |
and restore them with:
SetVolume NAME |
This command saves/restores all the current volume settings to/from the specified name. The ``name'' is case insensitive. The RVolume setting is neither saved or modified with this command.
The command pair is quite useful if you are adjusting a volume over a set of bars and want the volume to be reset to a known setting.
A bit of caution to the unwary ...results may not be what you expect! It is extremely important to do a DefVolume at the correct place in your song file. The most important fact to remember is:
When tracks are created they are assigned a default volume of ``mf''. For all volume grooves which exist when a track is created, the default volume will be assigned to the saved set of volumes.
Consider that happens if you do the following in a song file:
When the volume is restored the new tracks in ``Dance'' will be set to the default volume of ``mf'', not the volumes the creator of the ``Dance'' groove has set in the groove file.
In most cases you will not want to use DefGroove and SetGroove unless you really know what you are doing. In most files, using the macros $_Volume and $_LastVolume is much simpler and effective.