Algorithm for creating a simple chord sequence

I am making a program that generates random simple melodies based on a randomized main chord progression from the large scale C.

What would be a good way to generate a chord sequence of four triads from this scale? Generating 4 completely random triads (out of 7 existing) from the scale is usually not very good.

I need an approach to generate a chord sequence that sounds good or good, but I don’t want to just select a progression randomly from an existing progression pool. I still want the program to generate these four triads on its own, using some simple algorithm to ensure that the generated progression sounds decent.

(As I said, these four triads will be taken from the 7 triads of the C Major scale).

Please note: this question is not a duplicate of my previous question about the approach to creating a melody creation algorithm. This is about finding a way to generate a chord sequence. Creating tunes is another topic.

thanks for the help

EDIT: General directions on how to find out if a triad will sound good next to another triad will also be wonderful.

+8
algorithm music
source share
3 answers

It looks like you need to break this into phases:

  • First, arbitrarily create a triad of all the features of this key
  • Secondly, apply one or more filters to eliminate those that don't “sound decent” (*).
  • Continue driving until you have 4 triads that all filters pass.

I think that this solution may turn out to be pleasant for work as well - you can gradually create a collection of filters, each of which does one simple thing, but at the same time you gradually develop what it defines.

(*) Sounds decent are defined in terms with reference to previous triads (if any), and here you can write filters such as:

  • Does the root note of the triad match the logical pattern relative to previous root notes? ; examples:

    • Simple ascending
    • Simple downward
    • Climbing in the third
    • etc.
  • Does the notes of this triad have at least one common note with the previous triad?

    • it can find nice sound inversions.
  • Is the “jump” from the previous triad “less than” a certain threshold value?

    • to avoid jarring jumping all over the scale
    • simply achieved by summing the values ​​of the triad's MIDI notes and comparing with the previous ones
+3
source share

You can check these documents.

Making music using concepts from Schenkerian Analysis and Chord Spaces

and Probabilistic Model for Chordal Progressions

But this question is complex, how do you want, for example, to say that the accurate and compact presentation of music signals is a key component of large-scale music-based content applications such as music content management and almost duplicate sound detection. In this case, you are working on a large scale C, which looks like this:

C - D - E - F - G - A - B 

at intervals

 C - STEP - D - STEP - E - HALF STEP - F - STEP - G - STEP - A - STEP - B - HALF STEP - C - 

Now the chord is formed by the distance between notes, for example

 C major chord is formed by CEG D minor chord is formed by DFA E minor chord is formed by EGB F major chord is formed by FAC G major chord is formed by GBD A minor chord is formed by ACE B dim chord is formed by BDF 

The problem that you describe is not yet resolved, despite numerous studies in this area. So, for example, take a look at other articles where they offer average levels of summing musical signals based on chord progressions. Thus, chord progressions are recognized by musical signals based on a controlled learning model, and recognition accuracy is improved locally by examining the n-best candidates.

So, you can explore the properties of chordal progressions, and then calculate the histogram from the tried chordal progressions as a summary of the musical signal. Then, with a generalization based on chords, harmonic progressions and tonal structures of musical signals can be described.

But how to do that? Well, you need musical data sets (> 70,000 songs?) So you can get the relevant information ...

+1
source share

Actually, this is a rather interesting question.

I would say that you still need to think and understand one more thing: what would you like to say (for example: express) with your chord progression? I suppose you would like to express “something meaningful” with your melodies and with a supporting chord progression.

Now “something meaningful” is not an exact term. Personally, I would call this term something whole, something complete, like a story. It may be as short as 4 chords, but it must say something and must make up a complete story. If we agree with this, I would say that your 4 chord should “lead” from beginning to end, and we should “feel” the last chord, since this was a satisfactory end (resolution) of the “history”.

The hard part is that for each person, the terms "satisfaction", "decency," etc. can mean completely different things, but what satisfies you may not satisfy the other person. Although in the theory of music there are some basic recommendations (linked above in answers and comments) that have been tested by great composers after hundreds of years of music, so I think you should try some of these tips.

0
source share

All Articles