mirror of
https://github.com/storytold/soundcraft.git
synced 2026-11-15 06:42:16 +00:00
* Review fixes after the craft-audio switch; pin craft-audio at craft-libs main Follow-up to #1506, for its review comments: - convert: a decode that concealed damaged packets is reported as a warning, and --in-place refuses to replace the source with it. - convert: the decoded speaker layout goes to the encoder, so 5.1 with side surrounds stays side surrounds in WAV and FLAC. - FileFormat::of names an MP4 or QuickTime file by its codec: AAC or HE-AAC is Aac, ALAC is Alac, anything else (Opus, AC-3, PCM) is Other. - Bounce keeps a picked extension that already names the format (Mix.aifc, Mix.AIFF), so the file written is the one the save dialog confirmed. - rust-version is 1.95: craft-audio, craft-media and craft-ui declare it, so 1.90 was not a version the workspace builds with. craft-audio and craft-media move to craft-libs main 7db4645d. * MIDI: take Standard MIDI Files and the sequence model from craft-midi craft-midi in craft-libs was moved from this crate (storytold/craft-libs#884): smf.rs, sequence.rs, the error type and their tests. soundcraft-midi now re-exports them, so every caller keeps its imports, and keeps what is SoundCraft's own: the editing operations, the display names and XorShift. The SMF and Sequence tests are deleted here; they run in craft-midi, which also adds one for the track limit. The serde names do not change (the same derives behind craft-midi's serde feature), so sessions read as before.
122 lines
5.9 KiB
TOML
122 lines
5.9 KiB
TOML
[workspace]
|
|
resolver = "3"
|
|
members = ["crates/*", "apps/*", "xtask"]
|
|
default-members = ["crates/*", "apps/*", "xtask"]
|
|
|
|
[workspace.package]
|
|
version = "0.20.1"
|
|
edition = "2024"
|
|
license = "MIT OR Apache-2.0"
|
|
rust-version = "1.95"
|
|
repository = "https://github.com/storytold/soundcraft"
|
|
|
|
[workspace.dependencies]
|
|
# internal
|
|
soundcraft-time = { path = "crates/time" }
|
|
soundcraft-midi = { path = "crates/midi" }
|
|
soundcraft-video = { path = "crates/video" }
|
|
soundcraft-dsp = { path = "crates/dsp" }
|
|
soundcraft-clap-host = { path = "crates/clap-host" }
|
|
soundcraft-vst3-host = { path = "crates/vst3-host" }
|
|
soundcraft-au-host = { path = "crates/au-host" }
|
|
soundcraft-model = { path = "crates/model" }
|
|
soundcraft-mix = { path = "crates/mix" }
|
|
soundcraft-engine = { path = "crates/engine" }
|
|
soundcraft-playback = { path = "crates/playback" }
|
|
soundcraft-automation = { path = "crates/automation" }
|
|
soundcraft-ui-egui = { path = "crates/ui-egui" }
|
|
|
|
# foundation
|
|
thiserror = "2"
|
|
clap = { version = "4", features = ["derive", "env"] }
|
|
clap_complete = "4.6.11"
|
|
clap_mangen = { version = "0.3.3", features = ["env"] }
|
|
serde = { version = "1", features = ["derive", "rc"] }
|
|
serde_json = { version = "1", features = ["float_roundtrip"] }
|
|
log = "0.4"
|
|
# All date/time conversion goes through chrono (no hand-rolled calendar code beyond the 400-year range extension; AGENTS.md).
|
|
chrono = { version = "0.4.45", default-features = false, features = ["std"] }
|
|
rayon = "1"
|
|
# Whether an output path is one of the inputs (the CLI refuses to replace an input unless asked).
|
|
same-file = "1"
|
|
proptest = "1"
|
|
|
|
# audio
|
|
rustfft = "6"
|
|
# Session bundles (one file holding a session and its audio, for the browser): stored entries only.
|
|
zip = { version = "9", default-features = false }
|
|
cpal = "0.18"
|
|
|
|
# Which file paths stored in a session may be opened.
|
|
craft-docpath = { version = "0.1.0", git = "https://github.com/storytold/craft-libs", rev = "6e03f65bf45181db77ba6229716e6624db9eb25b" }
|
|
|
|
# Video containers and bitstreams, shared with the other craft apps.
|
|
craft-media = { version = "0.1.0", git = "https://github.com/storytold/craft-libs", rev = "7db4645d1f1673df3b064de32faa3335bcdd7aed" }
|
|
# Audio file formats, codecs and waveform overviews, shared with the other craft apps. It shares
|
|
# types with craft-media, so both stay on one rev.
|
|
# Standard MIDI Files and the note/controller model, shared with the other craft apps.
|
|
craft-midi = { version = "0.1.0", git = "https://github.com/storytold/craft-libs", rev = "7db4645d1f1673df3b064de32faa3335bcdd7aed", features = ["serde"] }
|
|
craft-audio = { version = "0.1.0", git = "https://github.com/storytold/craft-libs", rev = "7db4645d1f1673df3b064de32faa3335bcdd7aed", features = ["decode", "lossless-encode", "peaks", "serde"] }
|
|
# craft-update: app-specific pretend versions apply to startup and manual checks.
|
|
craft-update = { version = "=0.1.0", git = "https://github.com/storytold/craft-libs", rev = "6e03f65bf45181db77ba6229716e6624db9eb25b", features = ["egui"] }
|
|
|
|
# ui
|
|
craft-ui = { version = "0.1.0", git = "https://github.com/storytold/craft-libs", rev = "6e03f65bf45181db77ba6229716e6624db9eb25b", features = ["serde"] }
|
|
egui = { version = "0.37" }
|
|
# Resizable table columns (About ▸ Contributors / Models); no image loaders.
|
|
egui_extras = { version = "0.37", default-features = false }
|
|
eframe = { version = "0.37", default-features = false }
|
|
# Monotonic clock on native and the browser (the `web_time::Instant` panics-free equivalent).
|
|
web-time = "1.1"
|
|
egui_kittest = "0.37"
|
|
rfd = "0.17"
|
|
image = { version = "0.25", default-features = false, features = ["png"] }
|
|
|
|
[workspace.lints.rust]
|
|
unsafe_code = "forbid"
|
|
|
|
[workspace.lints.clippy]
|
|
cognitive_complexity = "deny"
|
|
wildcard_imports = "deny"
|
|
dbg_macro = "warn"
|
|
todo = "warn"
|
|
too_many_arguments = "deny"
|
|
type_complexity = "allow"
|
|
|
|
[profile.dev.package."*"]
|
|
opt-level = 2
|
|
debug = false
|
|
|
|
[profile.dev]
|
|
opt-level = 1
|
|
debug = "line-tables-only"
|
|
|
|
# symphonia's FLAC decoder overflows an i32 add on 32-bit LPC FLAC; the wrapped value is correct
|
|
# (craft-audio README, "symphonia").
|
|
[profile.dev.package.symphonia-bundle-flac]
|
|
overflow-checks = false
|
|
|
|
[profile.release]
|
|
opt-level = 3
|
|
lto = "thin"
|
|
codegen-units = 16
|
|
debug = 0
|
|
|
|
# Keep the complete egui family and native event bridge on reviewed fork commits.
|
|
[patch.crates-io]
|
|
ecolor = { git = "https://github.com/storytold/egui.git", rev = "6d518fc799681571963842f95b55a6b68431b15a" }
|
|
emath = { git = "https://github.com/storytold/egui.git", rev = "6d518fc799681571963842f95b55a6b68431b15a" }
|
|
epaint = { git = "https://github.com/storytold/egui.git", rev = "6d518fc799681571963842f95b55a6b68431b15a" }
|
|
epaint_default_fonts = { git = "https://github.com/storytold/egui.git", rev = "6d518fc799681571963842f95b55a6b68431b15a" }
|
|
egui = { git = "https://github.com/storytold/egui.git", rev = "6d518fc799681571963842f95b55a6b68431b15a" }
|
|
egui-winit = { git = "https://github.com/storytold/egui.git", rev = "6d518fc799681571963842f95b55a6b68431b15a" }
|
|
egui-wgpu = { git = "https://github.com/storytold/egui.git", rev = "6d518fc799681571963842f95b55a6b68431b15a" }
|
|
egui_glow = { git = "https://github.com/storytold/egui.git", rev = "6d518fc799681571963842f95b55a6b68431b15a" }
|
|
egui_extras = { git = "https://github.com/storytold/egui.git", rev = "6d518fc799681571963842f95b55a6b68431b15a" }
|
|
egui_kittest = { git = "https://github.com/storytold/egui.git", rev = "6d518fc799681571963842f95b55a6b68431b15a" }
|
|
egui_system_font_provider = { git = "https://github.com/storytold/egui.git", rev = "6d518fc799681571963842f95b55a6b68431b15a" }
|
|
eframe = { git = "https://github.com/storytold/egui.git", rev = "6d518fc799681571963842f95b55a6b68431b15a" }
|
|
egui_demo_lib = { git = "https://github.com/storytold/egui.git", rev = "6d518fc799681571963842f95b55a6b68431b15a" }
|
|
egui_inspection = { git = "https://github.com/storytold/egui.git", rev = "6d518fc799681571963842f95b55a6b68431b15a" }
|
|
winit = { git = "https://github.com/storytold/winit.git", rev = "a517b3846ee8457d84ee4975110bfda6797c44dc" }
|