Skip to main content

Crate project_io

Crate project_io 

Source
Expand description

project_io — Serialización, guardado y carga de proyectos DAW.

§Formato de archivo (.dawproj)

┌─────────────────────────────────────┐
│ MAGIC     [8 bytes]  "DAWPROJ\0"    │
│ VERSION   [4 bytes]  u32 le         │
│ FLAGS     [4 bytes]  u32 le         │
│ JSON_LEN  [8 bytes]  u64 le         │
│ BLOB_LEN  [8 bytes]  u64 le         │
│ CHECKSUM  [8 bytes]  FNV-1a 64      │
├─────────────────────────────────────┤
│ JSON_BODY [JSON_LEN bytes] UTF-8    │  ← estado del proyecto (legible)
├─────────────────────────────────────┤
│ BLOB_BODY [BLOB_LEN bytes]          │  ← estados opacos de plugins (binario)
└─────────────────────────────────────┘

La separación JSON + BLOB permite editar el proyecto a mano si es necesario sin corromper los estados binarios de los plugins.

Re-exports§

pub use format::FileHeader;
pub use format::FILE_MAGIC;
pub use format::CURRENT_VERSION;
pub use schema::ProjectSchema;
pub use schema::TrackSchema;
pub use schema::ClipSchema;
pub use schema::NoteSchema;
pub use schema::MixerSchema;
pub use schema::ChannelSchema;
pub use schema::PluginSchema;
pub use schema::AutomationSchema;
pub use serializer::ProjectSerializer;
pub use deserializer::ProjectDeserializer;
pub use autosave::AutoSave;
pub use history::ProjectHistory;
pub use history::Snapshot;
pub use error::ProjectIoError;

Modules§

autosave
deserializer
error
format
history
schema
Schema del proyecto en JSON.
serializer