metrome 0.1.26

Create click tracks from any rhythm
Documentation
use clap::Parser;
use metrome::{scanner, score::Score};

#[derive(Parser, Debug)]
#[command(author,version,about,long_about=None)]
struct Args {
    #[arg(short, long)]
    path: String,
    #[arg(short, long)]
    output: Option<String>,
}

fn main() -> Result<(), hound::Error> {
    let args = Args::parse();
    let file = std::fs::read_to_string(&args.path).unwrap();
    let separator = match cfg!(target_os = "windows") {
        true => '\\',
        _ => '/',
    };
    let output_path = match &args.output {
        Some(path) => path.clone(),
        None => format!("{}.wav", &args.path.split(separator).last().unwrap()),
    };
    let tokens = scanner::scan(file).unwrap();
    let score = Score::new(tokens).unwrap();
    score.write_click_track(&output_path)
}