# How to Use the Arpeggiator within your Sample Libraries As of version 1.26.0, **DecentSampler** has a built-in arpeggiator. Unlike the [note sequencer](the-noteSequences-element), which replays a fixed pattern you authored ahead of time, the arpeggiator reacts live to whatever notes are currently held: hold a chord and it generates a stream of notes from that chord — in the order and octave range you choose — for as long as you hold it. This guide walks through arming it, exposing its parameters as knobs, and modulating it with an LFO. ## The `` element Add a single `` element as a direct child of your `` root, alongside ``, ``, etc.: ```xml ... ``` With just this, the arpeggiator is already fully functional — hold a chord and it will play. The full attribute reference, including a worked example for every `arpOrder` value, is in [the <arpeggiator> element](the-arpeggiator-element). ## Binding knobs to the arpeggiator Every `` attribute can be controlled from a UI knob using the `arpeggiator` binding type at `level="instrument"`. Which `translation` you use depends on the kind of parameter: - **Discrete parameters** (`ARP_ENABLED`, `ARP_ORDER`, `ARP_OCTAVE_MODE`) are a fixed list of named states, so they're best driven by a `valueType="multi_state"` knob — each state fires a `translation="fixed_value"` binding that sends the exact attribute value as a string. - **Numeric parameters** (`ARP_OCTAVE_RANGE`, `ARP_STEP_COUNT`, `ARP_GATE_LENGTH`, `ARP_RATE_MULTIPLIER`, `ARP_OVERRIDE_BPM`) are continuous or integer ranges, driven the same way as any other numeric binding (`translation="linear"`, with `valueType="integer"` for the whole-number ones). ### An on/off toggle ```xml ``` ### A discrete order selector Turning this knob cycles through named states, each firing a `fixed_value` binding with the matching `arpOrder` string: ```xml ``` ### Numeric knobs Octave range and step count are whole numbers, so use `valueType="integer"`. Gate length and rate multiplier are continuous: ```xml ``` ## Modulating the arpeggiator with an LFO Because a knob and a modulator reach the arpeggiator through the exact same `` mechanism, you can also target it from an `` (or any other modulator) — for example, to breathe the gate length in and out over time: ```xml ``` A quick note on rate modulation specifically: nudging `ARP_RATE_MULTIPLIER` from a knob or MIDI CC (a mod wheel ramping the arp faster during a performance, say) is common and works well. Continuously modulating it from a fast LFO is a much less common technique — most arpeggiators treat rate as a synced, discrete setting rather than a modulation target, because warping the clock mid-stream can make individual steps land unevenly. It's supported (nothing about the binding is special-cased), but treat it as an experimental, "clock wobble"-style effect rather than a typical use case. ## Conclusion In this guide, we went over how to arm the arpeggiator, how to expose its parameters as knobs — both discrete (multi-state) and numeric — and how to modulate it with an LFO using the same binding mechanism. For the complete attribute reference and a worked example of every order mode, see [the <arpeggiator> element](the-arpeggiator-element).