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
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:
click on recording to load soundfile, waveform, and start playing
click and drag on waveform to create and select region
type to annotate (some commands are interpreted):
start
sets start position, fades in length of region
end
sets end position, fades out length of region
rm
skips region with fade-in/fade-out
currently set to 500 ms fade
[ ] add variable fade-in/fade-out times
eg. rm 500
[ ] add crossfade
note: adding/changing annotations is currently password-protected
- [ ] add guest user login
roadmap
[ ] offline mode
[ ] video player - annotate video
[ ] add highlight/star/rating capability
[ ] fix sometimes being overwritten bug
[ ] add play/pause button next to waveform
[ ] display file length
[ ] mark recordings for removal (syntax: rename with 'rm' at start of )
[ ] for slomo videos: option to change playback speed and set+save default playspeed. how to deal with the slow-motion recordings (120fps captured on iPhone 5s)? maybe the annotator shows the fps and exposes the option to change playback speed, with the last-selected setting sticking?
how to display multitude of files connecting to single recording moment? small mixer between mic input and sound output with preset setting?
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).
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:
YYYY-MM-DD_test-entry.md
---
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:
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.
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:
field recorder (olympus ls-5)
battery case
battery
otg+usb cable to connect field recorder to iphone
usb/lighting cable to charge iphone
iphone (running PD container patch)
wide angle/macro lens
crystal prism
headphone case
in-ear monitoring headphones
omni mic caps (primo em172)
headphone/mic splitter
headphone splitter
sometimes also:
yamaha reface cp keyboard
usb cable
ms-2 amp
bluetooth speaker
Digital Components
iphone runs MobMuPlat, a container app for Pure Data patches, which in turn runs:
container patch that holds the 5d routing matrix and modules to be developed along the way. (currently, filters, pitch-shifting delays, jumping loopers, buffer looper) (planned, resynth)
recorder which captures raw mic input, sound that is output, and a voicememo
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.
scripts
a collection of file managment bash scripts, meant to be run in a folder of raw files. requires ffmpeg.
wav-to-mp3.sh
renames *.wav to file creation timestamp and compresses to mp3, returns list of mp3 files
mov-to-mp4.sh
renames *.mov to file creation timestamp and compresses to mp4, returns list of mp4 files
jpg-to-web.sh
renames *.jpg to file created timestamp, compresses and resizes jpg images for web, returns list of jpg files
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).
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:
findings:
- noisy preamp
- package is bulky and heavy
Phone
iphone 5: 40€ (used)
otg cable: 20€
audio interface/field recorder: 60€
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.