-
Notifications
You must be signed in to change notification settings - Fork 9
Description
We now have a glide note property in dev for an upcoming release. See: #74
Another basic, obvious addition, and contrary to glide, a relatively low hanging fruit, would be an offset command. It should be optional, just like glide, and should allow to set a sample/playback starting offset for the note. Using a relative value makes sense in our context, so that:
o0.0- starts from the beginning of the file/sound (same as not specifying it)o0.5- starts from the middle of the file/sound.
Required changes:
- add new optional
offsetparameter to the rustNoterepresentation - add
offsetfunctions to Lua APInoteandsequencefunction and table constructors - add
oattribute to the Lua API note strings:note("c5 o0.1") - add
oattribute in cycles
Examples:
-- a hi-hat alike pattern with randomized sample offset values
return pattern {
unit = "1/8",
pulse = {0, 1, {1, 1}, 0, 1, {1, 1, 1}},
event = function (context)
if context.pulse_time < 1 then -- in all all sub-divided pulses
return note("c5 v0.5"):offset(math.random() * 0.1)
else
return "c5"
end
end
}Or in cycles:
-- Note ARP cycle with alternating offset values
cycle "[<c4 a3 d3>:o=<0.1 0.2>]*12"It may be interesting to use other units than the relative ones, too. For example, c4 o1# to address cue/slice markers directly, just like in Renoise's S pattern command. This will not be very portable, though, and in Renoise, you can always map slices to notes as workaround.
Other units such as beats, seconds could be interesting as well: c4 o0.5b (0.5 beats), c4 o2s (2.0 seconds). This could be handled as an extra feature, after we got the basic relative value implementation ready. Those also won't be compatible with Renoise's pattern commands.