#pattern #music #cycle #generative

cycles

A cyclic pattern abstraction, heavily inspired by TidalCycles

5 releases

0.2.0 Jan 21, 2024
0.1.3 Feb 11, 2023
0.1.2 Feb 4, 2023
0.1.1 Jan 29, 2023
0.1.0 Jan 29, 2023

#937 in Audio

Custom license

73KB
2K SLoC

cycles crates.io docs.rs

A cyclic pattern abstraction, heavily inspired by TidalCycles.

Started as an attempt at porting the Pattern abstraction and related items from the TidalCycles' Haskell implementation, though some liberties have been taken in order to achieve a more Rust-esque API.

The goal of this crate is to aim for a similar level of ergonomics to TidalCycles (it's hard to compete with Haskell!), while taking advantage of Rust's ability to provide low-to-zero-cost abstractions.

The Pattern trait

The essence of this crate is the Pattern trait. Patterns are types that can be queried with a Span to produce a sequence of Events. All other items are related to constructing, applying, modifying or mapping types implementing Pattern.

Dependencies

~590KB
~13K SLoC