MCPcopy Create free account
hub / github.com/BillyDM/Firewheel / convolution_ui

Function convolution_ui

examples/visual_node_graph/src/ui.rs:774–826  ·  view source on GitHub ↗

Channel-independent UI for convolution

(ui: &mut Ui, params: &mut Memo<ConvolutionNode>, audio_system: &mut AudioSystem)

Source from the content-addressed store, hash-verified

772
773// Channel-independent UI for convolution
774fn convolution_ui(ui: &mut Ui, params: &mut Memo<ConvolutionNode>, audio_system: &mut AudioSystem) {
775 let ir_sample_id = format!("ir_sample_id_{}", ui.id().value());
776 let current_ir_sample_index: Option<usize> = ui
777 .memory(|mem| {
778 mem.data
779 .get_temp::<Option<usize>>(ir_sample_id.clone().into())
780 })
781 .flatten();
782
783 egui::ComboBox::from_label("Impulse response")
784 .selected_text(match current_ir_sample_index {
785 Some(sample_index) => audio_system.ir_samples[sample_index].0,
786 None => "None",
787 })
788 .show_ui(ui, |ui| {
789 let mut temp_current_ir = current_ir_sample_index;
790
791 ui.selectable_value(&mut temp_current_ir, None, "None");
792 for (sample_index, (name, _sample)) in audio_system.ir_samples.iter().enumerate() {
793 ui.selectable_value(&mut temp_current_ir, Some(sample_index), *name);
794 }
795
796 if temp_current_ir != current_ir_sample_index {
797 params.impulse_response =
798 temp_current_ir.map(|i| audio_system.ir_samples[i].1.clone());
799
800 ui.memory_mut(|mem| {
801 mem.data
802 .insert_temp(ir_sample_id.clone().into(), temp_current_ir);
803 });
804 }
805 });
806
807 let mut linear_volume = params.wet_gain.linear();
808 if ui
809 .add(egui::Slider::new(&mut linear_volume, 0.0..=1.0).text("wet gain"))
810 .changed()
811 {
812 params.wet_gain = Volume::Linear(linear_volume);
813 }
814
815 ui.horizontal(|ui| {
816 if !params.pause {
817 if ui.button("Pause").clicked() {
818 params.pause = true;
819 }
820 } else {
821 if ui.button("Play").clicked() {
822 params.pause = false;
823 }
824 }
825 });
826}
827
828pub struct DemoApp {
829 snarl: Snarl<GuiAudioNode>,

Callers 1

show_bodyMethod · 0.85

Calls 3

linearMethod · 0.80
cloneMethod · 0.45
addMethod · 0.45

Tested by

no test coverage detected