44 Birds
Two interacting birds are generated from a Turing-style looped random sequencer. Main controls random/loop behaviour, X shifts bird pitch, Y controls phrase speed, Z selects Natural, Robot, or Reseed mode, and Pulse In 1 can replace the internal clock.
Panel
Controls
Random/ Loop
Centre is unstable; clockwise locks the pattern, anticlockwise locks an inverted double pass
Bird Pitch
Controls pitch with CVIn1 summed in
Tweet Speed
Left is slower phrase timing; right is faster
Robot mode: More likely to produce wild, R2D2-like sounds
Natural mode: Normal two-bird mode
Reseed: Randomises the sequence
Inputs & Outputs
Inputs
Outputs
Inputs
Pitch CV
Adds to the X knob to control bird voice oscillator pitch
Speed CV
Adds to the Y knob to control sequence playback timing
Clock In
Rising-edge clock input; when present, it overrides internal timing
Outputs
Bird 1 Audio
Bird 1 audio voice
Bird 2 Audio
Bird 2 audio voice
Bird 1 Pitch Trace
Held CV trace derived from Bird 1 pitch contour
Bird 2 Pitch Trace
Held CV trace derived from Bird 2 pitch contour
Bird 1 Pulse
Triggers at phrase starts and internal trill/run sub-events for Bird 1
Bird 2 Pulse
Triggers at phrase starts and internal trill/run sub-events for Bird 2
LEDs
Bird 1 Pitch High
Upper pitch indicator for Bird 1
Bird 2 Pitch High
Upper pitch indicator for Bird 2
Bird 1 Pitch Low
Lower/complementary pitch indicator for Bird 1
Bird 2 Pitch Low
Lower/complementary pitch indicator for Bird 2
Bird 1 Pulse Activity
Indicates PulseOut1 activity
Bird 2 Pulse Activity
Indicates PulseOut2 activity
README
Birds
Birds is a birdsong card and sequencer. It is not super accurate but sounds fairly bird-ish, with clock input and two channel CV/pulse sequencer.
Birds was inspired by Hunter Adams' Synthesising Birdsong with the RP2040 - Hunter was a big help during the early stages of designing the Workshop System so I'm very grateful for that.
The control sequencer is based on my Turing Machine random looping sequencer. The Turing Machine shuffles bits, and those bits choose families of calls, rests, short chirps, sweeps, trills and coos. The two outputs are two birds sharing the same small patch of memory. One calls, the other may answer, copy, invert, overlap or ignore it.
Birds was entirely written and compiled by Codex. I haven't looked at one line of the code, but advised it how to fix several basic bugs around floating point (don't use that) and slow routines in the 48k sample loop (don't to that) and loading the program into ram (do that).
Controls
Main knob: lock/change. Centre is unstable. Clockwise locks the pattern. Anticlockwise locks an inverted double pass. Sequences seem to be a fairly arbitrary length.
X knob + CV 1: bird voice oscillator pitch.
Y knob + CV 2: sequence playback time. Left is slow. Right is fast.
Switch middle: normal two-bird mode.
Switch up: wild mode - more likely to sound like R2D2
Switch down: reseed. Randomises the sequence.
Pulse input 1: external clock. Leave it empty for the internal clock.
Audio outputs 1 and 2: bird one and bird two.
CV outputs 1 and 2: pitch traces for bird one and bird two. These are quite low, so crank up the main knob on your oscillator.
Pulse outputs 1 and 2: onset pulses. Trills and runs generate extra pulses inside the phrase.
LEDs 0/2 and 1/3: pitch height for each bird. LEDs 4/5 show pulse output activity.
Audio inputs are unused in version 0.5.0.
Patches
Untested suggestions from the coding robot:
- Patch Pulse Out 1 into Pulse In 1. The first bird clocks the whole card, so the conversation starts to trip over itself. Take Audio Out 2 as the main voice and use CV Out 1 to open a filter.
- Clock Pulse In 1 from a slow divider. Send CV Out 1 and CV Out 2 to two oscillators, not to pitch this time but to wavefolder amount or filter frequency. Keep the audio outputs in the mix, quietly, like the original birds behind the modular ones.
- Put Y under a slow triangle LFO. The same locked pattern becomes territorial at one end and half-asleep at the other.
