Wednesday, October 22, 2014

ChordEase adds synchronization via MIDI clocks, cycle of thirds

The latest version of ChordEase (1.0.09) can be synchronized with an external device. Timing synchronization is implemented via MIDI clock messages, combined with the Start, Stop, Continue, and Song Position MIDI messages. ChordEase can be a slave or a master. For details, see Patch Bar/Sync in the documentation.

This version also adds a "Thirds" non-diatonic notes rule, which causes successive white keys to form the cycle of thirds. This makes it much easier (and more fun) to play arpeggios. Interval distances are greatly reduced: each input octave spans two output octaves. This facilitates the playing of melodic lines that are unusually wide in terms of range. It also could be of interest to people with physical limitations that might otherwise prevent them from playing wide intervals.

For a complete list of changes, see the release notes. And, here's the download link.

Tuesday, September 23, 2014

ChordEase and cybernetics

Collaboration between computers and people is the essence of the ChordEase project. The idea is to create a cybernetic organism, in which a performer cooperates with a machine in order to acquire new degrees of freedom that would otherwise be inaccessible. In this narrow sense, a person driving a car also constitutes a cybernetic organism. The car and the person cooperate to achieve a new degree of freedom, i.e. the person can now move around at 60 MPH. All tools have an element of cybernetics, but especially tools that embed information, control systems, sensors, feedback etc. By enabling a person to extend his or her power, tools create a new more powerful organism, a kind of meta-human or cyborg. So in the same way that a person using a portable vacuum becomes a vacuuming cyborg, a person using ChordEase becomes an improvising cyborg.

ChordEase is actually a very specific cybernetic experiment, organized around a simple hypothesis, which is that computers excel at rapid calculations, whereas people excel at rhythm, feel, and aesthetics. Rapid music theory calculations are a crucial component of improvising, and they're exactly the type of rule-based deterministic work that computers are optimized for. So the work of improvising should ideally be divided up between the person and the machine in such a way as to maximize the capabilities of each. The computer handles the brute-force music theory calculations, and the person handles everything else. In particular the person should avoid delegating anything related to rhythm and feel, because these qualities are fundamentally cultural and biological, and therefore very difficult to reduce to simple rules that a computer can follow. Rhythm originates in aspects of our nervous system that we share in common with most other animals, and is therefore inextricably entwined with our most basic drives, such as predation and procreation.

More generally it could be argued that machines will never make truly convincing aesthetic choices autonomously, simply because machines don't suffer, but let's leave that for next time...

Wednesday, September 3, 2014

Why ChordEase is a tough sell

ChordEase is much more difficult to market than most products. Most products address an already existing need, and consequently have plenty of competition, but also an obvious built-in market. By comparison ChordEase is a new invention, and thus has no competition, but no easily accessible market either. The hardest problem in marketing is creating new needs, i.e. persuading people that they should try something that they never wanted or even imagined. This is harder still when the new thing is complex and takes effort to understand.

ChordEase is effectively a new kind of instrument, but it's not a physical instrument; instead it uses artificial intelligence to enhance ordinary MIDI instruments, so that they can be approached in a radically new way. It's also a meta-instrument, in the sense that it offers the same capabilities to every musician, regardless of what instrument they play. It's especially useful to people who approach music rhythmically, because it can translate rhythmic input into harmonic and melodic output.

The main goals of ChordEase are 1) to facilitate the performance of harmonically challenging music, and 2) to enable the performance of music that would otherwise be physically impossible. Like any new instrument, ChordEase has many subtleties and mastery of it requires practice, but it has the potential to be a game-changer and open up new aesthetic vistas. My hope is that people will eventually take interest in ChordEase, use it to create their own art, and support its further development in whatever way they can.

Monday, September 1, 2014

Awesome or evil? See for yourself

ChordEase elicits a wide range of reactions. It's fair to say that people are sometimes horribly offended by it: I narrowly avoided getting beaten up after a jazz show a few months ago, just for talking about ChordEase. In general the people most upset by ChordEase are professional musicians, and in my experience they usually make one or more of the following points:

  1. ChordEase could put them out of work
  2. ChordEase is cheating and/or laziness
  3. ChordEase isn't an instrument because it eliminates choice

