Communitygithub.com

Minara Video Music & SFX Generator

Generates background music and synchronized sound effects for Minara videos based on a per-second script. Translates scene mood and on-screen actions into a cue sheet and renders BGM and SFX locally using numpy synthesis, with optional ducking under voiceovers.

What is Minara Video Music & SFX Generator?

This skill, designed for use with Minara video projects, transforms a per-second script into a fully produced audio track with background music (BGM) and sound effects (SFX). The process begins by analyzing the script's mood and visible actions (taps, typing, notifications, transitions) to create a detailed cue sheet (`cues.json`) defining music sections with varying energy levels and timed SFX. The operator reviews and approves the cue sheet before rendering, ensuring creative control. Rendering is performed locally using pure numpy synthesis, making it free and deterministic—identical inputs always produce identical audio. The output includes a main mix (`bgm.wav`), a ducked version where BGM volume lowers during voiceovers (`bgm-duck.wav`), and a preview mix (`preview-mix.wav`) for listening. The skill supports a wide range of music section types (from silent to climax) and numerous SFX types (e.g., tap, typing, success, whoosh), all with adjustable parameters. It integrates seamlessly with HyperFrames for multi-track editing and is ideal for creating professional, sync-sound video demos, tutorials, or promotional content without external services or costs.

Works with✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/OliviaPp8/minara-video-skills/tree/HEAD/skills/minara-music

Ask in your favorite AI

Open a new chat with this agent skill pre-loaded.

Documentation

/minara-music — Generate music + sound effects from the script

Turn the video's per-second script into a music cue sheet, cues.json, then synthesize the BGM and picture-synced sound effects locally. Synthesis is pure local numpy and the output is deterministic (the same cues + seed always produce the same audio). It calls no external service and costs nothing.

Source: the scoring approach from the Minara V2 launch film, generalized into a reusable script; examples/v2-launch.json is that film's cue sheet.

Workflow (in order)

  1. Read the script: get the per-second script from minara-video (or the storyboard / voiceover timing sheet). If the script has "sound atmosphere" or "music" columns, follow them; if not, judge from the mood of the picture.
  2. Write the cue sheet: in the project's audio-src/cues.json, write:
    • duration (= final video length), bpm (default 120), key (default A minor; for bright/celebratory pieces you can use C major), seed.
    • sections: cut the script into music sections, pick one energy per section, and use note to describe the matching picture (for easy cross-reference).
    • sfx: each visible action in the script (tap, typing, order filled, notification popping up, transition, lock landing) gets one sound effect, timed to the second given in the script.
  3. Show the operator the sheet first; don't render yet: in markdown tables, list "time range / energy / matching picture" and "sfx time / type / matching action", and wait for them to say OK before rendering. They edit the sheet, not the code.
  4. Render:
    python3 ~/.claude/skills/minara-music/scripts/make_music.py <project>/audio-src/cues.json -o <project>/assets [--vo <project>/assets/vo.wav]
    
  5. Self-check: the script prints each section; then measure loudness per section to confirm climax is loudest, breakdown/outro clearly drop back, and ducking is working. For listening issues (too busy, a sound effect stealing focus), adjust level / gain and re-render; each render takes a few seconds.
  6. Deliver: give the path to bgm.wav (or bgm-duck.wav), and use open -R to highlight preview-mix.wav so they can listen. In HyperFrames, add it as an audio track, with the voiceover on a separate track.

Output

FileContents
bgm.wavMusic + sound effects, 48 kHz stereo, -1 dBFS peak, 0.4 s fade-in at the start and 3.2 s fade-out at the end
bgm-duck.wavGenerated when there is a voiceover: music is lowered by duck_db (default -8 dB) where speech occurs; sound effects are not ducked
preview-mix.wavGenerated when there is a voiceover: music + voiceover mixed together, for listening only, not for the final video

energy section types

