# Lines starting with '#' are comments and are ignored. # Blank lines are ignored. # Format: key = value # Spaces around '=' are allowed and ignored. # # All options are optional. If an option is not present in this file, # the built-in default (shown in brackets below) is used. # ====================================================================== # --- Analysis mode ---------------------------------------------------- # Controls which analyses are performed and which file arguments # are required on the command line. # # BOTH -- both -fileVertical and -fileHorizontal required. # Two-panel spectrum plot and comparison bar chart. # VERTICAL -- only -fileVertical required. # Single-panel spectrum plot, single bar chart. # (for VTA / SRA optimisation only) # HORIZONTAL -- only -fileHorizontal required. # Single-panel spectrum plot, single bar chart. # (for LTA / zenith optimisation only) # # [default: BOTH] mode = BOTH # --- Expected pilot-tone frequency (Hz) ------------------------------- # The vertical and horizontal files may use different tone pairs, # and the L and R channels may have different prominent frequencies # (e.g. on old worn records). # # Accepted formats: # 1 value -- used for all directions and channels # 2 values -- vertical, horizontal (L and R get the same value) # 4 values -- verticalL, verticalR, horizontalL, horizontalR # # CBS STR-112 uses a 4000 Hz pilot tone at -6 dB standard level. # [default: 4000] # # Examples: # f_high = 4000 # same for everything # f_high = 3942, 3942 # vert, horiz (L=R) # f_high = 949, 1039, 4002, 4002 # vertL, vertR, horizL, horizR # f_high = 949, 7988 # f_high = 949, 1039, 4002, 4002 f_high = 949, 1039, 4002, 4002 # --- Nominal fH recording level (dB) --------------------------------- # The level at which the pilot tone is recorded on the test record, # relative to the standard recording level. # CBS STR-112: -6 dB. # This is used to estimate which track level variant is being analysed. # [default: -6] fh_nominal_db = -6 # --- Expected low-frequency test tone (Hz) ---------------------------- # Same format as f_high: # 1 value -- used for all directions and channels # 2 values -- vertical, horizontal (L and R get the same value) # 4 values -- verticalL, verticalR, horizontalL, horizontalR # # CBS STR-112 uses 200 Hz or 400 Hz for fL depending on the track. # [default: 200] # # Examples: # f_low = 200 # same for everything # f_low = 401, 197 # vert, horiz (L=R) # f_low = 60, 60, 200, 200 # vertL, vertR, horizL, horizR # f_low = 60, 250 f_low = 60, 60, 200, 200 #f_low = 60, 60, 250, 250 # --- Track level overrides (dB) -------------------------------------- # Each WAV file should contain a single track from the CBS STR-112. # The analyser auto-detects the fL level variant by comparing the # measured fL/fH ratio to the known CBS level set. # # If auto-detection is unreliable (e.g. non-standard record, unusual # recording gain), you can override it here. The value is the fL # level in dB above the standard recording level. # # CBS STR-112 vertical group: +6, +9, +12 dB (3 tracks) # CBS STR-112 horizontal group: +6, +9, +12, +15, +18 dB (5 tracks) # # Leave commented out for auto-detection (default). # [default: auto-detect] # track_level_vertical = 12 # track_level_horizontal = 12 # --- Tone prominence threshold (dB) ---------------------------------- # Minimum separation between a detected tone peak and the noise floor # for the tone to be considered "clearly distinguishable". # Lower values make detection more permissive. # [default: 20] # tone_prominence_db = 20 # --- Tone acceptance tolerance (Hz) ----------------------------------- # Maximum allowed deviation between a detected tone and the expected # frequency before the script refuses to proceed automatically. # If a detected tone is further than this from the expected value, # the script reports the detected frequencies and exits so the user # can rerun with corrected values. # [default: 50] # tone_acceptance_tolerance = 50 # --- Frequency search tolerance (Hz) --------------------------------- # How far from the expected frequency the analyser looks when locating # a peak in each STFT window. Accounts for turntable speed error # (+/-3%) and record eccentricity. At 4000 Hz, a 1% speed error # shifts the tone by 40 Hz, so 30 Hz is a reasonable default for # records with small speed errors. # # Note: the initial tone-pair validation uses a much wider tolerance # (freq_tolerance_wide) to accommodate old records with large speed # errors. Once the pilot tone is located, the STFT tolerance is # automatically scaled up if the detected speed error exceeds what # this default can handle. # [default: 30] freq_tolerance = 30 # --- Wide initial search tolerance (Hz) ------------------------------- # Used during the initial scan that validates the presence of the # two-tone test signal before committing to the full STFT analysis. # Old test records may have significant speed error (up to +/- 5%). # At 4000 Hz, 5% = 200 Hz, so 200 Hz covers most cases. # [default: 200] freq_tolerance_wide = 200 # --- STFT window length (seconds) ------------------------------------ # Longer windows give better frequency resolution (important for # separating 200 Hz and 400 Hz harmonics from IMD products). # 200 ms gives ~5 Hz resolution at 44.1 kHz. # [default: 0.2] stft_window_sec = 0.2 # --- STFT overlap fraction -------------------------------------------- # [default: 0.75] stft_overlap = 0.75 # --- Minimum pilot-tone level (dB) ----------------------------------- # STFT windows where the pilot tone (fH) peak is below this level # are discarded. # [default: -40.0] min_pilot_db = -40.0 # --- dB floor --------------------------------------------------------- # Lowest dB value reported. Values below this are clamped. # [default: -100.0] db_floor = -100.0 # --- Analysis channel (backward compatibility) ------------------------ # This option is accepted for backward compatibility but is ignored # internally. Both L and R channels are always analysed independently. # # Accepted values: L, R, MIX # [default: L] channel = L # --- Channel identity threshold --------------------------------------- # Maximum RMS difference (as a fraction of full-scale, 0.0 to 1.0) # between L and R channels before they are flagged as "different". # The CBS STR-112 IMD tracks are mono, so L and R should be # identical. A small threshold allows for dithering or bit-level # rounding differences in the ADC. # [default: 0.001] channel_identity_threshold = 0.001 # --- Level normalization ----------------------------------------------- # When true, all reported absolute dB levels (fH, fL, spectrum plot) # are shifted so the tallest test tone (fL or fH, whichever is # louder) sits at 0 dB. This removes dependence on the recording # gain chain and makes results comparable across different recordings # and equipment setups. # # When false, raw absolute dB levels from the WAV file are reported. # # Note: dBc values (IMD products relative to fH) are unaffected by # this setting because they are ratios. The total IMD percentage # is also unaffected. # # [default: true] normalize_levels = true # --- Maximum IMD order ------------------------------------------------ # Controls how many intermodulation product orders are computed. # Sideband products: # Order 2: fH +/- 1*fL # Order 3: fH +/- 2*fL # Order 4: fH +/- 3*fL # Order 5: fH +/- 4*fL # Harmonics of fL (2nd through max_imd_order) are also included. # Harmonics of fH (2nd and 3rd) are always included. # Allowed values: 2 to 10. # [default: 5] max_imd_order = 5 # --- Plot frequency range (Hz) --------------------------------------- # Upper frequency limit for spectrum plots, per direction. # The vertical file (e.g. CBS STR-112 band 2) may use lower test-tone # frequencies than the horizontal file (band 7), so a lower plot range # avoids a mostly-empty spectrum plot for the vertical analysis. # # The legacy key 'plot_freq_max' is still accepted and sets both # directions to the same value. # # [default: 12000 for both] plot_freq_max_vertical = 1500 plot_freq_max_horizontal = 6000