Seat Doctor™ Technical Guide

Professional-grade audio processing for broken IFE seats

What Makes Seat Doctor™ Different

Seat Doctor™ is IFE Bridge's exclusive suite of real-time audio processing tools designed to fix common problems with damaged or malfunctioning aircraft entertainment systems. Unlike hardware Bluetooth adapters that passively transmit broken audio, Seat Doctor™ actively processes and repairs the audio signal using professional-grade DSP (Digital Signal Processing) algorithms.

All processing happens in real-time using AVAudioEngine and custom AUAudioUnit effects. Most features add minimal latency, though some experimental features like Volume Limiter may introduce additional buffering (~278ms). This page provides technical details on how each feature works and how to adjust parameters for optimal results.

Channel Routing & Balance

🔊 Stereo/Mono Channel Modes

Problem Solved: Damaged IFE jacks often have one dead channel (mono audio) or reversed left/right channels.

How It Works: Channel routing is performed using AVAudioMixerNode routing before any other processing. The app detects input channel configuration and can remap channels in real-time.

Available Modes:

  • Stereo (Normal) Left → Left, Right → Right
  • Mirror Left to Both Left → Both ears (fixes dead right channel)
  • Mirror Right to Both Right → Both ears (fixes dead left channel)
  • Swap Left ↔ Right Left ↔ Right (fixes reversed channels)

Technical Implementation: Uses AVAudioMixerNode.pan and custom channel mapping. When mirroring or swapping, the routing happens before the audio enters the processing chain, ensuring all downstream effects (EQ, compression, etc.) receive correctly routed audio.

⚖️ Channel Balance

Problem Solved: One channel is noticeably quieter than the other due to damaged jack contacts or impedance mismatch.

User Adjustments:

  • Range -100% (left only) to +100% (right only)
  • Center (0%) Equal volume both channels
  • Step Size 1% increments

Technical Implementation: Implemented using AVAudioMixerNode.pan property. Balance is applied as a stereo pan control that adjusts relative gain between left and right channels while preserving overall loudness.

Hum Removal (Electrical Interference)

🔌 50Hz/60Hz/400Hz Hum Cancellation

Problem Solved: Ground loop hum, AC mains interference, and electrical buzz from aircraft power systems bleeding into the IFE audio signal.

How It Works: Uses notch filters (extremely narrow band-reject filters) to remove specific fundamental frequencies and their harmonics. The filters have a very high Q factor (narrow bandwidth) to surgically remove hum without affecting nearby frequencies.

User Adjustments:

  • Frequency Selection 50Hz (Europe/Asia), 60Hz (Americas), or 400Hz (Aircraft)
  • Strength Levels 1-5 (number of harmonics removed)

Harmonics Removed by Strength Level:

  • Level 1 Fundamental only (50Hz / 60Hz / 400Hz)
  • Level 2 + 2nd harmonic (100Hz / 120Hz / 800Hz)
  • Level 3 + 3rd harmonic (150Hz / 180Hz / 1200Hz)
  • Level 4 + 4th harmonic (200Hz / 240Hz / 1600Hz)
  • Level 5 + 5th harmonic (250Hz / 300Hz / 2000Hz)

Technical Implementation: Custom AUAudioUnit effect using cascaded notch filters. Each notch filter is implemented as a high-Q parametric EQ with -∞ dB gain (complete rejection). Filter coefficients are calculated using standard IIR biquad formulas with Q=50 for surgical precision.

Why 400Hz? Aircraft electrical systems use 400Hz AC power (rather than the 50/60Hz used in ground-based electrical systems). This higher frequency allows lighter transformers and generators, which is critical for aviation weight constraints. If you hear electrical hum on an aircraft IFE system, try 400Hz first.

Recommendation: For aircraft IFE systems, try 400Hz first. For ground-based testing, use 50Hz (Europe/Asia) or 60Hz (Americas). Start with Level 1 or 2. Only increase if you still hear buzzing after enabling lower levels. Higher levels remove more harmonics but may affect audio quality if hum is severe.

Noise Gate

🔇 Background Hiss Removal

Problem Solved: Constant background hiss, static, or white noise from damaged IFE jacks or poor shielding.

How It Works: A noise gate is a dynamic processor that mutes audio when the signal level falls below a threshold. When dialogue or music is playing (above threshold), the gate opens and passes audio. During quiet moments (below threshold), the gate closes and mutes background hiss.

Technical Parameters:

  • Threshold -46 dB (fixed)
  • Attack Time 5 ms (how fast gate opens)
  • Release Time 150 ms (how fast gate closes)
  • Processing Sample-by-sample with smoothing envelope

