My Headphones

As someone who works in audio, I appreciate a good quality set of headphones.  I am, by no means, an audiophile – I’m an engineer. I want my products to operate within tolerances that are suitable for their purpose – I’m not up for cryogenically freezing my cables or painting my CDs with green pen, or indeed any other magical tweaks to get marginal gains, at best.

Sennheiser HD-25, my old “daily driver”

For a long time, I used to rock a pair of Sennheiser HD-25: headphones designed to attenuate the sound of the sonic boom on Concord and were only released to the public after people kept stealing them and giving them to House DJs who, as it turned out, were quite into the high levels of isolation they had.  They were really handy for the kind of stuff I was doing back then – monitoring broadcast mixes in loud environments, sound checking bands, that kind of thing.

These days, I don’t have quite such stringent requirements – and as great as the HD-25’s are, on-ear cans tend to get a bit uncomfortable for me for long periods of time.  However, I have retained the penchant for full-bodied bass.

Thus, my audiophonic journey led me to Beyerdynamic. Their DT100 were almost ubiquitous in the UK’s radio industry at one point (and still have a pretty big presence today), and notable by the fact that every component of them can be replaced. Earlier in my career as a broadcast engineer, I spent a fair time doing just that.  From the drivers to the cable to the headband to the internal wiring, each piece will have a part number and you can replace it.  The problem, for me, is that they were uncomfortable and sounded … well, pretty rubbish if I’m honest! And I couldn’t help feeling like if I were to go out wearing them, I’d look like Alan Partridge

Steve Coogan as ‘Alan Partridge’ wearing DT100’s

But on the positive side, they company have a slightly sleeker brethren, the Beyerdynamic DT770 PRO, used by hundreds of musicians in recording studios, favoured by pop radio stations – and frankly, if they’re good enough for Trent Reznor, they’re good enough for me.  In all seriousness, they have a fairly flat frequency response 20Hz-20kHz with a bit of a bump at the top and bottom, and have excellent isolation properties.  And, importantly, I know how they sound, so can evaluate audio with them pretty well (distinguishing the sound of the cans from the source material).

DT770’s, approved for use with beards.

So, good starting point. And, they also offer 80 ohm and 32 ohm versions which make them more suitable for use with mobile devices and consumer kit (which would struggle to drive the 250 ohm versions on their own which are the pro standard). Admitadley they’re not the same drivers any more, but they’re fairly close.  So, I go for a Beyerdynamic DT770 Pro 80 Ohm (yes, this is an affiliate link)

The stock cable is fine, but sometimes the minijack connector doesn’t fit into phones, the cable is too long, or is in some way inconvenient. So I decided to modify the headphones to make the cable detatchable.

This is a pretty simple modification, once you get the hang of dismantling and reassembling these (and, as I previously mentioned, I’ve dismantled quite a lot of headphones)

Jason from shows you how to fit a mini-XLR connector in this video

In my case, I instead went for a smaller 3.5mm minijack socket which required less intrusive modifications.

Clearly, I now need a cable for my headphones.  I could have bought one, but I decided what the heck, I’ll make that myself as well.

One of my favourite brands for flexible and rugged cable is Van Damme, and for headphones where you just need 3 conductors (ground, left and right), their Pro Grade Classic XKE 1 Pair Install Cable is thin and unobtrusive, but high quality. Although you shouldn’t really put left and right on a twisted pair, the distances I’m likely to be going with this (a meter or two, at most) means this is mostly a non-problem.

Historically, I’ve not been a fan of minijack connectors.  Give me an XLR or even a 1/4″ Jack to solder up, and I’m happy, but minijacks are just a bit fiddly for my liking.  Or that’s what I thought – until I discovered the Amphenol KS3PB-AU which is, frankly, a joyous thing to solder and assemble.  And, unlike crappy minijacks from Maplin (RIP), all of the terminals are actually connected when it comes out of the bag!

They look pretty swank as well.

To finish the cable off, partly because it looks nice but mostly because my cat would chew through it otherwise, some 6mm Flexo PET Expandable Braided Sleeving in Neon Blue, and some 4:1 7mm blue heat shrink to hold down the ends.  A benefit of applying techflex is it makes it a lot more difficult to tangle.  A downside is that it does cause some minor microphonics when it rubs against things, but that’s no worse than many other headphone cables.

My effort at a good looking headphone cable

This is what I use to connect my cans to a PC or laptop.  I’ve also got a similar but slightly longer cable with 6.25mm stereo jack at one end, sleeved in white techflex, just in case I find myself needing to hook into some slightly more pro kit and need a bit of space to move.

