is it possible to slide the rate of a sample during a live loop?
would it be possibnle to implement an fx which changes the rate, that would be dope
You will notice that the documentation does not show the
rate: opt as being slidable, so no, it has no corresponding
_slide opt. There was an attempt to build in such a thing early on in Sonic Pi’s development, but there seemed to be issues with unwanted sound artefacts when sliding the rate.
It is possible there is an implementation of some sort that may work, somehow… but exploring for such a solution has not been a high priority for us. It would be awesome to be able to slide the rate without unwanted side effects though, agreed!
maybe with a ramp similar to this? i will investigate
also i saw the beat_stretch has a slide option but i can´t figure out, how to change the sample indipendently, without adding sleep tiime to the live loop and the rate/beat_stretch needs to be live adjusable.
kick_volume = (line 0, 1.0, inclusive: true, steps: 10).ramp live_loop :kick do sample :bd_tek, amp: kick_volume.tick sleep 1 end
Sure, you can indeed simulate a slide to some degree that way
I need a way to live slide control the rate/beat_stretch of a sample, without changing the live loops sleep time where the sample is in.
(If the solution works well i would really pay up to 100 bucks for the effort)
set_mixer_control! lpf_slide: 5, lpf: 120, amp: 5 live_loop :metronom do sleep 1 end with_fx :slicer, phase_slide: 0.125, phase: 0.125, pulse_width: 0.5, pulse_width_slide: 0.125, mix: 1 do |slice| with_fx :pitch_shift, pitch: 1, pitch_slide: 2 do |pit| with_fx :tanh, krunch: 0.1, krunch_slide: 3 do |kek| live_loop :löl, sync: :metronom do if tick(:firsttime) == 0 then set :slice, slice set :pit, pit set :kek, kek end #b = a + 0.1 # a + 0.1 slice length #b = a + (ring 0.1, 0.2, 0.3).choose # a + random slice length #set :rate_r, (ring 1, 0.9, 0.8, 0.7, 0.6, 0.5, 0.6, 0.7, 0.8, 0.9).tick tick # - only 1 tick per live_loop possible, so .look at rings a = (ring 0 , 0, 0 , 0).look #sequencer b = (ring 1, 1, 1, 1).look sample :loop_amen, start: a, finish: b, rate: 1 sleep sample_duration :loop_amen, start: a, finish: b end end end end live_loop :kek1, sync: :löl do # - :Kek1 starts with :löl does not sync again , follows its own timing # sync :löl # - :kek stays in sync with : lol all the time sleep 3 control get[:kek], krunch: 15, mix: 0 sleep 3 control get[:kek], krunch: 1, mix: 0 sleep 3 control get[:kek], krunch: 15, mix: 0 end live_loop :slice1, sync: :löl do sync :löl slice = get[:slice] sleep 2 control slice, phase: 0.125, pulse_width: 0.5, mix: 1, smooth: 0.2, mix: 0 sleep 2 control slice, phase: 0.125, pulse_width: 0.5, mix: 1, smooth: 0.2, mix: 0 sleep 2 control slice, phase: 0.125, pulse_width: 0.5, mix: 1, smooth: 0.2, mix: 0 sleep 2 end live_loop :pit1, sync: :löl do #sync :löl pit = get[:pit] sleep 2 control pit, pitch: 1, mix: 0 sleep 2 control pit, pitch: -5, mix: 0 sleep 2 control pit, pitch: 5, mix: 0 sleep 2 end
beat_stretch: falls under the same category as
rate: and does not allow sliding. I’m not sure that what you saw was a slide opt for it - can you point me to where you were looking?
well i think i mistake that one… i thought i read about it, but it doesn´t exist, i already tried ^^
I think the solution depends on whether you need a long slide or just a quick jump. You could imitate a quick jump with a amp slide on two distinct rates. If you need a long slide and without audible artifacts, then it probably has to be done in a SC UGen to make it fast enough, since it would involve resampling.
edit or maybe with the FFT UGens but I don’t see them exposed in SP
That sounds interesting. Sam has already said that he’d be interested if there was a way to make rate slidable for the
sample command without having weird clicking noises at the end of the playback. Would love to chat more if you have a reasonable idea of the general approach (I can open a separate discussion)
Well i don´t quite understand that´s why i would pay for the solution^^ honestly i need a quick and a long slide
From what I can remember from when I was working on the synths, sliding the sample wasn’t something that could be achieved whilst giving the ability to play sub sections of the sample at various (constant) rates. I think the best solution for sliding the rate dynamically is an alternative sample playing synth designed specifically to enable sliding.
A solution to this would therefore likely require the design and implementation of a new SuperCollider synth, its corresponding synth metadata (arg checkers and docs) in addition to some new syntax to trigger it in a similar way to how
sample currently works.
sample_synth :slidable, "/path/to/audio.wav"
This is definitely not something that I’ll be able to look into in the short term (at least until v3.3 is out) but I’d be happy to see others pick this up if they have the time and energy.
Thanks for the reply, well then i put that to rest for now