Red Echo

January 4, 2018

I went on a tear the other day, after finding out what wavetable synthesis actually does – I’d always vaguely assumed it was just another kind of sample playback, and wasn’t interested. A few hours of python later, I have a little program that goes mining through my music library, hunting for interesting waveforms; a little normalization and some spectral morphing later, and out come a bunch of wavetables, like you’d use in Serum or Massive.

The machine proceeds to use its wavetables, in a barely controlled sort of let’s-just-see-what-happens way, to generate anywhere from a few seconds to a few minutes of… well… let’s call it “sound”. It’s terrible, most of the time, admittedly – but it is a surprising kind of sound, too, and worth the exploration, for the compelling bits of alien music that sometimes come blurting out of that weird robot’s brain; dark throbbing rhythmic gritty off-kilter stuff that I would never have imagined making on purpose.

I had a few ideas for ways I might try to control this novel instrument – following the envelope or pitch of one sound to drive the generation of another, perhaps – so I went to look at the state of the music-analysis world, imagining I’d find some envelope-follower algorithm and do some stuff with FFTs.

Well, sure, tempo sync is old hat in the DJ world by now, and I’ve even gotten used to effortless key-matching, but the tools you can use now, and the kinds of information they can measure about music, are far beyond what I had imagined.

aubio, for example, is a Python library, and an unusually easy-to-use command line tool, which can find beats, follow the tempo, distinguish notes, follow the pitch of those notes, and also break the track up into its louder and quieter sections.

pyAudioAnalysis builds from there,, offering a generic toolkit for extracting, classifying, and measuring features in sound; you can use this library to train a custom segmentation engine, which will recognize and extract any particular pieces of an audio recording you might happen to be interested in.

Essentia, though, is the box of shiny toys that really made my head explode. Beat tracking, segmentation, feature classification, sure, we’ve seen that now; but how about… melody extraction? Mood detection? The list is amazing: dynamic complexity, spectral energy, dissonance, spectral complexity, beat loudness, and danceability!?

You’re not stuck on the command line, either – Sonic Visualizer will accept Essentia as a plug-in, along with a whole lot of others, and then there’s this Pure Data toolkit…

October 5, 2017

Thoughts about audio mixers

I’ve been spending a lot of time spinning music lately, and now that I’ve basically got the sound system I want, I’m thinking about mixers.

In a nightclub environment, it makes sense for the venue to provide the equipment, since they’re going to leave it set up all the time and use it night after night. Club DJs therefore expect to show up and take turns playing their sets on the same set of decks.

Those of us who play in a festival / rave / party context, as I do, have a much more DIY attitude: everything gets set up and torn down all the time, every event comes together a little differently, and you never know what you’re going to find. We all therefore tend to be self-sufficient, bringing our own controllers and expecting nothing more than a PA hookup. So, there’s always a little fuss around patching in and out of the mixer, and it can be a little messy and complicated. At a party I went to over the weekend, there were some pretty significant disruptions to the flow of the music because the PA mixer which happened to be present worked a little differently than most of us were used to, and we had to figure it out as we went.

Beyond that, I’ve been hosting music jams at my house for a while now, where we all get together and plug in to the big PA system downstairs and take turns slinging music back and forth at each other. Normally you’re just transitioning from one DJ to the next – but in this environment there could be half a dozen of us all interacting randomly.

So I’ve been thinking about mixers. Nobody, so far as I can tell, actually makes the mixer I wish I had, so I’ve been… well, fantasizing, I guess, about the idea of building one myself. I probably won’t actually do this, more likely I’ll find an existing product which is close enough, but… I want something which is neither a standard PA mixer nor a standard DJ mixer, but something in between.

I want a six channel stereo line mixer in console format. That is, I want a box that sits on a table, with all of its plugs on top, so it’s easy to plug in and see where you’re plugged into without having to poke around in the dark.

PA mixers always have a bunch of mono channels. I don’t want any. We’re not a band, there are no instruments, there are no microphones. Everyone using this device has a fully-formed stereo signal to contribute. Most mixers also have EQs on each channel. I’d rather omit them. We already have those knobs on our controllers.

All I want, on each channel, is a pair of stereo input jacks and a volume fader, maybe also a level meter or at least a single LED to indicate that signal is present.

