RELEASED: v1.4.0
featuring the ability to save patterns as MIDI files. Avoid the baud rate limitations of real-time and bask in luxurious black MIDI!
Live coding and synthesis with NodeJS and an in-browser text editor.
RELEASED: v1.4.0
featuring the ability to save patterns as MIDI files. Avoid the baud rate limitations of real-time and bask in luxurious black MIDI!
RELEASED: v1.3.0
In v1.3.0, only the browser can play audio patterns synthesized with Facet.
The browser audio playback feature was added in v1.1.0, and after using it more and more, I found that I preferred it over Max for several reasons:
1. No need to open another program, simplifying start-up.
2. Ease of working with arbitrarily many voices in the browser (in Max, I had hard-coded the number of voices to 16, and voice management had become a bit complicated and started to feel like tech debt.)
3. The second argument to the play() method in v1.2.5 works only with the browser, not with Max. It was very quick and easy to add this feature to the browser, which was a "sign" to me that I should focus on browser audio.
4. This is a guess, but I don't think anyone is using the Max object for audio playback.
The facet Max object has been simplified into a simple UDP server to receive OSC messages from Facet. All the other Max objects and Max for Live abstractions have been deleted.
Facet is 3 years old. It has gotten quite far along in that time! 🎂🎂🎂
RELEASED: v1.6.0
- improved functionality / reliability of stopping a block of commands without stopping _all_ commands
- added dynamic Q for bpf, lpf, hpf
- added a build script so the special Facet version that runs in wax.bz can be automatically generated
- rewrote vocode method
- fixed a bug where manual BPM modifications did not cause the synthesized audio to change speed correspondingly
- changed oscillators so they do not fadein/fadeout 30ms in by default
Just released: v1.5.0.
SoX is no longer a hard dependency in Facet.
Now Facet handles multi-channel audio and dynamic panning in the browser. So you can send a bunch of audio signals into a DAW or modular synth for example!
Release notes:
Forthcoming over() method which distributes the events tied to a pattern over n loops, so you can stretch a pattern across any number of loops you want. Works with audio, MIDI note/cc, and OSC.
I finally had an idea for how to implement long-form "drifty" modulations that would extend over any number of bars. So you could do a drunk walk on a parameter over 5000 bars, etc. I think it will open up some interesting zones and am excited to work on that! Right now the patterns for event firing are all stuck on the same time scale (one loop) which is needlessly limiting. Should be doable for MIDI, OSC, and audio.
RELEASED: v.1.5.4
The main update is that the README now has js code blocks for easier legibility and copy/pasting :)
Should I make Facet run client-side without needing to install any dependencies? It seems like local setup is the non-starter for a lot of folks. On the other hand, doing this would require a lot of rewriting, etc. Maybe a good 2.0 target?