Private microtuning file preflight

Scala .scl / .kbm Microtuning Inspector

Validate a scale and optional keyboard mapping, see every interpreted interval and MIDI assignment, calculate anchored frequencies, and audition the result—all locally in your browser.

Local text input

Open or paste tuning files

No SCL file selected.

No KBM supplied; Scala's documented initial mapping will be previewed.

Each text input is limited to 256 KiB. Without a KBM, the preview uses a linear mapping with middle and reference MIDI 60 at 261.6256 Hz. That is a transparent preview assumption, not a claim about your synthesizer.

Load an SCL file or use the teaching pair.

SCL and KBM text, filenames, calculated mappings, and exports stay in this browser tab. ToolQuill does not upload your files or audio.

What the inspector reads

An SCL file contains a one-line description, a pitch count, and one pitch per following data line. A pitch containing a period is interpreted as cents; a slash denotes a ratio; an integer is a ratio over one. The initial 1/1 is implicit. This inspector preserves source spellings, converts ratios to cents, checks declared counts, and reports descending, duplicate, nonpositive, or non-octave periods without assuming they are accidental.

How KBM mapping is interpreted

The seven KBM headers define map size, first and last MIDI notes to retune, the middle note, reference note, reference frequency, and formal octave degree. Mapping entries are scale degrees or x for an unmapped key. A map repeats above and below the middle note; degree offsets may be negative or outside the first scale period. Map size zero is linear, and formal octave zero resolves to the last SCL degree.

Frequency and A440 comparison

Absolute frequencies are anchored to the KBM reference note and frequency, not silently forced to A4 = 440 Hz. The “nearest A440 12-TET” column is only a familiar comparison label. If the reference key is unmapped, the tool withholds frequencies rather than inventing an anchor. Keys outside the declared retuning range remain visible but are not assigned an output frequency.

Validation and listening boundary

This is a bounded inspector, not a synthesizer compatibility test. It does not emulate a particular plug-in's import rules, MIDI Tuning Standard messages, MPE, pitch-bend channels, sample-rate behavior, temperament intent, acoustic beating, or instrument range. Web Audio auditioning uses a simple sine oscillator and can expose obvious pitch relationships, but it cannot prove that another host will map the files identically. Keep the originals and test in the target instrument.

Frequently asked questions

Why does the table include an implicit degree 0?

Scala SCL files omit the starting 1/1 or zero-cent pitch. It is implied, so the inspector displays it explicitly while keeping it separate from the declared count.

Is an x mapping an error?

No. It intentionally leaves that key unmapped. It only prevents absolute frequency calculation when the KBM reference note itself lands on that entry.

Does the last pitch have to be 2/1?

No. The final SCL pitch is the repeating period and can describe a non-octave scale. The inspector labels this for review but still uses it for degree extension.

Format references

The parser follows the official Scala scale-file specification and the Scala keyboard-mapping documentation. The open-source Surge Synth Team tuning library provides an additional implementation reference for SCL and KBM behavior.

Browse music-production tools · Browse audio tools