JBL Control 25 ceiling mount adapters

This is an extremely boring thing to write about, but hopefully it will save someone some annoyance. JBL’s Control 25 and 28 speakers come with a neat, simple plate-and-stick “Invisiball” mounting system, designed to mount the speakers on vertical walls. They also sell an adapter to attach them to the ceiling instead, where the “stick” of the normal adapter is replaced by a longer, offset stick enabling vertical mounting. These adapters require that you have the original wall plates, but the used speakers I bought were missing them, and new ones cost more than I paid for the speakers, so I wanted to figure out how to mount them some other way.

For the search engines among you, the ceiling adapters are part number MTC-2825CM, and the original wall mounts are 179-00002-00 and 179-00002-01, in white and black respectively.

The ceiling mounts I had came with an extra cone-shaped, dual-threaded adapter that I couldn’t find a spec for:

I found a spec sheet for the ceiling mounts, which tells me that the end of the mounting rod has an imperial 7/16″, 20tpi thread (really??). But the one on the blunt end of the cone was a mystery that didn’t fit any of the bolts I had (which were mostly for bikes, so all too small). I took some measurements and guessed that it might be a 3/8, 16tpi, given that the other threads were all imperial so I ordered some nuts… which were wrong. I remeasured and popped to my local DIY store, where I verified that it is actually standard metric 10mm thread. So we have a revolting combination of imperial and metric units. Blech. At least it looks neat!

That finally screwed down, I designed (in Autodesk Fusion) a ceiling mount that this threaded end could fit into that I could 3D print. It looks much nicer than the stock mounting plate, and the screw holes are designed to take nice stainless steel Allen bolts. Because it’s designed to mount vertically and bolted to the ceiling, the plastic will be mostly in compression, a direction that’s nice and strong for printed parts, though the speakers only weigh 3kg each. I printed it with a generic white PLA Meta filament that only took 70 mins to print two of my design on my Bambu P1S and feels really strong even with only a 15% infill (though with 5 walls). You can find the model on Thingiverse and Makerworld.

Pair Programming

Sorry to mislead you, but this page is not about pair programming. Well it is, but it’s mainly about a song about pair programming. Or is it a love song? Who can tell.

Pair programming is an approach where two developers sit side by side, sharing a keyboard and mouse, and work together on the same task/problem together, critiquing, explaining, understanding, and supporting each other’s work, taking it in turns to “drive”. It’s a good environment for mentoring, onboarding new developers, and working on difficult bugs. Obviously there’s close personal interaction in such a situation, so I thought I’d explore the romantic possibilities in a song!

While this song is entitled “Pair Programming”, there isn’t any direct reference to the activity of that name. It might use some terminology familiar to those used to it, but I’ve deliberately used double meanings and ambiguity to leave things “uncommitted”. Hopefully it will still make sense to someone that has no idea what pair programming is, and takes the sentiments at face value! I’m not going to list them all, but hopefully some of the puns will elicit a few groans. My favourite line is “we could share a set of keys”, which could refer to the humble shared keyboard, but more intriguingly the prospect of moving in together. Similarly, does “making something beautiful, all it takes is you and me” refer to their co-written code, or forthcoming offspring? There is a minor break of the “4th wall” when our protagonists refer to “striking up a little nerd duet”.

The final line, repeated a few times, refers to “writing love letters to the people that we’re going to be”. This is a reference to a nice programming maxim – write clean, understandable code as a love letter to your future self, that you will thank yourself for when you revisit it to refactor or revise it, possibly many years later. Here though, they could easily be talking about each other.

I’ve said before that I often start out with how I want a song to feel, rather than any particular genre, instrumentation, or content; this one is no different. In terms of influences, this song owes a lot to “You + me”, by Public Service Broadcasting, from the lovely “Every Valley” album. It’s just a beautiful, simple duet, and from a production perspective I love the initial dry mix with that clean guitar that slowly builds into full orchestral backing. I don’t understand a word of Welsh though 🤷‍♂️.

