lyris 0.0.1

A real-time safe audio processing framework
Documentation
  • Coverage
  • 0%
    0 out of 22 items documented0 out of 0 items with examples
  • Size
  • Source code size: 58.19 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 3.54 MB This is the summed size of all files generated by rustdoc for all configured targets
  • Ø build duration
  • this release: 17s Average build duration of successful builds.
  • all releases: 17s Average build duration of successful builds in releases after 2024-10-23.
  • Links
  • MoofSoup/lyris
    0 1 0
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • MoofSoup

Ceres DSP

At Ceres DSP, we believe in making the impossible fun. That is why we made Lyris, an ergonomics-first, data driven framework for digital signal processing. Lyris lets you focus on what matters: writing digital signal processors.

#[processor]
fn filter_component(
	
	audio_in: Input,     // Option<&[f32]>
	cutoff: Input,       // Option<&[f32]>
	audio_out: Output,   // &mut [f32]
	z1: F32,             // &mut f32
	events: Events,         // Option<&[Event]>
	
) { 
	for (i, &sample) in audio_in.unwrap_or(&[]).enumerate() {
		audio_out[i] = z1;
		*z1 = sample * 0.1 + *z1 * 0.9;
	}
}
let (mut runtime, router) = Builder::<Event>::new()
	.add_component::<SawOsc>("saw", saw_component) 
	.add_component::<Filter>("filter 1", filter_component) 
	.buffer_length(1024)
	.build(); 

router.route( 
	SawOsc::named("saw").audio_out(), 
	Filter::named("filter 1").audio_in(), 
); 

router.route( 
	Filter::named("filter 1").audio_out(), 
	output() 
);

Currently, we are still fleshing out the #[processor] macro.

The Future:

We are working on a feedback based drum synthesizer VST, inspired by SOPHIE. For updates, to contribute, or just to make cool projects and share your work, please join the official Ceres Discord