Scaling Jack (and Jacktrip?) by using section-routing

This is really fast/early draft stuff.

The puzzler:  Building a 20-person mix-delete audio routing template in my Pretty Good Jacktrip Toolkit crashes (moderately-sized) Linode servers.  They seem to crash when automating large numbers of Jack-connection adds or deletes — issuing a delete-all with JMESS for example.

The hypothesis: Jack works OK, it’s the number of connections per endpoint that’s causing the trouble.

The idea to get around this (so far): split the mix-minus routing in two by putting players in sections.

There are now two mix-minus routings (“Each-player-in-section to All-other-players-in-section” and “Each-section to All-other-sections”), which still grow geometrically but result in much lower endpoint counts and thus will hopefully scale larger.

I’m testing this idea with 20-person-ensemble Ardour and JMess templates.  The Ardour template configures the mixer/DAW, the JMess template sets up the audio routing in Ardour each time players join.  They will be included in the Toolbox once I’m convinced they’ll work.

The Configuration:

Here’s the puzzler: a 20 person mix-minus routing (where every person is connected to everybody else).  That’s N(N-1) or 20×19 or 380 connections (19 connections per endpoint) times 2 (because there are two endpoints per connection) for a total of 760.  This is an old picture, so its got 21 players and is also in stereo, multiply by 2 again.

This is the pretty picture representing a challenging puzzler:

Here’s the proposed mix-minus routing for people within four groups – everybody in the group can hear everybody else.  See?  Not nearly as many connections at each endpoint.

The swooping-up curvy wires are bringing all-other-sessions audio to each person — see the next picture.

Here’s the mix-minus routing between the four groups.  People in every group can hear a mix of every other group.  This is another way to visualize the lower number of endpoint connections.

The swooping-down curvy wires are bringing player-audio into session-mixes — see the last picture.

A bonus.  This routing gives us “section mixes.”  Here’s a picture of the mix panel where they appear.

The results:

Aug 27, 2021  The 20-player x 4-group configuration runs, JMess can delete and reload routings and this setup can accept at least 1 Jacktrip connection in Linode’s smallest configuration (a “Nanode” which has 1 CPU, 1GB Ram, 512k swap, 25Gbyte disk, and costs $.0075/hour capped at $5.00/month).

It’s taxing the Linode right to the max (almost no memory or swap left, CPU routinely running between 50-80%).  JMess takes about a minute to tear down and refresh all the connections).  Moving up a notch or two runs more crisply — I’ve been routinely hosting sessions and doing development in a Linode 4GB ($.03/hour capped at $20/month).

Nanode test1.  I want to see how much load the tiny Nanode can handle.  This test was of the full mix-minus routing even though there was only one connected Jacktrip session.  That generates hundreds of additional audio channel connections to the stress-test.

All the channels worked.  Audio recording works — I recorded both the regular and broadcast channels of the  session.  A click click appears at exactly the same point in both recordings (presumably it came from me) — it’s a little more pronounced in the Broadcast-channel recording.

Here are audio-recording snippets, downloaded from the Nanode:

–  Regular-channels – stereo – 17seconds – 48k – wave

–  Broadcast-channels – stereo – 17seconds – 48k – wave


PerformaX 16×32 sander – reduce burning – improve airflow

Clogged sandpaper leading to burns in the wood has always been a big problem with my PerformaX (JET) 16-32 drum sander.  I’m hopeful that this is the fix — replacing the cover to provide a connection for a 4″ dust collection hose (from the current model) rather than the original one which connected a 2.5″ hose.  Here are the pictures — which started just before COVID and end…  today, almost a year and a half later.

Starting point — March 1st, 2020 — the old cover

The new cover arrives – March 7 2020

Check out this post to get part numbers for the new hood.  The description of the hood is in the paragraph just before the video, the part numbers are just after.  With 20/20 hindsight I should have ordered the new knob and latch mechanism, but it wasn’t too hard to move the old one over.  Here’s the link — go there for part-numbers at a minimum.

Removed the new-cover hinge-mounts – March 8, 2020

… and notched the hinge-indentations to match the old/standard cover.  This is the best view of the difference in size between the old 2.5 inch port and the new 4 inch port – about 2.5 times the area (and thus airflow) which should help a lot.

And that’s where those two parts sat until today — June 20, 2021.

I got stuck trying to figure out how to mark the place to drill the holes for the hinges.  My pal David was over and suggested putting the cover in the open position, which would put the hinges on top of it.  Easy to mark from there.  <facepalm>

So I finished it up this afternoon.  Here’s the hinge side…

Here’s the handle side.  Black tape covers the pre-drilled hole for the handle.  It would have been clever to order the new knob and catch (check those numbers out in the post-link above).  But it wasn’t hard to mount the old hardware.

Old hardware, remounted…

With a reminder as to how to open the latch.


Loopback: routing Jacktrip audio