Vocals are, again, courtesy of Synthesizer V, newly upgraded to version 2.0, using the Solaria and NOA Hex voice databases. It’s possibly the most complex set of vocals I’ve written, from both a lyrical and harmonic perspective. Building those harmonies was quite tricky. I also made much better use of the UJAM Amber2 virtual guitarist plugin I bought for “I’ve only met you once”, using more of its pattern library. I decided to go to town a bit for the orchestral backing, so in addition to Logic’s lush Studio Strings, we also have a wind ensemble (bassoon, clarinet, oboe, cor anglais, and flute), and some extra clarinets.

Bass and drums are, comme d’hab, using Logic’s built-in Bass and Drum kit libraries, played by Logic’s excellent players.

The overall mix is really quite simple (there are only 9 tracks), but I used a lot of automation, particularly on the reverb sends on the voices; dry voices have a certain raw appeal, but they really come to life with a little ambiance, and I wanted to capture that transition, which you can hear in the first verse.

To finish it off with a little more romance, I commissioned a sweet, Flamenco-ish nylon string guitar solo from Spanish guitarist Javi Sanchez on Fiverr.

Anyway, this duet is sung by a pair of developers who are clearly into each other, and I wish them all the luck in the world.

[M verse]
I love flying solo
I’ve made the whole world I can see
I might be going in the wrong direction,
but I’m enjoying being free.
I could use another point of view
to put my feet back on the ground.
Somebody to take my hand
guide me back in to land

[F verse]
I see the words fall from your lips
in ideas that flowed from fingertips.
You’ve got my attention now,
we just need to work out how
you’re finishing my sentences,
reading between the lines.
Together we’ll make something
beautiful.

[Chorus]
We’re writing love letters
to the people that we’re going to be.
I was hoping that perhaps one day
we could share a set of keys.
With you by my side we’d be a force
taking turns to take the lead.
We're building something beautiful
all it takes is you and me.

[Verse]
I’m staying up reading your every last letter
wondering if I could have said it any better.
Your echoes filling the gaps I’ve left,
striking up a little nerd duet.
I love the way you question
every choice I think I've made.
Not afraid to challenge, reconsider, rearrange.
When I’m sitting side by side with you
one and one is sometimes more than two.

[Chorus]
We’re writing love letters
to the people that we’re going to be.
I was hoping that perhaps one day
we could share a set of keys.
With you by my side we’d be a force
taking turns to take the lead.
We're building something beautiful
all it takes is you and me.

[Outro]
We’re writing love letters
to the people that we’re going to be.

If you like this song, please consider supporting me by buying my albums on Bandcamp, and sharing links to my music on your socials.

Skis are not strong enough

“I break my skis because I ski too hard” is something of a humblebrag, but frankly it’s getting expensive and annoying! There are many ways that you can break skis, as I have documented in my ski equipment I have killed page, that are not specifically to do with skiing technique – delaminating tails for example is often caused by banging them on the ground to dislodge snow before you stick them in your car. What I’m talking about here though is definitely a consequence of how I ski. So let’s talk about cornering.

Modern “parabolic” skis have a sidecut, where the tip and tail are wider than the middle, and there’s a curve between them down the length of each side of the ski. If you tilt a ski to one side, it will rest on the edges at the tip and tail, and the middle will be lifted off the ground. If you then apply force to the middle of the ski (by standing on it), the ski will bend until the middle of the ski touches the ground. The ski will then be bent along its length, and where the edge meets the ground it will form a curve, which is roughly a segment of a circle, and when the edge runs along the ground along this curve, the ski will turn. The more sidecut, the more force, the more flex of the ski, the shorter the radius of the circle, and consequently the tighter the turn you can do. This happens particularly when you do a kind of skiing known as carving introduced in the early 1990s, which is in contrast to the technique that preceded it known as parallel, which is more or less skidding. A key difference between the two is that when carving a turn, the ski doesn’t move sideways (much) relative to the ground. This makes carving smooth, quiet, stable, and also preserves speed through the turns, but it puts a lot more force on the edges – I’ve measured myself (75kg + kit) pulling 3.5g in corners, and that makes for a lot of pressure on those edges. Skidding is still useful, especially for losing speed, stopping, performing very abrupt manoeuvres, or in confined spaces like couloirs or lift queues.

