audio_mixer/
audio_mixer.rs1use auxide::graph::{Graph, NodeType, PortId, Rate};
9use auxide::plan::Plan;
10use auxide::rt::Runtime;
11use auxide_io::stream_controller::StreamController;
12use std::thread;
13use std::time::Duration;
14
15fn main() -> anyhow::Result<()> {
16 println!("Auxide Mixer Demo");
17 println!("Playing a chord: 440Hz (A) + 554Hz (C#)...");
18
19 let mut graph = Graph::new();
21
22 let osc1 = graph.add_node(NodeType::SineOsc { freq: 440.0 });
24
25 let osc2 = graph.add_node(NodeType::SineOsc { freq: 554.0 });
27
28 let mix = graph.add_node(NodeType::Mix);
30
31 let sink = graph.add_node(NodeType::OutputSink);
33
34 graph.add_edge(auxide::graph::Edge {
36 from_node: osc1,
37 from_port: PortId(0),
38 to_node: mix,
39 to_port: PortId(0),
40 rate: Rate::Audio,
41 }).unwrap();
42
43 graph.add_edge(auxide::graph::Edge {
45 from_node: osc2,
46 from_port: PortId(0),
47 to_node: mix,
48 to_port: PortId(1),
49 rate: Rate::Audio,
50 }).unwrap();
51
52 graph.add_edge(auxide::graph::Edge {
54 from_node: mix,
55 from_port: PortId(0),
56 to_node: sink,
57 to_port: PortId(0),
58 rate: Rate::Audio,
59 }).unwrap();
60
61 let plan = Plan::compile(&graph, 512).unwrap();
62 let runtime = Runtime::new(plan, &graph, 44100.0);
63
64 let controller = StreamController::play(runtime)?;
66 controller.start()?;
67
68 println!("Playing for 10 seconds...");
69 thread::sleep(Duration::from_secs(10));
70
71 controller.stop();
72 println!("Mixer demo complete!");
73
74 Ok(())
75}