-
Notifications
You must be signed in to change notification settings - Fork 0
Home
The classification of what BoxySeq is, resides somewhere between sequencer and arpeggiator.
The core concept of BoxySeq is to use a window-manager-like window-placement-algorithm to generate pitch and velocity data as it sequences events in real time (via the JACK Audio Connection Kit’s MIDI API).
The behaviour of the placement algorithm is based upon the behaviour of the Fluxbox Window Manager. There are three binary options for the placement strategy: Row-Smart or Column-Smart placement, Left-to-Right or Right-to-Left, and lastly, Top-to-Bottom or Bottom-to-top.
Pitch and velocity data is generated for each event sequenced by BoxySeq by a placement algorithm. Up until the placement algorithm places an event in a two dimensional grid, the event does not have meaningful pitch/velocity data. The event is placed as a 2D box with width and height into a grid where it will fit without overlapping any other currently placed event. The coordinates of the box determine the pitch and velocity of the event that box represents, with X mapping to pitch, and Y mapping to velocity.
BoxySeq will output MIDI data for each event. The range of values for MIDI pitch data is 0 to 127. The range of values for MIDI velocity data is 0 to 127. The grid that events can be placed within is therefor 128 × 128 elements.
- Events can only be placed within a boundary located within the 128 × 128 grid.
- Multiple boundaries can appear within the grid and can overlap each other such that the placement of events within overlapping boundaries interacts. Note that overlapping boundaries does not mean the events within one boundary can overlap events within another boundary.
- The pattern is the rhythmic sequence of events. No event within the pattern holds meaningful pitch and velocity data.
- The pattern defines minimum and maximum values for the width and height properties of the boxes that are placed within the grid.
- When the pattern sequences an event, it randomly generates the width and height of that event.
- Boxyseq is being implemented such that multiple patterns can output events into a single boundary, a single pattern can output to multiple boundaries, multiple to multiple, and single to single.
- A single boundary can output events to a single MIDI output (a MIDI output here being the BoxySeq abstraction for a MIDI port), or to multiple MIDI outputs. Multiple boundaries can output events to multiple MIDI ports, or to a single MIDI output.
- A Boxyseq port is an abstraction which sits between a pattern and a boundary. Events are written to the port by the pattern. Events are read from the port by the boundary.
- A BoxySeq port cannot read input or write output to any other BoxySeq port.
- Ie, the routing ability of BoxySeq is currently and intentionally limited until such a time that development is ready for a fuller implementation or requires it before development can continue.