in popular music these days, you’ll often hear something that’s referred to as “side chain compression”. specifically, on the kick. the other parts of the mix are ducked out to make room for a big boomy bass drum. there’s probably a way to code this into an actual compressor but I’ve been using a slicer with an inverted saw wave to get the same kind of effect.
check out this example:
use_bpm 88
with_fx :reverb, mix: 0.32 do
live_loop :kick do
sample :bd_haus
sleep 1
end
live_loop :punch do
sleep 1
sample :sn_dolf, amp: 0.5, beat_stretch: 0.8
sleep 1
end
with_fx :slicer, phase: 1, wave: 0, invert_wave: 1, smooth: 0.3 do |s|
live_loop :block do
sleep 0.50
sample :drum_cymbal_soft, amp: 0.5, beat_stretch: 1.5
end
live_loop :base do
use_synth :square
play :e1, release: 0.8, cutoff: 50, attack: 0.5, amp: 2
sleep 1
end
live_loop :base2 do
use_synth :square
play :e3, release: 0.8, cutoff: 130, attack: 0.6, amp: rand(0.5)
sleep 1
end
la = :e2
live_loop :noiz do
use_synth :blade
n = play la, release: 0.12, cutoff: 130, attack: 0.12, amp: 0.9, note_slide: 0.06
cur = (chord :e2, :m7, num_octaves: 4).pick
control n, note: cur
sleep 0.25
la = cur
end
with_fx :echo, phase: 0.5, decay: 8, mix: 0.7, phase_slide: 6 do |e|
with_fx :bitcrusher, distort: 0.4, mix: 1, sample_rate: 4000, bits: 8, cutoff: 130 do
live_loop :noiz2 do
use_synth :tb303
n = play (chord :e2, :m7, num_octaves: 4).pick, release: 16, cutoff: 130, attack: 16, amp: 0.4, note_slide: 8
sleep 8
control n, note: (chord :e2, :m7, num_octaves: 4).pick
sleep 8
sleep 16
end
live_loop :harpz do
sleep 1
use_synth :pluck
play :e2, amp: 0.7
in_thread do
6.times do
sleep rand(0.2)
play (chord :e2, :maj, num_octaves: 4).pick, amp: 0.6
end
end
control e, phase: rrand(0.25,1)
sleep 7
end
end
end
end
end
anyone else doing anything similar? got any better methods? one limitation here is that you have to tie the phase into the rhythm of the kick. it’s simple here, being 4/4 beat, but more complicated rhythms require controlling the phase on the fly, which can desync in a strange way if timed incorrectly.