Climax Profile Matcher — User Guide

Adaptive audio transformation: analyzes a Source sound to detect "climax" regions (peak intensity, high pitch, bright spectral tilt, strong harmonicity), then modifies a Target sound to match those climax characteristics.

Author: Shai Cohen Version: 1.0 (2025) Technique: Multi-parameter Climax Transfer Category: AI & Adaptive
Contents:

What this does

This script implements a Climax Profile Matcher — an adaptive audio tool that analyzes the climax characteristics of a Source sound and transfers them to a Target sound. It detects regions in the Source that qualify as "climaxes" (peak intensity, high pitch, bright spectral tilt, and strong harmonicity), extracts their acoustic profile, and applies transformations to make the Target sound match that profile.

🔥 What is a "Climax" in Audio?

A climax in audio is a moment of peak intensity, energy, and salience — the emotional high point. This tool detects climaxes using four complementary metrics:

  • Intensity: dB level above a high percentile (e.g., top 13%)
  • Pitch: Fundamental frequency in the upper quartile of the source's range
  • Brightness: High spectral centroid (normalized above 0.6 threshold)
  • Harmonicity: Strong harmonic-to-noise ratio (normalized above 0.5)

Frames meeting at least 3 of these 4 criteria are considered climax-eligible and grouped into contiguous climax regions.

Key Features:

Technical Implementation: (1) Source Analysis: Frame-by-frame extraction of intensity, pitch, harmonicity, centroid, formants. (2) Climax Detection: Multi-criteria thresholding to identify climax frames and regions. (3) Profile Extraction: Average acoustic descriptors from all climax regions + LTAS. (4) Target Analysis: Global averages of same descriptors + LTAS. (5) Delta Computation: Difference between climax profile and target averages. (6) Weighted Transformations: Apply intensity scaling, spectral tilt correction, EQ shaping, harmonicity modification based on transfer weights. (7) Visualization: Multi-panel display of source, features, LTAS, profiles, spectrograms.

Quick start

  1. In Praat, select exactly two Sound objects (Sound 1 = Source, Sound 2 = Target).
  2. Run script… → select Climax_Profile_Matcher.praat.
  3. Choose Preset (2-5 for specific strategies, 1 for custom).
  4. Set analysis parameters (frame step, pitch range, max formant).
  5. Adjust climax detection thresholds (percentiles, brightness, harmonicity, min duration).
  6. Set transfer weights for each transformation type.
  7. Enable Draw_visualization for comprehensive analysis display.
  8. Click OK — processor analyzes, detects climaxes, computes profile, transforms target.
Quick tip: Start with Full Transfer preset on a Source with clear climax moments (e.g., orchestral crescendo, vocal peak) and a Target that needs more energy/drama. Enable visualization to see detected climax regions (pink highlights) and the feature plots. Listen to the output — the Target should now have the intensity, brightness, and harmonic richness of the Source's climaxes. The output appears as "Target_matched_to_Source_Climax" in the Objects window.
Important: SOURCE MUST HAVE CLIMAXES — If detection fails, script falls back to top 90% intensity frames. For best results, use Source with clear dynamic/spectral peaks. PITCH SHIFTING DISABLED — This version does not apply pitch shifting to preserve formant structure. TRANSFER WEIGHTS control how much of each delta is applied (0 = none, 1 = full). LTAS MATCHING applies gentle EQ at key frequency bands (250 Hz - 8 kHz). PROCESSING TIME depends on file lengths and number of frames; 30+ second files may take 1-2 minutes.

Climax Detection Theory

The Four Climax Criteria

For each analysis frame i, calculate: 1. Intensity Score: I_i ≥ P_intensity where P_intensity = intensity at given percentile (default 87th) 2. Pitch Score: f0_i ≥ P_pitch where P_pitch = pitch_max - (pitch_max - pitch_min) × upper_percent/100 3. Brightness Score: norm_centroid_i ≥ brightness_threshold where norm_centroid_i = (centroid_i - centroid_min) / (centroid_max - centroid_min) 4. Harmonicity Score: norm_HNR_i ≥ harmonicity_threshold where norm_HNR_i = (HNR_i - HNR_min) / (HNR_max - HNR_min) Climax Score = sum of criteria met (0-4) Frame is climax-eligible if score ≥ 3

