Sample Motion

Sample Motion 2 and Sample Motion 32 are polyphonic instruments that treat position inside a recording as a performed trajectory. Eight motion models range from periodic return motion to alternating Zigzag cuts, one-way playback, a crawling loop window, and non-inverting Round Trip reading. They can remain Continuous, pass through Packets or Motor, or drive a realtime segment-event layer with Freeze, Iterate, Pulser, Doublets, Bounce, and Routed Iterate models.

Live Sample Motion interface. Three Poly voices publish independent N48, N50, and N55 trajectory cursors while the signal-flow scope reports all three moving through Round Trip motion.

Workflow

  1. Insert s3g Sample Motion 2 on a stereo instrument track, or insert s3g Sample Motion 32 on a 32-channel track. Press LOAD SAMPLE, or drop a file on the waveform, to choose a mono or stereo recording.
  2. Route the stereo output, or the selected Sample Motion 32 lanes, to the intended speakers or headphone monitor. For the 32-channel edition, open the Output panel's ROUTING page and choose the active output count, voice width, pair map, and trigger-time assignment order.
  3. Set Start and End to the safe playable range. Place Locus at the center of the material you want to explore, then use Field to set the allowed region around it.
  4. Choose Hover or Mirror for regular return motion, Drunk for seeded random movement, Zigzag for alternating forward/reverse portions, Forward/Reverse for one-way reading, Moving Loop for a stepping window, or Round Trip for non-inverting forward/reverse concatenation.
  5. Leave Rate Basis at Normal for playback-relative speed: 1x moves through source time at the recording's ordinary rate. Choose Hertz only when an absolute trajectory-cycle frequency is more useful.
  6. Use SOUND to select exactly one playback model: Continuous to hear the trajectory directly, Packets for the Inner Rate train, Motor for nested inner/outer pulses, or Freeze, Iterate, Pulser, Doublets, Bounce, or Routed Iterate for segment events.
  7. For an Event sound, set its trigger, rate, repeat structure, pitch/level variation, acceleration, and Cut/Layer behavior. The readout below the controls states where that process gets source positions and how Motion still affects it.
  8. Set Root, Tune, Fine Tune, voice and trigger behavior, then play MIDI. PLAY auditions Root and STOP kills every voice.
  9. Choose STORE PROJECT (the new-instance default), STORE LINK, or STORE EMBED for the source. See the shared Sample Storage policy.

Source Range

Start and End define the complete readable window. Locus is the center of motion and is constrained into that window. Field is the normalized width around Locus; it is clipped at Start and End when it reaches an edge. Drag S, E, and L directly on the waveform. Scroll to zoom around the pointer, Shift-scroll to pan, and double-click empty waveform space to fit the complete source. The shaded band shows the resulting field, and one compositor-driven, note-labelled cursor follows every active voice. Mono sources are duplicated to stereo; stereo sources retain their two numbered lanes.

Source Motion

ModeBehavior
HoverA sinusoidal scan moves smoothly from one Field edge to the other and back at Motion Rate.
MirrorA triangular forward/reverse scan alternates polarity on its return. Join widens short zero-crossing fades around the polarity reversals without attenuating the middle of each traversal.
DrunkA deterministic random walk chooses a new source target inside the Field on every completed traversal. Travel sets maximum step size, Jitter varies the traversal rate, Seed reproduces the same walk, and Join morphs linear moves into eased moves.
ZigzagEach completed portion reverses direction. Travel sets the maximum zig length, Jitter varies both length and speed, Seed reproduces the sequence, and Join eases the splice between endpoints.
ForwardA one-way scan runs from the low Field edge to the high edge. Join crossfades the wrap seam.
ReverseA one-way scan runs from the high Field edge to the low edge. Join crossfades the wrap seam.
Moving LoopA one-way Field scan advances its complete window through Start–End by Step after every wrap.
Round TripA triangular forward/reverse scan uses Mirror's geometry without polarity inversion.

Motion is therefore not always back and forth: Hover, Mirror, and Round Trip are periodic returns, Zigzag deliberately alternates portions, Drunk may choose either direction, and Forward, Reverse, and Moving Loop remain one-way. In the default Normal basis, Speed is a ratio of ordinary source playback. A one-second move at 1x consumes about one second of source time even when Field or source duration changes. Hertz retains direct cycle-rate control.

MIDI pitch multiplies motion speed around Root: a note one octave above Root moves twice as quickly, while Tune and Fine Tune offset every voice. In Poly mode as many as sixteen notes keep independent phases, seeded paths, and output assignments. Mono replaces the current voice. Legato changes note and speed while preserving motion, packet, outer-envelope, amplitude, and output phases.

Continuous, Packets, and Motor

Continuous applies no secondary gate. Packets imposes the Inner Rate pulse train directly; Packet Duty controls the audible portion and Join morphs rectangular cuts toward a Hann contour. Motor places that same train inside a slower outer envelope. Outer Rate sets the slower clock, Symmetry moves its peak, and Shape selects Linear, Rounded, Exponential, or Plateau rise/fall geometry. New Motor notes begin inside an audible packet at the outer peak instead of waiting through a potentially long silent rise.

On Motor's falling side, Hover, Mirror, Round Trip, Drunk, and Zigzag regress through their trajectory. Forward, Reverse, and Moving Loop deliberately remain one-way. Jitter adds repeatable variation to inner timing and to Drunk/Zigzag motion timing.

Join is deliberately context-sensitive: it smooths Mirror polarity transitions, Drunk/Zigzag target interpolation, Forward/Reverse wrap seams, and packet edges at the same time. Low settings retain the most abrupt, cut-and-splice character; high settings favor continuity.

