256a HW3 Sequencer: Beluga

Beluga is a grid-based circuit sequencer, where a set of simple (but highly configurable) symbolic primitives represent the basic atomic building blocks of a piece, but ultimately give rise to complex interactions and rhythmic structures across the grid. One could imagine the addition of a wide array of blocks, but the design goal - with the time frame for development in mind - became to give the basic tools I felt I needed to construct a compelling performance for this final submission. The aesthetic inspiration for the design was old-school terminal graphics, with the "digital" spin informing the binary pattern for signal flow.

Beluga Screenshot 1 Beluga Screenshot 2 Beluga Screenshot 3

Performance

Instructions

The arrow keys are used to navigate across the grid. The active square is shown on the text display as well as by the white border on the grid.

The WASD and +/- keys are used to adjust the parameters as follows:

The numeric keys are used to place the various symbols. The symbols (and associated parameters) currently available are:

  1. Play: Play a sound
  2. Parameter A: Sound Type (0: Kick, 1: Snare, 2: Hat, 3: Crash, 4: Tom, 5: SqrOsc, 6: SinOsc, 7: Rhodes)
    Parameter B: Freq (Midi notes in the C Major scale )
    Gain: active
  3. Bang: Start a signal
  4. Integrator: Divide a signal
  5. Parameter A: Count until next signal (Not adjustable)
    Parameter B: Starting Count
  6. Juncture: Split a signal (Right & Down)
  7. Wall: Stop Signals
  8. Random: Bernoulli pass through
  9. Parameter A: x / 10 chance of passing
  10. Qbang: Bernoulli start
  11. Parameter A: x / 10 of generating

Downloads

Download OS X Build Download Unity Package

Post Script

The primary inspiration for my sequencer was Rek and Devine's Orca programming language. In comparison to their system, I wanted to provide a slightly reduced set of building blocks to lower the floor for the sequencer. I also strove to communicate more in an explicit, graphical language rather than the abstract alphanumerics of the original. I really enjoyed tinkering and iterating on this system over the past few weeks and exploring the potential sounds it can lead to. The only real difficulty I ran into was honestly just getting started and attempting to conceptualize the data structures and control flow needed on the Chuck and Unity sides to orchestrate the design. As always - many thanks to Kunwoo for helping me hurdle many obstacles along the way :)

Milestone #2

This milestone feels like a huge step for my sequencer! I've figured out the main signal flow between Unity and Chuck, so any future development will be able to aim towards additional features (and fixing a few lingering bugs - namely the integrator and polyphony). I only implemented what I considered to be the "barebones" glyphs for this milestone, so adding more ways to modify the signal flow is one of my top priorities alongside adding parameterizations to the existing glyphs for extra flexibility. This homework has been a lot of fun so far - especially getting to draw the pixel art for the glyphs - and I'm very excited to see where it goes from here

Progress Update #1

The intrigue of Chunity grows with every passing homework assignment! I really enjoyed going through the Chickenser tutorial and learning how to build strong-timed, audio-driven applications using ChucK and Unity. I find myself continually awestruck as I learn more of what is possible in Chunity, with the constant sense of new possibilities opening themselves up to me each time I learn something new.

As a reasonably well-experienced electronic music producer, I have come across a lot of different sequencers in my creative work. I personally own two: the Octatrack, which is hard to summarize but is essentially a parameter-locking sequencer, and the Deluge, which is a piano-roll type sequencer. However, I am very interested in the kinds of esoteric sequencers enabled by computers - the can exist in their own idiosyncracies because they are not marketed as general-purpose software. These kinds of sequencers run the gamut from probability-based, to Cartesian and Euclidean, cellular automata, chaos theory, and any other hair-brained scheme one can dream up to generate patterns. For this project, I think I'm mostly interested in building something on the less-general-purpose, more-zany side of sequencers.

Design Ideas

Idea 1: Parameter Locking Sequencer

My first idea was to build a parameter-locking sequencer like the Octatrack. In this sequencer, you add tracks of different types and set their base parameter values. The individual steps can be toggled on or off, and each individual step can "lock" a parameter value that overrides the base value, leading to new variations.

Parameter locking sequencer sketch

Idea 1: Fugue Sequencer

A fugue is a classical composition technique in which a single voice is introduced and then accompanied by variations on that voice, like playing it slower or faster, up or down the scale, or even backwards. My next sequencer idea was inspired by this composition technique, and would enable you to define a base pattern and then add and mix voices of different variations.

Fugue sequencer sketch

Idea 3: Grid-based Automata Sequencer

My final idea, and the one I'm currently most interested in developing, is to build a grid-based sequencer system inspired by cellular automata in which glyph-based primitives with predefined behaviors are placed on the grid, and the resulting sequence is an emergent property of their interactions.

Grid-based sequencer sketch