Climax Region Formation

Adjacent climax-eligible frames are grouped into regions: region_duration = (end_frame - start_frame + 1) × frame_step Regions are kept only if duration ≥ min_climax_duration_ms For each region, we store: start_time, end_time start_frame, end_frame All climax regions are concatenated for: • Average acoustic descriptors • Long-term average spectrum (LTAS)

Acoustic Profile

📊 Profile Components

DescriptorDescriptionUnit
IntensityAverage dB SPLdB
Pitch (mean)Average fundamental frequency (voiced only)Hz
Pitch rangeMin - Max pitch in climaxesHz
Spectral centroidCenter of gravity of spectrumHz
Harmonicity (HNR)Harmonics-to-noise ratiodB
Formants F1-F3First three formant frequenciesHz
LTASLong-term average spectrum (100 Hz bins)dB/Hz

Transfer Functions

⚙️ Transformation Types

Intensity Transfer:

Scale target to: target_intensity' = target_intensity + (climax_intensity - target_intensity) × w_intensity

Applied via Praat's Scale intensity function.

Spectral Tilt Correction:

If climax brighter (Δcentroid > 0): emphasize band [500 + (1-w_tilt)×1500, min(12000, 5000 + w_tilt×7000)] Hz

If climax darker (Δcentroid < 0): emphasize band [max(80, 100×(1-w_tilt)), 3000 - w_tilt×1500] Hz

Blend: result = (1-w_blend)×dry + w_blend×filtered, where w_blend = w_tilt × 0.5

LTAS-based EQ Shaping:

Find frequency band with largest |ΔLTAS| (250 Hz - 8 kHz)

Apply bandpass filter centered at that band, gain = w_eq × ΔLTAS/40 (capped at ±0.4)

Add filtered band to original signal

Harmonicity Shaping:

If ΔHNR > 0 (need more harmonic): gentle low-pass (cutoff = 8000 + (1-w_hnr)×4000 Hz) + mild saturation

If ΔHNR < 0 (need less harmonic): add noise = w_hnr × |ΔHNR|/40 × Gaussian noise

Delta Calculation

For each acoustic parameter P: ΔP = P_climax - P_target Example for intensity: ΔIntensity_dB = climax_avg_intensity - target_avg_intensity For LTAS, we compute differences at key frequencies: ΔLTAS_f = LTAS_climax(f) - LTAS_target(f) where f ∈ {250, 500, 1000, 2000, 4000, 8000} Hz These deltas determine the direction and magnitude of applied transformations, scaled by the corresponding transfer weights.

Preset Strategies

Preset 2: Subtle Match (gentle transfer)

🌱 Gentle Enhancement

Intensity transfer: 0.4

Spectral tilt transfer: 0.3

EQ transfer: 0.25

Harmonicity transfer: 0.15

Character: Subtle application of climax characteristics — barely perceptible enhancement

Use on: Material needing gentle dynamic/spectral shaping, mastering chain

Preset 3: Full Transfer (strong matching)

⚡ Complete Climax Transfer

Intensity transfer: 0.9

Spectral tilt transfer: 0.8

EQ transfer: 0.7

Harmonicity transfer: 0.5

Character: Aggressive matching — target takes on full climax characteristics

Use on: Sound design, dramatic transformations, making target "pop" like source climax

Preset 4: Spectral Focus (tilt + EQ only)

🎚️ Timbre-Only Transfer

Intensity transfer: 0.2

Spectral tilt transfer: 0.9

EQ transfer: 0.85

Harmonicity transfer: 0.4

Character: Focus on spectral characteristics (brightness, EQ) with minimal intensity change

Use on: Matching timbre without changing loudness, spectral remapping

Preset 5: Broadcast Match (loudness + brightness)

📻 Broadcast-Ready Enhancement

Intensity transfer: 0.9

Spectral tilt transfer: 0.7

EQ transfer: 0.6

Harmonicity transfer: 0.3