Here’s a pic of me carving on the exact skis I talk about below:

A ski is typically constructed from a sandwich of layers of different materials chosen for strength, stiffness, vibration absorbing, water resistance, and so on. It might look something like this in cross-section:

A cross-section of a ski

This is only a rough idea, and the structure varies widely, but however the ski is constructed, the edges (which provide grip on hard, icy surfaces) are usually the same: a square steel section with a flange that extends into the body of the ski – the little red bits in the diagram above. Steel is strong, hard, but not very flexible, so edges are thin, around 2-3mm square in section, with the flange extending perhaps 10mm into the ski. The flange is segmented so that it remains well-anchored within the ski structure without adversely affecting the flex of the ski. These are bare edges, before being built into skis:

When the ski turns, it’s put on its edge and force applied. This results in a strong torsional force on the edge:

I had a few goes at using AI chats to figure out exactly how much torque is applied, and it’s quite tricky, however, for a 75kg skier (me) exerting 3g of lateral acceleration (that’s pretty hard!), it apparently works out at around 5Nm of steady-state torque, which is about what you can do by hand with a screwdriver. It doesn’t sound much, but that edge is really quite small, that’s a fair amount of torque, and in reality, it will be changing very rapidly, with peaks well above that value. All that force, applied repeatedly over many ski days, leads to this:

Here the torque acting on the edge has caused it to rotate out of the structure of the ski, partly levering the base away from the ski core. Here’s what it looks like on a real ski (my beloved Elan Wingman 82 prototypes, just 2 years old):

You can just make out the segmented flanges inside the crack. If you look across the width of the ski, you can see that the base is raised on one side, and the base material sits proud of the steel edge, when it should be flush. The time you’re most likely to spot this is when waxing your skis, and before you see cracks forming, you might see the base developing bulges or ridges, usually just ahead of the bindings on the inside edges, where the most stress occurs during turns.

This condition is somewhat dangerous because the edge is no longer firmly attached to the structure of the ski, and a gap between edge and base can open up, making it more likely to catch on a rock and completely tear the edge out of the ski; not good if you’re going fast at the time. Water can also get into the crack and damage the ski core, by frost cracking, mould, rust, etc.

This is quite different to the kind of damage that can occur when you hit a rock, as I did on my Salomon Q105s a couple of years ago:

This cracked the edge, and impacted the ski body, but only over a very short length, and there was no base bulging, but this was also fatal damage and the skis were unsafe to ski on.

So what’s the problem? Skiing is a very dynamic activity that’s tough on equipment, so shouldn’t we expect skis to wear out? Not so much. Skis will break in extreme circumstances like hitting rocks, but when using them exactly as intended, I don’t expect them to simply lose structural integrity, and they should last for many years. Also I wouldn’t mind so much if this was a one-off, but this is the 5th pair of skis that I’ve done this to, and it’s getting expensive! These are the skis I’ve done this to so far – multiple manufacturers across several years, so it’s not like I’m suffering from a bad batch!

  • Rossignol Scratch BC
  • Volkl AC50 Unlimited
  • Fischer RC4 slalom skis
  • Dynastar Cham 97 freeride skis
  • Elan Wingman 82 prototypes

So please, dear ski manufacturers, make your skis stronger! If you ask me nicely, I’ll help you test them (maybe to destruction)!

My synthetic vocalist: Dreamtonics Synthesizer V

