()
| 26 | |
| 27 | impl AudioSystem { |
| 28 | pub fn new() -> Self { |
| 29 | let mut cx = FirewheelContext::new(Default::default()); |
| 30 | let stream = CpalStream::new(&mut cx, Default::default()).unwrap(); |
| 31 | |
| 32 | let noise_gen_node = NoiseGenNode::default(); |
| 33 | let filter_node = FilterNode::default(); |
| 34 | let rms_node = FastRmsNode::default(); |
| 35 | |
| 36 | let noise_gen_node_id = cx |
| 37 | .add_node(noise_gen_node, None) |
| 38 | .expect("Noise gen node should construct without error"); |
| 39 | let filter_node_id = cx |
| 40 | .add_node(filter_node, None) |
| 41 | .expect("Filter node should construct without error"); |
| 42 | let rms_node_id = cx |
| 43 | .add_node(rms_node, None) |
| 44 | .expect("RMS node should construct without error"); |
| 45 | |
| 46 | let graph_out_node_id = cx.graph_out_node_id(); |
| 47 | |
| 48 | cx.connect(noise_gen_node_id, filter_node_id, &[(0, 0)], false) |
| 49 | .unwrap(); |
| 50 | cx.connect(filter_node_id, rms_node_id, &[(0, 0)], false) |
| 51 | .unwrap(); |
| 52 | cx.connect(filter_node_id, graph_out_node_id, &[(0, 0), (0, 1)], false) |
| 53 | .unwrap(); |
| 54 | |
| 55 | let rms_node_state = cx.node_state::<FastRmsState>(rms_node_id).unwrap().clone(); |
| 56 | |
| 57 | Self { |
| 58 | cx, |
| 59 | stream, |
| 60 | noise_gen_node: Memo::new(noise_gen_node), |
| 61 | filter_node: Memo::new(filter_node), |
| 62 | rms_node: Memo::new(rms_node), |
| 63 | rms_node_state, |
| 64 | noise_gen_node_id, |
| 65 | filter_node_id, |
| 66 | rms_node_id, |
| 67 | noise_gen_bypassed: false, |
| 68 | filter_bypassed: false, |
| 69 | rms_bypassed: false, |
| 70 | } |
| 71 | } |
| 72 | |
| 73 | pub fn update(&mut self) { |
| 74 | // Update the firewheel context. |
nothing calls this directly
no test coverage detected