ChordEase is not likely to replace any musicians any time soon. In fact it's likely to increase the number of musicians, in the same way that electronic music has, by opening up new vistas of aesthetic freedom. Music has always co-evolved with technology. A piano is certainly a machine, as anyone who has looked inside one can recognize. Modern brass instruments require sophisticated metallurgy and couldn't have been built before the industrial revolution. Even the equal-tempered chromatic scale was revolutionary in its day and doubtless had its detractors. Yet today baroque music, and even renaissance music harmlessly coexist with jazz, rock and techno. What's really at stake here is purity, a notion that there's a "right" way to make music.

New degrees of freedom don't necessarily reduce our existing freedoms. Everyone is 100% free to not use ChordEase, or any other music technology. Cybernetics has had a huge impact on manufacturing, and doubtless made many jobs obsolete, but no one seriously equates musical performance with assembly line work. Kurt Vonnegut's "Breakfast of Champions" notwithstanding, musicians will be some of the last people to be replaced by machines. Electronic musicians routinely use drum machines, synthesizers, etc. Does this make them lazy cheaters? Speaking as a professional electronic musician, I can say that my motivation to use technology definitely isn't laziness, in fact mastering new technology is hard work. My motivation is that it allows me to realize my dreams, i.e. accomplish things that would otherwise be impossible.

ChordEase definitely does eliminate choices, in fact that's its purpose, but choice isn't black and white, it's a continuum. In music technology, choice equates with control. How much control do you want over the process of creating music? Singing is total control: no technology is required. At the other extreme is a CD player. Many musicians like it somewhere in the middle, e.g. a synthesizer might be fun, and an electric guitar at least has frets. The widespread acceptance of the equal-tempered chromatic scale also eliminated choices, but you're still free to not use it, and define your own intervals. ChordEase is a tradeoff, in which a performer willingly sacrifices some control over which pitches will be played, in exchange for the ability to improvise over harmonically challenging music with a degree of proficiency that would otherwise be unattainable. The tradeoff has many nuances, but it's still a tradeoff. If you're unwilling to cede any control, ChordEase isn't for you. Like synthesizers or electro music, artificial intelligence is an acquired taste.

I created ChordEase and use it every day, not because I'm lazy or prone to cheating, but because it solves my artistic problems. I like to improvise over jazz chords at fast tempos. ChordEase lets me do that. I'm quite happy to delegate some of the work to my computer. I retain complete control over the rhythm, timing, and dynamics, and in many cases over the sequence of pitches too. ChordEase still takes a lot of practice, because it's a new instrument with complex capabilities that present unique challenges, but it works for me. Maybe it will work for others too. We'll see.

Sunday, August 31, 2014

ChordEase 1.0.08 released with complete help and Impro-Visor support

