Releases: mikesol/purescript-ocarina
Stupendous scene
SceneI
is now a Newtype! This allows for typeclasses to define instances against SceneI
. Previously, as it was a record, it was less ergonomic to use in typeclasses.
Beautiful behaviors
Microphones, buffers, float arrays, wavetables and recorders are now behaviors instead of static objects. This means that it is possible to make and use new buffers mid-flight!
Helpful hotfix
A small hotfix release allowing ChangeT
to work with AudioParameter OnOff
instead of just OnOff
.
Limber loops
Fine-grained control of loops is easier now that AudioParameter
accepts and uses OnOff
.
Decimated dictionaries
In PureScript (as of 0.14.2
), instance dictionaries are constructed for all typeclass constraints even if the dictionaries' constituent functions are not used in the function. To get around this, the release introduces CreateT
in order to resolve the correct type of a graph without doing term-level resolution.
Targeted typeclasses
Transitions from using purescript-heterogeneous
to a custom iterator over RowList
in Create.purs
and Change.purs
in order to avoid making type-level assertions about proof terms. This is necessary in order to build existential types that can use create
or change
internally without unsafely coercing the proof term.
Tiny tweaks
Releases come in all sizes! This adds small functions to make WAGS friendlier in the REPL.
Charming changes
This minor release completely revamps the change
and ichange
functions. They are now more terse and behave more consistently.
Formidable functors
Audio parameters are now functors 🤓 But that's not all. They are monoids, semigroups and monads - oh my!
Palatable Periodicity
Periodic wave definitions can now be inlined 🎊 . This allows for periodic waveforms to change more frequently than at a piece's construction time. Additionally, several utility methods have been added for working with audio parameters.