Notes on instrument sampling

I've spent much time recording instruments (or random things) and layering notes on MIDI samplers to somehow emulate them, I also use sample-based VSTs and banks for common samplers and feel there's a lot to say about it.

This document gathers advices about instrument sampling, both from the perspective of recording samples, creating libraries and designing samplers. Some of this advice applies to specific tools, mostly Ableton Sampler.

I used a rather imperative tone while I know these rules are subjective, there have a lot of exceptions and I don't always follow them myself. I might also revise or add more of them over time or even change my mind.

Recording

Record close to the source, minimize room coloration.

Prefer sharp (but not aggressive) attacks.

Prefer low velocities over high ones.

Let notes decay naturally. If the recording must be stopped or another sound has to be played, damp the sound intentionally before doing so.

Files

Use stereo samples if you're not sure but prefer mono if there's no obvious reason for the additional channel.

Name sample files explicitely and make sure their lexicographic ordering makes some kind of sense.

Use common sample formats such as WAV.

Variations

Use multiple velocity layers in addition to volume scaling.

Velocity must span from near silence to full intensity. A velocity of 1 should be almost silent.

Transitions from one velocity zone to the next should feel linear (e.g. if there are four velocity zones, a good rule of thumb would be to try a 25% velocity impact).

Lower velocities often deserve more room in the velocity zones.

Use round robin variation with at least three alternatives and no immediate repetition of the same variation.

Round robin variations should sound similar.

Mapping

The start of the sample must align as closely as possible with the intentional onset of the sound.

If a pre-attack is required (for example a buildup in a shaker), keep it consistent across all samples so that delay timing remains predictable, and document that timing to allow for easy compensation on the host side.

When transitioning between layers (e.g. normal to tremolo), prefer constant-power crossfades over binary switching.

If transitions occur during sustained notes, sync phases if possible.

Envelope

Expose every parameter of the envelope to the user.

Decay and release are independent parameters and should not be artificially linked.

Release times should typically be short, representing intentional damping rather than passive decay.

Decays should typically be long.

Allow for clavichord-style envelope times, where very short notes end up having more audible releases than long ones.

Allow for sforzando-style envelopes where the volume goes gradually up again after the decay.

Articulation

Vibrato should emerge progressively and might or might not reset during legato passages.

Ideally find a way to deal with legatos without pitching notes or delaying them too much.

When releasing a note during legato, the system should fall back to a previous note if still sustained.

Velocities should stay unrelated to the concept of ghost notes, legatos or other articulations.

Release layers should be optional, easily disabled and mostly reserved to instruments that have an actual damping mechanism (e.g. piano, but not flute).

If release samples are used, distinguish between different release contexts (individual note release versus global note-off).

Allow optional use of velocity even for instruments that do not originally support it (e.g. pedal organs).

Monophonic articulations should not cause clicks between notes.

Sustain pedal behavior should be supported.

Looping

For sustained sounds, define looping regions. Either use a well-chosen loop point or longer crossfades when no clean loop exists. Set looping points preferably at zero-crossings.

Allow extremely fine control over loop regions, including very small and non-integer sample-wise loop boundaries.

Interface

Prefer MIDI CC, automation, or macros over MIDI note keyswitches.

If keyswitches are used, place them way outside the playable range.

Keep special noises (e.g. tapping an instrument instead of plucking the strings) in a separate sampler or far enough from the main zone.

Don't map a single parameter to a macro if it is already accessible in the UI and unambiguous.

Allow easy shifting of sample start offset.

Allow individual layers within a multi-layer instrument to be muted or removed.

In Ableton use Sampler instead of Simpler for multisample presets.

Do not restrict user access to any parameter unnecessarily.

Pitch

Extend the playable range way beyond the physical limits of the original instrument.

Use concert pitch as the reference rather than transposed notation.

Use the correct octave reference, even when the original instrument uses transposition from sheet music (e.g. guitar).

If the instrument has a sub (e.g. organ), use it as the pitch reference.

Allow pitch zone shifting (using samples recorded above or below the target pitch and transposed accordingly).

A parameter used for pitch shifting should allow extreme ranges, including multiple octaves.

Allow the user to choose (or disable) interpolation methods when doing pitch shifting.

Design

Don't add effects such as reverb or delay in presets.

Optional processing may exist but should be disabled by default.

Set relevant values to even unused parameters (e.g. set a filter to a frequency that makes sense even if disabled by default). Keep those unused values saved in presets.

Most melodic instruments should remain concise and responsive. You should be able to play Donna Lee with them without sounding like garbage.

Do not assume how the user intends to use a tool. Keep samplers open-ended.