Subsystem Search

Subsystem

This website documents a set of software tools created by Simon Holliday.

These are tools for electronic musicians, experimental noisemakers, and people who like to remix data. They take signals from the world - sound from a microphone, radio from an antenna, mathematical algorithms, live data feeds - and turn them into MIDI and audio (musical or otherwise).

Each app works on its own, and each can feed the others. And every app is managed with Subroutine.

Subsequence

A stateful algorithmic MIDI sequencer for Python.

Subsample

A sampler that cuts separate sounds out of a live input or a recording, sorts them by how they sound, and plays them from MIDI.

Substation

An SDR band scanner that detects, demodulates, and records radio transmissions automatically.

Superconductor

A touchscreen control surface for music software.

Subroutine

A self-hosted, agent-native task and decision tracker for people and coding agents working on complex projects.

Supplemental

Python libraries built for the apps on this site, and extended for other developers to use: definitions of the MIDI specification, and of the MIDI messages popular instruments answer to.

For example, Substation scans radio bands and records the transmissions it hears. Subsample can import those recordings into its library, sorted by how they sound, and allow them to be performed as an instrument.

Subsequence plays compositions written in code, whose patterns can follow a step grid, an algorithm such as a Euclidean rhythm or a Markov chain, or a live data feed. It plays out over MIDI to synths, drum machines, DAWs, and to Subsample, and records the composition to a MIDI file for editing later.

Substation and Subsample can each tell Subsequence, over OSC, what they have just heard, so a composition can change while it plays.

Superconductor shows the composition in a browser and allows it to be modified and re-patched, by touch, or with a mouse on a computer.

Subroutine is the task tracker the others are managed with. An agent-native task and decision tracker for people and coding agents working on complex projects such as those documented here. It can also tell Subsequence (or any OSC-enabled app) when work is done, or a milestone closes, so you can actually listen to your work being done.

Subway map

  • audio
  • MIDI
  • OSC and WebSocket
  • radio, files and ideas
  • planned
How the subsystem's apps are wired togetherWhat goes into each app, what comes out of it, and what passes between them. Every link is also written out in words beside the drawing.InputsOutputsIQ samplesover USBwrites WAVor FLACimported whentold over OSCradio channelevents over OSClive audioimportednotes overMIDIwrites each sampleas WAV or FLACcapture eventsover OSCaudiopatternsread bypatternsused asgeneratorsnotes, CCand clockover MIDInotes overMIDInotes and clockover MIDInotes overvirtual MIDIrecords orrenderstouch in a browsershows and controlsover WebSockettasks and decisionsworkspace eventsover OSCaudioaudioimport isplannedconfiguringoverWebSocketis plannedconfiguringover WebSocketis plannedSDR receiverand antennaMicrophoneRecordings andsample packsMIDI controllersYour compositionin PythonLive dataMathematicalalgorithmsTouchscreenor mouseMIDI filesYou and youragentsSubstationSDR band scannerdetectionrecordingSubsampleLive sampler andinstrumentcaptureanalysisplayerSubsequenceAlgorithmic MIDI sequencerpatternsharmonysectionsconductorgroovestuningSuperconductorTouchscreen control surfacepagesgridssettingsSubroutineManages the work onevery app heretasksdecisionsagentsRadio recordingsSample libraryDrum machines, synths,and any otherMIDI-enabled instrumentsDAW and softwareinstrumentsMIDI fileAudio output
Hover over a box, or tab to one, to trace its cables.
Every cable in words
  • SDR receiver and antenna to Substation: IQ samples over USB
  • Substation to Radio recordings: writes WAV or FLAC
  • Radio recordings to Subsample: imported when told over OSC
  • Substation to Subsequence: radio channel events over OSC
  • Microphone to Subsample: live audio
  • Recordings and sample packs to Subsample: imported
  • MIDI controllers to Subsample: notes over MIDI
  • Subsample to Sample library: writes each sample as WAV or FLAC
  • Subsample to Subsequence: capture events over OSC
  • Subsample to Audio output: audio
  • Your composition in Python to Subsequence: patterns
  • Live data to Subsequence: read by patterns
  • Mathematical algorithms to Subsequence: used as generators
  • MIDI controllers to Subsequence: notes, CC and clock over MIDI
  • Subsequence to Subsample: notes over MIDI
  • Subsequence to Drum machines, synths, and any other MIDI-enabled instruments: notes and clock over MIDI
  • Subsequence to DAW and software instruments: notes over virtual MIDI
  • Subsequence to MIDI file: records or renders
  • Touchscreen or mouse to Superconductor: touch in a browser
  • Superconductor and Subsequence: shows and controls over WebSocket
  • You and your agents to Subroutine: tasks and decisions
  • Subroutine to Subsequence: workspace events over OSC
  • Drum machines, synths, and any other MIDI-enabled instruments to Audio output: audio
  • DAW and software instruments to Audio output: audio
  • MIDI files to Subsequence: import is planned
  • Superconductor to Substation: configuring over WebSocket is planned
  • Superconductor to Subsample: configuring over WebSocket is planned