NAME
vov - chord generation from roman numerals with sub-phrase support
SYNOPSIS
$ vov --outputtmpl='<%{chord}> \t% %{vov}' I IV/IV V7/IV IV V7 I
<c e g> % I
<b dis f> % IV/IV
<c e g b> % V7/IV
<f a c> % IV
<g b d f> % V7
<c e g> % I
DESCRIPTION
Musical V/V utility, for arbitrary "chord X relative to Y as tonic in key Z" type calculations (V/V are called "applied dominants" among various other names). Any scale degree can be used, e.g. the phrase with a sub-phrase relative to IV "I IV/IV V/IV IV V I" says tonic (C), subdominant of the subdominant (B of F), dominant of the subdominant (C of F), and then subdominant (F), dominant (G) and back to the tonic.
The input format is based somewhat upon "Roman Numeral Analysis" and other musical sources, with some tweaks for Unix command line input needs. The output is somewhat suitable for input to lilypond, e.g. via vov ... | ly-fu -
though can be adjusted by various options.
INPUT FORMAT
Supported input must be a roman numeral (I..VII and i..vii), possibly prefixed with #
or b
to sharpen or flatten the root pitch, possibly suffixed with +
to augment or *
to diminish or **
to double diminish, possibly suffixed with an integer specifying the chord factor or inversion:
V5 V6 V64 # Dominant fifth and inversions (or also Va, Vb, Vc)
V7 V65 V42 V2 # Dominant seventh and inversions (V7a, V7b, V7c, V7d)
bII6 # Neapolitan 6th
Use /
to delimit chord-X-of-Y, to arbitrary depth (depending on available memory, but going beyond 12 is silly):
$ vov V/V/V/V/V/V/V/V/V/V/V/V/V
g b d
OPTIONS
This program currently supports the following command line switches:
- --factor=positive odd integer
-
Specify default chord factor (odd integer between 1 for just the fundamental and 13 for thirteenth chords, inclusive). Default is to generate 5th chords;
7
would get seventh chords.$ vov --factor=7 II V I d fis a c g b d f c e g b
- --flats | --noflats
-
Use flats instead of sharps in the output note names. Prefix with no to disable flats, in the event an alias has set them on by default.
- --help
-
Displays help and exits program.
- --listmodes
-
List available named scale modes and then exit. Used by ZSH compdef script. The scales listed are a subset of what Music::Scales offers.
- --minor
-
Use
minor
mode (default ismajor
). - --mode=mode
-
Specify named scale mode instead of using --intervals. Some modes can be listed with the --listmodes option; see Music::Scales for the complete list. Only ascending versions of scales are available at this time.
- --natural
-
Ignore
VII
vs.vii
vs.vii*
distinctions in input and use the intervals implied by the mode. However, abII
would still lower the root. - --outputtmpl=template
-
Specify a custom output template. Supported macros include
chord
andvov
to specify the notes of the chord, and the chord name as specified on the command line. For example:--outputtmpl='<%{chord}> \t% %{vov}'
- --raw
-
Emit raw pitch numbers instead of note names.
- --transpose=pitch or note
-
Value by which to transpose the output by (integer) or to (note name).
FILES
A ZSH completion script is available in the zsh-compdef/
directory of the App::MusicTools distribution. Install this to a $fpath
directory.
BUGS
Lots, probably. In particular, diminished chords stay diminished (they follow the underlying mode, not the desired quality of the chord), even if one specifies VII
for major or II
for minor. Fixing this would be annoying, as the best way would involve a rewrite of the code.
If the bug is in the latest version, send a report to the author. Patches that fix problems or add new features are welcome.
https://thrig.me/src/App-MusicTools.git
SEE ALSO
COPYRIGHT
Copyright 2012 Jeremy Mates
This program is distributed under the (Revised) BSD License: http://www.opensource.org/licenses/BSD-3-Clause