_(_)_
(_)@(_)
(_)
|
|-{}
|
|
---
|
|
{}-|
|
_(_)_
(_)@(_)
(_)
|
|-{}
|
|
---
|
|
{}-|
|
_(_)_
(_)@(_)
(_)
|
|-{}
|
|
---
|
|
{}-|
|
_(_)_
(_)@(_)
(_)
|
|-{}
|
|
---
|
|
{}-|
|
_(_)_
(_)@(_)
(_)
|
|-{}
|
|
---
|
|
{}-|
|
_(_)_
(_)@(_)
(_)
|
|-{}
|
|
---
|
|
{}-|
|
_(_)_
(_)@(_)
(_)
|
|-{}
|
|
---
|
|
{}-|
|
_(_)_
(_)@(_)
(_)
|
|-{}
|
|
---
|
|
{}-|
|
_(_)_
(_)@(_)
(_)
|
|-{}
|
|
---
|
|
{}-|
|
_(_)_
(_)@(_)
(_)
|
|-{}
|
|
---
|
|
{}-|
|
_(_)_
(_)@(_)
(_)
|
|-{}
|
|
---
|
|
{}-|
|
_(_)_
(_)@(_)
(_)
|
|-{}
|
|
---
|
|
{}-|
|
_(_)_
(_)@(_)
(_)
|
|-{}
|
|
---
|
|
{}-|
|
_(_)_
(_)@(_)
(_)
|
|-{}
|
|
---
|
|
{}-|
|
_(_)_
(_)@(_)
(_)
|
|-{}
|
|
---
|
|
{}-|
|
_(_)_
(_)@(_)
(_)
|
|-{}
|
|
---
|
|
{}-|
|
_(_)_
(_)@(_)
(_)
|
|-{}
|
|
---
|
|
{}-|
|
_(_)_
(_)@(_)
(_)
|
|-{}
|
|
---
|
|
{}-|
|
_(_)_
(_)@(_)
(_)
|
|-{}
|
|
---
|
|
{}-|
|
_(_)_
(_)@(_)
(_)
|
|-{}
|
|
---
|
|
{}-|
|
_(_)_
(_)@(_)
(_)
|
|-{}
|
|
---
|
|
{}-|
|
_(_)_
(_)@(_)
(_)
|
|-{}
|
|
---
|
|
{}-|
|
_(_)_
(_)@(_)
(_)
|
|-{}
|
|
---
|
|
{}-|
|
_(_)_
(_)@(_)
(_)
|
|-{}
|
|
---
|
|
{}-|
|
_(_)_
(_)@(_)
(_)
|
|-{}
|
|
---
|
|
{}-|
|
_(_)_
(_)@(_)
(_)
|
|-{}
|
|
---
|
|
{}-|
|
_(_)_
(_)@(_)
(_)
|
|-{}
|
|
---
|
|
{}-|
|
_(_)_
(_)@(_)
(_)
|
|-{}
|
|
---
|
|
{}-|
|
_(_)_
(_)@(_)
(_)
|
|-{}
|
|
---
|
|
{}-|
|
_(_)_
(_)@(_)
(_)
|
|-{}
|
|
---
|
|
{}-|
|
_(_)_
(_)@(_)
(_)
|
|-{}
|
|
---
|
|
{}-|
|
_(_)_
(_)@(_)
(_)
|
|-{}
|
|
---
|
|
{}-|
|
_(_)_
(_)@(_)
(_)
|
|-{}
|
|
---
Forth Sampler
WORK-IN-PROGRESS
Written in C99, raylib for visuals.
A live-coding tool for sound collage. Audio clips can be added, split, and moved around. The playhead can be manipulated. A Forth program can be attached to each clip. To compute which sample should be played, it is pushed onto the clip's stack, and the clip's Forth program is run. The top of the stack is popped and that sample is played. This leads to elegant expressions of certain audio transformations, e.g. a delay of 2000 samples is 2000 PICK + 2 / DUP, and a simple IIR low pass filter is 0.01 * SWAP 0.99 * + DUP.
_(_)_
(_)@(_)
(_)
|
{}-|
|
|
---
|
|
|-{}
|
_(_)_
(_)@(_)
(_)
|
{}-|
|
|
---
|
|
|-{}
|
_(_)_
(_)@(_)
(_)
|
{}-|
|
|
---
|
|
|-{}
|
_(_)_
(_)@(_)
(_)
|
{}-|
|
|
---
|
|
|-{}
|
_(_)_
(_)@(_)
(_)
|
{}-|
|
|
---
|
|
|-{}
|
_(_)_
(_)@(_)
(_)
|
{}-|
|
|
---
|
|
|-{}
|
_(_)_
(_)@(_)
(_)
|
{}-|
|
|
---
|
|
|-{}
|
_(_)_
(_)@(_)
(_)
|
{}-|
|
|
---
|
|
|-{}
|
_(_)_
(_)@(_)
(_)
|
{}-|
|
|
---
|
|
|-{}
|
_(_)_
(_)@(_)
(_)
|
{}-|
|
|
---
|
|
|-{}
|
_(_)_
(_)@(_)
(_)
|
{}-|
|
|
---
|
|
|-{}
|
_(_)_
(_)@(_)
(_)
|
{}-|
|
|
---
|
|
|-{}
|
_(_)_
(_)@(_)
(_)
|
{}-|
|
|
---
|
|
|-{}
|
_(_)_
(_)@(_)
(_)
|
{}-|
|
|
---
|
|
|-{}
|
_(_)_
(_)@(_)
(_)
|
{}-|
|
|
---
|
|
|-{}
|
_(_)_
(_)@(_)
(_)
|
{}-|
|
|
---
|
|
|-{}
|
_(_)_
(_)@(_)
(_)
|
{}-|
|
|
---
|
|
|-{}
|
_(_)_
(_)@(_)
(_)
|
{}-|
|
|
---
|
|
|-{}
|
_(_)_
(_)@(_)
(_)
|
{}-|
|
|
---
|
|
|-{}
|
_(_)_
(_)@(_)
(_)
|
{}-|
|
|
---
|
|
|-{}
|
_(_)_
(_)@(_)
(_)
|
{}-|
|
|
---
|
|
|-{}
|
_(_)_
(_)@(_)
(_)
|
{}-|
|
|
---
|
|
|-{}
|
_(_)_
(_)@(_)
(_)
|
{}-|
|
|
---
|
|
|-{}
|
_(_)_
(_)@(_)
(_)
|
{}-|
|
|
---
|
|
|-{}
|
_(_)_
(_)@(_)
(_)
|
{}-|
|
|
---
|
|
|-{}
|
_(_)_
(_)@(_)
(_)
|
{}-|
|
|
---
|
|
|-{}
|
_(_)_
(_)@(_)
(_)
|
{}-|
|
|
---
|
|
|-{}
|
_(_)_
(_)@(_)
(_)
|
{}-|
|
|
---
|
|
|-{}
|
_(_)_
(_)@(_)
(_)
|
{}-|
|
|
---
|
|
|-{}
|
_(_)_
(_)@(_)
(_)
|
{}-|
|
|
---
|
|
|-{}
|
_(_)_
(_)@(_)
(_)
|
{}-|
|
|
---
|
|
|-{}
|
_(_)_
(_)@(_)
(_)
|
{}-|
|
|
---
|
|
|-{}
|
_(_)_
(_)@(_)
(_)
|
{}-|
|
|
---