Technical Implementation: Custom AUAudioUnit effect that analyzes RMS (Root Mean Square) power of incoming audio. When RMS falls below -46dB, gain is smoothly reduced to zero using exponential envelope followers. Attack/release coefficients calculated from time constants ensure smooth transitions without clicks.

Why -46dB? This threshold is low enough to preserve quiet dialogue and ambient sounds but high enough to gate out typical IFE background hiss. The value was chosen based on testing with damaged IFE systems where hiss typically sits around -50dB to -55dB.

Recommendation: Enable if you hear constant hiss during quiet scenes. The gate preserves all actual audio content while removing noise during silent moments.

Dynamic Range Processing

📊 Auto-Volume (Dynamic Range Compression)

Problem Solved: Inconsistent audio levels - dialogue too quiet, action scenes too loud, or wildly varying volume from damaged seat audio circuits.

How It Works: Dynamic range compression reduces the difference between loud and quiet sounds. It automatically lowers the volume of loud parts and raises the volume of quiet parts, making overall loudness more consistent. This is the same technology used in broadcast TV and music production.

User Adjustments:

  • Strength Level 1 (Light) Ratio 2:1, Threshold -24dB, gentle compression
  • Strength Level 2 Ratio 3:1, Threshold -20dB
  • Strength Level 3 (Medium) Ratio 4:1, Threshold -18dB, balanced
  • Strength Level 4 Ratio 6:1, Threshold -15dB
  • Strength Level 5 (Maximum) Ratio 8:1, Threshold -12dB, heavy compression

Fixed Technical Parameters:

  • Attack Time 10 ms (fast response to peaks)
  • Release Time 200 ms (smooth gain recovery)
  • Knee Soft knee (smooth transition into compression)

What is Ratio? Compression ratio determines how much gain reduction is applied. A 4:1 ratio means that for every 4dB the input goes above the threshold, the output only goes up 1dB. Higher ratios = more compression.

Technical Implementation: Custom AUAudioUnit compressor using RMS level detection with logarithmic gain calculation. Gain reduction is smoothed using attack/release envelope followers with exponential time constants. Soft-knee implementation uses logarithmic interpolation in the threshold region.

Recommendation: Start with Level 3 (medium). Increase if you're still adjusting volume frequently. Decrease if audio sounds "squashed" or unnatural.

🗣️ Voice Boost (Dialogue Enhancement)

Problem Solved: Dialogue is muddy, unclear, or drowned out by background music and sound effects.

How It Works: Voice Boost uses multiband compression focused on the speech frequency range (300Hz - 3kHz). It selectively compresses and boosts these frequencies where human voice fundamentals and consonants reside, making dialogue more intelligible without affecting music or effects in other frequency ranges.

User Adjustments:

  • Strength Levels 1-5 Progressive boost from subtle to aggressive
  • Level 1 +2dB @ 1kHz, gentle presence boost
  • Level 3 +4dB @ 1kHz, noticeable clarity
  • Level 5 +6dB @ 1kHz, maximum intelligibility

Technical Implementation: Custom AUAudioUnit using parametric EQ boost at 1kHz (Q=2.0) combined with multiband compression. The EQ emphasizes voice presence, while compression in the voice band reduces dynamic range specifically for speech, making quiet dialogue louder without amplifying loud explosions.

Recommendation: Use Voice Boost when watching movies with unclear dialogue. Combine with Auto-Volume for best results. Start at Level 2-3 and adjust to taste.

Equalization (EQ)

🎚️ 7-Band Graphic Equalizer

Problem Solved: Unbalanced frequency response - too much bass, not enough treble, or specific resonances from aircraft cabin acoustics.

How It Works: A graphic EQ divides the audio spectrum into frequency bands, allowing you to boost or cut specific ranges. Each band is a parametric filter centered at a specific frequency.

Frequency Bands:

  • Band 1: 60 Hz Deep bass (rumble, explosions)
  • Band 2: 230 Hz Bass/low-mid (warmth, body)
  • Band 3: 910 Hz Mid-range (vocal fundamentals)
  • Band 4: 3.6 kHz Upper mid (clarity, presence)
  • Band 5: 14 kHz High treble (air, brilliance)

User Adjustments:

  • Gain Range -12 dB to +12 dB per band
  • Q Factor 1.0 (fixed, moderate bandwidth)
  • Preset Curves Bass Boost, Treble Boost, Vocal, Flat (reset all to 0dB)

Technical Implementation: AVAudioUnitEQ with 7 parametric filters. Each filter uses biquad IIR (Infinite Impulse Response) coefficients calculated from frequency, gain, and Q parameters. Filters are applied in series for cumulative effect.