energySoundUsed for
silentNo musicPauses that need complete silence
introLow drone + soft padOpening, logo, data converging
lightPad + light arpeggio + sparse beatMobile interactions, lightweight feature demos
buildAdds bass and a kick on every beat, automatic riser at the end of the sectionGradual build-up leading to a key moment
fullFull drum kit + clap + bass + arpeggioContinuous showcase of core features (backtesting, going live, automation)
breakdownDrops drums and bass, leaving only pad and a soft arpeggio; the kick returns in the last barScene changes, sections about security/privacy that need to "breathe"
climaxFullest: full drum kit + lead melody + crash at the section start; automatically adds a riser if the previous section is not buildProduct name / launch claim appears
outroResolves on the tonic chord + brand bell, fading out with the whole mixEnd card, CTA

Each section can take "level": 0.5–1.3 to fine-tune its volume. Chords follow global bars (minor i–VI–III–VII, major I–V–vi–IV), so they don't break across sections.

Sound effect types (sfx)

typeSoundTypical actionOptional parameters
tapShort clickButton tap, selectiongain
typingContinuous typing ticksTyping in an input fieldchars, cps (characters/second, matching the on-screen typing speed)
successTwo rising bell tonesOrder filled, strategy runninggain
notifyThree-note alertNotification or reminder popping upgain
bellSingle bell toneAvatar/logo appearsnote (MIDI, default 81)
blipsShort tones stepping upwardBacktest progress, data loadingcount, step (seconds), note
sparkleShimmering grains + breathy noiseParticles converging, openingdur
riserRising noiseManually added transition build-updur
whooshReverse sweepWindow collapsing, push/pull transitiondur
thudLow lock-in thudLock, confirmation, heavy landinggain
crashCymbalExtra accentgain

Every sound effect can take gain to adjust its volume.

Rules

  • Sound effects follow visible actions only: if there is no matching action on screen, add no sound effect, the same as "don't add text casually".
  • Copy timings from the script; don't estimate: the sfx t uses the actual seconds from the per-second script / animation timeline; cps for typing uses the typing speed in the animation.
  • If the script's length or order changes, update cues.json first and re-render; don't stretch the audio by hand.
  • Don't use external AI music services or tracks downloaded from the web; when commercially licensed music is needed, the operator provides the file.

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

OliviaPp8/minara-video-skills

Create Minara product guide/tutorial videos from screen recordings supplied by the operator. Use for /minara-guide-video, “给录屏加字幕配音”, retiming a new recording cut, building a timeline approval player, or correcting caption/product meaning. Drives caption-recording from source analysis through pre-render approval, final verification, and local delivery. Not for synthetic HyperFrames marketing videos.

OliviaPp8/minara-video-skills

Make Minara use case / beginner tutorial videos (mobile App or desktop), rebuilding the product UI in HyperFrames code and walking through the real user path step by step. Unlike minara-video (marketing demo, UI redesign allowed), this skill requires a faithful UI: copy, layout, components, and interaction paths all follow the product frontend code and screen recordings. Triggers: "use case 视频", "教程视频", "操作演示", "新手教程", "按 App 界面做一个视频"; also makes covers for these videos ("封面", "cover", "缩略图").

OliviaPp8/minara-video-skills

Write Minara video scripts before any animation work — launch / promo films, single-scene supplements, use case tutorials. Turns a brief, product screenshots, frontend code, Figma frames or a feature note into an English-only script doc built around a keyframe sheet; each keyframe has a still image (rendered from UI code, exported from Figma, or AIGC-generated from screenshots), a picture description, the voiceover line, on-screen text (花字) with style, timing and duration, and the BGM style / sound cues. Also covers what each scene must land, user flow + UI copy, voiceover word budget and open questions, in a calm, neutral, natural voice. Then hands off to minara-video, minara-usecase-video and minara-music. Use for /minara-videoscript, "写视频脚本", "视频脚本", "分镜脚本", "关键帧", "关键帧脚本", "花字", "补充脚本", "旁白稿", "video script", "voiceover script", "keyframes".

OliviaPp8/minara-video-skills

The operator's standard workflow for making Minara marketing / launch / demo videos. Built on the hyperframes skill, with a stricter process - confirm style → high-level storyboard → copy → build each scene separately → confirm a per-second script → iterate on a local test page → render only once the user is satisfied.

Related Skills