top | item 15720448

Show HN: Chord Progressions

161 points| peterburkimsher | 8 years ago |peterburk.github.io | reply

101 comments

order
[+] vinylkey|8 years ago|reply
Mostly good info in there, but I see a few problems:

> There is also no E#. It just doesn't exist. Get used to it. Those are the 12 notes.

Technically not true. There is an E#, it's called F. If you are playing in F# major[1], the scale has an E# in it.

> Musicians never play notes one at a time. They always use chords.

Most lead guitar parts are not chords. Typically playing in a band context will create a chord from multiple instruments, but that isn't always the case.

[1] https://en.wikipedia.org/wiki/F-sharp_major

[+] lwhalen|8 years ago|reply
> Musicians never play notes one at a time. They always use chords.

This guy has also obviously never met the strange and rare creature known as a 'bass player'.

[+] xkcd-sucks|8 years ago|reply
> There is also no E#. It just doesn't exist. Get used to it. Those are the 12 notes.

Whoa... Plus, they're identical only in equal temprament

[+] jimmaswell|8 years ago|reply
> Musicians never play notes one at a time. They always use chords.

What kind of weird statement even is that? What about the first few notes of Fur Elise?

[+] LeonB|8 years ago|reply
And if you're going to say there's no E# you'd want to also pretend there's no B#. Otherwise it sounds like E is totally exceptional.

Down with E exceptionalism.

[+] ML_MS|8 years ago|reply
Yeah. Some of the stuff said in this is stated very poorly.

> A machine learning program is also called a "neural net".

A neural net is just one example of a machine learning model.

[+] dizzystar|8 years ago|reply
It goes along with this line... "For some reason I don't totally understand, some have 2 names (e.g. C#=Db, D#=Eb, F#=Gb, A#=Bb)."

It would probably blow the authors mind to know that some scales have sharps and flats, including the ones

[+] xxpor|8 years ago|reply
And he didn't mention the obvious corollary... B# (aka C). (and Cb, Fb)

The dude's mind is going to be blown when he learns about double sharps and flats.

[+] fenomas|8 years ago|reply
There are plenty of not-quite-correct things in this article, but I think both lines you quoted were meant to be more or less tongue-in-cheek.
[+] brooklyn_ashey|8 years ago|reply
actually, there is an E#. It's called E#! There is also a Cflat! F is the enharmonic spelling of E# and B is the enharmonic spelling of Cflat.
[+] asher|8 years ago|reply
If you want to try these chord progressions in your browser, check out:

http://wildsparx.com/rhythatom/

Coincidentally I just finished it. Source is here:

https://github.com/wildsparx/rhythatom

In theory it should run in any Chrome/Chromium browser, but I've received several reports of rhythatom failing to play. Would appreciate any help or ideas.

If you look at: https://peterburk.github.io/chordProgressions/ChordProgressi...

There doesn't seem to be any indication of major/minor. One way to interpret that is "always use the diatonic." Which means only use notes in the key, which means chords (1,4,5) are major while (2,3,6) are minor. However songs can have non-diatonic chords.

If you look at Rhyathatom, it defaults to the well-worn 1645 progression - the 6 is explicitly minor, which makes it diatonic. Try making the 6 major and you get a different animal - kind of sinister! That's a non-diatonic chord.

Maybe the author accounted for this elsewhere.

[+] peterburkimsher|8 years ago|reply
Rhytmatom is really cool! If I knew about it a month ago, I'd probably have used your source code instead of rewriting everything myself.

I like that I can choose the number of beats, unlike Jake Albaugh's arpeggiator (although that has some other interesting features).

https://codepen.io/jakealbaugh/full/qNrZyw

[+] fenomas|8 years ago|reply
Nice work! Am I crazy or are the pulldowns for accidentals not doing anything?

> There doesn't seem to be any indication of major/minor.

There's a line in there about capital/lowercase of roman numerals not being important, by which I hope the author meant out of scope of the article. So I think they were explicitly just enumerating the chords of the diatonic scale.