Segment Events

The editor presents the engine as a numbered signal flow: 1 SOURCE FIELD + MOTION feeds one active 2 SOUND model, which then feeds the third Voice/Output stage. A single Sound menu selects Continuous, Packets, Motor, Freeze, Iterate, Pulser, Doublets, Bounce, or Routed Iterate. This matches the DSP: an Event process replaces Direct articulation rather than secretly layering over it. The second panel exposes only controls used by the selected Sound, and the scope repeats the active Path, Source, and Sound stages.

Every Event sound includes a live SOURCE and MOTION relationship readout. Motion always supplies event playback speed and onset direction, and selecting the Turn trigger also makes its trajectory boundaries the event clock. Motion does not always supply event position: Freeze and Bounce lock to Locus; Doublets uses Locus plus Step; Iterate and Routed Iterate follow the live Motion cursor only when Step is zero and otherwise use a Locus-plus-Step sequence; Pulser chooses random positions in the Locus-centered Field, except that Moving Loop carries the complete random-selection Field through Start–End.

The relationship readout classifies each combination as FULL PATH FOLLOW, MOVING FIELD, or POSITION OVERRIDE, and warns when Bounce acceleration or contiguous Doublets grouping requires Clock. Controls unused by the current Path, Sound, or Trigger remain visible for orientation but are dimmed and non-interactive. Travel is active only for Drunk and Zigzag; Source Step is active for Moving Loop, Iterate, Doublets, and Routed Iterate.

Trigger selection also exposes the clock that actually runs the process. Clock uses Event Rate. Packet displays an additional PACKET RATE control connected to Inner Rate. Turn follows Path boundaries. Pulser retains its Event Rate as a packet-duration basis under Packet or Turn; Bounce Start Rate and Accel are disabled outside Clock.

Choosing an Event process from SOUND loads a practical starting recipe and immediately exposes that process's relevant controls; subsequent edits remain independent. Host automation of Segment Model changes the model only and never rewrites other automated parameters.

Selecting any Event sound activates an allocation-free scheduler with four internal segment lanes per MIDI voice. Clock triggers use Event Rate and Time Rand adds seeded interval variation; Packet follows the inner packet clock; Turn follows trajectory boundaries. Cut replaces active lanes at each trigger, while Layer permits overlap. Every lane captures its source range, direction, pitch variation, level variation, envelope, and—in Sample Motion 32—output assignment at onset.

ModelBehavior
FreezeFluidly reiterates the Locus-centered Field with optional pitch and level variation.
IterateRetriggers a selected segment with naturalized timing, pitch, and level variation. Step moves its center through Start–End; Step zero follows the live trajectory.
PulserSelects short, shaped source packets inside the Field. Duty relates pulse duration to Event Rate.
DoubletsFor Clock triggering, plays contiguous groups such as AAABBBCCC: Repeats sets the group count, Segment sets slice length, and Advance moves to the next source position.
BounceRepeats the Locus-centered slice with successively faster starts, per-hit decay, and progressive shortening toward Minimum Length.
Routed IterateUses Iterate's source behavior and assigns each event to a new multichannel destination.

The visible labels change with the selected process: for example, Bounce presents Start Rate, Bounces, Length, Decay, Accel, and Minimum Length, while Pulser presents Rate, Duration, Source Area, pitch/level/time scatter, Shape, and Overlap. Join morphs event edges from rectangular to the selected Shape; Symmetry moves the envelope peak. Pitch Rand is a maximum bipolar semitone scatter. Amp Rand is random reduction for Freeze, Iterate, Pulser, Doublets, and Routed Iterate; Decay is applied repeat by repeat in Bounce.

Editor and Presets

The editor follows the shared Sample-family layout. Its title band provides factory presets plus LOAD and SAVE for complete plug-in state presets. Factory choices cover every trajectory, ordinary Packets, Motor combinations, every segment model, Routed Zigzag, and Routed Iterate. CLEAR removes the source, and file decoding runs away from the interface and audio threads. The Signal Flow scope previews all eight trajectories, identifies the Path → Source → Sound hierarchy, shows packet or event density, overlays the selected envelope, and follows the newest voice's live phase and current destination.

Voices and Triggers

TriggerBehavior
Auto / GateNote-off begins the Release stage. Auto is retained as the Sample-family default vocabulary; for this continuously scanning source it follows Gate behavior.
One ShotNote-off is ignored and the voice continues until Stop, voice stealing, or another explicit kill.
ToggleA repeated note-on alternately starts and releases the matching voice.

Attack and Release range from immediate to two seconds. Velocity blends between fixed level and received note velocity. Out supplies final gain, and a short retirement tail suppresses discontinuities when a voice is stolen or stopped.

Tracker, MIDI, and Automation

Both editions make their controls available to host automation and s3g Tracker; Sample Motion 32 adds its allocator controls, Route On, and Avoid Adjacent. MIDI Receive defaults to Omni and can be restricted to channels 1–16. The selected channel also accepts these direct controls:

CCControl
16 / 17Start / End
18 / 19Locus / Field
20 / 21Motion Rate / Travel
22 / 23Inner Rate / Outer Rate
123Stop all voices

Storage and Recall

PROJECT copies the source into the saved REAPER project's s3g Samples directory, LINK retains its original location, and EMBED stores decoded audio with the project. A source without a reusable file path remains embedded so the project can still recall it. See Sample Storage for the shared policy.

Related source material and inspiration are listed in References.