Here a little tool to find chord progressions. Made the first version in 2004 as a part of quite popular tool for Jeskola Buzz, called BuzzHelper. Was the time when I first discovered what chords and scales are and I used pen and paper to create my chord progressions but quickly I came to the conclusion: this looks like a job for a computer.
Made a new version in c# .net a few years ago. It's bad in many ways. It used to be commercial software but always thought of making it freeware. Looking at it now, the source code looks like a mess and nowadays I'd do that whole thing as a web application. In many details, I don't really understand what it does. Haven't worked with c# for a long time. But still, I use the software in all my projects (and the 2004 program) because I still don't know how to play an instrument. Used to sell it but always thought of making it freeware. Can't make it open source because it uses some libraries that costs a bit of dineros.
I can't even remember how you build an installer, so the zip file contains the program without an installer.
unzip, run MeldodyBuilder.exe.
I haven't done anything with C# for ages. There are bugs and fixing them takes some time because that source code is a mess.The website is also the most ugliest thing you've ever seen.
The instruments are soundfonts. Hence the file size. Never managed to get support for vst plugins working without crashing every 5 minutes. So, this version has no vst support at all.
The basic principle is: Define a chord progression and add instrument tracks that play a pattern. And a pattern is basically a midi clip, but instead of using real notes it's realtive to the chord: e.g. instead of telling the software to play the note C or D#, it tells the software to play the 1st note of the chord, then the 2nd note of the chord. It simply doesn't care about the notes.
The screen has five sections:
1. Header menu: should be clear (compiled the debug version to allow editing for chord and scale definitions, but once you clicked on Definitions or Instruments you have to restart the program to get back to the edit view. For some reasons, I never built a back button.)
- Sequencer: The big thing on the top right. In the lane "Chords" add the chord progression. Below add the instrumental tracks that define how the chord is played.
- add chords: drag and drop from the chord list on the right side
- set start and end of the loop: ctrl+mouse click in the "Ticks" header sets the start time, alt+click sets the end time
- copy&paste: select chords/patterns via shift and moving the mouse or via ctrl+mouse click. Then use ctrl+x(cut) or ctrl+c(copy). Click in the "Ticks" header at the desired insert postions and use ctrl+v to insert the copied chords/patterns.
Chord library: To the right of the sequencer. Here is the chord libray. Drag and drop chords from here into the "Chords" lane of the sequencer.
Pattern editor: The big section below the sequencer. Here you draw you patterns, the thing that defines what notes of a chord are played. One the right side you see the octaves and notes. E.g. "1-2" means: play the second note of the chord in octave 1. "3-4" means: Play the fourth note of the chord in octave 3. The software uses a "round robin" approach. If you play a triad like A minor (ACE) the fourth note will be A again but an octave higher.
Pattern list: Here you manage the list of patterns. On the bottom there is also a tab for "Pattern presets" that holds a bunch of predefined patterns.
There are some functions I added and most of them were not available in the public version. The most interesting are:
Normalize: When you click in the sequencer on the right side where the instrument/track names are listed, a context menu opens with the option "Normalize notes". This function will take the chords in the track, start with the first chord, and then go through each subsequent chord and build the inversion that requires the least notes movement in relations to the previous chord. E.g. you have the chords A minor and C major. This function will make change the chord progression from ACE -> CEG to ACE -> GCE. You have F minor and A# major. The function will change FG#C -> A#C#F to FG#C -> FA#C#.
Invert: Select the chords you want to invert, then right click on one of the chords in the selection and choose "Invert chords" in the context menu. This function will mirror the chords like a wild Johan Sebastian Bach, E.g. A minor chord will turn into a major chord. Simply select the note that will be the center of this mirroring operation. You can hear an example of this operation in the files "kavinsky" and "kavinsky-variant". The more kitsch a song is, the more sense the outcome of this operation is. I've mirrored full Abba and Madonna songs and the result sounds like it's meant to be this way.
Random: Click the dice symbol in the top left corner of the sequencer to get randomly generated chords. This function will take all chords from the currently selected scale (right side of the sequencer) and randomly generate a chord progression with these chord. Under "Chords" you can define what type of chord should be used. Under pattern enter a string that defines the length of the segments in the chord progression. e.g. 4-4 = two chords, both are 4 ticks long. 4-2-2 = three chords, the first i 4 ticks, the second and third chord are 2 ticks long.
Sections: Above the "Chords" track in the sequencer there is a "Sections" track. It's just for adding some description to a part of the chord progression.
In minor and major chords, the chord library will highlight the seven chords that are part of the German chord functions: Tonica, Dominant, etc.
Play non chord notes:
- On top of the sequencer in "Song scale" select the scale/key of the song.
- In the pattern editor select a note and then press either "+" or "-".
If a note is marked as "+" it wont' play the defined chord note but the note from the selected scale that's one step higher. If "-" is selected it will take the chord note and play the note that's part of the defined scale but one step lower.