mirror of
https://github.com/storytold/soundcraft.git
synced 2026-10-28 12:36:47 -06:00
Video (new standalone crate soundcraft-video): - Pure-Rust H.264 (Baseline/Main/High), ProRes (all flavours) and Motion JPEG decoding with ISO-BMFF demux, adapted from FilmCraft's crates; fuzzed with mutated/truncated movies - TrackKind::Video with ClipContent::Video referencing Session.videos; file.import_video adds the picture track and the movie's audio; relinking on open; video.offset/online/list - Video and Video Universe windows, thumbnails on the timeline, background decoding Third-party plugins: - Plugin state (CLAP state ext, VST3 component + controller state) saved in sessions - Hosted instances created, state-loaded and dropped on the UI thread, never the audio thread - Plugin editors: floating CLAP GUIs and VST3 views on macOS (verified with Melodyne) - New isolated FFI crate soundcraft-au-host: Audio Units on macOS (effects and instruments, parameters, latency, MIDI, ClassInfo state), wired into the mixer and plugin browser UI: Window > Renderer (speaker layout with live levels and object positions), Window > UI Customization (interface scale, reduce motion), Window > Configurations > Auto-Update. Fix: saturating sample-index math in clip rendering (hostile stretch values overflowed). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
30 lines
1.2 KiB
Rust
30 lines
1.2 KiB
Rust
//! The SoundCraft session document.
|
|
//!
|
|
//! A [`Session`] is pure data: tracks with playlists of clips, the mixer (inserts, sends, routing,
|
|
//! automation), tempo/meter, memory locations and groups. Audio sample data lives in
|
|
//! [`SourcePool`] behind `Arc`s, so cloning a session for undo is cheap.
|
|
#![deny(clippy::unwrap_used, clippy::expect_used, clippy::panic, clippy::unimplemented, clippy::todo, clippy::unreachable)]
|
|
|
|
mod automation;
|
|
pub mod b64;
|
|
mod clip;
|
|
mod ids;
|
|
mod markers;
|
|
mod mixer;
|
|
mod session;
|
|
mod source;
|
|
mod track;
|
|
|
|
pub use automation::{AutoParam, AutomationLane, AutomationMode, AutomationPoint};
|
|
pub use clip::{Clip, ClipContent, Fade, FadeShape};
|
|
pub use ids::{BusId, ClipId, GroupId, MarkerId, SourceId, TrackId};
|
|
pub use markers::{Group, MarkerKind, MemoryLocation};
|
|
pub use mixer::{
|
|
Bus, ChannelFormat, INSERT_SLOTS, Insert, Mixer, OutputPath, Route, SEND_SLOTS, SendSlot, Speaker, SurroundPan, fader_db_to_pos, fader_pos_to_db,
|
|
};
|
|
pub use session::{BitDepthSetting, EditMode, EditState, SESSION_EXTENSION, Session, SessionError, Tool, TrackView, ZoomState};
|
|
pub use source::{Source, SourceAudio, SourcePool, VideoSource};
|
|
pub use track::{Playlist, TRACK_COLORS, Track, TrackHeight, TrackKind};
|
|
|
|
pub use soundcraft_time as time;
|