sequencer

Square-Wave Sequencer

GitHub Link

A sequencer that uses square waves to determine midi note On and note Off events. Programmed in C++ using the Maximilian DSP library, and the Juce framework for the GUI.

Square waves consist of a high and low state, the transition between which is instantaneous. This makes square waves useful for triggering events, in this case Midi note-On and note-Off events.

 

New Project (4)

The video demo shows the triggered MIDI events being routed into Ableton using a virtual midi cable, to play an instrument.

Increasing or decreasing the frequency of the square wave would slow down or speed up the rapidity at which note events are fired, hence we can use the frequency of the square wave to control the tempo.

Stacking several square waves with different frequencies will produce multiple steps at irregular intervals. The sequencer presents a maximum of three square wave oscillators.

The sequencer iterates through a series of seven notes, which can be chosen from the grid. Each time a MIDI event is triggered, the sequencer moves up a note.

The duration of MIDI-on states can be defined via a slider. This means that the lengths of notes are not defined by the duty cycle of the square wave. This avoids abrupt volume drops. In many cases, even if MIDI notes are given a long duration, the DAW instrument itself will shut off the sound if the sustain level is low and the release stage has ended.

Each note may be transposed up or down two octaves. The grid itself can also be transposed to different scales via the drop-down menu.

A smaller rotary allows the user to speed-up and slow-down all three square waves proportionally.


 

For further development -

  1. Implement pulse waves as well as square waves. The high and low state duration of pulse waves are adjustable, so new patterns can be generated.
  2. Sync with DAW time, such that incoming MIDI-on events delivered by the sequencer are quantised by the DAW.