ChordEase 1.0.08 is released, and includes comprehensive context-sensitive help. The help was a major effort (21,721 words but who's counting?) which mostly explains why the release took two months. The same documentation that's in the help file is also available at the ChordEase website, and on the ChordEase Wiki. 1.0.08 also supports Impro-Visor lead sheet (.ls) files. Impro-Visor is a free (SourceForge-hosted) notation and accompaniment program that's popular with jazz musicians. The release notes are here.

Tuesday, May 20, 2014

ChordEase 1.0.5 adds Output Notes bar, playing notes via continuous controller

Version 1.0.5 is up, and it adds two nice features: an output notes bar, and the ability to play through ChordEase using a continuous controller to generate notes, as opposed to a keyboard.

The output notes bar is a piano control, but unlike the virtual piano, it doesn't accept input; its purpose is to let you see exactly what notes your input notes are being mapped to in real time. It has filtering capability, i.e. you can show output notes only for a specific device and/or channel, though by default all output notes are shown, except for the metronome, which has its own special filter setting.

To play ChordEase using a continuous controller, you simply assign a controller to the Part's "Input Note" MIDI target. This can been done manually or via MIDI "Learn". Now spin the wheel (or wave your hand at your theremin, or whatever) and notes should come pouring out. You might want to set the Part's "Non-diatonic notes" setting to "Skip", unless you want lots of "out" notes or have very steady hands. As mentioned in a previous post, "Skip" mode greatly compresses the diatonic scale, reducing the octave to a fifth, and thus could be interesting for those with unusually short fingers, less than the usual number of fingers, etc.

Download it here.

Monday, May 19, 2014

Theremin-friendly handling of non-diatonic notes

Regarding non-diatonic note handling, I discovered a fourth mapping mode mode, which will be very useful when using a continuous controller (e.g. a theremin) to generate input notes. In this new mode, which I call "Skip", the non-diatonic notes are skipped over instead of merely being disabled. This effectively normalizes the diatonic scale, and makes the diatonic notes evenly spaced in controller steps. On a keyboard, the mapping looks like this (for the chord scale of C Lydian):

in out
C3 C3
Db3 D3
D3 E3
Eb3 F#3
E3 G3
F3 A3
Gb3 B3
G3 C4 (octave)
Ab3 D4


Note that the octave is now reduced to a fifth. All other intervals are similarly compressed. This might be of interest to those with unusually short fingers (children?) or other physical challenges. This mode also facilitates "wild" gestural playing, because it not only eliminates the need to avoid hitting black keys, but also ensures that all keys are "live" and play a unique diatonic note. It might be interesting to try it on a MIDI guitar. Chromatic playing would become diatonic playing. The range of a given instrument is increased by approximately half, e.g. a 61-note keyboard would cover more than eight octaves, instead of five octaves (61 / 7 = 8.71)

I have not actually implemented this mode yet, but I believe I have the math figured out and will begin implementing it ASAP. It's actually very simple, just a multiply, a divide, a modulo, and a table lookup:

int Diatonic[7] = {0, 2, 4, 5, 7, 9, 11}
int NoteOut = NoteIn / 7 * 12 + Diatonic[NoteIn % 7];

So to recap, the proposed non-diatonic note methods are: Allow, Quantize, Disable*, and Skip.

"Allow": a black key creates an accidental unless the adjacent white keys are mapped such that they're a half-step apart, in which case the black key generates a redundant note. This is the default and what I normally use, because it (sometimes) allows chromatic notes. A theremin player would be obliged not only to maintain correct absolute position (to avoid the "black keys" floating in space), but also to move different distances depending on the absolute sizes of the intervals between diatonic tones. In other words, if two diatonic tones are separated by a whole step, the motion required to jump from one to the other is twice as big as the motion required if the two diatonic tones that are separated by a half step. It would be easier to play than a real theremin, due to the elimination of microtones, but still quite difficult.

"Quantize": a black key is mapped to the nearest diatonic tone; i.e. all black keys generate redundant notes. A theremin player would probably find this mode annoying, because it would generate many duplicate notes. However this mode may be useful for MIDI guitar or other fretted but "sloppy" instruments, because misses are corrected instead of being discarded as they are in "Disable".

"Disable": a black key does nothing, i.e. it's dead wood. There are no longer any "black keys" to trip over, and for a theremin player this would probably be a huge improvement. However the diatonic tones still aren't evenly spaced in controller coordinates, so a theremin player would still have to move different distances depending on the absolute sizes of the intervals between diatonic tones, i.e. if the distance between two diatonic notes is bigger, the player has to move further. Some might find this preferable to "Skip", it could be a matter of preference.

"Skip": the chromatic scale is mapped to the diatonic scale, such that the octave fits within a fifth, as described above. All keys are enabled, and none of them generate redundant notes. The diatonic is normalized, such that the amount of physical motion required to jump from one scale tone to an adjacent one is always the same. This would be ideal for a theremin, in my view.

*Disable was previously called "suppress" or "reject".

Note that the above explanations become inaccurate if a non-octave input transposition is specified, however if one substitutes "diatonic tone" for "white key" and "non-diatonic tone" for "black key" the explanations remain correct. For example if input transposition is 2, to get diatonic notes, one must play down a whole step, i.e. in Bb major. This means the "white keys" are now Bb, C, D, Eb, F, G, A, and Bb, and the "black keys" are B, Db, E, Gb, and Ab. This would be true in "Allow", "Quantize" and "Disable", but in "Skip", the result will be more complicated.

Output notes bar

The next version will feature an Output Notes bar. Unlike the piano dialog, it doesn't accept user input; its only purpose is to show the output notes. It has the following features:

  • dockable bar
  • changes to vertical orientation automatically, depending on aspect ratio
  • supports filtering by port and/or channel
  • metronome notes are filtered out separately (this behavior is optional)
  • piano size is selectable: 49, 61, 76, 88, or 128 keys
  • optional key labels showing MIDI note names
  • handles multiple instances of the same note, e.g. from different ports/channels
  • handles bar being shown while notes are active, no dropouts

Tuesday, April 29, 2014

Latest version can show chord tones on piano keys

ChordEase 1.0.3 was released today. It adds new features, and also fixes some bugs. The piano keys can now be configured to show the chord tones and tensions for each chord, dynamically updated as the song plays. This is done using the piano dialog's context menu. The MIDI Device bar now includes the state (open or closed) of each device, and a MIDI Note Mappings dialog was added, which summarizes how input notes are mapped to output notes. The song file extension was changed from .txt to .ces to avoid conflicts with other applications, but unfortunately this means existing users must uninstall their older version before installing 1.0.3.

The screen shot below shows the chord tones on the piano keys. This is in Lead mode, in which the output notes stay as close as possible to the input notes, only adding accidentals as needed. The chord happens to be Bb (Lydian), so in this case all white keys are as usual except B maps to Bb.

Sunday, April 27, 2014

Latest ChordEase includes virtual piano

ChordEase 1.0.2 was released today. This version includes a virtual piano, which allows people to try the software even if they don't have a MIDI keyboard. The piano also shows what notes are being played, and what notes they're being mapped to. There's also a demo command (Help/Demo), which makes it much easier to understand what the software does and why it's useful.

Wednesday, April 16, 2014

Virtual piano interface

It dawned on me yesterday that ChordEase needs a virtual piano interface that you can play via the mouse and/or the PC keyboard. This would allow people who haven't got a MIDI instrument to try out ChordEase, using the Microsoft software synth that's built in to Windows. This feature would also be very handy for debugging in cafes. :) And, it should be possible for the virtual piano's keys to show which notes they're mapped to at any given moment, which would allow you to see how the chord scale is changing as you proceed through the song.

