devalang_core/core/audio/engine/
mod.rs1pub mod driver;
2pub mod export;
3pub mod helpers;
4pub mod notes;
5pub mod sample;
6
7pub use driver::AudioEngine;
8
9pub use driver::CHANNELS;
10pub use driver::MidiNoteEvent;
11pub use driver::SAMPLE_RATE;
12pub use helpers::*;
13
14use crate::core::audio::interpreter::driver::run_audio_program;
15use crate::core::parser::statement::Statement;
16use crate::core::store::global::GlobalStore;
17use devalang_types::{FunctionTable, VariableTable};
18use std::collections::HashMap;
19
20pub fn render_audio_with_modules(
27 modules: HashMap<String, Vec<Statement>>,
28 _output_dir: &str,
29 global_store: &mut GlobalStore,
30) -> HashMap<String, AudioEngine> {
31 let mut result: HashMap<String, AudioEngine> = HashMap::new();
32
33 for (module_name, statements) in modules.into_iter() {
34 let mut engine = AudioEngine::new(module_name.clone());
36
37 let module_vars = VariableTable::new();
39 let module_funcs = FunctionTable::new();
40
41 let (_max_end_time, _cursor_time) = run_audio_program(
43 &statements,
44 &mut engine,
45 module_name.clone(),
46 module_name.clone(),
47 module_vars,
48 module_funcs,
49 global_store,
50 );
51
52 result.insert(module_name, engine);
53 }
54
55 result
56}