One of the ideas I would like to implement is as follows.
The user would hold down a key on their MIDI keyboard (or possibly input a note in some other fashion). The software would choose a scale, possibly from a set constrained by the user. The algorithm would then play chord progressions chosen at random from a generalized chord progression map or flowchart, choosing embellished and inverted chords as well as common triads. These progressions would be simultaneously played through a MIDI instrument or internal synthesizer while being written to a MIDI file for later playback and editing. Meanwhile, the interface would show the user what chord it is playing, and what chords it had recently played, as well as the chosen scale and root note.
In this way, the user could audition a large number of progressions, chords, and scales in hopes of discovering a new basis for a song — whether a long progression or just a few chords that evoked a desired emotion.
The user might also be able to go back and edit which inversion and type of chord were played in a generated sequence, tweaking the temporal order or harmonics used.
I think that this could be realized in Pure Data with a relative minimum of fuss, maybe requiring that an extension be written in C. If I can dig up the code, I wrote a program in C with a subset of this functionality several years ago.
Comment if it sounds like an interesting tool, or if you have any ideas about how to realize this in PD, perhaps with a minimum of external coding.