DEV Community

Cover image for StagePulse: Consent-First Bio-Adaptive Teleprompter and Living Auditorium on SmartSpectra SDK
Prince Jain
Prince Jain

Posted on AI-assisted

StagePulse: Consent-First Bio-Adaptive Teleprompter and Living Auditorium on SmartSpectra SDK

Presage SmartSpectra SDK Challenge Submission

This is a submission for the Presage SmartSpectra SDK Challenge

What I Built

A couple of weeks ago I recorded a three-minute product pitch and watched the playback with the sound muted. By the forty-second mark my shoulders had crept up toward my ears, my jaw had locked, and I was reading off my screen scroller at 190 words per minute without taking a single abdominal breath. Every teleprompter on the market is a dumb motorized conveyor belt: it scrolls at a fixed pixel velocity whether you are calm and grounded or rushing through your best lines out of stage fright.

I built StagePulse, a consent-first bio-adaptive teleprompter, vocal presence studio, and reactive auditorium built on @smartspectra/node-sdk v3.4.0.

Instead of treating physiological sensing as a passive chart on a dashboard, StagePulse wires your live optical and physiological signals directly into the mechanics of rehearsal and stagecraft:

  1. The Bio-Clutch Teleprompter (face.talking + face.landmarks + cardio.pulseRate): Pinned within three degrees of the top bezel webcam lens so you maintain direct eye contact with your audience, the script scroller only advances while face.talking.at(-1)?.detected === true, scaled by your real-time jaw aperture (landmarks[13] to landmarks[14]). If your heart rate (cardio.pulseRate) climbs more than 12% above your personal baseline, StagePulse applies viscous Cardio Tempo Damping (slowing scroll speed down to 0.68x) to prevent nervous speed-reading.
  2. Model-Card-Aware Speech-Pause Respiratory Multiplexer (face.talking === false Gate): While reading Presage's Breathing Model Card (docs/model-cards.md), one operational constraint jumped out immediately: optical breathing rate and chest/abdomen waveforms (upperTrace, lowerTrace) are confounded by torso movement when a person is actively talking. StagePulse turns that physical constraint into a core stagecraft mechanic. It uses face.talking as a real-time hardware multiplexer: while you speak (talking === true), respiratory buffers enter SPEECH HOLD and drive the teleprompter clutch; the moment you pause at a [BREATH GATE] marker (talking === false), the respiratory gate opens to compare thoracic (upperTrace) versus abdominal (lowerTrace) root-mean-square variance, computing your Diaphragmatic Dominance Index (DDI), inhaleExhaleRatio, breathing.rate, and apnea state.
  3. The Living Auditorium & "The Room Shift" (face.expression + Silence Power Hold): A 60 FPS HTML5 Canvas theater where stage footlights shift color temperature based on cosine congruence between all 8 face.expression classes (ANGRY, CONTEMPT, DISGUST, FEAR, HAPPY, NEUTRAL, SAD, SURPRISE) and the current script beat's delivery tone. When you hold a deliberate 1.8-second silence (face.talking === false), the wide proscenium dims and a crisp golden spotlight narrows onto center stage (The Room Shift), training speakers to use silence as authority.
  4. Curveball Q&A Stress Injector & On-Demand Presage LLM Stage Director (sdk.requestInsight): With one click, a skeptical investor or incident question interrupts the teleprompter so you can practice taking a grounded diaphragmatic breath before answering, then trigger sdk.requestInsight(prompt) to decode a presage.smartspectra.Insight coaching note.

Demo

StagePulse Living Auditorium Artwork

1. Pre-Hardware Explicit Consent Gate & Hardware Discovery (availableCameras())

Before any camera or video file touches SmartSpectraSDK, StagePulse presents four independent privacy controls: local optical sensing, Privacy Wireframe Cloak (default ON), SDK aggregate session telemetry (enableTelemetry, default OFF), and Presage LLM Stage Director notes (requestInsight opt-in).