But! – and here’s where I get to the part I can’t just buy already – I really do want an equalizer on the master output. PA systems don’t have a flat response and they don’t always respond the same way at different volume levels. There needs to be a way I can shape the output to suit the room and the equipment, which is *separate from* the EQ control the DJ is using for their artistic purposes. That is, I want to be able to set up the EQ for the PA once, at sound check, and then each DJ can ignore that problem and use their EQs however they want for mixing.

So, this is all I want, really: six stereo inputs with volume faders, an optional “signal present” LED for each, then a master section with a master volume, a master EQ, output level meters, and – this is important – *balanced* outputs, preferably XLR. In addition, there should be a second output of the same signal, with a separate volume control, for the booth monitors.

That’s it. That’s all I need. If I had this gadget, and used it as the master PA mixer, any DJ with a controller would easily be able to step up, see what was going on, patch in, and transition over with no confusion about which inputs do what, or how to route the sound, because it would only do the one thing that we really need a mixer to do. It would also give me a way to configure the sound without having to get in the way of each performer’s creative flow or have an individual conversation with each DJ about the characteristics of the sound system and how to compensate for them… without losing the nearly-idiot-proof simplicity of the active PA gear I’m using. That is… it would work even if I weren’t there to set it up.

Notes on the basic circuits involved in an audio mixer

A simple three channel mono mixer design

Some extremely simple passive mixer designs, no power input required

A comprehensive introduction to balanced audio signals, with an approximate sketch about some of the circuitry involved

Addendum: The venerable Numark CM100 looks like a fancier version of what I want. Except… it’d be easier to patch in and out if the input jacks were mounted on the faceplate, like a PA mixer.

Second addendum: there are lots of prefab circuit modules available for cheap on eBay: 5-band stereo EQ, 10-band stereo EQ, balanced output driver, same but preassembled with XLRs

Well. I should still probably just buy something instead.

June 15, 2017


January 21, 2017

I played at a masquerade party last night, which was themed on the “last days of the Weimar Republic”, as a dark joke against Inauguration Day. This obviously called for some retro-style escapism, so I spun up a non-stop electroswing set, which I’ve uploaded for you over on Mixcloud:

December 15, 2016

Welcome to 2030. I own nothing, have no privacy, and life has never been better

There is a good business idea in this article of speculative fiction, which was written by an MP in Denmark:

Welcome to 2030. I own nothing, have no privacy, and life has never been better

Once in awhile, I will choose to cook for myself. It is easy — the necessary kitchen equipment is delivered at my door within minutes. Since transport became free, we stopped having all those things stuffed into our home. Why keep a pasta-maker and a crepe cooker crammed into our cupboards? We can just order them when we need them.

Well, why not? All my tools, which used to take up space in my house, now live at a makerspace, where they can be used by other people during the great majority of the time that I am not personally using them. How many kitchen appliances – or even just pots and pans – could be similarly homed elsewhere, if it could be assured that I could have them delivered whenever I actually needed to use them?

I cook a full meal for guests once a week. I cook a little bit, for myself, a handful of other times a week. The only pieces of kitchen equipment which are reliably used every single day in my house are the kettle and the coffee press. Yet the kitchen – which takes up about a quarter of one floor in the building I call home – is largely comprised of storage space, much of which serves to contain objects that are used at most once or twice a month.

Well, why not store it somewhere else? There are already banquetting services which will deliver a flat of glassware or plates or whatever if you are going to host a dinner party, and then pick them up again afterward. Why not do the same with boxes full of pots and pans, or with specialized hardware like a slow-cooker, a fondue pot, a panini press, or a waffle maker? I don’t own any of those objects and so I never cook the foods they are designed for, but I totally would if I could just have one dropped off whenever I needed it, without needing to purchase it, own it, and store it afterward.

December 14, 2016

Programming is Forgetting: Toward a New Hacker Ethic

The ‘hacker ethic’ has been a significant influence on my philosophy of life; I’d feel pretentious actually calling myself a “hacker”, but I certainly identify with the ethos. I was all primed to cringe and react when I started reading this transcript of a talk which takes a critical view on the subject, but it turned out to be thoughtful, clearly articulated, and… important.

Programming is Forgetting: Toward a New Hacker Ethic

I often try to pull a representative quote that gets at the gist of an article, but this time I’m just going to say: go read it.

I do want to quote one bit, though. I’m five years older than the author, and my references are slightly different, but this is my story too:

