NAME
Music::ModalFunction - Inspect Musical Modal Functions
VERSION
version 0.0301
SYNOPSIS
use Music::ModalFunction ();
# What mode(s) have a Dmaj dominant chord?
my $m = Music::ModalFunction->new(
chord_note => 'd',
chord => 'maj',
key_function => 'dominant',
);
my $q = $m->chord_key;
# [['chord_key','d','maj','g','ionian','dominant','r_V'],
# ['chord_key','d','maj','g','lydian','dominant','r_V']]
# In what mode(s) can a Gmaj chord function as a subdominant pivot chord?
$m = Music::ModalFunction->new(
chord_note => 'g',
chord => 'maj',
mode_note => 'c',
key_function => 'subdominant',
);
$q = $m->pivot_chord_keys;
# [['pivot_chord_keys','g','maj','c','ionian','dominant','d','dorian','subdominant','r_IV'],
# ['pivot_chord_keys','g','maj','c','ionian','dominant','d','ionian','subdominant','r_IV'],
# ['pivot_chord_keys','g','maj','c','ionian','dominant','d','mixolydian','subdominant','r_IV'],
# ['pivot_chord_keys','g','maj','c','lydian','dominant','d','dorian','subdominant','r_IV'],
# ['pivot_chord_keys','g','maj','c','lydian','dominant','d','ionian','subdominant','r_IV'],
# ['pivot_chord_keys','g','maj','c','lydian','dominant','d','mixolydian','subdominant','r_IV']]
DESCRIPTION
Music::ModalFunction
allows querying of a musical database of Prolog facts and rules that bind notes, chords, modes, keys and diatonic functionality.
* Currently there is a database of facts called chord_key/6
and one rule named pivot_chord_keys/10
.
ATTRIBUTES
chord_note
chord
mode_note
mode
mode_function
mode_roman
key_note
key
key_function
key_roman
verbose
METHODS
new
$m = Music::ModalFunction->new(%args);
Create a new Music::ModalFunction
object.
chord_key
$q = $m->chord_key;
Ask the database a question about what chords are in what keys.
Arguments:
chord_key(ChordNote, Chord, KeyNote, Key, KeyFunction, KeyRoman)
If defined, argument values will be bound to a variable. Otherwise an unbound variable is used.
pivot_chord_keys
$q = $m->pivot_chord_keys;
Ask the database a question about what chords share common keys.
Arguments:
pivot_chord_keys(ChordNote, Chord, ModeNote, Mode, ModeFunction, ModeRoman, KeyNote, Key, KeyFunction, KeyRoman)
If defined, argument values will be bound to a variable. Otherwise an unbound variable is used.
roman_key
$q = $m->roman_key;
Ask the database a question about what Roman numeral functional chords share common keys.
Arguments:
roman_key(Mode, ModeRoman, Key, KeyRoman)
If defined, argument values will be bound to a variable. Otherwise an unbound variable is used.
SEE ALSO
The t/01-methods.t and eg/* files in this distribution
https://en.wikipedia.org/wiki/Prolog
https://en.wikipedia.org/wiki/Common_chord_(music)
AUTHOR
Gene Boggs <gene@cpan.org>
COPYRIGHT AND LICENSE
This software is Copyright (c) 2023 by Gene Boggs.
This is free software, licensed under:
The Artistic License 2.0 (GPL Compatible)