dbg_bank_scene_params/
dbg_bank_scene_params.rs

1/*
2SPDX-License-Identifier: GPL-3.0-or-later
3Copyright © 2024 Mike Robeson [dijksterhuis]
4*/
5
6use ot_tools_io::{
7    ArrangementFile, BankFile, MarkersFile, OctatrackFileIO, OtToolsIoError, ProjectFile,
8};
9use std::path::PathBuf;
10
11fn bank_fname_from_id(id: usize) -> String {
12    format!["bank{id:0>2}.work"].to_string()
13}
14
15fn arr_fname_from_id(id: usize) -> String {
16    format!["arr{id:0>2}.work"].to_string()
17}
18
19fn new_proj(banks: &[BankFile], proj_id: u32) -> Result<(), OtToolsIoError> {
20    let project_dirpath = PathBuf::from("dbg").join(format!["PROJECT-{proj_id}"]);
21
22    std::fs::create_dir_all(&project_dirpath)?;
23
24    let proj_fpath = project_dirpath.join("project.work");
25    ProjectFile::default().to_data_file(&proj_fpath)?;
26
27    let markers_fpath = project_dirpath.join("markers.work");
28    MarkersFile::default().to_data_file(&markers_fpath)?;
29
30    for (idx, bank) in banks.iter().enumerate() {
31        let bank_fpath = project_dirpath.join(bank_fname_from_id(idx + 1));
32        bank.to_data_file(&bank_fpath)?;
33    }
34
35    for i in 1..=8 {
36        let arr_fpath = project_dirpath.join(arr_fname_from_id(i));
37        ArrangementFile::default().to_data_file(&arr_fpath)?;
38    }
39
40    println!("New project created: {project_dirpath:?}");
41    Ok(())
42}
43
44fn main() -> Result<(), OtToolsIoError> {
45    let mut buf: Vec<BankFile> = Vec::new();
46
47    for i in 0..(128_u32 * 6) {
48        let mut bank = BankFile::default();
49        bank.parts.unsaved[0].scenes[0].0[0].lfo.dep1 = i.rem_euclid(128_u32) as u8;
50        if i > 128 {
51            bank.parts.unsaved[0].scenes[0].0[0].lfo.dep2 = i.rem_euclid(128_u32) as u8;
52        }
53        if i > 128 * 2 {
54            bank.parts.unsaved[0].scenes[0].0[0].lfo.dep3 = i.rem_euclid(128_u32) as u8;
55        }
56        if i > 128 * 3 {
57            bank.parts.unsaved[0].scenes[0].0[0].lfo.spd1 = i.rem_euclid(128_u32) as u8;
58        }
59        if i > 128 * 4 {
60            bank.parts.unsaved[0].scenes[0].0[0].lfo.spd2 = i.rem_euclid(128_u32) as u8;
61        }
62        if i > 128 * 5 {
63            bank.parts.unsaved[0].scenes[0].0[0].lfo.spd3 = i.rem_euclid(128_u32) as u8;
64        }
65
66        if i.rem_euclid(16) == 0 {
67            new_proj(&buf, i.div_euclid(16))?;
68            buf.clear();
69        }
70        buf.push(bank);
71    }
72
73    Ok(())
74}