[…]faintly you came tapping, tapping at my chamber door - v1.1/2.0
A touch-based sequencer for crow and landscape.fm’s allflesh (or similar)
A tactile interface for an interfaceless computer. A sequencer that does nothing to protect you from your own terrible ideas, lack of fine motor control?
Use the touch-plates to tap out a sequence, erase part of it, play some more, adjust the speed, derive rhythmic counterpoints.
I’m daydreaming about NOON and made something that is sort-of-similar to a part of the pulsar 23, although that wasn’t really the main point. It has a free-running loop that you can fill with gates using the touch-pads and it outputs a ramp in time. You can change the speed or go with what you get on startup.
Changelog
20 08 2022: Improved responsiveness at low speeds by reading to and from the sequence outside the clock-function at a higher rate.
22 08 2022: A two-channel version exists using W/del to set speed, see post #5 for details. I’m keeping v1.1 here since it works with just the crow.
Requirements
Crow, allflesh by landscape.fm or something similar that lets you patch by touch.
Documentation
Setup consists of inserting the allflesh in input 2 (and outputs 1-2 since you are already doing one) while the system is off, and not touching the pads while powering on. This lets crow configure the input to read an approximate 0 volts while idle and I’m guessing this value is not the same for all systems.
Inputs:
- Set tempo takes -5 to +5 volts, if unpatched tempo is random each time you power on
- Touchplate. High voltages add gates to pattern, low voltages remove them.
Adjacent gates are continuous.
Outputs:
- Touchplate. Constant +5 volts
- Touchplate. Constant -5 volts
- Sequence of 10v gates
- Ramp of stepped voltages from -5 at start to +5 volts at the end of the sequence
Partial touches, depending you how badly you conduct electricity, may produce weird results if they waver across the threshold.
The constant voltages can be touch-patched elsewhere as well, and the stepped ramp probably does interesting things when feed into comparators and logicked against the sequence and some LFOs.
Download
v1.1
--- [...]faintly you came tapping, tapping at my chamber door 1.0 //////// Imminent gloom
-- A touch-based sequencer for crow and landscape.fm's allflesh (and noon)
-- On startup crow looks at the voltage coming in through input 2 to find the
-- current zero. For this to make sense, the input must be connected and not
-- touched when turning the case on.
-- Input 1: Offset, -5 to 5 volts to set BPM, randomly defaults to 100-140 on startup
-- Input 2: Touchpad, voltages here creates the pattern
-- Output 1: Touchpad, +5v, add gates to pattern
-- Output 2: Touchpad, -5v, remove gates
-- Output 3: This is where the sequence of gates emerges
-- Output 4: A ramp corresponding to the sequence length
v_cal = 0.0
threshold = 0.1
s = {}
length = 24*4 -- 4 beats @ 24ppqn
step = 0
function init()
v_cal = input[2].volts -- get approximate zero for input 2
for n = 1,length do s[n] = 0.0 end
input[1].mode('stream', 0.01)
input[2].mode('stream', 0.001)
output[1].volts = 5
output[2].volts = -5
clock.tempo = 80 + math.random(0, 60) -- starts at a different speed each time
clock.run(clockwork)
end
function clockwork()
while true do
clock.sync(1/4/24)
step = step + 1
if step > length then step = 0 end
output[4].volts = (10 / length * step) - 5
end
end
input[1].stream = function()
clock.tempo = math.max((input[1].volts + 5) * 20, 1) -- +/-5v to 1-200 bpm, must never be 0
end
input[2].stream = function() -- this lets inputs happen anytime and not just as the clock ticks
if input[2].volts - v_cal > threshold then s[step] = 10.0 end
if input[2].volts - v_cal < 0 - threshold then s[step] = 0.0 end
output[3].volts = s[step]
end