Skip to content

New Note offset parameter #102

@emuell

Description

@emuell

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 offset parameter to the rust Note representation
  • add offset functions to Lua API note and sequence function and table constructors
  • add o attribute to the Lua API note strings: note("c5 o0.1")
  • add o attribute 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions