Hi all
What are your favorite fx combo in Sonic Pi?
Kind regards
Relaxnow
Hi all
What are your favorite fx combo in Sonic Pi?
Kind regards
Relaxnow
Hi
disto and flanger
live_loop :melo do
notes = (scale :gb3 ,:aeolian ,num_octaves:1 ).shuffle
with_fx :distortion ,distort:0.9 ,mix:1 do
with_fx :flanger ,feedback:0,mix:1 do
with_fx :krush ,cutoff:130 ,gain:rrand(1,3000),mix:1 do
n = synth:piano,attack:2,note:notes.tick
sleep 0.425
end
end
end
end
and you?
Hi Baya
I’m just starting to explore fx
Right now it’s something like this
chooseFxRack = 3 or 4 in the code below
I also think flanger with feedback are fun to explore
Kind regards
Relaxnow
By the way, as a newbie I’m wondering
A) Why do I need to stop/start the code to get the fx chain below to take effect? Answer: It’s a thread
B) What are a better way of doing this, so I can change the current fx in the thread? Just found " 7.2 - Controlling FX" section Sonic Pi - Tutorial I’m gonna read up on that. As I understand it now, I need to control the fx effects from inside the live_loop.
# 220902 0023 bitcrusher saw bass divide by 17 (not done)
# 220902 0023 saved
use_bpm 200
live_loop :time, delay: 0.01 do
sleep 1
end
# --- fx mixer --- start
chooseFxRack = 1 # stop/start to take fx effect # change here
#
# Idea: Turn on/off fx chain - not done yet
#
# 0)
# 1) ixi_techno place 1 + flanger heavy
# 2) + distort by moving ixi_techno to place 2
# 3) bitchrusher 0.8
# 4) bitchrusher 1.2 + ixi_techno (a bit much ^^)
case chooseFxRack
when 0
my_ixi_1 = 0
my_ixi_2 = 0
my_bit8 = 0
my_bit12 = 0
when 1
my_ixi_1 = 1
my_ixi_2 = 0
my_bit8 = 0
my_bit12 = 0
when 2
my_ixi_1 = 0
my_ixi_2 = 1
my_bit8 = 0
my_bit12 = 0
when 3
my_ixi_1 = 0
my_ixi_2 = 0
my_bit8 = 1
my_bit12 = 0
when 4
my_ixi_1 = 1
my_ixi_2 = 0
my_bit8 = 0
my_bit12 = 1
end
# --- fx mixer --- end
with_fx :level, amp: 0.7 do
with_fx :bitcrusher, bits: 1.2, mix: my_bit12 do
with_fx :ixi_techno, mix: 0.8, phase_offset: 0.2, mix: my_ixi_1 do # 1) Place 1 or 2
with_fx :flanger, depth: 0.6, wave: 2 do
with_fx :distortion, distort: 0.99 do
with_fx :bitcrusher, bits: 0.8, mix: my_bit8 do
with_fx :ixi_techno, mix: 0.8, phase_offset: 0.2, mix: my_ixi_2 do # 2) Place 1 or 2
notesA =:c2 # :c2 :f2 :g2 :1
diff = 1 # 1/-2 1/3 -2 3
### notesB =:cs2 #+5-12+4 # Not used anymore
live_loop :bass1, sync: :time do
#stop
use_synth :saw
3.times do
10.times do
play notesA, release: rrand(0.15,0.75), cutoff: rrand(70,110), pan: 0.5 if spread(3,5).tick
sleep 0.5
end
7.times do
play notesA+diff, release: rrand(0.15,0.75), cutoff: rrand(70,110), pan: 0.5 if spread(5,7).tick
sleep 0.5
end
end
#sleep 1
end
live_loop :bass2, sync: :time do
#stop
use_synth :saw
3.times do
10.times do
play notesA+12+12, release: rrand(0.15,0.75), cutoff: rrand(70,110), pan: -0.5 if spread(4,5).tick
sleep 0.5
end
7.times do
play notesA+diff+12+12, release: rrand(0.15,0.75), cutoff: rrand(70,110), pan: -0.5 if spread(4,7).tick
sleep 0.5
end
end
#sleep 1
end
end # end :bitcrusher 0.8
end # end :bitcrusher 1.2
end # end :flanger
end # end :ixi1
end # end :ixi2
end # end :distortion
end # end :level
live_loop :kick1, sync: :time do
#stop
sample 25, cutoff: rrand(70,90), amp: 4
sleep 2
sample 25, cutoff: rrand(70,90), amp: 4
# sample 133, cutoff: rrand(70,90), amp: 4, rate: 2
sleep 2
end
live_loop :kick2, sync: :time do
stop
3.times do
sample 25, cutoff: rrand(100,110), amp: 3
sleep 0.5
end
sleep 5
sleep 0.5*3
end
live_loop :kick2, sync: :time do
5.times do
sample 25, cutoff: rrand(100,110), amp: 3 if spread(3,5).tick
sleep 0.5
end
sleep 0.5*10
#sleep 0.5*3
end
How to control fx effect in Sonic Pi from inside a live_loop with “control”
# 220904 2249 Learning how to control fx effect from inside a live_loop with control
# YT https://youtu.be/iInSVo0JlTY
# https://in-thread.sonic-pi.net/t/what-are-your-favorite-fx-combo-in-sonic-pi/7043/3
# "7.2 - Controlling FX"
# https://sonic-pi.net/tutorial.html#section-7-2
use_bpm 120
live_loop :time, delay: 0.01 do
sleep 1
end
with_fx :level, amp: 4 do
with_fx :distortion do |dist|
with_fx :flanger do |flan|
with_fx :bitcrusher do |bitc|
with_fx :reverb do |reve|
live_loop :synth1, sync: :time do
#stop
use_synth :saw
tick
#Song structure
PartA = 32
PartB = 16
play knit(:c2,PartA, :cs2,PartB, :c2,PartB).look,
release: 0.25 if spread(7,16).look
sleep 0.25
### fx mixer ###
## distortion
puts d = range(0,1, step: 0.025).mirror.look
control dist, distort: d
## flanger feedback
puts d = rrand(0.1,0.7)
control flan, feedback: d
## bitcrusher
puts d = knit(0.1,16, 1,2).look
control bitc, bits: d
## controlling reverb
puts d = knit(0,32, 0.8,4).look
control reve, room: d
# starting with 0 room and mixing room in later,
# so it doesnt get to messy
control reve, mix: knit(0,32, 0.3, 16).look
end
end #end :reverb
end #end :flanger
end #end :distotion
end #end :bitcrusher
live_loop :kick do
9.times do
sample :bd_haus, cutoff: 85
sleep 1
end
sleep 1*7
end
end #end :level
Exploring controlling fx inside live_loop in drum seq’s
Run code with
my_fx = 0 (no reverb since mix = 0)
change my_fx=1
Run code
Trouble: No effect on sound.
Stop/run code. Now it’s with effect. How do I get code to change effect with no stopping?
# 220906 0525 drum seq created with split on amp (nice fx)
# Jumping off point https://in-thread.sonic-pi.net/t/can-someone-build-an-efficient-drum-machine/775/15?u=relaxnow
# I have add'ed fx effects
use_bpm 120
def beats(pat)
pat.delete(' ').split('').map(&:to_i).ring
end
patt = {
:bd_klub => "9--5 --5- ---- -3-- 9--- ---- 9--- ----",
:drum_snare_soft => "---- ---3 9--- ---- ---- ---- --33 9---",
:perc_snap2 => "9--- --11 11-- ---- 5--- 5-11 11-- 9---",
:elec_flip => "--5- ---- --5- --5- --5- ---- --5- --5-",
# :bd_boom => "9-3--"
}
with_fx :level, amp: 4 do
with_fx :distortion do |distortion|
with_fx :bitcrusher do |bitcrusher|
with_fx :reverb do |reverb|
live_loop :main do
tick#(step: [0,1,1,1,1,1,2].choose) # change step of tick randomly for nice effect
patt.each{ |key, val| sample key, amp: beats(val).look / 10.0 }
sleep 0.25
my_fx = 0 # Manual pick fx pattern # change here
# # 0 = No effect since mix = 0
# # 1 = rrand()
# # 2 = range()
#my_fx = rrand_i(0,2) # Auto pick fx pattern # change here
case my_fx
when 0
mix = 0 # No effect since mix = 0
r1 = 0.5
r2 = 0.5
r3 = 1
when 1
mix = 0.5
r1 = rrand(0.1,0.9)
r2 = 0.9#rrand(0.1,0.9)
r3 = 0.5
when 2
mix = 0.5
puts r1 = range(0.1,0.9, step: 0.01).tick(:r1)
puts r2 = range(0.9,0.1, step: -0.05).tick(:r1)
r3 = 0.5
end
control distortion, mix: mix
control distortion, distort: r1#, mix: mix
control bitcrusher, mix: mix
control bitcrusher, bits: r2#, mix: mix
control reverb, mix: mix
control reverb, room: r3#, mix: mix
end
end
end
end
end