Monolith

Monolith

Overview

Monolith is the name of an interactive computer music ecosystem that I have written for myself.

Monolith is mainly a bunch of C components built to be controlled inside of a fork of s9 scheme. The s9 REPL is then set to spawn inside of emacs scheme interpretor. From there, the rest of the workflow is controlled via emacs as a live coding environment.

Scheme code can evaluate Runt code, which is then used to generate sound via Patchwerk.

Monolith is designed to be tightly coupled with the monome Grid and Arc hardware, as well as the griffin powermate. Multiple applications utilizing these peripherals can exist at once in Monolith using what are known as pages.

In adddition to sound, monolith has the ability to produce small bitmap graphics. H264 encoded video can be produced using libx264. This interface is notably used in the Breathing Cards series.

In addition to scheme, there are also language bindings to the Janet programming language. A local version of Janet is embedded in the monolith system.

Documentation

A self-contained wiki is in the works, but more words are needed there before monolith is useful to other humans.

A very thorough overview has been written for those interested in what Monolith does, and an adequate quickstart is being developed.

For the morbidly curious, the woven HTML output of the literate bits of monolith can now be found here. The monolith wiki is able to directly link to the woven HTML, so hopefully more crosstalk will happen in the future.

Code

Monolith source code is managed using a private Fossil repo, but a mirror of the code can be found on sourcehut.

Program Output

Many parts of monolith write written in a literate style via worgle. Because of this, the Monolith program can be browsed like a weewiki using an automated weewiki export process via worgmap, weewiki, SQLite, and janet.

This woven HTML output can be found here. It is highly advised to only bookmark the table of contents pages and not individual pages, as those page names are generated and are subject to change.

Activity

Activity in the monolith zet group:

2021-10-09 12:23:23: make it possible for vocal tract shapes to be implicit in the gest interface

2021-09-09 20:26:09: create gest interface for wavetable morphing

2021-07-23 20:52:05: create page that uses grid to explore vocal tract shapes (16 to 32 diameters)

2021-07-17 17:20:56: import copy of sndkit + lil into monolith

2021-07-17 16:01:50: create scheme bindings for gest in monolith

2021-05-30 15:48:12: create destructor callback for generic entries in monolith dictionary

2021-05-30 15:31:52: added a new page on the internal monolith dictionary to the monolith wiki: dict.

2021-03-19 11:44:49: finally got around to finishing up a diagram for seq16.

2021-02-02 09:43:30: added swell node. also more words to the knobs wiki page.

2020-12-30 16:27:08: lots of links added to the overview page.

2020-12-29 15:56:48: added some initial page navigation to the woven program output.

2020-12-26 09:18:39: macfont, a classic macintosh font renderer for (btprnt), has been exported as a woven program today. there's a small wiki page as well: macfont.

2020-12-26 09:17:05: gave wavdraw some love today in (monolith). created a CLI for it, as well as a wiki page (with a link to woven source code there as well): wavdraw.

2020-12-23 10:08:23: the (sqlar) loadwav utility has been reworked slightly so that it reads from a sqlite handle rather than a filename. It's necessary to deal with a runt quirk, but I also think of it as a smarter step forward.


Some of the more recent mentions of Monolith in my twtxt feed:

2021-04-13 09:06:33: created an overview page on patch hotswapping in (monolith) the #monolithwiki: hotswapping.
2021-03-24 10:22:05: some words today on installing monolith. I still wouldn't recommend it: install.
2021-02-15 12:13:57: new monolith wiki page on FM: FM.
2020-12-30 16:28:37: lots of links added to overview page on monolith wiki: overview.
2020-12-26 09:40:02: monolith now has 38 unique literate programs. their woven representations can be found at my website /proj/monolith/program. #monolith
2020-11-16 10:26:23: finally finished all the initial ugen documentation. everything now has a sentence or two. the generated page can be accessed from the ugen wiki page /proj/monolith/wiki/ugens #updates #monolith
2020-10-16 14:22:04: been adopting a document-as-you go approach to the (monolith) wiki. as I dogfood my software to make pieces an etudes like (breathing_cards), I write about it in a wiki stub. #workflow #documentation
2020-10-16 14:19:28: added channels page to (monolith) wiki: /proj/monolith/wiki/channels. #updates
2020-10-14 17:36:54: added a few notes on woven program output on the (monolith) wiki page #updates
2020-10-06 21:20:03: some initial words + code for a table-lookup oscillator with floating point precision to be included in (sndkit). testing and monolith come tomorrow. #updates #sndkit #monolith
2020-10-06 10:22:12: added a #1bit dither page to the #monolith wiki: /proj/monolith/wiki/dither_1bit #updates
2020-10-05 12:55:27: initial ugens page added to (monolith) wiki, with link to woven ugens scheme file. the first non-C woven file in monolith. /proj/monolith/wiki/ugens. #docs #updates
2020-10-01 15:02:33: added a twtxt activity section on the (monolith) page
2020-09-15 11:04:40: some experiments with fractal brownian motion: (fbm) #graphics #fbm #monolith #c
2020-09-14 16:55:31: Implemented ftlists in #monolith today, along with #tlseq, and #tchoose nodes. More info at the monolith wiki /proj/monolith/wiki/ftlist.
2020-09-08 20:22:45: the chaosnoise algo is now in (sndkit) and (monolith) #DSP #chaos #noise #patchwerk #monolith #crackle
2020-08-30 14:46:13: all files (monolith) written using (worgle) have now been automatically HTMLized via (weewiki). the top-level browser can be found here.
2020-08-24 14:14:31: A fragment of my (monolith) program has been woven to a (weewiki) from (worgle) using (sqlite). Find it for now at the monolith project page.
2020-08-03 20:18:05: The master plan is to export the (worgle) bits of (monolith) to a (weewiki), then begin adding user-level documentation that is able to dynamically reference bits of source code as another wiki page.
2020-08-02 15:44:15: while eventually I hope to get all of literate org parts of (monolith) posted online as a self contained (weewiki), I've decided to post little pieces as self-contained documents. here is a copy of (trigvm), the toy VM used to power a rhythmic computer-sequencer controlled entirely from the (monome_grid)

home | index