yks_converter 0.1.0

A Rust library for converting MML (Music Macro Language) to MIDI format
Documentation
use crate::track_event::*;

pub struct TrackBuilder {
    #[allow(dead_code)] // Keep for compatibility with C++ version
    channel: u8,
    events: Vec<Box<dyn TrackEvent>>,
}

impl TrackBuilder {
    pub fn new(channel: u8) -> Self {
        TrackBuilder {
            channel,
            events: Vec::new(),
        }
    }

    pub fn put_event(&mut self, event: Box<dyn TrackEvent>) -> &mut Self {
        self.events.push(event);
        self
    }

    pub fn put_events(&mut self, events: Vec<Box<dyn TrackEvent>>) -> &mut Self {
        self.events.extend(events);
        self
    }

    pub fn build(&self) -> Vec<String> {
        let mut result = Vec::new();
        result.push(format!("MTrk"));
        
        for event in &self.events {
            result.push(format!("{} {}", event.lead_time(), event.value()));
        }
        
        result
    }

    pub fn event_list(&self) -> &[Box<dyn TrackEvent>] {
        &self.events
    }
}