I may be missing your point, but I think the best bet is to call your fx outside the loop, and then call a control inside of it.
Time your loop or use x.times do with a “control [cutoff]” at the beginning or end. So for yours, have it as
with_fx :rlpf, cutoff: get[:t], cutoff_slide: 8 do |lpf|
live_loop :drums1 do
control lpf, cutoff: get[:t]
3.times do
sample :loop_amen, beat_stretch: 4
sleep 4
end
end
end
or maybe even…
with_fx :rlpf, cutoff: get[:t], cutoff_slide: 8 do |lpf|
live_loop :drums1 do
sample :loop_amen, beat_stretch: 4
sleep 2
control lpf, cutoff: get[:t]
sleep 2
2.times do
sample :loop_amen, beat_stretch: 4
sleep 4
end
end
end
here’s something I made to tie it all together, based on one of Mr Bomb’s tutorials and your q. I like wacky sounds but this works well and you can make it more organized (pffff) on your own if you’re into that sort of thing.
#varz
n=knit(:e1,8, :gs1,4, :a1,4)
live_loop :lvlset do
clvl = [40,50,60,70, 90, 100].choose
set :c, clvl
puts clvl
sleep 4
end
#steady drums
live_loop :bdwon do
sample :bd_tek
sleep knit(0.5,2, 1,3).tick
end
live_loop :beedeetoo do
sample :bd_haus, cutoff: 95
sleep knit(1,2, 0.75,1, 0.25,5).tick
end
#movers, shakers
with_fx :reverb do
with_fx :rlpf do |f|
with_fx :eq, high: -0.75 do
live_loop :octobass do
6.times do
play ring(:e1, :gs1, :a1).look, sustain: 2, pan: -1
4.times do
use_synth :chipbass
play octs(n.tick,3).choose, pan: [1,-1].look
sleep 0.25 end
end
control f, cutoff: get[:c], cutoff_slide: 5
cue :dingy
end end
end end
with_fx :distortion do |d|
with_fx :rhpf do |hpf|
#maybe add echo/pingpong
live_loop :dingy do
wait :octobass
9.times do
use_synth knit(:pretty_bell,33, :dull_bell,14).tick
control d, distort: dice(9)*0.1, distort_slide: 0.5
play [:e4,:cs3].choose, amp: 0.2, pan: [-1,1].look
density 1+look%4 do
play octs(:cs1,5).pick(2)
sleep 0.2
play octs(n.look,3).pick(3)
sleep [0.3,0.45,0.8].choose end
end
sleep 4
control hpf, cutoff: get[:c]+dice(30), cutoff_slide: 6
end
end end
I came back to this a few times to make edits, & had included another thing I was working on as an example. I’ll remove the explanation because this got long and all, haha.
old post
here’s a chunk of something I’ve been working on:
with_fx :bitcrusher do |b|
with_fx :flanger do
with_fx :slicer, mix: 0 do |s|
with_fx :eq, mid: 0.2 do
live_loop :ch do
dg = knit(:i,4, :vi,4, :ii,4, :v,4)
4.times do # full cycle thru degreez = 16*0.5 = 8 beets
4.times do
use_random_seed 420
play chord_degree(
dg.tick, :db4,:major,4, invert: [0,dice(3),0].look)
sleep 0.5
control s, mix: [1,0].choose,
phase_delay: [0.25,0.1].choose, phase: 0.05*dice
end
end
end
end end end end
with_fx :eq, low: 0.15 do
with_fx :slicer, wave: 3 do |sl|
with_fx :gverb, mix: 0.3 do |g|
use_synth :fm
use_synth_defaults sustain: 0.1, decay: 0.4, release: 0.1
control g, ref_level: 0.1, tail_level: 0.75, mix: 0.2
live_loop :bass do
4.times do
control sl, mix: [0,0.5,0].look, amp_min: halves(0.25,5).look,
phase: choose([0.75,[0.25, 0.1, rrand(0.1,0.5)].look]),
phase_slide: 1, invert_wave: 0
dg = ring(:i, :vi, :ii, :v)
density [1,2,1].tick do
play_pattern_timed chord_degree(dg.look, :db2, :major, 4), 0.5 end
end
end
end end end
with_fx :bitcrusher, bits: 8, sample_rate: 25000 do
with_fx :rlpf, res: 0.9 do |f|
with_fx :slicer, wave: 0, phase: 0.125 do |sl|
live_loop :str do
use_synth :blade
# sleep 24
4.times do
control f, cutoff_slide: 7,
cutoff: [100, dice(20*5), 30+dice(90)].look
control sl, mix: 0, wave: range(0,3,1).look
n= play :db, sustain: 8, decay: [1,1,1,18].look, attack: 0.2
use_synth_defaults vibrato_rate: [6,3].look,
vibrato_rate_slide: 2, vibrato_depth: 0.22
n
3.times do
sleep 1.75
control sl, mix: [0,1,rrand(0,1)].look,
phase: [0.25,0.1 * dice].look
control n, note: [:bb, :eb, :ab].tick,
note_slide: [0.25,0.5].look,
pan: rrand(-1,1, step: 0.5), pan_slide: 0.5
sleep 0.25
use_transpose knit(0,4, -12,4, -24,2).look
end
sleep 2
end end
end end end