Hi.
Consider using the ‘at’ command, for partial beats.
Example:
use_bpm 120
live_loop :beat4 do
sleep 4
end
define :hat do
at [0, 2, 3],
[{:amp=>0.3}, {:amp=> 1}, {:amp=>0.5}] do |p|
sample :drum_cymbal_pedal, p
end
end
define :drum do
at [1, rrand_i(2, 3)],
[{:amp=>1}] do |p|
sample [:drum_bass_hard, :drum_bass_soft].choose, p
end
end
live_loop :do_hat do
sync :beat4
hat
sleep 1
end
live_loop :do_drum do
sync :beat4
drum
sleep 1
end
And for a bass guitar… mmm… so many ways.
use_bpm 110
live_loop :bassline1 do
use_synth :prophet
use_synth_defaults release: rrand(0.05, 0.25), amp: rrand(1.5, 2)
notes = scale(:d2, :minor)
play notes.tick, cutoff: rrand(40, 120)
sleep 0.25
end
live_loop :bassline2 do
use_synth :blade
use_synth_defaults release: rrand(0.25, 0.5), amp: rrand(1.5, 2)
if rand(1) > 0.65 then
notes = scale(:d2, :minor) + (ring :r)
else
notes = scale(:d1, :minor).shuffle + (ring :r)
end
play notes.tick, cutoff: rrand(40, 120)
sleep 0.25
end
use_bpm 90
live_loop :bass do
if rand(1) > 0.75
n = (ring :r, :r, :c2, :d3, :r, :f3, :r, :a1, :f2)
else
n = (ring :r, :r, :c2, :d3, :r, :f3, :r, :a1, :f2)
n=n.shuffle
end
use_synth :fm
use_transpose [0,+12].choose
use_synth_defaults release: 0.125 + rrand(0, 0.2), amp: 0.5, pan: rrand(-0.5, 0.5)
play n.look, cutoff: rrand(30, 130)
sleep 0.25
tick
end
Have fun!
Eli…