example-podcast-visualizer

Workflow for creating a podcast visualizer with multi-track audio mixing and DOM-based synchronization. Use when building audio-reactive compositions.

45 stars

Best use case

example-podcast-visualizer is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Workflow for creating a podcast visualizer with multi-track audio mixing and DOM-based synchronization. Use when building audio-reactive compositions.

Teams using example-podcast-visualizer should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/podcast-visualizer/SKILL.md --create-dirs "https://raw.githubusercontent.com/BintzGavin/helios/main/.agents/skills/helios-skills/skills/examples/podcast-visualizer/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/podcast-visualizer/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How example-podcast-visualizer Compares

Feature / Agentexample-podcast-visualizerStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Workflow for creating a podcast visualizer with multi-track audio mixing and DOM-based synchronization. Use when building audio-reactive compositions.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# Podcast Visualizer Workflow

This workflow demonstrates how to build a podcast visualizer that mixes multiple audio tracks (e.g., background music, voiceover) and drives visualizations based on timing.

## Quick Start

```html
<!-- Background Music (Loops, Starts at 0s) -->
<audio src="music.mp3" loop data-helios-offset="0"></audio>

<!-- Voiceover (Starts at 2s) -->
<audio src="voice.wav" data-helios-offset="2"></audio>

<!-- Muted Track (For analysis only) -->
<audio src="sfx.wav" muted></audio>
```

```typescript
const helios = new Helios({
  duration: 60,
  fps: 30,
  autoSyncAnimations: true // Required for DOM audio sync
});

// React to time
helios.subscribe((state) => {
  const time = state.currentFrame / state.fps;
  if (time >= 2) {
    showVoiceVisualizer();
  }
});
```

## Key Patterns

### 1. DOM-Based Audio Mixing
The Helios Renderer (in `dom` mode) automatically discovers `<audio>` and `<video>` elements in your DOM and mixes them into the final video.

- **Discovery:** Any element present in the DOM is eligible.
- **Attributes:**
  - `src`: The audio source.
  - `loop`: If present, the audio loops.
  - `muted`: If present, the audio is excluded from the mix (useful for logic-only tracks).
  - `volume`: Not supported as an attribute for mixing yet (defaults to 1.0). Use Renderer `audioTracks` option if precise volume control is needed, or bake it in.

### 2. Timing Control
Control when audio starts playing relative to the timeline using `data-helios-offset`.

```html
<!-- Starts playing at T=5 seconds -->
<audio src="intro.mp3" data-helios-offset="5"></audio>
```

- **Positive Offset (`5`):** Delays start by 5 seconds.
- **Negative Offset (`-5`):** Starts playing immediately, but from the 5-second mark of the audio file (Seek).

### 3. Visual Synchronization
Use `helios.subscribe` to drive visual elements based on `currentFrame`. Since audio is handled by the browser/Renderer, you just need to ensure your visuals match the expected timing.

```typescript
helios.subscribe(({ currentFrame, fps }) => {
  const time = currentFrame / fps;

  // Simple time-based trigger
  if (time > 10 && time < 20) {
    // Animate visualizer
  }
});
```

## Common Issues

### Browser Preview Sync
In the browser (Studio/Player), `data-helios-offset` is **NOT** automatically applied by the standard `<audio>` element. The `DomDriver` attempts to sync it, but precise start/stop behavior for offsets might vary compared to the frame-perfect Renderer.

**Workaround:** For perfect preview sync, you may need custom logic to `play()/pause()` audio elements in your `subscribe` loop, or rely on the Renderer verification.

### Audio Format
Ensure your audio formats (MP3, WAV, AAC) are supported by the browser and FFmpeg.

## Reference
- Example: `examples/podcast-visualizer/`
- Renderer: `packages/renderer/src/strategies/DomStrategy.ts`

Related Skills

example-vue

45
from BintzGavin/helios

Patterns for using Helios with Vue. Use when building compositions in a Vue environment.

example-vanilla

45
from BintzGavin/helios

Patterns for using Helios with Vanilla JavaScript/TypeScript. Use when building compositions without a framework, or for simple DOM/Canvas manipulations.

example-threejs

45
from BintzGavin/helios

Patterns for using Helios with Three.js and React Three Fiber. Use when creating 3D animations or integrating WebGL scenes.

example-tailwind-animation

45
from BintzGavin/helios

Learn how to use Tailwind CSS with Helios. Use for styling compositions and animating with utility classes.

example-svelte

45
from BintzGavin/helios

Patterns for using Helios with Svelte. Use when building compositions in a Svelte environment, utilizing Svelte stores for reactive frame updates.

example-solid

45
from BintzGavin/helios

Patterns for using Helios with SolidJS. Use when building compositions in a SolidJS environment, utilizing signals for fine-grained reactivity.

example-signals-animation

45
from BintzGavin/helios

Learn how to use Helios Signals for high-performance, fine-grained reactivity. Use for complex dependency graphs or when optimizing performance.

example-react

45
from BintzGavin/helios

Patterns for using Helios with React. Use when building compositions in a React environment.

example-pixi

45
from BintzGavin/helios

PixiJS integration patterns for Helios. Use when creating high-performance WebGL 2D animations with PixiJS.

example-p5-animation

45
from BintzGavin/helios

Learn how to use P5.js with Helios. Use when creating creative coding sketches or generative art.

example-lottie

45
from BintzGavin/helios

Lottie integration patterns for Helios. Use when rendering Lottie (Bodymovin) JSON animations synchronously with Helios.

example-gsap

45
from BintzGavin/helios

Patterns for using Helios with GSAP (GreenSock). Use when integrating GSAP timelines with the Helios timeline for precise scrubbing and rendering.