Siren is based on a hierarchical structure of data, and a tracker-inspired user interface, initially intending to build on the concepts and technology of TidalCycles. The main idea is to support a hybrid interaction paradigm where the musical building blocks of patterns are encoded in a textual programming language, while the arranging and dispatching of patterns is done via a grid-based user interface inspired by musical trackers.
The concept of a pattern is borrowed from the Tidal’s pattern language. It offers means to represent encoding of musical patterns, a library of pattern generators and combinators, a scheduling system for dispatching events. By augmenting the patterns, Siren uses pattern functions that are stored in a pattern dictionary. These pattern functions can be called from the cells of the tracker grid along with their optional parameters. The creation of a pattern introduces a rhythmic element or a cycle. Sequencing the code allows the user to break out of linearity by modifying the cycle with different variables and transitions while allowing events remain coherent in their single and linear timeline. This allows events to be compiled synchronously and provides a precise timing mechanism inbetween the patterns and other time-related modules (i.e. pattern roll, and global modifiers). In the tracker grid, per convention, each column represents a channel. Channels here are analogous to tracks in contemporary DAWs. Each cell in a channel can be filled with a single function call, and its corresponding pattern function is located in the pattern dictionary. As such, cells in channels contain only the call for a function, which, as is conventional in many programming languages, comprises its name and the parameters to be passed with it. A function that is defined in the pattern dictionary.
It is possible for algorithms to create patterns otherwise be too laborious to create by hand. However, while these patterns can be interesting, they sometimes lack the precision required in a composition. In theory, it is possible to tune a pattern to serve the desired purpose but this may require a profound change in the very core of the algorithm; yet it is probable that tuned pattern may not be as precise as it is desired to be. In step sequencers, this precision is supplied by its step-wise nature where each step is executed individually.
Pattern roll is inspired by the piano-roll in traditional DAWs, is the visual editing tool of Siren. This module is dedicated to record instances of SuperCollider playback and serves as a visual tool to understand relationships between individual triggers. This module supports various edit options to the recorded sequence, for example, adding, deleting, or otherwise modifying notes. This allows specific refinements to the patterns where it could be too difficult to establish the desired effect by modifying the original pattern function. Each note in the timeline consists of various parameters emitted from the SuperCollider (e.g. end, speed, coarse, etc.), and each parameter value can be edited individually. Subsequently, modifications can be played back synchronously with the main sequencer. The horizontal axis denotes quantized time bins, and vertical lists the names of unique samples and notes. The visibility of labeling on the vertical axis can be toggled to reduce clutter. Default sequence length is 8 seconds and each second is quantized into 12 bins. However, both parameters can be edited using the dedicated textboxes on the interface.
Besides publications, an early version of Siren was featured in the crowdfunded book Push Turn Move: Interface Design for Electronic Music along with SuperCollider and TidalCycles. Due to the high interest from the community, I am currently working on the second version of Siren which will be participating in the Algosix event in March 2018.