Music::ModalFunction - Inspect Musical Modal Functions
version 0.0307
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']]
Music::ModalFunction allows querying of a musical database of Prolog facts and rules that bind notes, chords, modes, keys and diatonic functionality. In this database, the facts are all called chord_key and the rules are pivot_chord_keys and roman_key.
Music::ModalFunction
chord_key
pivot_chord_keys
roman_key
To bind a value to a fact or rule argument, declare it in the object constructor. Unbound arguments will return all the possible values that make the query true.
The essential question is, "Can a chord in one key function in a second?" Any any parts of this open-ended question may be unbound, thereby resulting in all possible truths.
$m = Music::ModalFunction->new(%args);
Create a new Music::ModalFunction object.
$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)
Here, ChordNote and Chord together are the named chord defined within the context of the KeyNote and Key. The chord's function in the key is the KeyFunction and basically indicates the relative scale position. The chord can be maj, min, or dim, and the KeyRoman serves as an indicator of both the chord quality and the position in the scale.
maj
min
dim
If defined, argument values will be bound to a variable. Otherwise an unbound variable is used.
$q = $m->pivot_chord_keys;
Ask the database a question about what chords share common keys.
pivot_chord_keys(ChordNote, Chord, ModeNote, Mode, ModeFunction, ModeRoman, KeyNote, Key, KeyFunction, KeyRoman)
Here, ChordNote and Chord together are the named chord defined within the context of the ModeNote and Mode. The chord's function in the mode is the ModeFunction and basically indicates the relative scale position. The chord can be maj, min, or dim, and the ModeRoman serves as an indicator of both the chord quality and the position in the scale. The KeyNote and Key are the final "destination" of the query transformation (often a pivot). As with the ModeRoman, KeyRoman is the resulting chord quality and scale position.
$q = $m->roman_key;
Ask the database a question about what Roman numeral functional chords share common keys.
roman_key(Mode, ModeRoman, Key, KeyRoman)
The t/01-methods.t and eg/* files in this distribution
Moo
AI::Prolog
MIDI::Util
Music::Note
Music::Scales
https://en.wikipedia.org/wiki/Prolog
https://en.wikipedia.org/wiki/Common_chord_(music)
Gene Boggs <gene@cpan.org>
This software is Copyright (c) 2023 by Gene Boggs.
This is free software, licensed under:
The Artistic License 2.0 (GPL Compatible)
To install Music::ModalFunction, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Music::ModalFunction
CPAN shell
perl -MCPAN -e shell install Music::ModalFunction
For more information on module installation, please visit the detailed CPAN module installation guide.