Here’s a step-by-step post about routing Jacktrip audio using Rogue Amoeba’s Loopback software.  Loopback is a for-money successor to Soundflower and similar to BlackHole.  I like it because it is more visual and does more stuff.

The goal of this post is to get a person with a 2×2 interface going with a setup that will let them join a Jacktrip session reliably, without having to “rewire” things each time.  It also covers things like routing audio into and out of other audio software like Logic Pro, Ableton Live, Max and Zoom.

Alas, this is for Mac folks only.  Windows audio puzzles me.  I don’t have a clue how to do this on a Windows machine.

There are links to short videos that “animate” each of these steps and examples.   Click on the pictures to embiggify and read them.

Step 0: Assumptions – Click here for video
Continue reading

WORT memories — for the 45th anniversary

dear WORT.

happy 45th!

many thanks for the invitation to throw a few words into the virtual gathering.  here’s a collection of WORT memory-jogger photos, starting off with a few pages from early program guides, that tell a lot of the story of the early days.  clicking on the newsletter-page photos brings up bigger versions.

. . . .

here’s Numero Uno – volume 1 number 1.  my writing style in those days was a completely-hopeless attempt, by an illiterate geek,  to emulate my hero Lorenzo Milam.  Milam was guiding light for a gaggle of us who started stations all over the country — we lost him this year (2020), along with so many others.

a pretty good exposition about why most of us did all that work – it was fun, we made lots of good friends and we kinda took care of each other.  Jeff Lange did a lot of the graphics for the first-generation newsletters including everything on this page (i think). Continue reading

JackTrip — Hub-Mode server options

Here’s a scratchpad on how Jacktrip Hub Mode does audio routing as of early September 2020.

Starting the server in Hub Mode (capital-S instead of lower-case S) with the “-p” option offers four ways to configure the server.  Here’s an example launch string that would fire up a server in Mode 2:

jacktrip -S -p2

Mode – 0 (the default – my machine hears everybody and everybody hears the mix that I send them)

Continue reading

Configuring, starting and running a multi-client Jacktrip server with per-channel mixing

This post is intended for several audiences.  It’s a checklist for me when I want to host several people in a multi-client Jacktrip session and provide them with mixing, both to the final feed and among themselves.  It attempts to be clear enough that it might provide an example for others.  And it’s a demonstration of many aspects of this approach that could be improved with revisions to software and hardware

These examples are configured for an eight-way session between the host and seven remote participants.  It provides a separate mix for each participant (in this case deleting them from the mix they’re monitoring — but with the option to be added back in if they choose). Continue reading

Origin of the “Waumandee” in Waumandee Creek

We here at Prairie Haven live on Little Waumandee Creek in Buffalo County, Wisconsin.  We’ve always wondered about where the word “Waumandee” comes from and what it means.

Listen to these blackbirds and see if you hear them saying “waumandee!” the way I do.  Maybe that’s where the word comes from?


Battery power-storage system

This is a scratchpad post about the battery power-storage system. Another in the “Prairie Haven Operator’s Manual” series of posts.

Right now there are just a series of documentation diagrams that I made — I’ll add explanations as time permits.

Just for fun — here’s a picture of the Submarine Control Room Command Console that shows off the three inverters at the heart of the system. Continue reading

Soundscapes — audio recorders compared

I decided to compare some digital recorders for the purposes of recording soundscapes here at Prairie Haven.  I’ve got two of them, bought at different times for different purposes and I was curious to see how much different they were and whether it was worth carrying one of them instead just using my phone.  The nice thing about the phone is that it’s with me all the time, but I’d start carrying one of the others if they were better. Continue reading

Are projections of registration growth in generic top-level domains realistic?


Exactly five years ago today, I published this little rant about the growth rates projected for the new “generic top level domains” that were being introduced by ICANN at the time.  You know, domain names that end in things like .run or .lol or .bot (yep, those are all real alternatives to .com or .org if you’d like to strike out into new territory).

I decided to update it with the way things have turned out. Continue reading

Etude: November 2017 – Challenge: Two Minute Romantic Comedy Trailer – Hans Zimmer Masterclass

November 2017 – “Romantic Comedy Challenge”

We were provided instructions and a voice track (narration and character-dialog) by an imaginary director who is looking for a score for romcom trailer.  The “director” set a one-week deadline!  I sweated this one a bit, given that this is also Fall Projects season here at Prairie Haven.

Pretty darn cool challenge.  This was by far the most complex mix I’ve done in quite a while, 26 tracks across 13 scenes (in 2 minutes!).

Some fun!  Here’s the link to the 2 minute trailer.

Continue reading

Installing Flow-Rite battery watering on a Polaris Ranger EV

Definitely a narrow-audience scratchpad post.  We love our electric Polaris Ranger EV utility vehicle here at Prairie Haven.  But putting water in the batteries is not a lot of fun.  Messy, tedious, slow, etc.  So today’s project was to put a battery watering system in.


Everything is fine and we still heartily endorse this gizmo.  Battery watering now happens once a month. Continue reading