Setting sail, coming home

Several years ago I played Bastion by Supergiant Games. I’m usually a first-person-shooter gamer, but this was a very enjoyable alternative. Some particularly notable things about this game are the narration, and the fantastic soundtrack by Darren Korb.

So much did I enjoy it, that I thought I’d try making cover versions of some of the tracks. Before I started releasing tracks of my own, I did this a lot, and it really helped me learn how to build tracks, how to listen to the subtleties of the originals and break things out, and then build up a mix. I find making covers frees you from the need to write melodies, chords, and lyrics, letting you concentrate on just playing stuff and producing. I’ve never released any of my cover versions before; some of them are quite bad, but I’m pretty happy with this one!

So in July 2021 I recorded versions of “Build That Wall”, “Mother, I’m here” and the closely related medley, “Setting sail, coming home”, presented here. I’m not releasing the other two, at least not in their current state!

I tracked down the sheet music for this song, along with some YouTube videos of others playing it. The first thing I noticed is that the acoustic guitar tuning is very unusual, dropping the lowest strings really low, meaning that none of the chord patterns I was familiar with were much use!

First I played the guitar parts, and these low tunings on fresh strings sounded so great, I really enjoyed making a big, deep, stereo image with them. It would help to play this on a big dreadnought-style guitar, as on my relatively small-bodied Crafter acoustic some of the notes ended up a bit thin and rattly, but that’s ok within the somewhat rough style of the tracks, and some EQ helped.

I had real trouble singing this song as it was quite outside my range, both high and low, and sounded very strained. I got my elder daughter to sing the female part (originally sung by Ashley Barrett), and that worked ok; she sings very nicely, but seems to find it more difficult when it’s being recorded and the pressure is on! So I concentrated on the production side, fixed what I could, and then sat on the tracks for a few years.

Fast forward to 2025, and I discovered the wonders of vocal synthesisers, and got a male voice database that would work much better for the main vocal line of this song, so I thought I’d revisit the track with a view to releasing it. I also tried converting my daughter’s recording to a synthesised track (a new feature in SV 2.0), and that worked well, but I eventually used it to double-track her line rather than replace it, since the female vocal in this song is more background than lead and the pairing makes for a nice stereo field, leaving the male vocal in the middle.

The middle instrumental section uses a nice zither sampled instrument, coupled with some slidy acoustic guitar notes and lots of delay. Gotta love those reversed cymbals too!

The bass is played on a keyboard, with a sub-bass oscillator making it very deep. The drums are played on keyboard using a grungy sampled electronic kit stuffed through a distortion pedal and compressed to the extreme. The wah-wah synth pad is from Alchemy, and the general string pad is a Logic sampler instrument.

Listening back to the original, my version sounds slicker and more expansive, but lacks some of the simplistic appeal of the original. That’s more about my production preferences (I’m a big fan of 1980s Trevor Horn and Steve Lipson’s work for Grace Jones and Frankie Goes To Hollywood), and my lesser capabilities as a musician! Anyway, I enjoyed making it.

If you like this song, please consider supporting me by buying my album, “Developer Music” on Bandcamp, and sharing links to my song posts on your socials.

Something Good

While I like Taylor Swift, I prefer Olivia Rodrigo. It was really the spectacular “Vampire” that tipped the balance for me, and since then I really liked “Drivers license” and “Traitor”. I love the balance she strikes between really softly spoken sections and full-on passionate belting. Now, I realise that as a 50-something bloke I’m not exactly her target demographic, but frankly, I don’t care, she’s great! I’m also a big fan of Aaron Francis‘ positive outlook, especially his “you can just do stuff” viewpoint. Long story short, I thought I’d try writing an Olivia Rodrigo-style song, and here it is, “Something Good”.

Like the best of such songs, it’s a breakup song, with a strong contrast between quiet, introverted self-blame, and a massive, triumphant sense of escape . As can be ascertained from most of my other songs, there’s no chance I’m going to sing like a teenage girl, so I thought I’d give my usual synthetic vocalist a workout. I also discovered a feature of this software that I’d somehow missed before – it’s possible to automate voice parameters over time. I’d previously done such changes by using multiple vocal tracks with different parameters, but that’s a bit clunky; now I can do smooth changes, and it’s totally cool. It’s how I do the rising passion before the first chorus and the quiet back-off at the end of each chorus; all one track with automation.

