David Bowie

Hearing the news early this morning, that David Bowie was dead, and seeing it ripple out across Twitter and Facebook in real time – seemingly everyone I knew (or had ever heard of) was affected by the news.

There have been so many people saying things like, “He told me it was okay to be different when everyone around me told me it wasn’t.”

I’ve been so excited to hear the new record, you know? I’ve always been interested in hearing what he was doing. He was the first songwriter or musician whose work I can really remember discovering for myself – rather than through my friends or my parents’ record collection. That counts for a lot, I think.

I first encountered him through a tape that my uncle’s friend had made. Hand-lettered J card and everything. It began with ‘Space Oddity’ and concluded about an hour later with, I think, his version of ‘Dancing In The Streets’. In between there was ‘Starman’ and ‘Ziggy Stardust’ and ‘TVC 15’ and ”Heroes” and ‘Sound & Vision’ (which I can remember feeling impatient with, at eight years old, listening on earphones in bed in the dark, because yes, for the first half of that song he’s simply nowhere to be heard) and ‘D.J.’ and ‘Fashion’…

My parents didn’t have any of his records. I had to head out and get them for myself, second-hand, from Scorpion Records in Wycombe and in the  market stalls in Poole (while visiting my grandma). By now I would have been 13 or 14? I can remember sitting on the bed in her spare room poring over the Low and ‘Heroes’ LPs that I paid £8 each for, looking at the sleeves, trying to imagine what they’d be like when I got home to my record player.

And then 1. Outside came out, and I saw him do ‘Spaceboy’ on Later, and ‘Strangers When We Meet’ is definitely one of my favourite songs by anyone, and for at least a couple of years thereafter I wanted nothing quite as much as I wanted to be a guitar player in David Bowie’s band. It seemed like the most fun a young man could possibly have. Well.

(I’ve gone back and deleted so many paragraphs from this post that are just stories I can remember of how I’ve listened to his music; when/where I listened to it; what it made me consider doing; what it made me desire; what I think I learned from it about music, or writing, or something else; who else I checked out on the basis of some allusion or reference he made…)

In my favourite songs of his, I think I can hear him joyfully playing with what a pop song is, what we expect a pop song to do, what we expect the person who sings a pop song to do (or, later: what we expect a pop star in his sixties to do…). Songs inhabited (particularly on Outside, but elsewhere too) by contesting voices; words that sometimes resist understanding and other times are perfectly, horribly clear; instrumental breaks made up of tangled wreckage…

But when all that is said and done, there are still songs – quite a number – like ‘Changes’, which doesn’t have any of that po-mo stuff going on: it’s just utterly gorgeous and very true.

He had great taste and good fortune in collaborators: Tony Visconti, Mick Ronson, Brian Eno, Carlos Alomar, Reeves Gabrels, others I’m sure I’ve overlooked. I think he understood that to do what he wanted to do in the way he wanted to do it, he needed ‘lighting directors’, ‘set designers’, ‘script editors’. In my favourite songs of his, all of these elements come together at once to produce something very special, something that for me has worked so well, and often so immediately, with the vividness of one of my own dreams, that I can’t help feeling a sense of loss today.

His work has excited and fascinated me for as long as I’ve been paying any sort of attention to pop music. It’s not sad, but instead weird, to think that there won’t be any more of it. I’ll get used to the idea, of course, but I think that for me, listening to his music felt like being able to visit an entire other imagination, lush and strange and sometimes dangerous, and never (okay, very rarely) boring. I don’t know how many other artists’ work I’ve experienced this kind of bond with. And that his songs so often make themselves felt with that sense of play, of lightness, of delight in possibilities … I suspect that’s a good lesson for anyone who wants to make art.

And this song is such a strange, wonderful thing. What a way to say goodbye.

Overcoming an obscure trap in the Rodin handbook tutorial

First of all, it’s not really a trap, but ‘counter-intuitive mystery you can encounter as a result of making a careless omission while configuring a piece of software that otherwise appears to work just fine, in a context of trying to learn to do something distinctly different’ would make for an even more ungainly title. In any event, I’m scribbling it here with as many  relevant keywords as I can think of, in case someone else manages to make the same careless mistake I did and would like to know how they came to do it. (Hi. You’re welcome.)

If you’ve installed the Rodin platform, you’re attempting to work through the tutorial in Chapter 2 of the Rodin User’s Handbook, and you’re getting miserably stuck while trying to perform the first data refinement (§2.8.3-4), with the specific problem that the platform won’t automatically discharge the set_cars/grd2/GRD guard-strengthening proof obligation on mac1, in spite of the manual’s assurance that it will, and in spite of your reasonable intuition that the guard is strengthened, you will likely be somewhat lost.

If you go into the Proving view and click around blindly, you may be able to interactively discharge the PO, which is unlikely to make you feel much more confident.

Despair not. It is almost certain that you have omitted to install the Atelier-B provers plug-in, as mentioned on the first-launch screen and page 21 of the handbook. Without the provers, many things – including discharging some of the simpler proof obligations – will appear to work, but more complex proof tasks will be left largely (and silently) up to you. In my case, I’ve been dividing my attention between several machines recently and on one of them I’d managed to overlook that step in the process of upgrading the platform.

Tagged , , , , ,

Tidal (no, not that one)

I was tipped off to Tidal‘s existence by Maurice Rickard and I’m wildly excited about it. I’ve been feeling vaguely inclined to learn both Haskell and Emacs for about five years; it turns out all that was really needed to tip the balance was a DSL for expressing music and controlling synthesizers and samplers.

