mirror of
https://github.com/JezzWTF/vibepod.git
synced 2026-06-13 03:58:07 +00:00
47e0c7e512
- Extract WAV assembly (buildWav, mergeFloat32Arrays, decodeFloat32Chunk, SAMPLE_RATE) into web/lib/audio/wav.ts so it can be reused by the Studio playback engine and library waveform previews - Add server/waveform.py with compute_peaks() / write_peaks() — reads any WAV, mixes to mono, returns min/max peak arrays matching the WaveformPeaks TypeScript type - Add server/ids.py with prefixed URL-safe ID helpers (gen_id, proj_id, asset_id, etc.) using stdlib secrets — no new dependency - Add docs/studio-build-plan.md — full execution spec covering stack decisions, data models, API contract, component hierarchy, phase breakdown and acceptance criteria - Ignore data/ directory (generated audio, waveforms, SQLite DB)
36 lines
529 B
Python
36 lines
529 B
Python
"""Stable, URL-safe ID generation for VibePod entities."""
|
|
|
|
import secrets
|
|
|
|
|
|
def _make_id(prefix: str) -> str:
|
|
return f"{prefix}_{secrets.token_urlsafe(8)}"
|
|
|
|
|
|
def gen_id() -> str:
|
|
return _make_id("gen")
|
|
|
|
|
|
def proj_id() -> str:
|
|
return _make_id("proj")
|
|
|
|
|
|
def asset_id() -> str:
|
|
return _make_id("asset")
|
|
|
|
|
|
def track_id() -> str:
|
|
return _make_id("track")
|
|
|
|
|
|
def clip_id() -> str:
|
|
return _make_id("clip")
|
|
|
|
|
|
def block_id() -> str:
|
|
return _make_id("block")
|
|
|
|
|
|
def take_id() -> str:
|
|
return _make_id("take")
|