Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/paulbatchelor/gestvm
A gesture synthesizer for sndkit, controlled via the Uxn Virtual Machine
https://github.com/paulbatchelor/gestvm
Last synced: 11 days ago
JSON representation
A gesture synthesizer for sndkit, controlled via the Uxn Virtual Machine
- Host: GitHub
- URL: https://github.com/paulbatchelor/gestvm
- Owner: PaulBatchelor
- License: mit
- Created: 2022-02-17T23:11:19.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2022-08-14T18:48:32.000Z (over 2 years ago)
- Last Synced: 2025-01-18T12:15:00.879Z (12 days ago)
- Language: C
- Size: 62.5 KB
- Stars: 5
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# GestVM
## Introduction
GestVM implements a so-called "gesture synthesizer",
sequenced and controlled via the Uxn Virtual machine.A Gesture Synthesizer is an audio-rate control signal
generator whose timing is managed by another audio-rate
control signal generator, called a conductor.Conceptually, a Gesture can be thought of as something
between an automation curve and breakpoint line generator.## Overview of System
An instance of an Uxn VM is created inside of
sndkit, and a ROM is loaded. One more signal generators,
called nodes, are then created, which can concurrently
evaluate the Uxn VM with different starting memory
positions. Each node implements a gesture synthesizer, whose
state can be controlled via an Uxn virtual output device.
For input, a node takes in a "conductor" signal, which is
periodic rising ramp signal commonly referred as a phasor.The synthesized gesture signal produced by nodes can then
be used to modulate parameters in other sndkit nodes. A
common parameter is the pitch of an oscillator.## Compilation
To use GestVM, first compile and install sndkit.
Sndkit can be found on [github](https://github.com/paulbatchelor/sndkit)
or [sourcehut](https://git.sr.ht/~pbatch/sndkit).Running `make` will build the `gestvm` binary (the sndkit
LIL interpreter with added gestvm words), as well
as a modified version of the `uxnasm` utility used to
assemble Uxn ROMs.## Running Examples
Examples can be found in the "examples" folder. Running
the script `./render.sh` will compile the Uxn
programs and then render sndkit program which
loads the ROM and generates the WAV files.Each example comes with a Uxn program (".tal" extension)
and a sndkit patch (".lil" extension). From these
a ROM file (".rom") and WAV audio file (".wav") are
generated.`sequence` is a program which produces a sequence that
gets proportionally faster every time it repeats. It
starts with eigth notes, then triplets, then sixteenths,
etc. Eventually it will hit a limit and start slowing
down again.`skew` is a program which tests out a concept called
*temporal skewing*, a process which allows tempo to be
locally warped without adding or subtracting time overall.
This example has a phrase which uses an exponential
temporal skewing curve to perform an accelerando over
9 beats.`weight` is a program which tests out a concept called
*temporal weight*, a process which gives the notes themselves
to warp global tempo. This program produces a lyrical
melody that uses weight to programatically
shape the phrasing.