Scala Scale Auralizer — User Guide
Loads scales from Scala (.scl) files, maps scale degrees to frequencies through an explicit tuning layer, synthesises tones with a separately‑specified spectrum and envelope, and plays the scale in several modes (ascending, descending, ping‑pong, arpeggio, sustained chord, scale against drone, A/B compare). Includes 19 built‑in scales (historical temperaments, just intonation, non‑octave scales) plus support for any external .scl file.
What this does
Scala Scale Auralizer is a complete microtonal scale synthesiser. It reads scales from Scala (.scl) files (the standard format in microtonal music), applies a flexible tuning layer (fundamental, reference degree anchoring, period transposition), synthesises tones with a configurable spectrum (pure sine, harmonic series, odd‑only, bright, dark), shapes each note with an ADSR envelope, and plays the scale in eight different playback modes.
- SCALE – .scl parser: degree list in cents, ratios, period.
- TUNING – cents + fundamental → Hz, with reference degree anchoring and period transposition.
- SPECTRUM – partial recipe (multiples and amplitudes), independent of pitch.
- TIMBRE – ADSR envelope, note duration, gap.
- VOICING – respace degrees across periods (closed, open, compressed, expanded).
- PLAYBACK – sequences notes or builds chords.
Quick start
- Download the Scala scale archive (e.g., from huygens-fokker.org) and place the
.sclfiles in a folder. - In Praat, run the script
Scala_Scale_Auralizer.praat. - Choose a scale:
- Builtin_scale – select from 19 curated scales (12‑TET, Pythagorean, Werckmeister III, Kirnberger III, 1/4‑comma meantone, just intonation, Slendro, Pelog, Partch 43, Bohlen‑Pierce, Carlos Alpha/Beta/Gamma, etc.).
- External_scl_path – paste the full path to any .scl file (overrides built‑in).
- Set tuning parameters: Fundamental_Hz (e.g., 220 Hz for A2), Reference_degree and Reference_Hz (anchor a specific degree to a pitch), Transpose_periods (shift by periods).
- Choose a Playback Mode (ascending, descending, ping‑pong, arpeggio, sustained chord, scale vs drone, A/B compare).
- Select Spectrum (timbre) and Envelope parameters.
- Click OK. The script synthesises the scale and creates a Sound object named
scale_scalename.
Scala (.scl) file format
📄 Format specification
Scala files are plain text with the following structure:
- Description line – name of the scale (e.g., “Werckmeister III”).
- Note count – integer N (number of degrees).
- N interval lines – each line is either:
- Cents – a floating‑point number (e.g., “386.314”).
- Ratio – two integers separated by “/” (e.g., “5/4”).
The Nth interval is the period (usually 2/1 = 1200 cents, but may be other values for non‑octave scales). Lines starting with “!” are comments and are ignored.
Example (12‑TET):
! 12-TET.scl ! 12-TET 12 100 200 300 400 500 600 700 800 900 1000 1100 2/1
The script automatically detects truncated files and warns if fewer degree lines are provided than declared.
Built‑in scales (19)
The script includes 19 curated scales. Most require the corresponding .scl file in the plugin_AudioTools/scl/ folder or a user‑specified archive path.
| Scale | Type | Period (cents) | Description | ||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 12-TET (synthetic) | 。|||||||||||||||||||||||
| Pythagorean 12 | 。 | 。<1200。<12 notes from the cycle of fifths.fi
||||||||||||||||||||||
| Young-Lonnberg guitar | 。|||||||||||||||||||||||
| Werckmeister III | 。|||||||||||||||||||||||
| Kirnberger III | 。|||||||||||||||||||||||
| 1/4‑comma meantone | 。|||||||||||||||||||||||
| Just intonation 12 | 。<5-limit JI。<1200。<12‑note just intonation.fi|||||||||||||||||||||||
| Just intonation 7 | 。<5-limit JI (diatonic) | 。<1200。<7‑note diatonic just scale.fi||||||||||||||||||||||
| Indian 12 | 。|||||||||||||||||||||||
| Slendro | 。<5‑note equal。<1200。|||||||||||||||||||||||
| Alves slendro | 。<5‑note JI。<1200 | 。||||||||||||||||||||||
| Alves pelog | 。<7‑note JI。<1200。|||||||||||||||||||||||
| Harrison 5 | 。|||||||||||||||||||||||
| Harmonical | 。|||||||||||||||||||||||
| Partch 43 | 。。 |
||||||||||||||||||||||
| Bohlen-Pierce | 。 | 。<1901。<13‑note scale, period 3/1.fi
||||||||||||||||||||||
| Carlos Alpha | 。|||||||||||||||||||||||
| Carlos Beta | 。|||||||||||||||||||||||
| Carlos Gamma | 。
External scale files: Paste the full path to any .scl file in External_scl_path. This overrides the built‑in selection.
Tuning layer – mapping degrees to frequencies
freq[degree] = fundamental × 2^((cents[degree] + periodShift) / 1200)where
periodShift = transpose_periods × scale.periodReference degree anchoring (optional):
If
reference_degree > 0 or reference_Hz ≠ fundamental_Hz, the script applies a global shift so that the specified degree plays at the target frequency. This allows you to, for example, set the fifth (degree 7) to 330 Hz while keeping the fundamental free.
Example: Fundamental = 220 Hz (A2), reference_degree = 7 (fifth), reference_Hz = 330 Hz (E3). The script adjusts all frequencies so that the fifth is exactly 330 Hz, and the fundamental becomes whatever it needs to be to satisfy that condition.
Playback modes (8)
| Mode | Description | Output | ||||||
|---|---|---|---|---|---|---|---|---|
| Single tone | 。||||||||
| Ascending scale | 。 | 。|||||||
| Descending scale | 。||||||||
| Ping-pong | 。<0…N then N‑1…0 (no repeat of apex).。||||||||
| Arpeggio | 。||||||||
| Sustained chord | 。||||||||
| Scale against drone | 。||||||||
| A/B compare | 。
For arpeggio and sustained chord modes, the Subset_degrees field (e.g., “1 3 5”) selects which degrees to include. Voicing (closed, open, compressed, expanded) respaces degrees across one or two periods.
Parameters & defaults
Scale selection
| Parameter | Default | Description | |
|---|---|---|---|
| External_scl_path | (empty) | 。||
| Builtin_scale | 12-TET (synthetic) | 。
Tuning
| Parameter | Range | Default | Description | |||||
|---|---|---|---|---|---|---|---|---|
| Fundamental_Hz | 20–5000 | 220 | 。||||||
| Reference_degree | 0–N | 1 | 。||||||
| Reference_Hz | 20–5000 | 220 | 。||||||
| Transpose_periods | -3–3 | 0 | 。||||||
| Parameter | Options | Default | Description | |||||
| Mode | 1–8 | 2 (ascending) | 。||||||
| Subset_degrees | space‑separated list | 1 3 5 | 。||||||
| Second_builtin_for_AB | 12‑TET / Pythagorean / Partch 43 / Bohlen‑Pierce / Carlos Alpha | 12-TET | 。
Voicing
Spectrum (timbre)
Envelope (per note)
Output
| Parameter | Default | Description | |||
|---|---|---|---|---|---|
| Output_gain | 0.7 | 。||||
| Show_visualization | yes | 。||||
| Play_result | yes | 。
Visualization (Praat picture)
When Show_visualization = 1, the script draws a 5‑panel figure:
- Cents distribution – horizontal axis from 0 to period (plus 1200 c reference). Blue vertical ticks show each degree’s cent value. An orange line marks the period. Degree labels are shown (every 4th degree for large scales).
- Frequency bar chart – each degree as a vertical line from the bottom of the panel to its frequency in Hz. Frequency labels are shown for every 3rd degree.
- Output waveform – the synthesised audio (blue).
- Output spectrogram – 0–5 kHz, showing the harmonic content of the synthesised notes.
- Summary panel – mode name, spectrum type, voicing, note duration/gap/attack/release, gain, fundamental/reference/transpose, octave/non‑octave indicator.
FAQ / troubleshooting
The script searches for .scl files in several locations: a user‑configurable path (C:/Users/User/Downloads/scales/scl), the plugin folder (preferencesDirectory$/plugin_AudioTools/scl), and the script’s directory. If your .scl files are elsewhere, either set External_scl_path to the full path, or edit the testDir$ variable in the script to point to your archive folder.
Some .scl files declare a note count N but provide fewer degree lines. The script automatically truncates to the number of lines actually found. This is common in older or hand‑edited Scala files – the scale still works with the available degrees.
Non‑octave scales (Bohlen‑Pierce, Carlos Alpha/Beta/Gamma) have periods other than 1200 cents. The script respects the period – transposition by transpose_periods shifts by the actual period (e.g., 1901 cents for Bohlen‑Pierce). Ascending/descending modes play through the degrees exactly once; they do not wrap.
If you set reference_degree = 7 and reference_Hz = 330, the fifth will be exactly 330 Hz, and the fundamental will be adjusted accordingly. This is useful for tuning a scale to a fixed interval (e.g., A‑440 but with a specific fifth ratio).
All spectra are normalised so that the sum of partial amplitudes = 1. This ensures consistent loudness regardless of the number of partials or the roll‑off slope. Pure sine is a single partial with amplitude 1.
Partch 43 has 43 degrees. In ascending mode, that’s 44 notes. Synthesis of 44 notes with 8 partials each = 352 sinusoids. This is computationally intensive but still finishes in 5–10 seconds on a modern CPU. For arpeggio or chord modes, the number of simultaneously playing partials is lower.