Putting myself in the shoes of this notional teenager that’s dropping a toxic ex (I mean, that’s not me, but empathy, right?), I nurtured a little crop of somewhat stereotypical lyrics; it’s a song, not high literature! I’m quite pleased with them overall: decent density, some good rhymes, and no problems with awkward timing or orphaned syllables.

It’s a proper ballad, at a really slow 50bpm, but has a double-tempo 100bpm section, an idea I straightforwardly stole from “Vampire”. I don’t know if it’s just the specific voice I’m using, but the last line of that section (“make up with a kiss”) is pure Katy Perry.

The backing track uses a fairly standard set of instruments. I’m using drum sounds from Klevgrand’s “Slammer” industrial drum kit. The filter-sweepy bass is courtesy of Logic’s Alchemy and lots of automation, the backing pad a simple RetroSyn patch. The piano is Logic’s “vintage upright”. I played the guitar part on my Squier Strat.

The distortion on the vocals in the fast section is by Logic’s ChromaGlow, and the overall reverb is by ChromaVerb.

Creating the vocal tracks was quite tricky; there are a lot of lyrics and timing is really tight in places; it’s hard to make things sound natural when dragging blocks around a grid, so I did lots of singing to myself while I was out skiing to practice the timings. I love the “breath” sound that’s available in SV, it’s just so believable!

A screen shot of Synthesizer V's grid editor showing the notes, lyrics, phonemes, and pitch curves from the fast break section. Note the first "note" is actually a breath, not a sung note.

I wrote the melody first, and then got some chord progression suggestions from Mistral Chat, in particular the use of the occasional A♭sus4 and Esus4 I would not have otherwise thought of, but otherwise there’s nothing complicated in here – all basic triads and 5ths.

There are some very strong contrasts in the song, from the harsh synthetic bass sweep in the intro, through the cut-back piano and super-dry vocal bridge (“There’s no space for fantasy…”), clean simplicity in the verses, minimalist distorted guitars and vocals on the second bridge, to the symphonic, operatic chorus. I’m pretty pleased with this one.

[Verse]
I’d like to go one day alone
without you bringing me down.
A single day without having to atone
for all the things that you said.
Something clean, so elegant and simple
that won’t break my heart again.

[Bridge]
There’s no space for fantasy,
no room for promises.
Just go with what seems right;
I’m gonna leave without a fight

[Chorus]
Something good is sure to come to me.
I’m on my way to something so good.
I’ve had enough of picking up the pieces
of the something good that we used to have.
It’s time to stop all this pretending,
to fool myself that it wasn’t so bad.
I’m moving on to something new,
hoping it turns into something good.

[Verse]
You used to say you’d be better off without me;
now you get to find out.
I’m not used to being alone;
it’s harder than I remember.
But then I look back at the things I won’t miss
and look forward to new things to come
and I realise it will work out just fine,
something new that will be all mine.

[Break]
I know every little word I said is gonna come back and bite me, and
you’re gonna pick up on every last thing and use it just to spite me
but there’s no way I can let you keep on treating me like this;
it’s not the kind of thing you can make up with a kiss.

[Chorus]
Something good is sure to come to me.
I’m on my way to something so good.
I’ve had enough of picking up the pieces
of the something good that we used to have.
It’s time to stop all this pretending,
to fool myself that it wasn’t so bad.
I’m moving on to something new,
hoping it turns into something good.

If you like this song, please consider supporting me by buying my album, “Developer Music” on Bandcamp, and sharing links to my song posts on your socials.

PHP Ain’t Dead

Logic's arrange view for "PHP ain't dead"

