lyris

Crates.iolyris
lib.rslyris
version0.0.12
created_at2025-07-04 11:59:34.840028+00
updated_at2025-07-07 05:11:10.455845+00
descriptionA real-time safe audio processing framework
homepage
repositoryhttps://github.com/MoofSoup/lyris
max_upload_size
id1737916
size66,422
(MoofSoup)

documentation

README

Lyris

At Ceres, 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]
pub mod filter{
	struct FilterState {
		z1: f32,
	}

	fn filter(
		
		audio_in: Input,     				// derefs into Option<&[f32]>, 
		cutoff: Input,       				// derefs into Option<&[f32]>
		audio_out: Output,   				// deref muts into &mut [f32]
		z1: State<FilterState>,             // derefs into &mut FilterState
		events: Events,         			// Option<&[Event]>, events are copyable
		
	) { 
		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(saw::new())
	.add(filter::new())
	.buffer_length(1024)
	.build(); 

router.route( 
	saw::audio_out(), 
	filter::audio_in(), 
); 

router.route( 
	filter::audio_out(), 
	lyris::output() 
);

The Future:

The future of Lyris contains:

  • The #[processor] macro
  • The multi-instancing API
  • Polyphonic runtimes

A loose date for these features is September of 2025 (as I need a break from this project for a minute XD)

At Ceres, I am 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

Thanks for checking out Lyris!

  • Sylvia Soup <3

Commit count: 0

cargo fmt