Private sampler instrument preflight

SFZ Sample Dependency & Keymap Auditor

Check an SFZ instrument before you share, move or release it. Resolve every sample through default_path, #include and #define, compare against the instrument folder, see the key/velocity map with overlaps and gaps, and download a rewrite with portable sample paths—without uploading anything.

Local instrument input

Choose the instrument folder or paste SFZ

No folder selected. Sample paths stay “unchecked” until files are supplied.

Selecting the folder lets the auditor expand #include files, match samples by exact path, detect case mismatches, read audio headers, and list unreferenced audio. Up to 20,000 files; SFZ text up to 8 MiB per file and 16 MiB with includes.

No SFZ file opened.

Choose an instrument folder, open an .sfz file, or load the teaching instrument.

SFZ text, file names, sizes, audio headers and reports stay in this browser tab. ToolQuill does not upload samples, instruments or folder listings.

What this SFZ auditor checks

SFZ instruments are plain text, but a single wrong letter in a sample path silently mutes a key range. This auditor tokenizes the instrument the way common players do—headers, opcode=value pairs whose values may contain spaces, // and block comments, #define variables and textual #include files—then applies <global> → <master> → <group> → <region> inheritance and the active <control> default_path, note_offset and octave_offset. Every region gets an effective sample, key range, pitch center, velocity range, trigger and condition set with file and line provenance.

Missing, miscased and moved samples

Sample paths resolve relative to the top-level .sfz file, even inside included files. With a selected folder, each reference is classified as found, case mismatch (loads on Windows and default macOS volumes, fails on Linux), moved (only a same-name file elsewhere matches), ambiguous, or missing. Absolute paths such as C:\Samples\… or /Users/… are flagged as nonportable, paths that climb above the instrument folder are warned about because archives omit them, and unreferenced audio in the folder is listed so you can prune or restore it.

Reading the key / velocity map

Note names follow the SFZ convention where c4 is MIDI 60. Gaps are reported per keyswitch context between the lowest and highest mapped key, so an intentionally unmapped region outside the instrument’s range is not noise. Overlaps consider trigger class, sw_last/sw_down/sw_previous, seq_position, lorand/hirand and locc/hicc ranges, and a round-robin check reports missing seq_position steps that would play silence.

Validation boundary

This is a read-only preflight, not an SFZ player. Players differ in supported opcodes, default values, file formats and edge-case parsing. The auditor does not play audio, decode sample data, evaluate crossfade curves, amplitude envelopes, filters, polyphony groups, CC-triggered (on_locc) regions or scripts, and it applies only documented common behavior for the listed constructs. Header reads describe containers; they do not prove a file decodes cleanly. Test the instrument in each target player—such as sfizz, ARIA/Sforzando or your DAW sampler—after fixing findings.

Frequently asked questions

Why does an SFZ sample load on Windows but not on Linux?

Windows and default macOS volumes ignore letter case, so sample=Piano.wav finds piano.wav. Linux and case-sensitive volumes do not. The auditor marks these as case mismatches, and the rewrite uses the exact case of the selected file.

Are overlapping SFZ regions always a mistake?

No. Layers, round robins and crossfades overlap on purpose. The auditor separates identical duplicates and one-key or one-velocity boundary overlaps—usually accidental—from broader layers that need human review.

Does the auditor upload my samples?

No. Text, file names and audio headers are read in your browser. Only small header and trailing-chunk slices of located samples are read to report format, rate, bit depth, channels, length and WAV loop points.

Why are my samples “unchecked”?

No folder or files were selected. A web page cannot search your disk on its own; choose the instrument folder so paths can be compared.

Authoritative references

The community SFZ format documentation describes headers, opcodes, sample path rules, default_path and the header hierarchy, including #include and #define. The open-source sfizz player documents its implementation status for individual opcodes.

Browse music-production tools · Audit BWF/RF64 delivery files