Releases: mikesol/purescript-ocarina
Unruly units
Exposes the Web Audio API functionality where a-rate parameters can be controlled by Audio Units.
Fabulous fifteen
Upgrades to purescript 0.15.0
🚀
Svelter subgraphs
Gets rid of the klunky Subgraph type, opting to use events instead of incremental functions.
Wonderful wags
Streaming web audio graphs have never been so streamy! Wags 1.0.0 is a complete rewrite of wags designed and optimized for interactive audio and gaming. As the project has evolved, it's clear that it is being used mostly for interactive media. This rewrite leans into that use-case, making it as ergonomic as possible to get started writing interactive works with wags and its companion library deku.
As the project consolidates around this specific use case, certain corners of wags, like the wags.learn
project, the wagsi
project, the tidal
backend and the cofree-comonad-full wags-lib
have gone the way of the dodo. In the early days of the project it was important to test a bunch of stuff out, but now that the use cases for wags are more clear, it's important to consolidate and double down on what we do best: very fast, event-based, functional audio in the browser.
Shifting subgraphs
Adds dynamic subgraphing! This is the biggest thing to hit wags since, well, ever. It allows for subgraphs to be dynamic, which drastically reduces the type-level overhead in most circumstances and has a nominal performance penalty. Changes to subgraphs take O(nlogn)
instead of O(n)
, but as subgraph changes and creation tend to be small (on the order of 2-10 at a time) this difference is nominal.
In future versions, the internal representation may change to be even faster, ie instead of a map something with faster hashing. For now, though, the map seems fine.
Formidable FFI
Eliminates a spurious conversion in the FFI, which should theoretically improve performance.
Enumerated environments
Stashes environments in a vector during subgraph creation. This simplifies the creation step, eliminating an argument.
Simpler subgraphs
Uses preexisting syntactic construct Subgraph
to create patched subgraphs.
Surgical subgraphs
Dissects subgraphs with surgical precision for faster updating.
Effective envelopes
Bumps the minor version!
Breaking change alert: AudioParameter
is no longer a functor/applicative/monad. There are various reasons for this, but the tl;dr is that this allowed for envelopes to be implemented via setValuesCurveAt
. Instead of pure 1.0
, from now on, write paramize 1.0
and onOffIze _on
. These have been part of the API for a while now, but are now the only way to hoist a number or an on/off into a parameter.
Enjoy your envelopes via setValuesCurveAt
! They're in the no-loop
unit test now 💪 .