Finally – I have a problem that my Pixel 2 does not have a headphone port, and I’ve not had much luck with the Google USB-C to 3.5mm stereo adapters. So I decided to go Bluetooth, and got myself a SZMDLX Bluetooth reciever (yep, that’s certainly a jumble of letters right there!) which seems to do the job, and can be clipped to the headphones quite conveniently

I also made a shorter cable with a right angle Neutrik minijack (eugh) to hook this up, as the one which came with the item became faulty in a matter of days.


Finally, after sweating into the stock earpads for a fairly significant amount of time, I decided to get some Brainwavz Round Pads in a  black PU Leather finish.  And, for me, this is a significant upgrade as it provides a better seal around my head (and glasses!) and helps stop the bass from escaping.

Wireless DT770’s anyone?

So there you have it, a guide to my headphones that nobody asked for but I wrote anyway!

🗺️ Recording GPS Tracks with GPSlogger on Android for Realtime Trains 🚆

(featured image is a Class 800 test train set spotted at Paddington shortly before the launch of the Intercity 125 replacements in October 2017, operated by GWR and Virgin East Coast)

As a long time user of , and someone with an appreciation of Open Rail Data (having used it myself), I jumped at the chance of helping their development.  They’ve put out an appeal to record GPS tracks of train services that you travel on with the link to the service on the application.

A lot of the work behind the scenes performed by a small team involves maintaining data relating to train positioning and comparing this with the signalling system outputs we use. This is an entirely manual task involving one of us going out with a radio controlled watch and monitoring the passage of trains through stations and junctions. An area of recent interest for us has been attempting to compute this automatically using other known bits of information.

In order to validate this effort, we either have to do the manual task with a watch or collect a large dataset of GPS traces to compare against our dataset. The more data we have will allow us to improve the end product.

Which is awesome.  I wanted to contribute. I found a suitable app for Android called GPSlogger which seemed to fit the bill.  It has quite a few settings, so I thought I’d write a quick guide on what I’ve used to successfully generate a working track for a service.

Wanting to make sure the data I produced was as useful and error free as possible, I asked @Realtimetrains for some guidance

I have put together some settings that should help achieve these goals using GPSlogger.

One of the main things is to make sure that we are recording the data frequently – which isn’t necessarily great for battery life, so be wary of this on long journeys! 


First of all, hit the hamburger menu (stack?), and go into …

Logging Settings

Tick Log to GPX

Set New file creation to Custom file

Set the Custom file name to “%YEAR%MONTH%DAY-” – this will mean when you create your GPX files, you can append the service ID and uniquely identify the service with the ID and the date.

Tick Ask for a file name on every start, so you have the chance to put the WTT schedule UID into the filename when you start a track.

Untick Allow custom file name to change dynamically to prevent multiple files from being created (you can merge them later, but it’s an extra step that’s not really needed!)

Next, go back and navigate to ..

Performance (Timings, filters and listeners)

In Location Providers, have:

  • ✔ GPS enabled
  • ❌ Network disabled
  • ❌ Passive disabled

(this prevents your location from being sourced from the cell network or wifi/bluetooth beacons, which can throw off the accuracy)

Set the Logging interval to 0 (zero) (as frequently as possible).  You’ll need this to ensure your GPX file contains enough points!

Set Distance Filter to 0 (in order to log new points even when you are stationary), and ensure that Don’t log if I’m not moving is turned OFF (the fact you are not moving at a particular time is useful information!)

Set Accuracy Filter to 60 (so that points that are wildly inaccurate are not recorded)

Optional: You might want to tick Keep GPS on between fixes, which will increase the accuracy and frequency of the measurements (as it won’t have to wait to get a lock between each measurement).  However , it will drain your battery a lot faster when combined with the Logging interval set to 0 as above!

You’re pretty much set now…

Creating a Track

First, find your service using the Realtime trains website.  Click the More detail link, and find the WTT schedule UID (which might be something like W07729).

Go into GPSlogger – once the train is at the platform, press Start Logging. If you’ve set it up as I describe above, it’ll prompt your for a filename.  Paste the WTT schedule UID at the end of the filename – so “%YEAR%MONTH%DAY-W07729″ in our example).  This will result in a filename like 20180314-W07729.gpx , which uniquely identifies the service.

The logger will begin recording data points.  Keep your phone out with visibility of the sky to give it the best chance of getting accurate fixes.  When you reach your destination, press stop.

Now hit the share button bottom left, pick the GPX file you just created and email it with a link to the service to Realtime Trains for them to include in their dataset ! Or do whatever else you like with the file (there is integrations for various cloud storage platforms, SFTP, FTP etc).

