This repository has been archived by the owner on Jun 10, 2018. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
At A Glance
jwm-art-net edited this page Sep 14, 2010
·
3 revisions
- BoxySeq is something between sequencer and arpeggiator.
- Use a window-manager-like window-placement-algorithm to generate pitch and velocity data for events.
- Sequences events in real time.
- Uses the JACK Audio Connection Kit MIDI API.
- Each event sequenced is displayed as a coloured box which appears and then disappears.
- Behaviour based upon the Fluxbox Window Manager.
- Row-Smart or Column-Smart placement
- Left-to-Right or Right-to-Left placement
- Top-to-Bottom or Bottom-to-top.
- Fast implementation using an array combined with bit manipulation to store used/unused state of space in grid.
- No placement made which causes overlap to occur.
- Events dropped, discarded, tossed away, ignored, not sequenced if cannot be placed.
- Event does not have meaningful pitch/velocity data until placed by placement algorithm.
- Event becomes a 2 dimensional box when placed.
- X coordinate maps to pitch.
- Y coordinate maps to velocity.
- MIDI pitch range is (integer) 0 to 127
- MIDI velocity range is (integer) 0 to 127
- Therefor the grid is 128 × 128 units.
- A boundary is a box marking an area in the grid where events are to be placed.
- Events can only be placed within a boundary.
- Multiple boundaries may be used in a single grid.
- Boundaries may overlap each other.
- Boundaries that overlap each other does not causes events to overlap each other.
- The options for the placement strategy are per 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 of the event boxes.
- The pattern randomly generates the dimensions of the event boxes before they are placed.
- One voice per pitch per channel per MIDI port.
Where the potential for more than one voice per pitch per channel per MIDI port occurs, choose one of the following:
- Utilize width of second event box to find a different pitch between X and X + Box Width, OR
- Do not output any MIDI messages for the event, but still place the event, OR
- Discard the event without outputting any MIDI messages and do not perform placement of it.
- The BoxySeq port abstraction sits between a pattern and boundary.
- Via a port, a single pattern can output one or more boundaries.
- Via a port, a single boundary can read input from one or more patterns.
- Via a port, multiple patterns can output to multiple boundaries.
- A port cannot read input or write output to any other BoxySeq port.
- The BoxySeq MIDI output port abstraction sits between a boundary and actual MIDI output.
- Via the port, a single boundary can output to a single MIDI port and channel
- Via the port, a single boundary can output to multiple MIDI ports and/or channels (TODO: output to multiple MIDI channels on the same port is probably unimplemented right now).
- Routing implementation is limited.
- Routing implementation is temporary.
- See: home