StagePulse Pre-Hardware Consent Gate

2. Bio-Clutch Teleprompter, Arterial Horizon Ribbon & The Living Auditorium

The top bezel hosts the Eye-Line Teleprompter with [BREATH GATE] pause tokens and the 60 FPS Arterial Horizon Ribbon (cardio.arterialPressureTrace) pulsing directly beneath the active reading line. Below, The Living Auditorium renders vocal resonance ripples, 9 reactive front-row audience silhouettes, the 52-Point Privacy Wireframe Face Mesh, and the Speech-Pause Respiratory Bellows (DDI %).

StagePulse Live Broadcast Studio

3. Curveball Q&A Interruption & Presage LLM Stage Director (presage.smartspectra.Insight)

Firing a live skeptic curveball injects a red interruption banner into the teleprompter while sdk.requestInsight(prompt) decodes binary presage.smartspectra.Insight protobuf coaching notes in the right-hand dock.

StagePulse Curveball Q&A and LLM Stage Director

4. One-Click 32 KB CSPRNG Cryptographic Memory Wipe Vault

Clicking 32KB Wipe Vault -> Execute CSPRNG 32 KB Memory Wipe Now stops the native C++ pipeline, overwrites all 4,096 Float64Array slots (32,768 bytes) with crypto.randomFillSync(), zeroes every window, and produces a verifiable SHA-256 entropy digest.

StagePulse Cryptographic Memory Wipe Receipt

Terminal Verification Output (npm run verify:sdk)

================================================================
StagePulse SmartSpectra SDK Verifier (SDK v3.4.0)
================================================================
[Hardware Discovery] SmartSpectraSDK.availableCameras() found 3 camera(s):
  - id="47B4B64B-7067-4B9C-AD2B-AE273A71F4B5" name="FaceTime HD Camera" facing=unknown lensType=wideAngle
  - id="0x214000030548888" name="4K Veoαcam " facing=unknown lensType=unknown
  - id="7626645E-4425-469E-9D8B-97E0FA59AC75" name="OBS Virtual Camera" facing=unknown lensType=unknown
