Ideas for a MIDI Sequencer

My current implementation of this idea is called HasChorus. It is implemented as a set of Haskell modules written on top of Haskore. Not all of the ideas have been implemented yet, but I'm starting to sequence backing tracks pretty easily.

The sequencer will be written in a lazy functional programming language. When finished, the sequencer will allow songs to be "programmed" at a very high-level, in that same lazy functional programming language. This means that it should be possible to "program" a backing track in less than 1 hour (hopefully a lot less), producing a MIDI file. There will be no facility for real-time recording, and there is unlikely to be a facility to import MIDI files.

I now plan on adding the following things to Haskore:

  • Explicit handling of drums, including a library of drum beats. I plan to provide a scheme where it is easy to map in drum fills so that they are played in a `drummerly' way.

    Status: DONE? See HasDrums.lhs. Needs a library of beats. I'm no drummer, so I don't know where to start. I have a book of drum machine beats, but it is copyright...

  • Creation of (simple) chord sequences, having the chords played in a variety of standard, simple styles.

    Status: DONE? See lots of modules. Needs a better and more useful library of styles.

  • Mapping of bass sequences to fit chords, mostly consisting of transposing a couple of standard bass lines for a song.

    Status: DONE? As above...

  • Un-quantising (is that `groove quantisation'?).

    Status: DONE. See HasGroove.lhs.

  • "Un-quantising" note volumes.

    Status: DONE. See HasGroove.lhs.

  • Harmonies (maybe).

    Status: Haven't even thought about this...

I'd be interested in hearing any comments.