makepad/apps/vj/Cargo.toml
Admin 53f0e965f8 vj: the DJ/VJ app exposes itself to the desktop assistant
A service over the engine the UI already drives: status (what is live
and next, the fader, overlay, autopilot, bpm), search over the catalog,
cue (the UI's content-click path), fader, next, autopilot with a style,
overlay, and the decks — deck_play, deck_stop, deck_load, crossfade —
through the same functions the console's controls call. A context line
follows the live item, fader and autopilot. Written by the delegate from
the sheets/files shapes; vj's ai tests 4, the binary suite 821 (the two
media decode-pool timing tests fail on this Mac before and after).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-02 20:03:54 +02:00

94 lines
5.3 KiB
TOML

# 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-widgets = { path = "../../widgets" }
makepad-ai-services = { path = "../../libs/ai/services" }
makepad-score-view = { path = "../../libs/score_view" }
makepad-piano-model = { path = "../../libs/piano_model" }
makepad-drumkit = { path = "../../libs/drumkit" }
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-ai-speech = { path = "../../libs/ai/models/speech", default-features = false, features = ["whisper"] } # whisper for lyrics alignment
makepad-system-speech = { path = "../../libs/system_speech" } # OS recognizer fallback for lyrics alignment
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, features = ["local"] }
# Hub-installed local models the DJ page runs in-process: Basic Pitch for
# the bass/melody scores, Beat This! for beats and downbeats; the shared
# install panel does download + licence acknowledgement.
makepad-ai-hub-ui = { path = "../../libs/ai/hub_ui" }
makepad-ai-notes = { path = "../../libs/ai/models/notes" }
makepad-ai-beats = { path = "../../libs/ai/models/beats" }
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.
# 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" }
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
makepad-app-asset-server = { path = "../asset-server" }
makepad-asset-store = { path = "../../libs/asset/store" }
[target.'cfg(target_arch = "wasm32")'.dependencies]
makepad-asset-store = { path = "../../libs/asset/store", default-features = false, features = ["embedded"] }
[dev-dependencies]
makepad-audio-encode = { path = "../../libs/audio_encode" }