Recommendation: Start with preset curves and fine-tune from there. Common adjustments: Cut 60Hz to reduce rumble in noisy cabins, boost 3.6kHz for dialogue clarity, cut 14kHz to reduce harshness from damaged speakers.

Sleep Timer

⏰ Auto-Stop Timer

Problem Solved: You want to fall asleep to a movie or music without the IFE playing all night, draining your iPhone battery.

How It Works: The Sleep Timer is a countdown timer that automatically stops the audio bridge after a set duration. When the timer expires, the app cleanly stops audio processing and deactivates the audio session, allowing your device to go into low-power mode.

User Adjustments:

  • Duration Options 15, 30, 45, or 60 minutes
  • Display Real-time countdown (MM:SS format)
  • Cancellation Tap "Cancel Timer" to abort before expiration
  • Independence Timer continues even if you change audio settings

Technical Implementation: Uses Foundation.Timer with 1-second intervals. Timer state is completely independent of audio bridge lifecycle - changing Seat Doctor settings or restarting the bridge does NOT reset the timer. When timer expires, it calls the audio bridge stop() method and invalidates itself.

Recommendation: Set timer before takeoff for long-haul flights. 30-45 minutes is typically enough to fall asleep. Timer preserves your device's battery and prevents audio running all night.

🧪 Seat Surgeon™ - Experimental Features

The following features are experimental, cutting-edge audio processing tools for power users. They provide professional-grade control beyond typical consumer audio apps.

Volume Limiter

🔊 Brick-Wall Limiter

Problem Solved: Sudden loud IFE announcements ("WE ARE NOW BEGINNING OUR DESCENT") that startle you or damage hearing, especially if you've turned up the volume for quiet dialogue.

How It Works: A brick-wall limiter is a hard ceiling on maximum audio level. Unlike compression (which gradually reduces gain), a limiter uses an infinite ratio - ANY audio that exceeds the ceiling is instantly clipped to the ceiling value. Think of it as a "maximum volume cap" that absolutely nothing can exceed.

User Adjustments:

  • Ceiling Range 10% to 100% of full volume
  • Step Size 5% increments (slider control)
  • Default 70% (recommended starting point)
  • Display Real-time percentage indicator

Technical Implementation: Custom AUAudioUnit that processes audio sample-by-sample using hard clipping. For each audio sample: if (sample > ceiling) { sample = ceiling }. No lookahead, no release time, no attack time - immediate limiting. Uses linear amplitude (0.0-1.0 scale) rather than dB for simplicity.

Why is this different from volume control? Volume control attenuates the entire signal. If you set volume to 50% and then loud announcements play at 200% (2x normal level), you still hear 100% loudness. With a 50% ceiling limiter, even 200% announcements are clipped to 50% - absolutely capped.

Recommendation: Set ceiling to 60-70% and test by playing normal content. Adjust IFE system volume so dialogue is comfortable, knowing announcements will never exceed your ceiling. Essential for sleeping on flights.

Dynamic Leveler

📈 Advanced Multiband Compressor

Problem Solved: Similar to Auto-Volume but provides more aggressive, professional-grade compression for power users who want maximum dynamic range control.

How It Works: The Dynamic Leveler is a sophisticated compressor that uses faster attack/release times and harder ratios than Auto-Volume. It's designed for situations where you want very consistent loudness, such as watching dialogue-heavy content in noisy environments.

User Adjustments:

  • Strength Levels 1-5 Progressive compression intensity
  • Differences from Auto-Volume Faster attack (5ms vs 10ms), tighter ratios, lower thresholds

Technical Implementation: Custom AUAudioUnit compressor with more aggressive time constants than Auto-Volume. Uses peak detection rather than RMS for faster response to transients. Hard-knee characteristic for more assertive compression.

Recommendation: Most users should use Auto-Volume. Use Dynamic Leveler only if you're an audio enthusiast and want more control, or if Auto-Volume at Level 5 still isn't enough compression for your needs.

Parametric EQ

🎛️ 3-Band Parametric Equalizer

Problem Solved: You need surgical control over specific frequency ranges that the 7-band graphic EQ can't address precisely.

How It Works: Unlike a graphic EQ with fixed frequencies, a parametric EQ lets you choose exactly which frequency to boost/cut, how much gain to apply, and how wide the affected range is (Q factor). This provides precision tuning for specific problems like cabinet resonances or speaker deficiencies.

User Adjustments (Per Band):

  • Frequency Range 20 Hz to 20,000 Hz (full audio spectrum)
  • Gain Range -12 dB to +12 dB
  • Q Factor Range 0.3 (very wide) to 10.0 (very narrow)
  • Default Frequencies Band 1: 200Hz, Band 2: 1kHz, Band 3: 5kHz

