I continue to be astonished by the complexity and rich feature set of the original DOS software the Polymeter project is based on, considering the harsh limitations it contended with: 16-bit pointers, chronic memory shortage (640K max), no GUI support from the OS (I had to write my own menu and window manager), and time-critical MIDI stuff running bare-metal as ISRs (Interrupt Service Routines) painstakingly hand-crafted around obscure details of a particular ISA MIDI card, the manufacture of which vanished without a trace years ago.
I'm trying to save Polymeter from bit-rot while preserving the look and feel of the original, except in cases where doing so would be obviously detrimental, or where an original design decision was a kludge necessitated by the limitations of 1990s software. Many of the improvements are under the hood, e.g. the original was limited to 384 tracks, each consisting of at most 384 steps, whereas the new version supports up to 65,536 tracks, each containing up to millions of steps.
The original consisted of three separate applications, which I'm hoping to consolidate into one: Bongo, Jock, and Stencil. They correspond to the three stages of my workflow: 1) composing polymeter loops, 2) performing live with those loops and recording the transitions, and 3) editing the performance afterwards in order to refine the transitions. Bongo was the loop composing tool, and that's the part I'm working on now. If you're curious you can find screenshots of all three apps on the Gallery page of the project's website.
Before undertaking this port. I evaluated all the well-known DAWs and sequencers, and quite a few obscure ones too, including downloading trial versions. Most weren't even close, but the closest fits were Ableton and Fruity Loops. Ableton supports creating polymeter loops, including controller loops, but with a fatal flaw: when you go to place the loops and build a song, the tracks don't necessarily stay synchronized with the start of the song, and thus the critical phase relationships between tracks are easily lost. This is the problem that "Stencil" has to solve: make it easy to "paint" with your tracks, much the way Fruity Loops does, so that when tracks dub in and out, their original phase relationships are always preserved. The idea is that you should be able to edit your track transitions with 100% confidence that the underlying polymeter phase relationships are always preserved.
The most important feature of Bongo that's not ported yet is the ability to "mask" tracks with other tracks. In other words, a track in one meter, muting and unmuting another track in a different meter. A mask can also apply to multiple tracks, all in different meters. But the kicker is, a mask can also mask another mask! It's crucial to grasp that muting and unmuting only affect notes in the future, and have no effect on notes already in progress. This is a very different effect from a volume controller loop, for example, which continuously affects all notes in progress on that instrument.
Masking is a huge PITA to implement for reasons I won't go into, but it's also the indispensable heart and soul of the invention, so I'm packing for a long hike. I expect it to take months, but it really depends on how much time I have to work on it.
I also hope to enhance the masking capability to include modulation of other track parameters, not only mute/unmute. For example why can't a track transpose another track's note, or change another track's offset or swing? These were things I wanted to do back in the 1990s but couldn't, due to limitations in the software's architecture, and in some cases, insufficient programming skill, it must be admitted.
But the holy grail is chord masking: note tracks in different meters, having their notes continuously "corrected" in real time to fit a set of chord changes that's running in another meter. Much of the code could be transplanted from another one of my projects (ChordEase). This concept might solve one of my longest-running problems, which is that it's excruciatingly difficult to make non-modal polymeter that isn't brutally dissonant. With ChordEase-style note correction, this would no longer be a problem. The tracks would just magically fit the changes as closely as possible, with no fussing around. I think this idea has tremendous potential and would be well worth the development cost, which will be daunting to say the least.
No comments:
Post a Comment