Character: Emphasis on loudness and brightness — makes target "cut through" mix

Use on: Voice-over, podcast, broadcast audio needing presence

Parameters & Controls

Analysis Parameters

ParameterDefaultDescription
Frame_step_ms15Analysis frame interval (milliseconds)
Pitch_floor_Hz75Minimum expected pitch (Hz)
Pitch_ceiling_Hz600Maximum expected pitch (Hz)
Max_formant_Hz5500Upper limit for formant analysis

Climax Detection Thresholds

ParameterDefaultDescription
Intensity_percentile87Percentile for intensity threshold (e.g., 87 = top 13%)
Pitch_upper_percent25Top % of pitch range considered "high"
Brightness_threshold0.6Normalized centroid threshold (0-1)
Harmonicity_threshold0.5Normalized HNR threshold (0-1)
Min_climax_duration_ms200Minimum duration for climax region (ms)

Transfer Weights

ParameterDefaultDescription
Intensity_transfer0.8Weight for intensity matching (0-1)
Spectral_tilt_transfer0.6Weight for brightness/darkness correction
Eq_transfer0.5Weight for LTAS-based EQ shaping
Harmonicity_transfer0.3Weight for harmonicity modification

Processing Parameters

ParameterDefaultDescription
Processing_chunk_s30Chunk size for processing (unused in v1.0)
Crossfade_ms20Crossfade duration (unused in v1.0)

Output Parameters

ParameterDefaultDescription
Draw_visualization1Generate 7-panel analysis display
Play_output1Audition after processing

Visualization & Analysis

7-Panel Display

Climax Profile Matcher Visualization: Panel 1: TITLE • Script name, source/target names, preset, number of climax regions Panel 2: SOURCE WAVEFORM WITH CLIMAX HIGHLIGHTS • Gray waveform of source • Pink highlights = detected climax regions • Label: source name, duration, climax count Panel 3: SOURCE FEATURES & CLIMAX DETECTION • X-axis: Time, Y-axis: Normalized values (0-1.1) • Orange line = intensity (normalized) • Blue line = pitch (normalized) • Green line = HNR (normalized) • Bold red line = climax score (0-4, scaled to 0-1) • Red dotted line = climax threshold (score ≥ 3) • Pink background = climax regions • Title: "Source Features & Climax Detection" Panel 4: LTAS COMPARISON • Red line = Source climax LTAS • Blue line = Target LTAS • X-axis: Frequency (0-8000 Hz) • Y-axis: dB/Hz • Title: "LTAS: Source Climax vs Target" Panel 5: ACOUSTIC PROFILE BAR CHART • Paired bars for 5 metrics: Intensity, Pitch, Centroid, HNR, F1 • Orange bars = Source climax • Blue bars = Target • Title: "Acoustic Profiles" Panel 6: TARGET SPECTROGRAM (original) • Spectrogram of target before transformation • Title: "Target (original)" Panel 7: RESULT SPECTROGRAM • Spectrogram of matched output • Title: "Target (matched)" • X-axis: Time, Y-axis: Frequency Panel 8: STATS PANEL (bottom) • Transfer weights and deltas for all parameters • LTAS differences at key frequencies • Formant comparisons Panel 9: LEGEND (bottom) • Color key for all visualization elements

Reading the Feature Plot

What the colored lines mean:
  • Orange (intensity): dB level normalized to 0-1 scale. Peaks show loudest moments.
  • Blue (pitch): Fundamental frequency normalized. Only shown when voiced.
  • Green (HNR): Harmonics-to-noise ratio normalized. Higher = more tonal.
  • Bold red (climax score): Number of criteria met (0-4, scaled to 0-1). When this line crosses the red dotted threshold (0.75 = score 3), frame is climax-eligible.
  • Pink background: Contiguous regions where climax score ≥ 3 for sufficient duration.

Interpretation: Look for moments where multiple features peak simultaneously — these are the structural climaxes. The pink regions show where the tool identifies climaxes for profile extraction.

Reading the Profile Bar Chart

Paired bars show:
  • Orange bars: Source climax average values
  • Blue bars: Target global average values
  • Height difference: The delta that will be transferred (scaled by weights)