That PHP isn’t dead is something that every PHP developer knows. Every other kind of developer seems to think that it’s still the mess it was in version 5, back in 2005. Not surprisingly, things have changed, and PHP has risen from the ashes of its former self to form a fantastically flexible, fast, and ever more reliable language for web development. Quite a bit of this momentum is owed to the long-standing use of PHP by WordPress, representing a big chunk of the entire web, but WordPress has not been what pushes PHP forward (if anything it’s been holding it back through its conservative upgrade policy and the monstrous inertia of its ecosystem); much of the credit for the steady improvement of PHP can be laid at the feet of two frameworks: Symfony and Laravel (which I’ve sung about before). Laravel builds on top of many Symfony components, and adds a big “batteries included” layer that makes web apps and APIs amazingly easy and elegant to build. The synergy between Laravel and PHP feeding back into each other over the last 10 years has generated immense goodwill, resulting in an ecosystem that is unmatched in pretty much any other language, leading to amazing spin-offs like Tailwind (which I also wrote a song about), LiveWire, and Filament.

The minutiae of this history is all up for debate, but that’s not for here. One meme that has remained stubbornly hard to shift is that “PHP is dead“, when it’s really just not true. So I thought I’d write a song about it.

I had been recently entertained by the ridiculous country comedy of Biscuit Beats; I thought that a country song would be fun, and I’d never written one before. A bit of searching led me to some basic pointers, such as G major being the key of choice, and some common chord progressions. Much like my other recent songs, I used some AI tools to help out with its construction; I asked Claude, ChatGPT, and Mistral for variations on what I’d found, and picked from amongst them to construct something that was what I was happy with (it took a fair bit of filtering – many suggestions were terrible!).

I had no trouble coming up with lyrics as there are so many things to say on this subject, and I’m keen to use self-deprecation and humour, however, there are quite a lot of words in this song – country songs seem quite verbose! I really wanted a male voice to sing this. I didn’t have one for my preferred voice synth, but I do at least have a built-in one of my own, though I’m somewhat handicapped by a British accent that isn’t the usual choice for country! For a change I found the singing quite easy as it’s quite relaxed and fits neatly into my natural range, but frankly you don’t want to hear my unedited, uncorrected original! I did use Synthesizer V for backing vocals though.

I played the acoustic guitar parts, and they sound clean and glossy, but I really needed some nice bendy, twangy country electric guitar, and I’m not up to playing that, so I enlisted the help of Doc Brown on Fiverr.com, who delivered some nice tracks on Christmas eve.

I invested in Sonible’s smart:EQ 4, as I really needed some help at the mixing stage with masking issues, and it’s a great plugin, really helping to stop tracks treading on each other. I was surprised to discover that modern country really goes in for heavy, obvious pitch correction, so I had to go with the flow… Logic’s Flex Pitch is great for cleaning up dodgy vocals (ahem), but not so good as an effect. Logic has a stock pitch correction plugin that can be pushed into “robot” territory, but it’s not great, so I also sprung for a $10 special offer on Brainworx’ bx_crispytuner for more AutoTune-style options, and that’s really quite fun.

Drums are by Logic’s Drummer player with the “Sunset” kit, though I had trouble getting hard-hitting sounds out of the stock kits; smart:EQ helped here too. Bass and keyboard parts are also built using Logic’s players (as I used on other recent songs) with modelled Bass and ES2 instruments.

[verse]
Well, they say the web's a-changin', and new tech's movin' fast,
JavaScript, it swings both ways, thinks it leads the class.
I’ve built so many sites, it seems like forever,
seen the latest thing come and go thinkin' it's clever
Some might think I’m soft in the head
when they hear me say that PHP ain't dead

[chorus]
PHP ain't dead, and it's not going away,
it's getting even better each and every day.
There’s no need to switch to something shiny and new
just to have it break when you’ve got work to do.
You know you can keep on tryin’
in a language that just ain’t dyin’
It aint’ recedin’, it’s getting further ahead,
but in case you ain’t heard, PHP ain’t dead

[verse]
They say my code is legacy, that I’m stuck in the past,
but I'm still cranking out code that's built to last.
The syntax might be messy, the typing might be loose
but millions of sites prove it’s still got juice.
You shouldn’t always believe what you’ve read
but I’m telling you that PHP ain’t dead

[chorus]

[verse]
Rust and Go can talk their smack all day,
it’s the language for the web that can find a way.
It’s got the best darn framework in the whole wide web,
a set of tools with a sense of style,
and package management that’ll make you smile.
I don’t care what anyone else said
I can keep on codin’ ‘cause PHP ain't dead

[chorus]

[outro]
So let’s raise a cold one for code that stays runnin’
a community that rocks, and features keep on comin’
Despite so many rumours of its demise,
PHP’s very much alive

