# Control Media Playback

> >-

- **Type:** Skill
- **Install:** `agentstack add skill-sumitaich1998-jarvisvr-control-media-playback`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [sumitaich1998](https://agentstack.voostack.com/s/sumitaich1998)
- **Installs:** 0
- **Category:** [AI & ML](https://agentstack.voostack.com/c/ai-and-ml)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [sumitaich1998](https://github.com/sumitaich1998)
- **Source:** https://github.com/sumitaich1998/jarvisvr/tree/main/skills/media/control-media-playback

## Install

```sh
agentstack add skill-sumitaich1998-jarvisvr-control-media-playback
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# Control Media Playback

Drive a `media_player` (and, for music, an optional `music_visualizer`) and
handle its transport events.

## Steps

1. **Resolve the source.** A named track/video → resolve a `source_url` +
   `media_type` (`audio|video`). "Play music" with no title → a default playlist.
2. **Start with `play_media`.** Spawns a `media_player` (`state:"playing"`).
3. **For music, add ambience** with `show_music_visualizer` (audio-reactive).
4. **Handle controls** (`client.interaction`, §5.11) with `holo.update`:
   - `play_pause` → toggle `state`.
   - `seek{position_ms}` → set `position_ms`.
   - `set_volume{volume}` → set `volume` (0–1).
   - `stop` → `state:"stopped"` or `holo.destroy`.
5. **Map speech to actions:** "turn it up" → `volume += 0.1`; "skip 30s" →
   `position_ms += 30000`.

## Output

`media_player` (`play_media`, props per registry.json):

```json
{ "widget_type": "media_player",
  "transform": { "anchor": "world", "billboard": true },
  "props": { "title": "Lo-fi Beats", "source_url": "https://cdn.jarvisvr.app/audio/lofi.mp3",
             "media_type": "audio", "state": "playing", "position_ms": 0,
             "duration_ms": 180000, "volume": 0.6, "loop": true },
  "interactions": ["tap","grab","resize","slider"] }
```

`music_visualizer` (`show_music_visualizer`):

```json
{ "widget_type": "music_visualizer",
  "props": { "track": "Lo-fi Beats", "artist": "Chillhop", "style": "bars",
             "amplitude": [0.2,0.6,0.9,0.4,0.7], "color": "#7FE7FF", "playing": true } }
```

## Edge cases

- **Source not found** → say so; offer alternatives, don't fabricate a URL.
- **Nothing playing** ("pause") → no-op with a gentle note.
- **Volume bounds** → clamp to 0.0–1.0.
- **Video vs audio** → video uses a larger `world`-anchored player; keep it out of
  the user's path (defer placement to `stage-agent`).
- **Ambient background loop** (rain, café) → that's `set-soundscape`.
- **Generate cover art / imagery** → `create-image`.

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [sumitaich1998](https://github.com/sumitaich1998)
- **Source:** [sumitaich1998/jarvisvr](https://github.com/sumitaich1998/jarvisvr)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-sumitaich1998-jarvisvr-control-media-playback
- Seller: https://agentstack.voostack.com/s/sumitaich1998
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
