a collection of pieces to be put together in varying configurations


Figure-Ground Delayline Modulator

the length of a sound-object figure modulates the length of a delayline
sounds received are fed back at varying, controllable, later times
varying the change in speed pitches the sound being fed back

used in: mawamama t01


2020.07.30/modules/archive | roadmap


annotator _ presents recordings with possibly defined start position, end position, highlighted/annotate regions, and regions marked for removal (which are skipped over), offering an easy and potentially collaborative in-browser possibility of annotatating and non-destructively presenting snippets in the context of their longer recordings. regions made can be exported to a reaper project.

how to use:

note: adding/changing annotations is currently password-protected
- [ ] add guest user login




stereo audio monitor and recorder. toggling record outputs two stereo .wav files to the disk - the audio sent to the first two inlets (x.wav) and the stereo microphone in (x-adc.wav). filenames are incremented. while recording, marks can be made, output to a text file on the disk. after recording, a voicememo can be optionally recorded from the microphone in (named as x-vm.wav).

requires rec-count.txt to keep count.

inlets: in-L, in-R, message




a container MobMuPlat patch for pure data modules that currently consists of that runs on iphone:



the website is built on pelican, a static generator that converts folders of markdown files to a static site. this allows the entire structure of the site to exist simply as text files with minimal markup. it is mostly used as is, aside for the addition of the annotator javascript app, the flow of which is as follows:

add session entry, all fields optional:

title: no title
date: YYYY-MM-DD
media: *.mp3, *.mp4, *.mp3
cover: *.jpg

some description

the list of media files specified in the yaml metadata output a list of divs:

<div class="sfplayer" id="soundfile-1.mp3"></div>
<div class="sfplayer" id="soundfile-2.mp3"></div>
<div class="sfplayer" id="soundfile-3.mp3"></div>
<script src="app.js"></script>

app.js on page load fills in each div with a sound file player interface. then it checks if there exist annotations for the soundfile, which are saved simply as .json files on a (currently separate) PHP server. if there are, a list of (labeled) regions and a title are filled in.

the title is content-editable, meaning it can be edited directly on the page, and any changes made are saved live back to the soundfile.json file. any changes to the annotations are similarly auto-saved to the server. the php scripts that handle this are placed in a password-protected folder on the server, making for a crude but functional at this scale authentication-required to make changes to the annotations.


portable collection

G field recorder field recorder iphone iphone field recorder->iphone in-ear monitors in-ear monitors field recorder->in-ear monitors iphone->in-ear monitors ms-2 amp ms-2 amp iphone->ms-2 amp em172 omni mic capsules em172 omni mic capsules em172 omni mic capsules->field recorder em172 omni mic capsules->iphone portable battery portable battery portable battery->iphone

a small collection of physical modules with different possibilities for interconnection depending on the situation that arises, chunked as follows. in assembling this kit, preference is given to small and light vs big and bulky, trying to always carry with:

sometimes also:

Digital Components

iphone runs MobMuPlat, a container app for Pure Data patches, which in turn runs:


archiving workflow (current status)


folder structure:

| 0_process
  | *.mov
  | *.wav
  | *.aac

| 1_originals

markdown file

title: (insert title here)
date: YYYY-MM-DD
media: *.mp3, *.mp4, *.mp3

(insert description/related notes/ideas here, before forgetting)



inverting images (pd screenshots)

tiny markup in markdown allows for easy client-side image-inverting


img[src$='#pd-screenshot'] {
  filter: invert();
  mix-blend-mode: screen;



managing recordings

Generally, the archive/annotator displays a light, web-friendly version of the files for viewing, with the originals stored elsewhere, as the raw files quickly fill up storage space.

The files are timestamped with their creation date (YYYY-MM-DD_HHMMSS.*) to enable easy sorting and individuality and reinforce that they were created at that time and not edited afterwards.


a collection of file managment bash scripts, meant to be run in a folder of raw files. requires ffmpeg.
renames *.wav to file creation timestamp and compresses to mp3, returns list of mp3 files
renames *.mov to file creation timestamp and compresses to mp4, returns list of mp4 files
renames *.jpg to file created timestamp, compresses and resizes jpg images for web, returns list of jpg files


5D routing matrix

A 5D routing matrix for PD affords programatic/instruction-based access to conduct signal routing on-the-fly with variable destinations, fade-time, and scheduling (wait x-ms first).


[; route <out> <in> <value> <ms-to-fade> <ms-to-wait>(

This effectively decouples the patching interface from the PD GUI, allowing control to be given to, ie., the MobMuPLat touchscreen interface, which implements a grid control and 3 sliders (value, ms-to-fade, ms-to-wait).

This also exposes the potential for live-coding/text-based triggering, ie:

[metro 100]
[; route <dac~> <adc~ 1> 1 10 0; r <dac~> <adc~ 1> 0 10 20(
[metro 101]
[; route <dac~> <adc~ 2> 1 10 0; r <dac~> <adc~ 2> 0 10 20(

buffer looper




[pd smoother] T01

[pd smoother] handles timing for fading level to zero while changing playPos

screenshot of pd-smoother


portable sound setup options

hardware options

PiSound + Raspberry Pi

components required:
- RPI: 35€
- PiSound: 99€
- SD card: 10€
- Battery

- dedicated device
- stereo audio in/out

- [ ] document pisound explorations

- noisy preamp
- package is bulky and heavy


decided to proceed with phone setup to reduce complexity, given the availability of MobMuPlat container app, and since it's a device most always carried around anyway.

Bela Mini

toggle waveform
zoom: 0:00 / 0:00