[+] vojvod|8 years ago|reply
I got this error the first time but worked fine on subsequent refreshes:

  An AudioContext in a cross origin iframe must be created or resumed from a user gesture to enable audio output.
  
  G.snd.init @ (index):98
  init @ (index):464
[+] BucketSort|8 years ago|reply
Sweet! I like that it only plays if the tab is active.
[+] wrs|8 years ago|reply
A for effort, but as a programmer and musician, simultaneously makes me a little sad as an example of the all-too-frequent phenomenon of programmers trying to model a domain without spending enough time actually learning the nuances of the domain first.
[+] mb_72|8 years ago|reply
Nuances? Try basics. Worse, the author makes a number of general statements about music that I would have known to be wrong as a 6-year old with 1 year of experience in playing piano.

Who am I kidding? This is the age of crapping some mangled mis-information out onto a blog or web page in the hope of raising one's profile and securing a job with the next hot startup creating $10k robots delivering $5 pizzas or whatever.

[+] ajuc|8 years ago|reply
Good enough.

Also - the notation in question is confusing and overcomplicated, and ignoring corner cases makes a lot of sense if you don't care about outliers.

It's not like that notation handles all kinds of music well anyway.

[+] lodi|8 years ago|reply
Yeah, my thoughts exactly.

> A chord is 3 notes played at the same time.

It's not like you have to dig too deep to discover four-note 7th chords, diminished/augmented, inversions, etc...