Hackers the book relates most­ly events from the 1950s, 60s, and 70s. I was born in 1981, and as a young com­put­er enthu­si­ast I quick­ly became aware of my unfor­tu­nate place in the his­to­ry of com­put­ing. I thought I was born in the wrong time. I would think to myself I was born long after the glo­ry days of hack­ing and the com­put­er rev­o­lu­tion. So when I was grow­ing up I wished I’d been there dur­ing the events that Levy relates. Like I wish that I’d been been able to play Spacewar! in the MIT AI lab. I wished that I could’ve attend­ed the meet­ings of the Homebrew Computer Club with the Steves, Wozniak and Jobs. Or work at Bell Labs with Kernighan and Ritchie hack­ing on C in Unix. I remem­ber read­ing and reread­ing Eric S. Raymond’s Jargon File (Many of you have prob­a­bly seen this. I hope some of you have seen that list.) on the Web as a teenager and con­scious­ly adopt­ing it as my own cul­ture and tak­ing the lan­guage from the Jargon File and includ­ing it in my own lan­guage.

This feeling, this perception of myself as having just missed the part of the computing revolution I really admired and wished I could have participated in, has shaped the broad structure of my career. Up and up, the towers of abstraction have gone, while I have furiously dug deeper downward, trying to master these machines at the level my childhood heroes did. Well… I’ve gotten there, I suppose, but in the meantime the industry has gone elsewhere; the problem is that I have a hard time caring about most of what it’s busy doing. My basic model for the kind of computing work that is most important and most worthy of attention continues to be shaped by the example set in the ’70s and early ’80s.

August 16, 2016

Fabulous adventures in generating fantasy world maps, resulting in the Uncharted Atlas, a Twitter-bot sequence of imaginary places.

I am going to Burning Man this year, and I have mixed feelings about it. This will be my tenth burn since 2001; I last visited Black Rock City in 2012. This experience has changed me, thoroughly; but the years have also changed the city, and the ways we have changed are not always congruent. I’m not sure how well I fit in there any more. I wonder – to what degree was the activating sense of freedom and possibility that ignited my current life pattern an artifact of that moment, rather than an ongoing characteristic of the event? Do I still need Burning Man? Does it still need me?

I’m looking forward to working hard in the dust with my friends. I’m looking forward to camping with AJ. Dancing under the stars, exploring creative art projects, meeting interesting people, finding creative solutions to unexpected problems; I love this world. It will be a good time.

I don’t think that Burning Man still has the power to change my life, because it already did that. I kept on bringing it home, over and over, until I’d rebuilt my life around it. Would the 2016 burn experience have that effect on me if I were coming to it for the first time? I know I’ve changed, and I know the burn has changed, but it’s hard to know which feelings to associate with which changes.

August 1, 2016

Xvisor is an open-source hypervisor targeting various flavors of ARM as well as AMD64. I’m curious whether it might be a useful component for Fleet.

July 11, 2016

Wow, do I feel loved. Adam H. just showed up at my house to coordinate delivery of a gift from a group of friends – I didn’t catch all the names he rattled off, and will have to catch up to thank them properly – a hot tub! Wow! This tickles me just right – it will be fun and relaxing for me and the others who live here, but I’m also delighted that I’ll be able to offer a warm refreshing soak to my guests after dinners and parties. – Including, of course, the friends who bought it for me. What a lovely virtuous cycle!

June 27, 2016

Columbia plateau offroading adventure


Thanks to Geoff S. for the photo.

June 18, 2016

Fractal Fryday psytrance

The Seattle Psy Ops crew invited me to play the opening set at their monthly Fractal Fryday event, and I recorded the mix for your listening pleasure. As much fun as I’ve been having with glitch-hop and downtempo lately, progressive psytrance remains my main squeeze, and getting to kick the night off for a club full of psytrance aficionados was a real treat.

June 13, 2016

I played a Doomtruck glitch-hop/electroswing set for Lesley & Steve’s birthday party this weekend and was delighted by the reception it got. People were in a mood to dance, light-hearted fun the order of the day, so I gave ’em the swingiest, funkiest, bassiest, booty-shakingest glitch in my library, and they loved it. Oh, so satisfying. As usual I recorded the set so you can stream or download.

June 8, 2016

Fury Road vehicle gallery