Why I don’t want a Yahoo ID any more

I was at one time, a BT customer.  They had the best deal for FTTC broadband in my area, so it made sense to go with them.  One of the things they offered at the time was a Yahoo account – which for some inexplicable reason you were forced to link to any previous account with the same email address.

I created one – with my usual online moniker of naxxfish.  What a mistake that turned out to be….

Continue reading “Why I don’t want a Yahoo ID any more”

CanterburyMedia Site to Site Link

One of the unique challenges of CSR FM is it’s structure, where it is part funded by two separate universities each with a presence in Canterbury (University of Kent and Christ Church University) and their respective student unions (Kent Union and CCCU).  Student members could be enrolled at either institution, and as such each institution has it’s own radio studio on campus – each of which has an equal chance of being put on air. The station also invites members of the community to participate. 

This has presented a challenge, in that live audio needs to make it’s way from either studio to the transmitter, hosted at the University of  Kent in Eliot College.  From the outset of the CSR project, the route between the two has always been over IP – there was no other reasonable option.  Up until recently, that was realised using a IP Codec – with it’s packets being routed over the institution’s networks.

This is perfectly fine, and for the most part worked very well.  However, recently CSR has had a fundamental infrastructure change to it’s audio distribution (as part of the Student Media Center project), which has made every single audio source and destination available using Axia’s Livewire Audio over IP protocol over their internal network.  This allows fantastic flexibility and allowing studios to route any source to their mixing consoles, as well as increased interoperability with our automation systems and customisable GPIO control.

However, the second studio (Studio Blue) was still connected via an IP codec link, which was not integrated into the system at all and offered limited capacity for routing over the link (only a stereo pair to and from the router).  Unfortunately the link between the two sites, over the academic networks that link the universities, would not be suitable to transport Livewire (for a number of very good reasons, lack of multicast and custom QoS being one).  It was therefore necessary that we provided a Layer 2 link between the two locations to carry this traffic, which we had complete control over.

Continue reading “CanterburyMedia Site to Site Link”

Keynestock 2014

Once again, I got roped into helping out CSRfm and this time KTV in getting their OBs from Keynstock 2014 on air.

There were some not insignficant challenges. Our normal network access at Keynes was effectively cut off due to some changes to configuration.  This was quite troublesome, as we had always previously relied on this access to get our signals back to our HQ.  The outlook seemed bleak.  What we ended up doing instead, though, actually seemed to work out rather better.

Continue reading “Keynestock 2014”


I’ve been helping with the installation of a brand new Axia Livewire network at CSR FM. The network is a bit different to the usual installation – and that deserves it’s own post.  We’ve been using PathfinderPC to do all of the routing control.

It’s all pretty clever stuff – but we wanted to be able to extract information from Pathfinder so that we could do handy things like find out which studio is on air, and use that information to show the right webcam on the website, or use it to add further information to our Now Playing data.  Pathfinder has a way of doing this – using Protocol Translators.  Basically, it’s a TCP listener (or client, or Serial Port) which accepts and sends commands to a remote device.  The protocol is very well documented in the manual, and is very flexible in what it lets you do.

But, it’s a bit of a pain to connect to from, lets say, PHP – which isn’t really well suited to doing socket operations.  Also, you’d want to cache the results somehow, lest poor Pathfinder get inundated by people looking at the webcam!


So I decided to make a little thingy that sits in between Pathfinder and the potentially unruly web apps on the other end.

Thus, PFInterfaceWeb.  It exposes various data sources over HTTP – like a list of all source, destinations and current routes.  Also – and particularly usefully – memory slots!  This lets us query our Stack Event logic and work out who’s on air, what mics are live…. etc etc.

Oh, also, it optionally can send messages to a STOMP compatible Message Queue server whenever a memory slot, or route, changes, or custom Protocol Translator commands are sent.

At some point, I’ll make it monitor GPIO, and also Silence Detect events.

Hopefully, this will prove handy!

Betheremin 0.1

My partner, Beth, asked me if I could make her a Theremin.  So I have.  It’s called the Betheremin.

A Theremin is a musical instrument, which changes pitch and/or volume as you bring your hand close to it’s antenna(e).  The way this works is by your hand influencing the capacitance of a resonator circuit, changing the frequency at which it oscillates.  This difference in frequency creates a “beat” frequency against a reference oscillator, which can then be used to create an audible frequency or control a Voltage Controlled Amplifier.

Continue reading “Betheremin 0.1”