From 0a1d68cb2dfc752406fc8534c676da8ff3ded227 Mon Sep 17 00:00:00 2001 From: Nikolai Rodionov Date: Sun, 23 Nov 2025 17:53:49 +0100 Subject: [PATCH] WIP: Still nothing meaningful Signed-off-by: Nikolai Rodionov --- engine/src/main.rs | 19 ++++++++++++++++++- lib/src/lib.rs | 8 ++++---- lib/src/metadata.rs | 10 +++++----- lib/src/project.rs | 12 +++++++----- lib/src/region.rs | 10 +++++----- lib/src/track.rs | 13 ++++++------- 6 files changed, 45 insertions(+), 27 deletions(-) diff --git a/engine/src/main.rs b/engine/src/main.rs index 0fca070..50bc9f8 100644 --- a/engine/src/main.rs +++ b/engine/src/main.rs @@ -1,6 +1,23 @@ -use lib; +use lib::{self, metadata::Metadata, track::Track}; + fn main() { + + let mut current_project = lib::project::Project{ + name: "test".to_string(), + tracks: None, + regions: None, + current_sample: 0 + }; + + let track = Track{ + metadata: Metadata::new("test".to_string()), + track_type: lib::track::TrackType::Audio, + active: true + }; + + current_project.tracks = Some(vec![track]); + /* * Engine should run and wait for commands, * but currently I need to implement the multitrack diff --git a/lib/src/lib.rs b/lib/src/lib.rs index 619f897..02b1857 100644 --- a/lib/src/lib.rs +++ b/lib/src/lib.rs @@ -1,5 +1,5 @@ -mod metadata; -mod project; +pub mod metadata; -mod region; -mod track; +pub mod region; +pub mod track; +pub mod project; diff --git a/lib/src/metadata.rs b/lib/src/metadata.rs index dd38dde..113a65b 100644 --- a/lib/src/metadata.rs +++ b/lib/src/metadata.rs @@ -1,25 +1,25 @@ use uuid::Uuid; -pub(crate) struct Metadata { +pub struct Metadata { id: Uuid, name: String, } impl Metadata { - pub(crate) fn new(name: String) -> Self { + pub fn new(name: String) -> Self { let id = Uuid::new_v4(); Self { id, name } } - pub(crate) fn id(&self) -> Uuid { + pub fn id(&self) -> Uuid { self.id } - pub(crate) fn name(&self) -> &str { + pub fn name(&self) -> &str { &self.name } - pub(crate) fn set_name(&mut self, name: String) { + pub fn set_name(&mut self, name: String) { self.name = name; } } diff --git a/lib/src/project.rs b/lib/src/project.rs index c8bb7ea..2fb3dd9 100644 --- a/lib/src/project.rs +++ b/lib/src/project.rs @@ -1,7 +1,9 @@ -use crate::{region::Region, track::Track}; +use crate::{metadata::Metadata, region::Region, track::Track}; -pub(crate) struct Project { - name: String, - tracks: Vec, - regions: Vec, +pub struct Project { + pub name: String, + pub tracks: Option>, + pub regions: Option>, + // Current playhead position + pub current_sample: u64, } diff --git a/lib/src/region.rs b/lib/src/region.rs index 04ecdb2..bece949 100644 --- a/lib/src/region.rs +++ b/lib/src/region.rs @@ -1,11 +1,11 @@ use crate::metadata::Metadata; -pub(crate) struct Region { - metadata: Metadata, +pub struct Region { + pub metadata: Metadata, // Position of the track on the track - starts_at: u64, + pub starts_at: u64, // From which point of the audio source the region starts - plays_from: u64, + pub plays_from: u64, // Duration of the region after plays_from - duration: u64, + pub duration: u64, } diff --git a/lib/src/track.rs b/lib/src/track.rs index f68686e..a1d1f15 100644 --- a/lib/src/track.rs +++ b/lib/src/track.rs @@ -1,15 +1,14 @@ use crate::metadata::Metadata; -use super::region::Region; - -pub(crate) enum TrackType { +pub enum TrackType { Audio, Midi, } -pub(crate) struct Track { - metadata: Metadata, - track_type: TrackType, +pub struct Track { + pub metadata: Metadata, + pub track_type: TrackType, + pub active: bool, } -pub(crate) struct TrackStatus {} +pub struct TrackStatus {}