[+] fenomas|8 years ago|reply
This is nice as a diary of some hacking, but much of the musical commentary is misleading. Basically the author has enumerated all the unique ways of selecting the numbers 1..7 four times with replacement, and then done various mechanical translations on the results. Ostensibly this is done to enumerate all possible four-bar chord progressions, though in practice the results are highly redundant (i.e. many results are musically identical) and incomplete (many possible chords aren't included - e.g. secondary chords).

Then rather than distributing the scripts the author presumably used to do the enumerating and translating, they are distributing the outputs of the scripts, as a huge tarball full of midi files. Not sure what the motivation here was.

[+] peterburkimsher|8 years ago|reply
The script is in there! Chord Progressions.scpt.

If you can read AppleScript, go ahead and use it.

The way I see it, most people prefer to take existing data (e.g. Kaggle datasets) and build machine learning tools on that, instead of having to compile everything from source and make their own data.

[+] asher|8 years ago|reply
In the Parsons Code section, if I'm reading correctly, the chords are conceived along an up-down axis. However chords do not really have that relation. Going from 1maj to 5maj can be up a fifth or down a fourth.

To illustrate this, first listen to the default 1645 progression on rhythatom. Then change the octave of row 2 (4maj chord) from +0 to +1. Can you hear its similar role in the progression, even though it's now stressed by being up an octave?

[+] peterburkimsher|8 years ago|reply
I talked about this with my friend Lenard, because I was confused why the Parsons code would be different for the same chord progression.

He then explained that I should move the key, and when I transposed the MIDI table, the Parsons codes all became the same.

I then asked him, is it possible to move up an octave for just one part of a chord progression? He said yes, it's possible, but people don't do that often. Normally people wait until the end of a chord progression to change octave.

[+] Floegipoky|8 years ago|reply
Another correction: > The notes in "Cm" are C,D#,G.

It's actually C Eb G. The difference is that D# is an augmented 2 while Eb is a minor 3. They sound the same but they have totally different functions.

[+] hellofunk|8 years ago|reply
I would invite the OP to read a basic book on music theory, any good undergrad-level text should do, before stating some of the "facts" he is making, which are just untrue.

For one thing, the author is confusing physical pitches with musical notes. C double-sharp exists and is enharmonic to D, for example, because the frequencies are the same. But these are very different notes in a musical context.

There are many examples of this in the article that would be cleared up by a basic understanding of music theory that all music students complete, many of whom do this in piano lessons growing up long before graduating from highschool.

I admire the effort, but I often see people analyze music from a perspective that is not actually that of a musician, and there are always huge gaps in the understanding that needn't be there if they sought a basic knowledge of the matter.

Example:

> For some reason I don't totally understand, some have 2 names (e.g. C#=Db, D#=Eb, F#=Gb, A#=Bb).

Fair enough, you don't understand this, so that should be a clue that more knowledge is necessary before making this claim:

> There is also no E#. It just doesn't exist. Get used to it. Those are the 12 notes.

Incidentally, it goes much further than this, and for good reasons. F is the same pitch as E# and G-double-flat, but all three are distinct musical notes which serve different purposes.

There's also C-flat, B, A-double-sharp.

And B#, C, D-double-flat, etc.

[+] slyrus|8 years ago|reply
Putting aside the rest of the nits here, there are two things that stick out in my mind. First of all, what he calls 4-chord songs are really more "4-bar songs" (which given his restriction of one chord per bar end up being at most 4-chord songs), but we should be clear about the distinction between the tones being played and the duration of those tones.

Second, I don't know if this is an artifact of my fluidsynth setup or not, but when I translate his midi files into WAV files the 6 and 7 chords are from the octave below, which sounds odd to my ears. If we're listening to, say, 1.5.6.4 we shouldn't drop down an octave at the 6.

[+] peterburkimsher|8 years ago|reply
You're actually using the data! That's really encouraging.

It's probably a bug in my script. How do I know which octave to choose?

If you can explain it to me using the Parsons Code method, I think it's easier for me to understand. 1.5.6.4 is udud, right?

[+] brooklyn_ashey|8 years ago|reply
Wow, great job on this for being someone who dosn't play an instrument. Seriously. Sure, there are some kinda not exactly right things, but sheesh, maybe you should make your own instrument! This is a great way to teach people about machine learning in a friendly way. Keep adding to it. Obviuosly you know there is random music- you were just speaking of songs. And You seem to know about blues, so you probably also know about rhythm changes and stuff? If not- check that out- see also Donna Lee.
[+] aczerepinski|8 years ago|reply
“There are 30 keys”

You could make the case that there are 12 keys, or some multiple of 12 keys, or near-infinite keys. But 30? Pretty random!

[+] peterburkimsher|8 years ago|reply
Are some of those keys duplicates of each other? Or missing?

I could be wrong - I just guessed that from another data source (some PDF song sheets that have the key listed on the top right).

[+] leafario|8 years ago|reply
> That means every song in the world sounds like one of those 81 codes!

Yeah, every 4-chord repeating song.

[+] yellowapple|8 years ago|reply
"Musicians never play notes one at a time. They always use chords."

Today I learned playing literally any brass instrument means I'm not actually a musician. Who knew that my knowledge of the trombone ain't actually musicianship? ;)

Otherwise a great article.

[+] multi_tude|8 years ago|reply
Harmony in modern music has become homogenous and it's getting worse. I would think the best use case for this is to feed it modern chord progressions in order to inspire musicians (or machines) to avoid using these same harmonic tropes.
[+] bitL|8 years ago|reply
When you realize how the current "mapping" of piano keys makes everything confusing and how it historically developed, it looks like musician version of "JavaScript", i.e. a really crappy standard, where you can do anything but in a really unpleasant way. Map your scales directly onto launchpad/push/circuit, and you never get a wrong note. Moreover, the equal temperament makes all sounds slightly disharmonic, so even a professionally tuned concert grand piano sounds rather bad and unauthentic, different to what original classical composers intended (they used harmonic tuning where transposing by one key changed harmonics completely unlike with prevailing standard today). If you do acid trance, it's OK though.
[+] zodiac|8 years ago|reply
> Map your scales directly onto launchpad/push/circuit, and you never get a wrong note

If you mean "map your notes so that you can only play the 7 diatonic notes of your major scale", well, then sure it's impossible to play "wrong notes", but it's also impossible to modulate to different keys, to play secondary dominants, any modal mixture, to add chromaticism, etc.

Similarly, as I understand it one of the advantages of equal temperament is that it allows you to modulate to any key within the same song. Of course if you never modulate you should just use just intonation in your key.