# Makepad VJ — live performance app over the Asset Server: video program # tiles with a two-slot crossfaded output window, two DJ music decks with an # equal-power crossfader, and a polyphonic one-shot SFX pad bank. # # All networking (discovery, auth, catalog/search, blob download, event # subscription, verified cache) lives in makepad-asset-client; this # crate contains only UI, playback/crossfade orchestration and presentation # adapters. [package] name = "makepad-vj" version = "0.1.0" edition = "2021" # src/bin/karaoke_align.rs makes this a two-binary package; without this, # `cargo run -p makepad-vj` refuses to guess and demands --bin. default-run = "makepad-vj" [dependencies] makepad-app-asset-server = { path = "../asset-server" } makepad-widgets = { path = "../../widgets" } makepad-asset-data = { path = "../../libs/asset/data" } # Own MP3 / Ogg Vorbis decoders for the music decks and SFX pads. makepad-audio-decode = { path = "../../libs/audio_decode" } # Four-stem source separation for the music decks' stem mix. makepad-ai-stems = { path = "../../libs/ai/models/stems" } # Whisper transcription of the separated vocals stem: karaoke subtitles. makepad-voice = { path = "../../libs/voice" } makepad-audio-lyrics = { path = "../../libs/audio_lyrics" } # Stems + lyrics as server-stored side-channels: the encode/role/publish # implementation shared with the asset-ui bake. makepad-audio-sidechannels = { path = "../../libs/audio_sidechannels" } makepad-asset-widgets = { path = "../../libs/asset/widgets" } makepad-asset-client = { path = "../../libs/asset/client" } # First-use model install (stem splitter + whisper): the asset-ai service's # resumable, sha256-verified downloader. Featureless — the same slice the # asset UI links — so none of the model backends come along. makepad-ai-hub = { path = "../../libs/ai/hub", default-features = false } makepad-asset-creator = { path = "../../libs/asset/creator" } # DREAM runs execute here now # The chat pane itself — ONE component, shared with the asset UI and the # game sandbox: the session on the server's chat broker, the worker thread, # the transcript with tool chips and the rate meter. makepad-chat-ui = { path = "../../libs/chat_ui" } # 3D program lane: skinned-GLB playback via the renderer. makepad-render = { path = "../../libs/render" } makepad-show-control = { path = "../../libs/show_control" } makepad-gltf = { path = "../../libs/gltf" } # Gaussian-splat program slots: XrSceneView offscreen pass + ViewSplat. makepad-xr = { path = "../../xr" } # Procedural placeholder thumbnails for bundled effect presets. jpeg-encoder = { path = "../../libs/jpeg-encoder", version = "0.6.1" } # WebP import: decoded once at import time, published as owned png bytes. makepad-webp = { path = "../../libs/webp" } # FULLY-LOCAL MODE: the VJ hosts its own Asset Server in-process, on # loopback, when no external store is reachable. Same crate asset-ui and the # sandbox embed — the VJ stays a THIN CLIENT over it either way, talking # HTTP to 127.0.0.1 exactly as it talks to a remote store. makepad-asset-store = { path = "../../libs/asset/store" } # Import: real first-frame thumbnails for mp4/mov, spectrogram/waveform # pictures for audio, and the dimension probes for stills. makepad-asset-importer = { path = "../../libs/asset/importer" } # REALTIME FRAME TWEENING: the whole in-betweener — the classical GPU # optical-flow pass chain, the neural (Practical-RIFE v4.26) producer # behind the same warp, the pair cache and the mode set. Extracted from # this app; the VJ is still its reference user. makepad-frametween = { path = "../../libs/frametween" } # VARIABLE-FRAMERATE IMPORT: the `mkfl` payload the player reads, the # classical (model-free) optical flow that fills it, and the all-intra # re-encode. Shared with the enhance backend, which fills the same box from # RIFE — one format, one parser, two producers. makepad-video-flow = { path = "../../libs/video_flow" } # ARCHIVE.ORG panel: search + swatch download of internet-archive video # and stills; the panel imports a chosen file into the asset store. makepad-archive-org = { path = "../../libs/archive_org" } # The streaming swatch's MP4 index: per-sample byte ranges for range play. makepad-mp4-index = { path = "../../libs/mp4_index" }