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.
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:
- 5 Preset Strategies — Custom, Subtle Match, Full Transfer, Spectral Focus, Broadcast Match
- Multi-parameter Climax Detection — Intensity, pitch, spectral centroid, harmonicity
- Acoustic Profile Extraction — Avg intensity, pitch, pitch range, centroid, LTAS, formants F1-F3
- Weighted Transfer Controls — Independent weights for intensity, spectral tilt, EQ, harmonicity
- LTAS-based EQ Shaping — Matches long-term average spectrum of climax regions
- Spectral Tilt Correction — Brightens or darkens target via bandpass emphasis
- Harmonicity Shaping — Increases harmonicity via filtering/saturation or decreases via noise addition
- Comprehensive Visualization — 7-panel display showing analysis, detection, and transformation
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
- In Praat, select exactly two Sound objects (Sound 1 = Source, Sound 2 = Target).
- Run script… → select
Climax_Profile_Matcher.praat. - Choose Preset (2-5 for specific strategies, 1 for custom).
- Set analysis parameters (frame step, pitch range, max formant).
- Adjust climax detection thresholds (percentiles, brightness, harmonicity, min duration).
- Set transfer weights for each transformation type.
- Enable Draw_visualization for comprehensive analysis display.
- Click OK — processor analyzes, detects climaxes, computes profile, transforms target.
Climax Detection Theory
The Four Climax Criteria
Climax Region Formation
Acoustic Profile
📊 Profile Components
| Descriptor | Description | Unit |
|---|---|---|
| Intensity | Average dB SPL | dB |
| Pitch (mean) | Average fundamental frequency (voiced only) | Hz |
| Pitch range | Min - Max pitch in climaxes | Hz |
| Spectral centroid | Center of gravity of spectrum | Hz |
| Harmonicity (HNR) | Harmonics-to-noise ratio | dB |
| Formants F1-F3 | First three formant frequencies | Hz |
| LTAS | Long-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
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
| Parameter | Default | Description |
|---|---|---|
| Frame_step_ms | 15 | Analysis frame interval (milliseconds) |
| Pitch_floor_Hz | 75 | Minimum expected pitch (Hz) |
| Pitch_ceiling_Hz | 600 | Maximum expected pitch (Hz) |
| Max_formant_Hz | 5500 | Upper limit for formant analysis |
Climax Detection Thresholds
| Parameter | Default | Description |
|---|---|---|
| Intensity_percentile | 87 | Percentile for intensity threshold (e.g., 87 = top 13%) |
| Pitch_upper_percent | 25 | Top % of pitch range considered "high" |
| Brightness_threshold | 0.6 | Normalized centroid threshold (0-1) |
| Harmonicity_threshold | 0.5 | Normalized HNR threshold (0-1) |
| Min_climax_duration_ms | 200 | Minimum duration for climax region (ms) |
Transfer Weights
| Parameter | Default | Description |
|---|---|---|
| Intensity_transfer | 0.8 | Weight for intensity matching (0-1) |
| Spectral_tilt_transfer | 0.6 | Weight for brightness/darkness correction |
| Eq_transfer | 0.5 | Weight for LTAS-based EQ shaping |
| Harmonicity_transfer | 0.3 | Weight for harmonicity modification |
Processing Parameters
| Parameter | Default | Description |
|---|---|---|
| Processing_chunk_s | 30 | Chunk size for processing (unused in v1.0) |
| Crossfade_ms | 20 | Crossfade duration (unused in v1.0) |
Output Parameters
| Parameter | Default | Description |
|---|---|---|
| Draw_visualization | 1 | Generate 7-panel analysis display |
| Play_output | 1 | Audition after processing |
Visualization & Analysis
7-Panel Display
Reading the Feature Plot
- 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
- 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:
- Select a reference track with powerful climax moments (e.g., film score climax, EDM drop)
- Select your target mix as second sound
- Run with Full Transfer preset
- Listen to result — target now has intensity, brightness, and harmonic richness of reference
- Adjust weights if needed for subtlety
Voice Processing
Use case: Making voice-over more "broadcast-ready"
Technique: Broadcast Match preset with source = professional announcer, target = raw voice
Settings:
- Source: Recording of professional voice with clear peaks
- Target: Your voice recording
- Preset: Broadcast Match (loudness + brightness focus)
- Optionally reduce harmonicity transfer if voice becomes too processed
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:
- Drum loop provides spectral characteristics of high-energy moments
- Synth pad receives brightness and EQ shaping to "sit" with drums
- Intensity transfer kept low to preserve pad's dynamic range
Research & Education
Use case: Studying acoustic correlates of perceived "climax"
Technique: Enable visualization, compare different sources
Learning outcomes:
- See how intensity, pitch, brightness, and harmonicity contribute to climax perception
- Compare climax profiles across different musical genres
- Understand LTAS differences between climax and non-climax regions
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
Cause: Source lacks sufficient variation or thresholds too high
Solution: Lower thresholds (intensity_percentile=80, brightness=0.4), ensure source has dynamic range
Cause: Intensity transfer too aggressive, or spectral processing causing peaks
Solution: Reduce intensity_transfer, ensure final output is peak-normalized (script does this automatically)
Cause: EQ transfer too aggressive, or bandpass filters causing phase issues
Solution: Reduce eq_transfer, use Subtle Match preset
Cause: Transfer weights too low, or source/target already similar
Solution: Increase weights, check that source has climax regions
Cause: Long files with small frame_step
Solution: Increase frame_step_ms to 20-25, reduce file lengths
Advanced Techniques
- 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
- 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
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.