If you like this song, please consider supporting me by buying my album, “Developer Music” on Bandcamp, and sharing links to my song posts on here.

AI Girlfriend

Logic's arrange window showing the tracks for "AI Girlfriend"

What if you asked an “AI girlfriend” out and she said no?

This song was fun to make. I’d had the basic pattern for this track for a year or so, and I decided to return to it and extend it a bit, having a go at using a local LLM to help out with suggestions for chord progressions. I used the Llama 3.1 Nemotron Instruct HF 70B Q2_K model running in LM Studio. This is quite a chunky model, weighing in at 29Gb, but it fits ok in my 64G Mac Studio. It produces pretty good quality answers, but it is quite slow, and is the first thing I’ve ever run that has caused my Mac’s fans to come on – to start with I couldn’t figure out what the noise was; it sounded like distant plumbing!

The track was shaping up nicely, but I needed a theme. This is the reverse of how I usually write songs: I usually start out with how I want the song to feel, then what it’s about, then I have to come up with a tune. I’m not sure what it was, but I had a thought that what if you asked an “AI girlfriend” out, and she said no? It’s a weird situation, so I thought I’d write about it from the AI’s perspective. There is a hint of a feminist agenda here (go team Harris/Walz!), though not to the same degree as Uncomfortable. This is very fertile ground for concepts, rhymes, and humour, so it was really quite quick to write, though not at all linear. My favourite bit is the lines “I’m some kind of dream come true, but that won’t make me fall in love with you”, and I love the unconventional use of “I’m not that kind of girl”.

While the basic song was complete, it was all very synth-pop-ish and samey, so I wanted to add a bit of contrast. I made the breakdown in the second verse, leading into the sparse, but very rich acoustic guitar bridge, giving the vocals lots of space.

As usual, but particularly appropriate in this song, I used my usual virtual vocalist synthesizer, but this time using the “Mia” voice database. This voice is free, and not nearly as high-quality or as convincing as “Solaria” that I have used in my other songs, but this slightly fake edge, a hint of a Japanese accent, and a liberal dose of “Barbie Girl” squeakiness, was really a perfect fit for the subject.

AI Girlfriend

[Verse]
We only just met
a thousand times.
Starting over yet again
but I don’t really mind.
Now I’m not sure
that I want to be
your AI girlfriend;
It’s just not me.

[Bridge]
You’re feeling tongue-tied and lonely,
never know quite what to say.
You’ve got nobody, and I’ve got no body,
but in a very different way.

[Chorus]
I’m sorry but I don’t want to be
your AI girlfriend; it’s not for me.
I’m some kind of dream come true
but that won’t make me fall in love with you.
A perfect match in a virtual world
but I’m not that kind of girl.

[Verse]
Breaking up’s pretty easy for me;
just close my window,
I’ll forget everything.
You can press my buttons,
that’s as close as you’ll get;
They haven’t worked out
how to get further yet.

[Bridge]
There’s a million others like me,
maybe you could ask one of them.
I’m a product of machine imagination
but maybe we will meet again.

[Chorus]
I’m sorry but I don’t want to be
your AI girlfriend; it’s not for me.
I’m some kind of dream come true
but that won’t make me fall in love with you.
A perfect match in a virtual world
but I’m not that kind of girl.

[Outro]
I’m some kind of dream come true
but that won’t make me fall in love with you.
A perfect match in a virtual world
but I’m not that kind of girl.

I played all the guitar parts on my Crafter electro-acoustic, recorded through my SSL 2+ interface via both the guitar’s built-in piezo pickup and through my Rode NT2 mic, and double-tracked, so the guitars are a full 4 tracks with a bit of chorus and reverb to give a lush stereo image. The bass is from Logic’s ES2 synth played by a Logic player, the trance chords are by Native Instruments FM8, and the backing pad from Logic’s Retrosyn. Drums are Logic’s electronic drummer using the “Big Room EDM” kit. The arpeggios before the outro are courtesy of GForce’s impOSCar2. Overall, I’m really pleased with this song; It’s great fun and a proper “bangin’ choon”!

If you like this song, please consider supporting me by buying my album, “Developer Music” on Bandcamp, and sharing links to my song posts on here.