Metrics displayed: Intensity (dB), Pitch (Hz), Centroid (Hz), HNR (dB), F1 (Hz). The bars are normalized to the maximum of each pair for visual comparison.

Applications

Sound Design & Post-Production

Use case: Matching the "energy" of a reference track

Technique: Full Transfer preset with source = reference climax, target = mix needing energy

Workflow:

Voice Processing

Use case: Making voice-over more "broadcast-ready"

Technique: Broadcast Match preset with source = professional announcer, target = raw voice

Settings:

Result: Voice gains presence, cuts through mix, matches professional timbre

Music Production

Use case: Making a synth pad match the energy of a drum loop

Technique: Spectral Focus preset with source = drum loop peaks, target = synth pad

Approach:

Research & Education

Use case: Studying acoustic correlates of perceived "climax"

Technique: Enable visualization, compare different sources

Learning outcomes:

Practical Workflow Examples

🎬 Film Score: Matching Climax Energy

Goal: Make an orchestral cue have the same climax impact as a reference

Settings:

  • Source: Reference film score climax (30s section with brass hits, strings)
  • Target: Your orchestral cue needing more energy
  • Preset: Full Transfer
  • Adjust: intensity_transfer = 0.8, spectral_tilt_transfer = 0.7, eq_transfer = 0.6

Result: Your cue now has the intensity, brightness, and spectral balance of the reference climax

🎙️ Podcast: Voice Enhancement

Goal: Make amateur voice recording match professional broadcast standard

Settings:

  • Source: Professional narrator recording with clear climax phrases
  • Target: Raw voice recording
  • Preset: Broadcast Match
  • Adjust: intensity_transfer = 0.9 (loudness), spectral_tilt = 0.7 (brightness), eq_transfer = 0.5 (gentle EQ)

Result: Voice gains presence and clarity, matches professional timbre

🎚️ Electronic Music: Drop Enhancement

Goal: Make synth drop hit as hard as reference track

Settings:

  • Source: Reference EDM drop (loud, bright, rich harmonics)
  • Target: Your synth drop
  • Preset: Full Transfer with harmonicity_transfer = 0.7 (more harmonic richness)
  • Adjust: intensity_transfer = 0.9, spectral_tilt = 0.8, eq_transfer = 0.7

Result: Drop gains intensity, brightness, and harmonic richness of reference

Troubleshooting Common Issues

Problem: No climax regions detected
Cause: Source lacks sufficient variation or thresholds too high
Solution: Lower thresholds (intensity_percentile=80, brightness=0.4), ensure source has dynamic range
Problem: Output distorted/clipping
Cause: Intensity transfer too aggressive, or spectral processing causing peaks
Solution: Reduce intensity_transfer, ensure final output is peak-normalized (script does this automatically)
Problem: Output sounds phasey or hollow
Cause: EQ transfer too aggressive, or bandpass filters causing phase issues
Solution: Reduce eq_transfer, use Subtle Match preset
Problem: No audible change
Cause: Transfer weights too low, or source/target already similar
Solution: Increase weights, check that source has climax regions
Problem: Processing very slow
Cause: Long files with small frame_step
Solution: Increase frame_step_ms to 20-25, reduce file lengths

Advanced Techniques

Customizing climax detection (edit script):
  • Stricter climax criteria: Change threshold to 4 (require all criteria)
  • Weighted criteria: Modify climaxScore calculation with custom weights
  • Different intensity percentile: Adjust intensity_percentile (80-95 range)
  • Pitch range adjustment: Modify pitch_upper_percent for narrower/wider high-pitch definition
Transfer weight strategies:
  • Intensity only: Set all other weights to 0
  • Spectral only: Set intensity_transfer = 0, keep tilt/EQ
  • Harmonicity only: Set others to 0, keep harmonicity_transfer
  • Gradual application: Use low weights (0.2-0.3) and re-apply multiple times
LTAS frequency band customization:

In the script, modify the list of frequencies for LTAS comparison (lines near "key frequency bands"). Add or remove bands (e.g., 125 Hz, 3000 Hz) for different spectral resolution.