Saturday, August 8, 2015

ChordEase 1.0.12 adds spontaneous tonality and chord substitution

The latest version of ChordEase (1.0.12) lets you specify the chord via continuous controllers, without having to load a song. This was achieved by adding a Chord bar containing drop lists for the current chord’s root, type, bass note, scale, and mode, all remotely controllable via MIDI. If no song is loaded, these new parameters affect the default chord instead. The ability to change the default chord while playing enables a new usage scenario in which tonality is determined spontaneously by navigating a multi-dimensional parameter space, instead of by stepping through a preset chord progression. The tonality can also be automated via functions e.g. periodic waveforms or randomness, provided you have a synth or other device that contains such functions and can output MIDI messages corresponding to them.

ChordEase 1.0.12 also introduces chord substitution, which is supported by switching between two or more chord dictionaries. A chord dictionary defines the set of chord types that a song can use, by mapping each type to a scale and mode. Substituting a different dictionary alters the harmonic content of all your songs at once, by redefining their chord types. Substitution can be remotely controlled via MIDI, so it's possible to switch dictionaries seamlessly during a performance. For example you might have one dictionary for playing melodies and another dictionary for soloing, with a third dictionary containing unorthodox definitions for playing "out".

This version also adds other interesting features and fixes many bugs, some of them critical; see the release notes for details.

Thursday, May 28, 2015

ChordEase 1.0.11 adds tagging, tap tempo, adaptive arpeggios, and more

ChordEase 1.0.11 adds some major new features, including:

  • Tagging: Spontaneous repetition of one or more measures.
  • Tap tempo: Enter tempos via tapping instead of numerically.
  • Adaptive arpeggios: Arpeggios that span a chord change adapt to the new chord, by combining notes from both chords to create hybrids.
  • Chord dictionary dialog: A full-featured editor for editing the chord dictionary.

Various bugs were also fixed in this version; for a complete list, and links to documentation of the new features, see the release notes.


Release notes

Tuesday, May 26, 2015

Pitch class sets and other amusing distractions

I'm almost done with the ChordEase documentation, but I keep getting distracted, not only by the internet, but by something much harder to resist: other programming projects! Programming problems are like catnip to me. The catnip that tempts me the most lately is the foundation of atonal music, AKA Pitch Class Sets: "Pitch Class Sets are a method for describing harmonies in 20th century music. These notations and methods can describe and manipulate any type of chord that can be created within a 12-tone (equally tempered) scale."

Paul Nelson, the guy who made that site, is one of my heroes. Pitch class sets allow us to reduce any set of notes to its fundamental pattern, called the "Prime Form". There are surprisingly few of them. For example, for 7 notes, there are only 35 unique patterns (or 38, depending on your standard). All of the thousands of other combinations are merely transpositions and/or inversions of the prime forms. Here's the Table of Prime Forms (from Paul again).

All told there are only 208 prime forms, an astonishingly low number. The major (diatonic) scale is one of them of course. They have codes, called Forte codes (after the guy who invented all this, Allen Forte, recently deceased). The major scale's code is "7-35". Pitch class sets seem opaque at first, but they have deep implications, especially for atonal music. The work of Schoenberg, Stravinsky, etc. would have been unimaginable without them.

Almost all the music you'll ever hear will use perhaps two or three of the 208 pitch class sets (unless you listen to a lot of atonal music!) I would be very surprised if Paul McCartney knows more than a handful of them. This is interestingly similar to the fact that almost all music is restricted to a single meter at a time.

I'm an innovator in terms of rhythm (due to extensive use of polymeter), but in terms of pitch, not so much, and I would like to change that. My first step is basically repeating Paul Nelson's work. I've already made a program that can reduce any set of pitches to its prime form. Soon I'll be able to generate his table too. It might seem like a waste of time to reinvent this particular wheel, but the process allows me to familiarize myself with the underlying concepts. For the moment it's a purely academic exercise, but one possible application would be add the prime forms (of heptatonic scales only) to ChordEase. This would allow ChordEase to be used for atonal music!

I don't always work in a straight line. A lot of what I do is pure research. Sometimes the results are useful, sometimes not. My primary motivation is to satisfy my curiosity, and I'm a very curious cat.