Hi there! @Hussein in two of his great videos speaks about “line” then “range”. In fact if you compare these two blocks, it’s the same thing, the same result:
myrange = (range 0, 1, step: 0.1, inclusive: true)
10.times do
play 60, release: 0.2, amp: myrange.tick
sleep 0.25
end
myline = (line 0, 1, steps: 10, inclusive: true)
10.times do
play 60, release: 0.2, amp: myline.tick
sleep 0.25
end
I’d like just like to know if you see code contexts where “range” and “line” could bring something different…or perhaps not since, just the word “step/steps” seems to make the only difference.
Thanks for attention
1 Like
Hi
as per the docs, both line and range create a ring, with start and end values, with the subtle difference that range asks you to specify (and therefore have ‘greater control’ over), the size of the step; line also has a start and end value, but the step size is calculated based on the number of divisions within that range.
Speaking strictly as a non-coder/mathematician, the difference can sometimes yield unexpected results, particularly when using either function for control of, for example, pitch.
myrange = (range 0, 1, step: 0.2, inclusive: true)
5.times do
tick
val = myrange.look
puts val
play (val * 10) + 60, release: 0.2
sleep 0.5
end
sleep 2
myline = (line 0, 1, steps: 5, inclusive: true)
5.times do
tick
val = myline.look
puts val
play (val * 10) + 60, release: 0.2
sleep 0.5
end
At least, that’s how I think of the difference between the two, and therefore prefer to use range
PD-Pi
1 Like
ok Brendan @brendanmac thanks for your interesting point of view…
In the help doc, Sam @samaaron writes that “line is similar to range” but without giving details so, in certain context it seems interesting to use and compare the two possibilities
Hi
others may disagree, or have different approaches but, generally, I tend to use range for larger steps - pitch, cutoff etc - and line for finer resolution control of normalised values, say, amplitude.
PD-Pi
1 Like
Subtle difference indeed; but note that Sam uses the phrase “similar to” and not “the same as”:
ln1 = (range 0, 1, step: 0.1, inclusive: true)
ln2 = (line 0, 1, steps: 11, inclusive: true)
live_loop :stepsize do
puts ln1.tick
sleep 1
end
live_loop :divisions, delay: 0.1 do
puts ln2.tick
sleep 1
end
PD-Pi
1 Like