The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

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 script 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 by default, etc.

  $ 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.

--minor

Use minor mode (default is major).

--mode=mode

Specify named scale mode instead of using --intervals. Available modes can be listed with the --listmodes option.

--natural

Ignore VII vs. vii vs. vii* distinctions in input and use the intervals implied by the mode. However, a bII would still lower the root.

--outputtmpl=template

Specify a custom output template. Supported macros include chord and vov 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

ZSH completion script available in the zsh-compdef directory of the App::MusicTools distribution.

BUGS

Reporting Bugs

If the bug is in the latest version, send a report to the author. Patches that fix problems or add new features are welcome.

http://github.com/thrig/App-MusicTools

Known Issues

None at this time but probably lots.

SEE ALSO

  • http://www.lilypond.org/

  • https://en.wikipedia.org/wiki/Roman_numeral_analysis

AUTHOR

Jeremy Mates

COPYRIGHT

Copyright (C) 2012 by Jeremy Mates

This script is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.16 or, at your option, any later version of Perl 5 you may have available.