Audio sources
Toys that support audio offer three input modes:| Source | Description | Permission required |
|---|---|---|
| Microphone | Live audio from your device microphone | Yes (browser prompt) |
| Demo audio | Built-in procedural audio track | No |
| YouTube tab capture | Audio from a YouTube video in a separate tab | Yes (tab audio permission) |
Microphone setup
Microphone input delivers the most responsive experience for audio-reactive toys.Click the microphone button
When a toy loads, click Start with microphone (or Retry microphone access if previously blocked).
Grant permission
Your browser will prompt for microphone access. Click Allow to continue.
If you see a timeout or “blocked” error, check your browser’s site permissions:
- Chrome/Edge: Click the lock icon in the address bar → Site settings → Microphone → Allow
- Firefox: Click the shield icon → Permissions → Microphone → Allow
- Safari: Safari menu → Settings for this website → Microphone → Allow
Microphone troubleshooting
Permission denied
Permission denied
If microphone access is blocked:
- Open your browser’s site permissions (see above)
- Set Microphone to Allow
- Refresh the page
- Click Retry microphone access
Request timeout
Request timeout
If the microphone request times out (20 seconds):
- Close the permission prompt
- Re-open permissions in your browser settings
- Click Retry microphone access
Unsupported browser
Unsupported browser
If your browser cannot access the microphone:Fallback options:
- Use demo audio (no permission needed)
- Switch to Chrome, Edge, Firefox, or Safari
- Use YouTube tab capture for shared audio playback
Demo audio
Demo audio provides instant playback without microphone permissions. It uses a procedural audio track generated by the app.Click the demo button
Click Preview instantly with demo audio (or Use demo audio on the fallback row).
YouTube tab capture
YouTube tab capture lets you play a toy with audio from a YouTube video running in a separate tab.Paste a YouTube URL
In the YouTube audio section, paste a full YouTube link:Supported formats:
youtube.com/watch?v=...youtu.be/...youtube.com/embed/...youtube.com/shorts/...
Capture tab audio
Click Use YouTube audio. Your browser will prompt you to select a tab to capture.Select the tab with the YouTube video, then click Share.
Recent videos
The YouTube controller stores your 5 most recent video IDs inlocalStorage:
Audio flow lifecycle
The microphone flow helper (microphone-flow.ts) manages permission requests, retries, and fallback guidance:
Flow states
Error
If access fails, the status updates with a reason and fallback options:
- Denied: “Microphone access is blocked. Allow it in your browser or system privacy settings, then retry or load the demo audio.”
- Timeout: “Microphone request timed out. Re-open permissions and click retry, or load the demo audio fallback.”
- Unsupported: “This browser cannot capture microphone audio. Switch browsers or load the demo audio.”
Error recovery
When microphone access fails, the flow automatically:- Updates the start button to Retry microphone access
- Shows the demo audio fallback button
- Displays a toast with recovery instructions:
Frequency analysis
Once audio is active, theFrequencyAnalyser extracts multi-band energy for toys to react to:
Next steps
Performance
Adjust quality presets and pixel ratio for smooth playback
Accessibility
Configure motion comfort and reduced-motion modes