~rabbits/uxn-playdate

Match audio-device to upstream implementation
Fix sample looping
Add sample xfading
Refactor next sample getter
Add initial wait-for-zero-crossing implementation
Refactor sample data into struct
Fix multichannel audio
Use u8 samples instead of s8
Add multi-channel audio
Prepare for multi-channel behaviour
Add important TODO comment
Add separate stacks for audio vectors
Change envelope implementation to be per-sample
Add stereo volume and sample interpolation
Wire uxn ADSR to audio device
Implement basic ADSR envelope
Add wip audio callback routine for new audio device
Update build system to change roms without make clean
Make FRAME_TIMER a config parameter to be able to speed up evaluation
Add sample player (with caveats)

The UXN ADSR doesn't behave like it would work usually (with sustain
being a level amount after the decay), instead it splits an envelope
into 4 regions that each can last up to 1 second. In this context, the
sustain in UXN is the amount of time (0-1sec) in which the level is kept
to a maximum level (1.0).

This means we can't fully interop with the built-in ADSR on the
Playdate, so I've made the decay behave as a release and the sustain and
release will always be 0.0.

To obtain the correct behaviour it probably be needed the usage of
a custom signal callback to be used as a volume modulator.
Next