What is Q? Q (quality factor) determines the bandwidth of the filter. Low Q (0.3-1.0) = wide bell affecting many neighboring frequencies. High Q (5.0-10.0) = narrow spike affecting only a small frequency range. Use high Q for surgical cuts, low Q for broad tonal shaping.

Technical Implementation: AVAudioUnitEQ with 3 parametric filters. Each filter is fully adjustable via frequency, gain, and Q parameters. Biquad filter coefficients are recalculated in real-time as you adjust parameters, allowing live preview of changes.

Example Use Cases:

  • Cut 250Hz with Q=3 to remove boxy cabinet resonance
  • Boost 3kHz with Q=2 to enhance dialogue presence
  • Cut 8kHz with Q=1 to reduce sibilance harshness

Recommendation: Advanced feature for audio enthusiasts. Most users should use the 7-band graphic EQ instead. Use Parametric EQ when you've identified specific problem frequencies using a spectrum analyzer or trained ear.

Stereo Width

↔️ Stereo Separation Control

Problem Solved: Stereo image is too wide (fatiguing), too narrow (mono-like), or you want to create mono from stereo to fix phase issues.

How It Works: Stereo width processing uses Mid-Side (M-S) technique. The audio is converted from Left-Right to Mid (L+R) and Side (L-R). By adjusting the level of the Side component, you can make stereo wider or narrower. At 0% width, only Mid remains = mono. At 200%, Side is doubled = exaggerated stereo.

User Adjustments:

  • Width Range 0% (mono) to 200% (ultra-wide stereo)
  • 100% (Default) Normal stereo, no processing
  • 0% (Mono) Sum both channels to mono
  • 150-200% Expanded soundstage, can sound "phasey"

Technical Implementation: Custom AUAudioUnit using M-S matrix processing:

  1. Convert L/R to M/S: Mid = (L+R)/2, Side = (L-R)/2
  2. Scale Side by width factor: Side *= width
  3. Convert back to L/R: L = Mid + Side, R = Mid - Side

Use Cases:

  • 0% (Mono): Fix out-of-phase stereo content, or ensure compatibility with mono IFE seats
  • 50-80%: Narrow stereo image for less fatiguing headphone listening
  • 120-150%: Widen soundstage for more immersive experience
  • 200%: Maximum width, use sparingly (can cause phase issues)

Recommendation: Start at 100% (normal). Experiment with wider settings (120-140%) for music, narrower (60-80%) for dialogue-heavy content. Set to 0% if you suspect phase cancellation issues.

Technical Notes

⚡ Processing Latency

All Seat Doctor™ and Seat Surgeon™ processing uses custom AUAudioUnit effects inserted into the AVAudioEngine processing chain. These run in the real-time audio thread with sample-accurate timing.

Latency by Feature:

  • Minimal latency (<5ms): Channel Routing, Hum Removal, Noise Gate, 7-Band EQ, Auto-Volume, Voice Boost, Parametric EQ, Stereo Width - these process in-place without additional buffering
  • Added latency (~278ms): Volume Limiter requires buffering for brick-wall limiting, which adds approximately 278ms of latency (visible in Advanced → Latency Breakdown)
  • Dynamic Leveler: May add moderate latency depending on compression settings

Total system latency comes from Bluetooth A2DP transmission (~100-200ms) plus any processing latency from enabled features. You can check actual latency in Advanced Settings → Latency Breakdown.

🔄 Real-Time Processing

All parameter changes (gain, frequency, strength levels, etc.) take effect immediately without restarting the audio engine. The processing chain uses lock-free atomic operations to update parameters on the real-time thread, ensuring smooth transitions without dropouts.

🎚️ Combining Features

You can enable multiple Seat Doctor features simultaneously. Processing order in the audio chain:

  1. Channel Routing (mono/stereo conversion)
  2. Hum Removal (notch filters)
  3. Noise Gate (background hiss removal)
  4. 7-Band EQ (frequency correction)
  5. Auto-Volume / Voice Boost (dynamics)
  6. Seat Surgeon effects (Volume Limiter, Dynamic Leveler, Parametric EQ, Stereo Width)

This order is optimized for best results: fix channels first, remove noise, correct frequency response, then control dynamics.

💾 Settings Persistence

All Seat Doctor and Seat Surgeon settings are saved to iOS UserDefaults and persist across app launches. Your preferred configuration is automatically restored when you restart the app. Settings are stored locally on your device and never transmitted to any server.

Experience Professional Audio Processing

Download IFE Bridge and transform broken IFE seats into premium audio experiences with Seat Doctor™ and Seat Surgeon™.

Download on the App Store

TestFlight beta (free)