Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Introduce some basic chord progressions #14

Open
braaar opened this issue Jan 22, 2022 · 3 comments
Open

Introduce some basic chord progressions #14

braaar opened this issue Jan 22, 2022 · 3 comments
Labels
help wanted Extra attention is needed

Comments

@braaar
Copy link
Owner

braaar commented Jan 22, 2022

We want to have some kind of harmonic logic in the app so that you can get chords that fit together harmonically.

In the harmonic style of 18th century european musicians, chords are grouped into their harmonic functions with a number from 1 to 7.

Function Extension Notes
I The root (tonic)
II
III
IV Subdominant
V Dominant
VI
VII

In the C major scale, these chords are

  • I: C major
  • II: D minor
  • III: E minor
  • IV: F major
  • V: G major
  • VI: A minor
  • VII: B dim

We want to write a function that will take some numbers and translate them into actual chords

const fourChords = {
  chords: [1, 5, 6, 4],
  mode: "major"
}
const keyCenter = "C";

writeChordProgression(fourChords, keyCenter); // returns [ "C", "G", "Am", "F"]

We can use this function alongside a large catalogue of chord progressions to get a random chord progression from the selection. If you grab two progressions you now have an A and B part you can alternate between.

getRandomProgression("C", "major"); // returns [ "C", "G", "Am", "F"]
getRandomProgression("C", "major"); // returns [ "C", "F", "G", "F"]
@braaar
Copy link
Owner Author

braaar commented Jan 22, 2022

Four chords can get a bit tiring in the long run, so we probably want to add more chord progressions. We can write them in this format. We will store these in a large object or array directly in the source code for now (no need to add complexity and hosting costs by adding a database at this stage)

fourChordsMinor: { 
  chords: [1, 6, 3, 7]
  mode: "minor"
}

@braaar braaar changed the title Introduce harmony Introduce some basic chord progression Jan 22, 2022
@braaar
Copy link
Owner Author

braaar commented Jan 22, 2022

I think we can bring rhythm/time into this at a later point. For now let's assume that every chord has the same duration or an undefined duration that the user can figure out for themselves.

@braaar
Copy link
Owner Author

braaar commented Jan 22, 2022

Let's get some 12 bar blues progressions!

@braaar braaar added the help wanted Extra attention is needed label Jan 24, 2022
@braaar braaar changed the title Introduce some basic chord progression Introduce some basic chord progressions Jan 24, 2022
@braaar braaar mentioned this issue Jan 24, 2022
7 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

1 participant