This is an old revision of the document!
Table of Contents
October 2026 newsletter
Our next Folk open house will be in the afternoon on Sunday, November 29, at our studio in Williamsburg, Brooklyn.
What we've been up to
Experiments
MIDI keyboard controller
Karl Rosenberg brought this midi keyboard in, and Omar generated a very small tidal synthesizer/driver for it, so he could play it:
Here's the program:
# KOMPLETE KONTROL A49 -> Tidal/SuperDirt.
# Blocking MIDI input; note-offs cut the corresponding key.
Wish $this is outlined green
Wish $this is labelled "MIDI piano"
fn tidal {code} {
set fd [open /home/folk/music/tidal-input w]
puts $fd $code
close $fd
}
set midi [open [list |stdbuf -oL aseqdump -p "KOMPLETE KONTROL A49"] r]
set midiPids [pid $midi]
On unmatch [list apply {{pids} {
foreach p $pids { catch {kill SIGTERM $p} }
}} $midiPids]
try {
while {[gets $midi line] >= 0} {
if {![regexp {Note (on|off)\s+([0-9]+), note ([0-9]+), velocity ([0-9]+)} $line \
-> state channel key velocity]} {
continue
}
Hold! Wish $this is labelled $line
set down [expr {$state eq "on" && $velocity > 0}]
set note [expr {$key - 60}]
set cut [expr {1000 + 128 * $channel + $key}]
set gain [format %.3f [expr {$down ? 1.8 * ($velocity / 127.0) : 0}]]
set sustain [expr {$down ? 10 : 0.05}]
tidal [subst {once $ note "$note" # sound "superpiano" #\
octave 5 # gain $gain # sustain $sustain # cut $cut #\
room 0.1 # nudge (-0.28)}]
}
} finally {
close $midi
}
One nice thing is that you can swap out the superpiano synth for any of the other built-in Tidal synths. (and this generalizes to all the properties of the synth! you could physically swap them or have some other UI to control them)
RF-DETR object detection
(configurable camera slice width so the 4K image doesn't kill performance)
Tom laser program
Eric Chen and Karl attached to hand:
General system fixes
- Much better handling when a worker dies (Tcl interp cleanup, C modules retained, GPU structures cleanup, Python socket cleanup) so worker churn doesn't inevitably cause system exhaustion
- Use POSIX locking instead of relying on pid not being reused (fixes bug where system thinks it's still alive after reboot)
- Calibration info is keyed by projector and camera name, so we can hold multiple calibrations in theory (although the projector calibrations may fight if it's same projector)
- Destructor race/UAF fix, where we now establish destructors before creating/reacting statements, so that there's no risk of a subgraph spawning too early before destructor inheritance in the parent, parent going away, & then subgraph (with empty destructor set) accessing mistakenly-freed data that should've been destructor-guarded
- Handle JPEG decode failures better, reject those frames if possible, don't crash
- Andrés: I've been working on adding an autocomplete feature to the editor. It's satisfying because it draws from the statements actually in the database, making it easy to collaborate based on what other programs exist in the system:
Zicl update
Mason: this month has been pretty slow for Zicl, since I haven't had a ton of time to dedicate to it. But! Something exciting happened. Enough of the the system is functional that I was able to get all the core libraries to compile and evaluate, and so I was able to benchmark it relative to Folk's current interpreter. And…
2x faster to get core libraries running, and half memory utilization!
There's still a lot of work before I can say it has parity with the main codebase, including a long tail of broken features/incompatibilities, as well as cleaning up the code, but it's come a long way from the lowly tokenizer I started on a year ago.
DrawTalking
theinfinitestar | 2026-10-23 17:50 UTC
<@481691315684245505> <@129392711420739584> <@524125522825969684> huge moment!!! i got matrix transforms + scale factor to be applied in real time to dtObjects, meaning they can now move around in realtime!! i think this is the first time simulated behavior from dt is being shown on folk!!
theinfinitestar | 2026-10-12 21:48 UTC
finally got some proper time to work today and got drawtalking entities to draw in on folk! 😄
paul_18583 | 2026-10-08 22:35 UTC
osnr | 2026-10-04 16:16 UTC
Unable to upload IMG_9660.mov to DokuWiki Unable to upload IMG_9664.mov to DokuWiki
Note from Daniel: These .mov uploads failed with this log
00:07:50 [error] Failed to upload media to DokuWiki error={:dokuwiki_error, %{"code" => 236, "message" => "Failed to save media: Upload denied. This file extension is forbidden!"}}
rtbw-cnc
osnr | 2026-10-15 00:56 UTC
folk-hex
Upgraded to dual 4K60 cameras with a longer throw, mounted further up near the projector.
https://www.amazon.com/dp/B0GKGYNDWC?ref=ppx_yo2ov_dt_b_fed_asin_title
Many advantages, but not done yet.
Multi-camera calibration
A few different fixes for multi-camera calibration, mostly motivated by the CNC project where we have stereo cameras.
- The breaking change here is that /setup now has an explicit “Detect AprilTags” checkbox. It should be checked by default and auto-checked by migration on existing systems.
- But if it's not checked, you won't get tag detection. (We want it to be opt-in since many systems will have secondary cameras for laser detection, workpiece-finding, depth estimation, documents, etc.)
- 4K cameras get high decimation (we should probably make this configurable) to make performance better
- Moderate calibration bug fixes: we weight pixel errors properly instead of squaring, we increase maxiters from 200 to 400, and we normalize homographies so one pose can't throw rest off. This should make calibration behave better and more reliably (helped on rtbw cnc folk)
Outreach
Recurse Center visitors
What we'll be up to in November
- Our next Folk open house will be in the afternoon on Sunday, November 29, at our studio in Williamsburg, Brooklyn.
- Andrés: TODO
- Omar: Still need to ship RFID tracker & do projection demo of distance to confirm visually that it works
- Omar: Fix CNC preview issues (flip, 90 degree rotation, workpiece height correction)
- Omar: Try filter on object tracker
- Omar: Hack on scheduler; try to make 4K input not mess up the system badly
- Omar: Maybe make a table harness?