After production work, before they got all beat up in the desert – a gallery of photos of the Mad Max: Fury Road vehicles. Lovely craftsmanship. Using this as design inspiration for work on the Verhängniswagen, aka Doom Truck.

May 22, 2016

Kinky Salon DJ mix set

Check out the set I recorded last night for Kinky Salon at the Factory Luxe – an hour of dirty, dubby downtempo for a Barbarella-style sexy-sci-fi party. I had fun mixing this up and I hope you’ll enjoy it too.

May 21, 2016

While I can’t say I ever had any particular interest in the idea of an ocean cruise, after reading the David Foster Wallace classic “A Supposedly Fun Thing I’ll Never Do Again” it seemed completely obvious that cruise ships were not a thing I would ever care to do. But I just read a really funny article on hackernews which describes a transatlantic crossing as the perfect environment for writing code – it sounds totally bonkers, but I can see what he’s getting at. Flipping it all around, he turns the isolation into focus and the scripted monotony into intellectual freedom; all he has to do is think and write, while the ship and its crew take care of everything else.

May 19, 2016

When I grow up, I will drive a tank, and this is why.


May 18, 2016

Bookslut was born in an era of internet freedom. Today’s web has killed it

I miss the internet. I know that, technically, the internet still exists. It’s the Facebook-, Twitter-filtered series of algorithms designed to put cat videos, think pieces, and advertisements in front of you. But I get nostalgic for the days before money invaded the internet – the early 2000s, in particular, when I created the literary blog and webzine

Back then, nothing you did mattered. And that gave you freedom.

May 11, 2016

Never heard of the XDG Base Directory spec before, and I have no idea how widely supported it might be, but it seems like it might be a helpful way to move unix apps more toward a bundle/package architecture than the traditional “splatter everything all over the machine” hopelessness.

May 10, 2016

Saturday night DJ mix set

I posted a two-hour recording and track list from Saturday night over on Mixcrate: May 2016 at the Dungeon. Gritty, dubby, 90-105 bpm downtempo, with an industrial edge and traces of psychedelia.

May 3, 2016

How to Pick Music for People on LSD, From a Scientist Whose Job That Is

I know a fair number of practitioners in this field, but they generally call themselves “DJs” and not “scientists”.

April 23, 2016

This is the kind of detailed, hacker-friendly explanation of ELF for which I really wish I’d had a Mach-O equivalent when I was writing the Mach-O linker for REALbasic.

April 18, 2016

I spent all weekend working on the Doom Truck with AJ. We are upgrading the shop box, making it a bit nicer to camp in, which mostly means cleaning up all the interior surfaces and building in a permanent bed frame with storage underneath. We’re not going to go full RV style with cabinets and fold-outs everywhere, because we like the open feeling it currently has, and we want it to continue being versatile.

First of all we have to stop all the water coming in, which caused a bunch of problems over the winter. One of the window frames leaks – but there are also lots of holes drilled through the walls and floor where previous owners had bolted down various workbenches and storage containers. Our plan was to weld plugs into all these holes, then grind ’em flat. We can always weld tie-down tabs onto the sheet metal if we want to.

Well… it was a long complicated process, and I started to bore myself trying to recount the details, so I’ll just say that it took half a dozen trips to various hardware stores and over $1000 spent on tools and supplies before nonstop labor finally got us to the point that we could start welding around 4 PM on Sunday. Oh, my.

We did end up making a fair bit of progress once we got going: all the floor holes are filled and ground down, so the wheels won’t kick water up into the box anymore, which means we can put down that nice cork flooring without having it rot from underneath… And I patched up the assortment of bolt holes down one side of the truck with big round rivety-looking carriage bolt heads, welded in place. The welds look terrible and it’s going to need a bunch of cleanup, but at least there’s no more daylight leaking in.

I didn’t get to the bolt holes on the other side of the truck; AJ thinks she will try to tackle those during the week. There are also a couple of big square access panels for equipment long since removed, with extremely janky covers… we’re going to weld the covers on, stuff some insulation in the gap, and weld them shut on the inside as well. Finally, we need to cut away and rebuild the threshold, which has leaked enough water in that the wood is a little rotten…