The virtual piano would need a drop list for selecting which part you want to play. It would be nice if it also had a slider or two, for testing controllers that you've assigned to parameters. It's not that much work and it's high value, compared to many other items on the list, though documentation is still the top priority. The list is growing exponentially at the moment, but that's normal at this stage of a project.

Sunday, April 13, 2014

ChordEase: play music with challenging chords easily on any MIDI instrument

ChordEase lets you play music with difficult chords easily on any MIDI instrument. It's primarily intended for jazz, but it can be also useful for any type of music that modulates frequently. ChordEase ensures that all your notes are harmonically correct, but their sequence and rhythm are up to you. In other words, ChordEase handles the rapid music theory calculations, so you can relax and concentrate on groove, feel, and aesthetics. If (like me) you're a musician who struggles with improvising to jazz or similarly harmonically challenging music, you owe it to yourself to try ChordEase.

ChordEase plays songs, which are set up beforehand. You're expected to stay in sync with ChordEase, and it provides a metronome to facilitate this. Normally you play only in the key of C major, and your notes are then adjusted in real time to fit the song's harmony, using various schemes. Any number of performers can perform through a single instance of ChordEase, using any number of MIDI instruments. Any number of parts can be defined, splits and layers can be set up, etc. Parameters can be changed in real time via MIDI controllers, and the output can be recorded and exported as a standard MIDI file.

ChordEase is certainly a work in progress but the version available today is fully functional. Download it HERE.