[18.4s | pkt #402] talking=false pulse=63.0 BPM (conf=85%) breath=38.8 br/m (conf=0%) hrv=warming eda=-0.011
[19.3s | pkt #428] talking=false pulse=63.9 BPM (conf=86%) breath=38.8 br/m (conf=0%) hrv=warming eda=-0.017
[20.0s | pkt #448] talking=true pulse=71.7 BPM (conf=59%) breath=38.8 br/m (conf=0%) hrv=warming eda=0.005
[21.9s | pkt #503] talking=true pulse=69.0 BPM (conf=71%) breath=38.8 br/m (conf=0%) hrv=warming eda=-0.006
[22.8s | pkt #531] talking=false pulse=68.7 BPM (conf=82%) breath=38.8 br/m (conf=0%) hrv=warming eda=-0.003
Summary: packets=534 | face=true | pulse=true | breathing=true | hrv=false | eda=true
PASS: Presage SmartSpectra SDK live pipeline verified end-to-end.
Enter fullscreen mode Exit fullscreen mode

Code

GitHub logo princejain756 / stagepulse

StagePulse: Consent-First Bio-Adaptive Teleprompter, Vocal Presence Studio & Reactive Living Auditorium built on Presage SmartSpectra SDK v3.4.0

StagePulse: Consent-First Bio-Adaptive Teleprompter, Vocal Presence Studio & Living Auditorium

Built with @smartspectra/node-sdk v3.4.0 for the Presage SmartSpectra SDK Challenge

Traditional teleprompters are physiologically blind. They scroll at a fixed mechanical speed while a speaker's heart rate climbs, their jaw tightens, and their breathing shifts up into their chest.

StagePulse turns the webcam into a consent-first broadcast greenroom, bio-adaptive teleprompter, and reactive auditorium. Using Presage Technologies' @smartspectra/node-sdk v3.4.0, StagePulse couples your live vocal articulation, pulse waveform, diaphragmatic breathing recovery, facial expression congruence, electrodermal activity (EDA), and heart rate variability (HRV) directly to the script scroller and a 60 FPS theatrical stage.

StagePulse Studio Screenshot

Why StagePulse Stands Out

  1. Bio-Clutch Kinetic Teleprompter (face.talking + face.landmarks + cardio.pulseRate)
    • Pinned at the top bezel (< 3° below the physical webcam lens) so presenters maintain direct eye contact with the camera while reading.
    • Advances script lines only while face.talking.at(-1)?.detected === true, modulated by…
  • Repository: https://github.com/princejain756/stagepulse
  • Key Modules:
    • src/spectra-engine.mjs: Core @smartspectra/node-sdk v3.4.0 wrapper implementing useCamera(), useFile(), useCustomInput(), 3-frame ValidationCode hysteresis, the Speech-Pause Respiratory Multiplexer (face.talking === false), and cryptographicWipeAndReset().
    • src/biomechanics.mjs: 478-landmark jaw aperture, eye-contact cone, posture score, 52-point normalized privacy wireframe, Diaphragmatic Dominance Index (DDI), 8-class expression cosine congruence, Bio-Clutch scroll physics, and 16-state ValidationCode stage directions.
    • src/insight-decoder.mjs: Binary protobufjs encoder/decoder for presage.smartspectra.Insight messages emitted on sdk.on('insight').
    • src/cli/verify-sdk.mjs: Headless CLI verifier (npm run verify:sdk) that validates @smartspectra/node-sdk v3.4.0 against assets/fixtures/speaker-rehearsal-65s.mp4 and records assets/fixtures/verified-presage-trace.json for zero-credit replay.

How It Responds to Human Signals

StagePulse integrates all four SmartSpectra metric bundles (faceMetrics, cardioMetrics, breathingMetrics, edaMetrics), all 16 ValidationCode states, and sdk.requestInsight() across a 5-Act Progressive Warm-Up Timeline that respects Presage's real measurement latency and confidence gates:

  1. Act I (0s Immediate Optical & Biomechanical Lock):
    • Reads .at(-1) on every repeated protobuf array emitted by decodeMetrics(buf).
    • face.talking: engages or disengages the Bio-Clutch Teleprompter and toggles the Speech-Pause Respiratory Multiplexer.
    • face.landmarks (478 points): calculates inner-lip vertical separation (#13 to #14 normalized by nose-to-chin #1 to #152) to scale scroll speed with vocal articulation; computes horizontal nose-to-eye symmetry (#1, #33, #263) for the Top-Bezel Eye-Line Cone; and projects 52 anatomical nodes onto the Privacy Wireframe Cloak canvas.
    • face.blinking: tracks rolling blink cadence (/min).
    • face.expression: maps all 8 confidence scores (ANGRY, CONTEMPT, DISGUST, FEAR, HAPPY, NEUTRAL, SAD, SURPRISE) and calculates cosine similarity against the current beat's delivery profile.
    • validationStatus (ValidationCode 0..7, 10..17): translates framing states into greenroom coaching cues and drives the Dynamic Screen Key-Light Bezel (illuminating a warm tungsten screen border when kTooDark = 5 fires).
  2. Act II (12s Cardiovascular rPPG & Arterial Horizon, confidence >= 40):
    • cardio.arterialPressureTrace: renders the live 60 FPS Arterial Horizon Ribbon directly beneath the active teleprompter line.
    • cardio.pulseRate: locks your personal speaking baseline (63.0 to 68.7 BPM at 82% to 86% confidence in our verification run) and applies viscous Cardio Tempo Damping if your heart rate climbs more than 12% above baseline.
  3. Act III (30s Speech-Pause Respiratory Multiplexer & Bellows, confidence >= 45 & talking === false):
    • During silent [BREATH GATE] pauses (face.talking === false), StagePulse samples breathing.upperTrace (thoracic) and breathing.lowerTrace (abdominal) to compute the Diaphragmatic Dominance Index: $$\text{DDI} = \frac{\text{RMS}(\text{lowerTrace})}{\text{RMS}(\text{lowerTrace}) + \text{RMS}(\text{upperTrace})}$$
    • Also reads breathing.rate, breathing.inhaleExhaleRatio, breathing.amplitude, breathing.respiratoryLineLength, breathing.baseline, and breathing.apnea (triggering an Apnea Rescue prompt if an unconscious breath-hold is detected during a pause).
  4. Act IV (35s Sympathetic Electrodermal Activity):
    • eda.trace: tracks phasic slope and micro-arousal drift when a Curveball Q&A interruption lands on screen.
  5. Act V (60s Autonomic HRV & Stage Presence Matrix, confidence >= 50):
    • cardio.hrv (rmssd, sdnn, meanNn, baevsky): combines vagal tone with DDI and pulseRate to classify delivery into the Stage Presence Matrix (Grounded Poise, Commanding Flow, High-Tempo Drive, or Breath-Hold Pause).

Prize Categories

I am submitting StagePulse for consideration across all eligible categories:

  • Best Overall Human-Sensing Experience: Combines all 4 SmartSpectra signal groups (face, cardio, breathing, eda), all 16 ValidationCode states, availableCameras(), useCamera() / useFile() / useCustomInput(), and requestInsight() into a unified broadcast studio that respects real SDK physics (including the Presage Breathing Model Card's non-talking constraint and progressive warm-up windows).
  • Most Creative or Delightful Use: Turns physiological sensing into The Living Auditorium, a reactive theater where deliberate silence (talking === false for 1.8s) physically narrows the stage spotlight (The Room Shift), vocal articulation drives kinetic teleprompter physics, and low room light (ValidationCode.kTooDark) turns your monitor bezel into a warm tungsten key-light.
  • Best Thoughtful Real-World Use: Solves a real problem faced by millions of engineers, founders, educators, and executives who present on camera every day, built around an explicit pre-hardware consent gate, a raw-video-suppressing Wireframe Cloak, and non-medical ergonomic framing.

Consent and Data Handling

Physiological and facial telemetry deserves strict boundaries. StagePulse enforces five concrete safeguards in code:

  1. Mandatory Pre-Hardware Consent Gate: StagePulseEngine.startSession() (src/spectra-engine.mjs) throws CONSENT_REQUIRED if consentConfirmed !== true. Neither camera capture nor file streaming starts before the speaker explicitly confirms consent in the Greenroom modal.
  2. Default Opt-Out of SDK Aggregate Telemetry (enableTelemetry: false): Unless the user explicitly checks the telemetry box in the Consent Gate, StagePulse initializes new SmartSpectraSDK({ enableTelemetry: false }) so aggregate session metrics are not sent on session stop.
  3. Privacy Wireframe Cloak (Default ON): Raw videoOutput RGB frames are suppressed by default. Instead, computeFaceGeometry() normalizes 52 anatomical landmark coordinates (0.0..1.0) and renders a geometric wireframe mesh on #wireframe-canvas. Zero camera frames are ever written to disk.
  4. Volatile 32 KB Ring Buffer & One-Click CSPRNG Wipe: Session scalars are held in a fixed 4,096-element Float64Array (32,768 bytes) in Node.js process RAM. Triggering POST /api/privacy/wipe stops and destroys the native SDK session, overwrites all 32,768 bytes with cryptographic random noise via crypto.randomFillSync(), computes a verifiable SHA-256 digest receipt, and zeroes every array.
  5. Strictly Non-Medical Ergonomic Framing: All feedback is framed and designed strictly as stagecraft, vocal pacing, and presentation ergonomics coaching, never as medical diagnosis, clinical monitoring, or treatment.

Top comments (0)