I can’t help but admire this kind of behaviour, too:

Alex McLean brought Tidal into the world and he’s written a really interesting paper on the underlying concepts here.

The clip below, by Mike Hodnick, is a very musical example that shows off some of the possibilities for articulation and parameter control in the context of a tasty bit of acid (that puts me in mind of early Black Dog Productions, which is never a bad thing).

Mike has a YouTube channel with some great tutorials and performance videos.

The tutorial video that made my hair stand up on end was the demonstration of sequencing polyrhythms, which I can’t find a way to embed in this post. I love polyrhythms.

I’m looking forward to playing a lot more with Tidal. It outputs OpenSoundControl, so it should be a snap to drive Reaktor from it and do all kinds of fun things.

The HADEDA in (slightly) more detail

I haven’t had much time to devote to updating the HADEDA recently, but I did present a conference paper on the device at SATNAC 2014 in September, and it occurred to me that I hadn’t uploaded it on here yet. Here it is.

Introducing the HADEDA

It’s been a while since I posted here and some of that time has been taken up with a fun new project of mine, the HADEDA (‘Highly Adaptable Device Emitting Digital Audio’, no, seriously). Here it is doing some stuff:

In the natural world the hadeda (or hadada) is a species of ibis with an infamously loud and raucous cry. The HADEDA, by contrast, isn’t especially raucous – but it’s early days yet. 

This HADEDA, on the other hand, is a bundle of code you can grab (from here) to build and run on an XMOS startKit board (c. US$15 from Digikey). Version 1.0 implements a single two-operator FM synthesiser driven by a programmable step sequencer. Audio output is via a PWM signal, which will drive a speaker or earphones passably well (don’t try connecting it to a line input without adding an electronic filter to remove the PWM component, though). You’ll find some instructions at the project page (linked above), and in the next couple of weeks I’m going to discuss the inner workings of the software to show what’s taking place in the software, how, and possibly even why.

Tagged , , , ,

AES64, Ethernet AVB and me

The research that I’ve been working on over the last three years as a masters student is in the field of audio networks, which aim to make audio systems (live sound systems, public address systems, production environments) significantly easier to install, configure, maintain, manage and scale. Conventional audio installations often involve large numbers of different kinds of cable arranged in point-to-point links, which has a number of operational drawbacks that audio engineers have developed sophisticated but time-consuming workflows to compensate for.

Audio networks enable these systems to use commodity cabling (e.g. Cat5e or Cat6 UTP) and to use more sophisticated topologies, including the use of network bridges and dynamic re-routing of traffic. This technology is presently on the market in several forms, including CobraNet, Dante and RedNet. Characteristically, an audio signal is transmitted across the network to one or more receivers as a stream. Compared to a conventional audio system, this offers (among other benefits) the opportunity to dynamically redirect an audio signal without physically repatching the signal path.

Ethernet Audio/Video Bridging, or Ethernet AVB, is an open standard for audio networking that has been developed by the IEEE. The organisation of the standard documentation exposes some of the complexities involved in realtime transport of digital audio over bridged networks:

  • realtime audio can tolerate minor transport delay, if and only if the transport delay is deterministic (or bounded) — so the transport needs to support calibration and bounding of all delays for a given signal path
  • converging realtime audio and mundane data traffic on the same transport requires the transport to identify and prioritise realtime audio at the frame level
  • transport of realtime audio to multiple destinations requires that the destinations synchronise presenting the audio
  • to effectively synchronise audio presentation, the transport network needs a common clock

In addition to these transport issues, AVB also specifies a comprehensive approach to the high-level management and control of an audio network system, as described in IEEE 1722.1.

The AES64 standard developed by the Audio Engineering Society provides another approach to this area. It defines an IP-based protocol and command set, as well as a descriptive schema that allows for the representation of arbitrarily complex audio devices. In the past I’ve characterised AES64 as ‘descriptive’ and IEEE 1722.1 as ‘prescriptive’ — the former defines a scheme for representing any networked audio device and provides a set of general-purpose commands and mechanisms that can be developed into a control system, whereas the latter provides specifications for a catalogue of device components (from the complex to the fundamental, such as input jacks, gain controls, and so on) and for each component specifies the control operations that can be performed on it. From the perspective of an implementer, each of these approaches has its strengths and limitations.


Over the last three years I have been involved in developing an implementation of AES64 control over Ethernet AVB audio devices. The audio devices involved were DSP4YOU Ethernet AVB receiver/transmitter devices (pictured above) based on the XMOS XS1 series of multicore microcontrollers. This project used the XMOS open-source Ethernet AVB ‘reference design’ as a starting point, porting the reference design onto the DSP4YOU hardware and then extending the device with a comprehensive AES64 representation of the device’s features, including control over the CS4272 audio codec.

I’ve published a couple of conference papers on this work in 2013. The first was presented at SATNAC 2013 in Stellenbosch, South Africa. It focuses primarily on the design and implementation process, and you can access it here [DibleySATNAC2013]. The second was presented at the 135th AES convention in New York City and focuses on the representation and control of the Ethernet AVB device. You can access it here [DibleyAES1352013].

Over the coming weeks I’ll talk about some of the techniques I used in the course of this project. Any questions or comments, please get in touch.

Tagged ,

Get every new post delivered to your Inbox.

Join 187 other followers