You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Cnoidal is a Haskell library for representing, transforming, and live coding music.
The library is based on the notion of temporal media, a data type that represents a collection of time intervals tagged with values. It supports various functor instances, like Applicative Functor, which are highly useful for live coding.
The name is inspired by the cnoidal waveform, a nondispersive shape that water waves can take.
Documentation
Talk at FARM 2019
A first version of the library was presented at the FARM 2019 workshop at the ICFP 2019 in Berlin. This presentation focuses on the temporal media data type, which represents music as a collection of time intervals tagged with values. It supports an Applicative Functor instance which is highly useful for live coding. However, a lawful Monad instance can only be defined for some variants of the data type. After introducing these functor instance, I gave a hands-on demonstration and live coded some music.
By itself, the Cnoidal.Player module only allows you to output MIDI messages. You will need a MIDI instrument to actually hear sound. However, you can find many software instruments on the internet. On the open source side, you can use