I find it strange to be able to say that I’ve now created several songs that use a synthetic vocalist. This is a somewhat weird concept, but it’s right at the bleeding edge of music technology. We’ve had voice synthesis for years – I remember using a Texas Instruments “Speak & Spell” when I was small in the 1970s, and it’s gradually got better ever since. The first time I ever heard a computer trying to sing (I’m not counting HAL singing “Daisy, Daisy” in “2001”) was in a Mac OS app called VocalWriter, released in 1998, which automated the parameter tweaking abilities of Apple’s stock voice synthesis engine to be able to alter pitch and time well enough for it to be able to sing arbitrary songs from text input. It still sounded like a computer though. A much better “robot singer”, released in 2004, was Vocaloid, but even then, it still sounded like a computer. A Japanese software singer called UTAU, created in 2008, was released under an open source license, and this (apparently) formed the basis of Dreamtonics’ Synthesizer V (SV), which is what I’ve been using. SV finally crosses the threshold of having people believe it’s a real singer.

The entry of my song in the 2024 Fedivision song contest sparked quite a bit of interest. I posted a thread about it on Mastodon, and I wanted to preserve that here too. One commenter said “I thought it was a real person 😅” – which is of course the whole point of the exercise!

SV works standalone, or as a plugin for digital audio workstations (DAWs) such as Apple’s Logic Pro, or Steinberg’s Cubase, and is used much like using any other software instrument. It doesn’t sing automatically; you have to input pitch, timing, and words. Words are split into phonemes via a dictionary, and you can split or extend them across notes, all manually.

Synthesizer V’s piano roll editor

In this “piano roll” editor you can see the original words inside each green note block, the phonemes they have mapped to appear above each note, an audio waveform display below, and the white pitch curve (which can be redrawn manually) that SV has generated from the note and word inputs. You would never guess that’s what singing pitch looks like!

For each note, you have control over emphasis and duration of each phoneme within a word, as well as vibrato on the whole note. This shot shows the controls for the three phonemes in the first word, “we’re”, which are “w”, “iy”, “r”:

The SV parameters available for an individual note, here made up of three separate phonemes

This note information is then passed onto the voice itself. The voice is loaded into SV as an external database resource (Dreamtonics sells numerous voice databases); I have the one called “Solaria”. Solaria is modelled on a real person: singer Emma Rowley; it’s not an invented female voice that some faceless LLM might create from stolen resources. You have a great deal of control over the voice, with lots of style options (here showing the “soft” and “airy” modes activated). Different voice databases can have different axes of variation like these; for example a male voice might have a “growly” slider:

SV voice parameters panel
Synthesizer V’s voice parameters panel

There are lots of other parameters, but most interestingly tension (how stressed it sounds, from harsh and scratchy, to soft and smooth), and breathiness (literally air and breath noise). The gender slider (how woke is that??) is more of a harmonic bias between chipmunk and Groot tones, but the Solaria voice sounds a bit childish at 0, so I’ve biased it in the “male” direction.

The voice parameters can’t be varied over time, but you can have multiple subtracks within the SV editor, each with different settings, including level and pan, all of which turn up pre-mixed as a single (stereo) channel in your DAW’s track:

Multiple tracks in the SV editor
Multiple tracks in the SV editor

In my Fedivision song, I used one subtrack for verses, and another for chorus, the chorus one using less breathiness and trading “soft” mode for some “passionate” to make it sound sharper and clearer.

This is still all quite manually controlled though – just like a piano doesn’t play things by itself, you need to drive this vocalist in the right way to make it sound right.

Since the AI boom, numerous other ways of getting synthetic singing have appeared, for example complete song generation by Udio is very impressive, but it’s hard to make it do exactly what you intended; a bit like using ChatGPT. Audimee has a much more useful offering – re-singing existing vocal lines in a different voice. This is great for making harmonies, shifting styles, but only really works well if you already have a good vocal line to start with – and that happens to be something that SV is very good at creating. I’ve only played a little with Audimee; it’s very impressive, but lacks the expressive abilities of SV; voices have little variation in style, emotion, and emphasis, and as a result seem a little flat when used for more than a couple of bars at a time. Dreamtonics have a new product called VocoFlex that promises to do the same kind of thing as Audimee, but in real time.

All this is just progress; we will no doubt see incremental improvements and occasional revolutions, and I look forward to being able to play with it all!