Voice leading:
Graph-based voice leading algorithms
Least-cost path algorithms for voice leading
Chord inversions:
Inversion algorithms based on set theory
Algorithms for finding optimal chord inversions
Extended chords:
Algorithms for constructing extended chords
Algorithms for mapping extended chords to standard chord symbols
Tension extensions:
Algorithms for adding tension extensions to chords
Algorithms for determining the most appropriate tension extension for a chord
Altered extensions:
Algorithms for constructing altered extensions
Algorithms for mapping altered extensions to standard chord symbols
Substitute chords:
Algorithms for finding substitute chords
Algorithms for determining the most appropriate substitute chord for a given chord
Slash chords:
Algorithms for constructing slash chords
Algorithms for mapping slash chords to standard chord symbols
Upper structure triads:
Algorithms for constructing upper structure triads
Algorithms for mapping upper structure triads to standard chord symbols
Modal interchange:
Algorithms for determining modal interchange opportunities
Algorithms for constructing modal interchange progressions
Voice exchange:
Algorithms for determining voice exchange opportunities
Algorithms for constructing voice exchange progressions
Double stop chords:
Algorithms for constructing double stop chords
Algorithms for mapping double stop chords to standard chord symbols
Cluster chords:
Algorithms for constructing cluster chords
Algorithms for mapping cluster chords to standard chord symbols
Chord substitution:
Algorithms for finding substitute chords
Algorithms for determining the most appropriate substitute chord for a given chord
Chord modulation:
Algorithms for determining modulation opportunities
Algorithms for constructing chord progressions that modulate
Chord progression manipulation:
Algorithms for reordering chord progressions
Algorithms for transposing chord progressions
Algorithms for introducing new chords into existing progressions
Harmonic rhythm:
Algorithms for determining appropriate harmonic rhythm for a given progression
Algorithms for constructing progressions with varied harmonic rhythm
Diatonic substitution:
Algorithms for finding diatonic substitute chords
Algorithms for determining the most appropriate diatonic substitute chord for a given chord
Non-diatonic substitution:
Algorithms for finding non-diatonic substitute chords
Algorithms for determining the most appropriate non-diatonic substitute chord for a given chord
Chromatic substitution:
Algorithms for finding chromatic substitute chords
Algorithms for determining the most appropriate chromatic substitute chord for a given chord
Tonal center manipulation:
Algorithms for determining tonal center opportunities
Algorithms for constructing progressions that manipulate tonal center
Borrowed chords:
Algorithms for finding borrowed chords
Algorithms for determining the most appropriate borrowed chord for a given progression
Secondary dominants:
Algorithms for constructing secondary dominants
Algorithms for mapping secondary dominants to standard chord symbols
Tertiary dominants:
Algorithms for constructing tertiary dominants
Algorithms for mapping tertiary dominants to standard chord symbols
Dominant preparation:
Algorithms for determining dominant preparation opportunities
Algorithms for constructing progressions that prepare dominant chords
Dominant resolution:
Algorithms for determining dominant resolution opportunities
Algorithms for constructing progressions that resolve dominant chords
Diminished chord substitution:
Algorithms for finding diminished substitute chords
Algorithms for determining the most appropriate diminished substitute chord for a given chord
Augmented chord substitution:
Algorithms for finding augmented substitute chords
Algorithms for determining the most appropriate augmented substitute chord for a given chord
Neapolitan chord substitution:
Algorithms for finding Neapolitan substitute chords
Algorithms for determining the most appropriate Neapolitan substitute chord for a given chord
French augmented sixth chords:
Algorithms for constructing French augmented sixth chords
Algorithms for mapping French augmented sixth chords to standard chord symbols
German augmented sixth chords:
Algorithms for constructing German augmented sixth chords
Algorithms for mapping German augmented sixth chords to standard chord symbols
Italian augmented sixth chords:
Algorithms for constructing Italian augmented sixth chords
Algorithms for mapping Italian augmented sixth chords to standard chord symbols
Suspended chord substitution:
Algorithms for finding suspended substitute chords
Algorithms for determining the most appropriate suspended substitute chord for a given chord
Polychord substitution:
Algorithms for finding polychord substitute chords
Algorithms for determining the most appropriate polychord substitute chord for a given chord
Polytonal substitution:
Algorithms for finding polytonal substitute chords
Algorithms for determining the most appropriate polytonal substitute chord for a given chord
Bitonal substitution:
Algorithms for finding bitonal substitute chords
Algorithms for determining the most appropriate bitonal substitute chord for a given chord
Trichord substitution:
Algorithms for finding trichord substitute chords
Algorithms for determining the most appropriate trichord substitute chord for a given chord
Tetrachord substitution:
Algorithms for finding tetrachord substitute chords
Algorithms for determining the most appropriate tetrachord substitute chord for a given chord
Pentachord substitution:
Algorithms for finding pentachord substitute chords
Algorithms for determining the most appropriate pentachord substitute chord for a given chord
Hexachord substitution:
Algorithms for finding hexachord substitute chords
Algorithms for determining the most appropriate hexachord substitute chord for a given chord
Hyper-set substitution:
Algorithms for finding hyper-set substitute chords
Algorithms for determining the most appropriate hyper-set substitute chord for a given chord
Serialism:
Algorithms for constructing serial progressions
Algorithms for mapping serial progressions to standard chord symbols
Set-class substitution:
Algorithms for finding set-class substitute chords
Algorithms for determining the most appropriate set-class substitute chord for a given chord
Tritone substitution:
Algorithms for finding tritone substitute chords
Algorithms for determining the most appropriate tritone substitute chord for a given chord
Music hyper-set analysis:
Algorithms for analyzing music hyper-sets
Algorithms for mapping music hyper-sets to standard chord symbols.
Here's a more complete example of how the input and output functions could be implemented:
python
Copy code
def input_function(): """ This function takes in user input and processes it, extracting relevant information for the chord progression. """ user_input = input("Enter your chord progression request: ") # processing user input to extract information such as minimum number of chords, types of chords, etc. processed_input = user_input # just an example, you'll need to implement actual processing here return processed_input def generate_progression(processed_input): """ This function takes in the processed input and generates an extended chord progression based on the information extracted. """ # using the processed input to generate the chord progression chord_progression = "C Major > G Major > A Minor > F Major" # just an example, you'll need to implement actual progression generation here return chord_progression def output_function(processed_input): """ This function takes in the processed input and generates an extended chord progression based on the information extracted. """ chord_progression = generate_progression(processed_input) #outputting the chord progression print(chord_progression) # calling the input and output functions processed_input = input_function() output_function(processed_input)
Voice leading:
Graph-based voice leading algorithms
Least-cost path algorithms for voice leading
Chord inversions:
Inversion algorithms based on set theory
Algorithms for finding optimal chord inversions
Extended chords:
Algorithms for constructing extended chords
Algorithms for mapping extended chords to standard chord symbols
Tension extensions:
Algorithms for adding tension extensions to chords
Algorithms for determining the most appropriate tension extension for a chord
Altered extensions:
Algorithms for constructing altered extensions
Algorithms for mapping altered extensions to standard chord symbols
Substitute chords:
Algorithms for finding substitute chords
Algorithms for determining the most appropriate substitute chord for a given chord
Slash chords:
Algorithms for constructing slash chords
Algorithms for mapping slash chords to standard chord symbols
Upper structure triads:
Algorithms for constructing upper structure triads
Algorithms for mapping upper structure triads to standard chord symbols
Modal interchange:
Algorithms for determining modal interchange opportunities
Algorithms for constructing modal interchange progressions
Voice exchange:
Algorithms for determining voice exchange opportunities
Algorithms for constructing voice exchange progressions
Double stop chords:
Algorithms for constructing double stop chords
Algorithms for mapping double stop chords to standard chord symbols
Cluster chords:
Algorithms for constructing cluster chords
Algorithms for mapping cluster chords to standard chord symbols
Chord substitution:
Algorithms for finding substitute chords
Algorithms for determining the most appropriate substitute chord for a given chord
Chord modulation:
Algorithms for determining modulation opportunities
Algorithms for constructing chord progressions that modulate
Chord progression manipulation:
Algorithms for reordering chord progressions
Algorithms for transposing chord progressions
Algorithms for introducing new chords into existing progressions
Harmonic rhythm:
Algorithms for determining appropriate harmonic rhythm for a given progression
Algorithms for constructing progressions with varied harmonic rhythm
Diatonic substitution:
Algorithms for finding diatonic substitute chords
Algorithms for determining the most appropriate diatonic substitute chord for a given chord
Non-diatonic substitution:
Algorithms for finding non-diatonic substitute chords
Algorithms for determining the most appropriate non-diatonic substitute chord for a given chord
Chromatic substitution:
Algorithms for finding chromatic substitute chords
Algorithms for determining the most appropriate chromatic substitute chord for a given chord
Tonal center manipulation:
Algorithms for determining tonal center opportunities
Algorithms for constructing progressions that manipulate tonal center
Borrowed chords:
Algorithms for finding borrowed chords
Algorithms for determining the most appropriate borrowed chord for a given progression
Secondary dominants:
Algorithms for constructing secondary dominants
Algorithms for mapping secondary dominants to standard chord symbols
Tertiary dominants:
Algorithms for constructing tertiary dominants
Algorithms for mapping tertiary dominants to standard chord symbols
Dominant preparation:
Algorithms for determining dominant preparation opportunities
Algorithms for constructing progressions that prepare dominant chords
Dominant resolution:
Algorithms for determining dominant resolution opportunities
Algorithms for constructing progressions that resolve dominant chords
Diminished chord substitution:
Algorithms for finding diminished substitute chords
Algorithms for determining the most appropriate diminished substitute chord for a given chord
Augmented chord substitution:
Algorithms for finding augmented substitute chords
Algorithms for determining the most appropriate augmented substitute chord for a given chord
Neapolitan chord substitution:
Algorithms for finding Neapolitan substitute chords
Algorithms for determining the most appropriate Neapolitan substitute chord for a given chord
French augmented sixth chords:
Algorithms for constructing French augmented sixth chords
Algorithms for mapping French augmented sixth chords to standard chord symbols
German augmented sixth chords:
Algorithms for constructing German augmented sixth chords
Algorithms for mapping German augmented sixth chords to standard chord symbols
Italian augmented sixth chords:
Algorithms for constructing Italian augmented sixth chords
Algorithms for mapping Italian augmented sixth chords to standard chord symbols
Suspended chord substitution:
Algorithms for finding suspended substitute chords
Algorithms for determining the most appropriate suspended substitute chord for a given chord
Polychord substitution:
Algorithms for finding polychord substitute chords
Algorithms for determining the most appropriate polychord substitute chord for a given chord
Polytonal substitution:
Algorithms for finding polytonal substitute chords
Algorithms for determining the most appropriate polytonal substitute chord for a given chord
Bitonal substitution:
Algorithms for finding bitonal substitute chords
Algorithms for determining the most appropriate bitonal substitute chord for a given chord
Trichord substitution:
Algorithms for finding trichord substitute chords
Algorithms for determining the most appropriate trichord substitute chord for a given chord
Tetrachord substitution:
Algorithms for finding tetrachord substitute chords
Algorithms for determining the most appropriate tetrachord substitute chord for a given chord
Pentachord substitution:
Algorithms for finding pentachord substitute chords
Algorithms for determining the most appropriate pentachord substitute chord for a given chord
Hexachord substitution:
Algorithms for finding hexachord substitute chords
Algorithms for determining the most appropriate hexachord substitute chord for a given chord
Hyper-set substitution:
Algorithms for finding hyper-set substitute chords
Algorithms for determining the most appropriate hyper-set substitute chord for a given chord
Serialism:
Algorithms for constructing serial progressions
Algorithms for mapping serial progressions to standard chord symbols
Set-class substitution:
Algorithms for finding set-class substitute chords
Algorithms for determining the most appropriate set-class substitute chord for a given chord
Tritone substitution:
Algorithms for finding tritone substitute chords
Algorithms for determining the most appropriate tritone substitute chord for a given chord
Music hyper-set analysis:
Algorithms for analyzing music hyper-sets
Algorithms for mapping music hyper-sets to standard chord symbols.
Here's a more complete example of how the input and output functions could be implemented:
python
Copy code
def input_function(): """ This function takes in user input and processes it, extracting relevant information for the chord progression. """ user_input = input("Enter your chord progression request: ") # processing user input to extract information such as minimum number of chords, types of chords, etc. processed_input = user_input # just an example, you'll need to implement actual processing here return processed_input def generate_progression(processed_input): """ This function takes in the processed input and generates an extended chord progression based on the information extracted. """ # using the processed input to generate the chord progression chord_progression = "C Major > G Major > A Minor > F Major" # just an example, you'll need to implement actual progression generation here return chord_progression def output_function(processed_input): """ This function takes in the processed input and generates an extended chord progression based on the information extracted. """ chord_progression = generate_progression(processed_input) #outputting the chord progression print(chord_progression) # calling the input and output functions processed_input = input_function() output_function(processed_input)