But hey, this is not a bad set of problems to have. The truck works great; we don’t have any mechanical problems to fix right now. It took a long time to get our metalwork process going but now things are moving quickly. And wow is it going to be nice to park our giant clanky apocalypse-proof monster truck at every festival and camping trip we go on this summer, then throw open the doors and have a clean, stylish, convenient, and actually pretty damn swanky home-away-from-home inside. I’m looking forward to it.

Also looking forward to installing a muffler, now that I can weld stuff in my back yard, because *damn* does that thing need one.

Oh yeah! I just discovered the wonder that is turbodiesel propane injection. It’s like nitrous for a gas engine, giving a significant horsepower boost, which will be super useful when climbing up hills – but not only that, it actually improves fuel efficiency, cleans up the exhaust, *and* puts no additional stress on the engine, since it actually *lowers* burn temperature slightly. Way simpler and cheaper than any of the other power-boosting improvements we’d been considering, and we’re already planning to have a propane tank on board to power the stove, heaters, etc. Super cool, it should mean it’s no longer a hassle trying to convoy out to an event with other vehicles.

April 15, 2016

A convenient list of lightweight, embedded-friendly alternatives to common, elaborately developed unix libraries.

April 14, 2016

Copperhead is a new Android-based mobile operating system with an appealing design brief. They’ve implemented an array of sensible-sounding security improvements, and the technical explanations for these changes are reassuringly lucid. They’re also open-source focused and not tied to any proprietary cloud services, which is exactly what I want. I might have to give this thing a try; I might hate my phone less.

While there are hundreds of C compilers in existence – it’s even possible, though highly unlikely, that the terrible C compiler I wrote back in 1997 is still out there somewhere – there are only two (and a half) of them which actually matter. The maintainers of these compilers increasingly subscribe to a pedantic, user-hostile interpretation of the C language which, as a user of the language, has become rather troubling:

Recently we have seen spectacular advances in compiler optimisation. Spectacular in that large swathes of existing previously-working code have been discovered, by diligent compilers, to be contrary to the published C standard, and `optimised’ into non-working machine code.

In fact, it turns out that there is practically no existing C code which is correct according to said standards (including C compilers themselves).

Real existing code does not conform to the rules now being enforced by compilers. Indeed often it can be very hard to write new code which does conform to the rules, even if you know what the rules are and take great care.

It’s an interesting post by Ian Jackson of the Debian project which some additional links that are worth reading if you have an interest in this sort of thing.

April 1, 2016

I CAN’T STOP: it’s a Mackie SWA1801 for $650, JUST WHAT I ALWAYS WANTED (since the last time I got what I always wanted, temporarily(?) sating my PA-equipment lust with a pair of SWA1501s).

No, I’m not going to buy it. I’m not. Where would I PUT it? What about the fact that the gear I’ve collected will already max out a 20-amp circuit? For that matter, would this beast even fit through my basement door? Why do I keep looking at these things?

Well, I guess that one’s obvious: MORE BASS.

March 23, 2016

Why Microservices:

Lately, some of these SCS turned out to be still too large, so we decomposed them by extracting several microservices. Because we are already running a distributed system, cutting applications into smaller pieces is now a rather easy exercise. One of the reasons, why I agree with Stephan Tilkov that you should not start with a monolith, when your goal is a microservices architecture.

This article is not about the pros and cons of microservice architectures. This article is mostly about the pros. Not because they do not have downsides, but because I’m biased and completely convinced that microservices are a great idea.

March 22, 2016

My response to this article is a resounding “well, yeah,” but it’s interesting to see someone saying it, and in a social-science research context, at that:
People Want Power Because They Want Autonomy:

All told, this research indicates that the desire for power may be somewhat misplaced: Generally, when people say they want power, what they really want is autonomy. And when they get that autonomy, they tend to stop wanting power.

March 19, 2016

I don’t hate aggravator any more and may eventually have to change its name. I blamed the hardware, since it’s running the same Ubuntu 14.04 I’ve used successfully on three previous Thinkpads, but installing a different video driver fixed the “crash on resume” issue, which was really a “crash when the machine discovers you’ve plugged in its power cord” issue, and uninstalling whatever the hell “apport” is made the relentless barrage of “the machine has crashed, do you want to send us all your personal data so we can pretend we care” messages stop accosting me at startup.

With a second battery replacing the DVD player, I feel comfortable leaving the power supply at home, now, too.


March 15, 2016

Archive of Interesting Code is a long list of clean, readable, well-commented implementations of useful algorithms.

Next Page »