sfx-picker
برای هر لحظه از انیمیشن، افکت صوتی مناسب را انتخاب و به timeline وصل میکند.
این skill حرکتها و keyframeهای یک composition را بررسی میکند و از میان ۱۴۸ افکت کتابخانهی Cozer، مناسبترین صدا را برای هر لحظه انتخاب میکند؛ از click و pop تا glitch، bell و rizer.
خروجی شامل cue sheet زمانبندیشده، مسیر دقیق فایلها و snippet آماده برای Browser، HyperFrames یا FFmpeg است. این کار هماهنگی صدا و تصویر را سریعتر میکند و جلوی انتخاب نام فایل اشتباه یا اجرای چندبارهی افکتها را میگیرد.
چه چیزی میگیرید
- فهرست لحظههای بصری همراه با زمان، عنصر متحرک و حس موردنظر
- انتخاب دقیق فایل SFX از catalog بههمراه مسیر repo-relative
- cue sheet آماده برای اتصال افکتها به timeline
- snippet JavaScript برای Browser و HyperFrames با preload و fire-once guard
- دستور FFmpeg برای mix کردن SFX با خروجی ویدئو
برای چه کاری خوب است
- ساخت motion graphics، title sequence و UI animation با صدای هماهنگ
- پروژههای HyperFrames که به cueهای دقیق صوتی نیاز دارند
- افزودن click، glitch، pop یا transition sound به ویدئوهای exportشده
- تیمهایی که میخواهند از کتابخانهی آمادهی Cozer بدون جستوجوی دستی استفاده کنند
برای چه کاری نیست
- ساخت موسیقی متن، soundscape یا طراحی کامل صدای یک پروژه
- پروژههایی که به افکتهای خارج از کتابخانهی Cozer نیاز دارند
- میکس حرفهای و master نهایی صدا
دربارهٔ این اسکیل
SFX Picker - Cozer Motion SFX Library
148 curated sound effects across 10 categories, purpose-built for motion graphics, UI animations, and editorial video. Every file lives under assets/sfx/ in this repository and is ready to use in HyperFrames, ffmpeg pipelines, After Effects, or browser-based HTML compositions.
Before you start
Read references/catalog.md in full before picking any sound. It contains every filename, category, and recommended use case. Never invent a filename or path.
Step 1: Identify the visual moments that need sound
Map the animation to a list of keyframe moments. For each moment, state:
- What moves (element name, transform)
- When it moves (time in seconds from the composition start)
- The emotional intent (punchy, soft, glitchy, mechanical, organic)
Example moment list:
0.0s: hero title slides in from left - punchy, confident
0.4s: subtitle fades up - soft, airy
1.2s: CTA button appears - crisp click, satisfying
2.0s: background grid glitches - digital, corrupted
Step 2: Match each moment to a category
Use the category guide below. Open references/catalog.md to pick the exact file.
| Category | Path | Best for |
|---|---|---|
crisp | assets/sfx/crisp/ | Snappy element reveals, cuts, punchy transitions |
ui-sounds | assets/sfx/ui-sounds/ | Interface interactions, sci-fi menus, confirmations |
pop | assets/sfx/pop/ | Bubble reveals, element pop-ins, list items |
digital-click | assets/sfx/digital-click/ | Button clicks, futuristic UI taps, typewriter text |
normal-click | assets/sfx/normal-click/ | Soft button presses, subtle taps |
bell | assets/sfx/bell/ | Notifications, soft dings, light accents |
message | assets/sfx/message/ | Ping notifications, message send, iOS-style chimes |
glitch | assets/sfx/glitch/ | Corrupted reveals, error states, data glitches |
gear | assets/sfx/gear/ | Mechanical transitions, typewriter scrolls, slow reveals |
rizer | assets/sfx/rizer/ | Build-up before a big reveal, rising energy, final hold |
Step 3: Output a cue sheet
After picking sounds, produce a cue sheet in this format:
TIME CATEGORY FILE NOTES
0.0s crisp Crisp (14).mp3 Title slide: punchy cut
0.4s ui-sounds ES_UI, Positive 02 - Epidemic Sound.mp3 Subtitle appears
1.2s digital-click ui degital click by clips.mp3 CTA button appears
2.0s glitch UIGlitch_Futuristic_Machines_Devices_Glitch_2_Ocular_Sounds_Sci.wav Grid glitch
Step 4: Deliver paths and an integration snippet
For each picked SFX, give the full repo-relative path and a ready-to-use snippet.
Browser / HyperFrames:
// Preload all SFX at composition init
const sfx = {
titleSlide: new Audio('assets/sfx/crisp/Crisp (14).mp3'),
ctaClick: new Audio('assets/sfx/digital-click/ui degital click by clips.mp3'),
glitch: new Audio('assets/sfx/glitch/UIGlitch_Futuristic_Machines_Devices_Glitch_2_Ocular_Sounds_Sci.wav'),
};
// Fire at seek(t) when t crosses the cue time (fire-once guard):
let fired = {};
function maybeFire(t) {
if (t >= 0.0 && !fired.titleSlide) { sfx.titleSlide.play(); fired.titleSlide = true; }
if (t >= 1.2 && !fired.ctaClick) { sfx.ctaClick.play(); fired.ctaClick = true; }
if (t >= 2.0 && !fired.glitch) { sfx.glitch.play(); fired.glitch = true; }
}
ffmpeg mixdown (for video export):
ffmpeg -i video.mp4 \
-i "assets/sfx/crisp/Crisp (14).mp3" \
-i "assets/sfx/digital-click/ui degital click by clips.mp3" \
-filter_complex "
[1:a]adelay=0|0[sfx0];
[2:a]adelay=1200|1200[sfx1];
[0:a][sfx0][sfx1]amix=inputs=3:normalize=0[aout]
" \
-map 0:v -map "[aout]" -c:v copy -c:a aac -shortest output.mp4
Rules
- Never guess a filename. Check
references/catalog.mdfirst. - Prefer short, punchy sounds for fast cuts. Reserve
rizerfor a single composition-level energy build. - Crisp sounds under 0.5 s work best on element reveals. Do not stack more than three simultaneous SFX cues.
- Files are in
.mp3,.wav,.aac, and one.mp4(audio-only). All 148 are probed valid. - Duplicate file
GearPlastic_AP1.475 - Copy.mp3is identical toGearPlastic_AP1.475.mp3. Use the original.
What I learned the hard way
- Preload before seek(0). Browsers silently skip audio if the file has not buffered. Create
new Audio(...)at init, not at cue time. - Fire-once guard prevents double-triggers. Calling
seek(t)multiple times for the same frame re-fires the sound. Track which cues have already played and clear the guard only on full composition reset. - ffmpeg adelay is in milliseconds.
adelay=1200|1200means 1.2 seconds, not 1200 seconds. - Crisp sounds disappear in loud music. Boost SFX by 3 to 6 dB with
volume=2.0in the amix chain when the background track is dense. - The rizer is one per composition. It sounds wrong when it plays twice. Gate it behind a flag.