Partying pineapples wearing sunglasses Partying pineapples wearing sunglasses


Play 01 Play 01 Keyboard Hep Cat 2:05
Play 02 Play 02 Haul on the Jib: A Recursive C Shanty 3:22
Play 03 Play 03 Pooper Scooper 4:07

The Fedivision Song Contest is an annual amateur song contest that takes place on Mastodon and the wider ActivityPub Fediverse.

Keyboard Hep Cat

Keyboard Hep Cat is my entry into the second annual Fedivision contest held on Mastodon and other Fediverse sites.

It is a single-take performance made on a Korg wavestate synthesizer, using four layers for the parts. The pad and piano parts include some stochastic elements, randomized in real time by the synthesizer.

Haul on the Jib: A Recursive C Shanty

This silly song was my entry into the Fedivison Song Contest 2023. It was declared the winner with a massive 26 votes.

Sea shanties had a remarkable resurgence in the early days of the COVID-19 pandemic. Some musicians have earned a lasting reputation from performing them. Of course, programming nerds joked about “C shanties”, referring to the C programming language, but I’m not aware of anything that got recorded until mine.

Shanties proper are working songs, with instructions and rhythm honed to the efficient operation of a ship. They are often in 2/4 time signature, and often in the Dorian mode. I’ve taken some liberties and borrowed from traditional tavern drinking songs: “Haul on the Jib” is 3/4 and its chorus is in plain major scale.

The chorus is a rendition of a naive algorithm for computing Fibonacci numbers recursively, a restatement of the formal mathematical definition of the sequence. It’s monumentally inefficient and will likely crash your computer if you try and compute numbers deep into the sequence. If you needed to compute Fibonacci numbers in reality (you wouldn’t), you’d almost certainly use a formula based on the golden ratio.

Fibonacci numbers are fascinating, and they really do turn up in the oddest of places. They were rediscovered many times, first by Indian scholars around 200 BCE, long before anyone had generalized the concept to exponentiation.

My thanks to the half-dozen friends from the Fediverse who lent their voices to the tavern singers.

Now folks, gather round, I’ve some math to expound
It’s a tale from arithmetic deep and profound
From before there were words “exponential” and “power”
From before this here tavern began Happy Hour

It’s a concept that follows a broad rule of thumb
Make a sequence of integers formed by the sum
of the previous two in the series and lo!
You’ll approximate phi, the divine ratio

Now we’re able seafarers and that’s very swell
But the name “Fibonacci” is trouble to spell
Is it F-I-B-O-N-A-double-C-I?
Say we shorten it fib’ and I tell you no lie

So haul on the jib
Do you know how to fib’?
If your number is less than or equal to one
Then, haul on the jib
I don’t mean to be glib
And your answer’s the same as your own and you’re done
Else haul on the jib
As you call on the fib’
With your number less one and your number less two
Then surrender the sum to the one you called you

(One horny bunny, Two horny bunny, etc.)
(One Fibonacci, Two Fibonacci, etc.)

It’s a spiral you find in pineapples and shells
To self-similar growth there are strong parallels
It’s peculiarly linked to the square root of five
(Which is left as a challenge for you to derive.)

// Haul on the jib
int fib(int n) {
  if (n <= 1)
    // Haul on the jib
    // TODO: link with glib
  return n;
  else {
    // Haul on the jib
    // Recursive bit
    int f1 = fib(n-1);
    int f2 = fib(n-2);
    return f1 + f2; }

(One phyllotaxy, Two phyllotaxy, etc.)
(One Fibonacci, Two Fibonacci, etc.)

It’s a perfectly fine educational tool
But to use it naively you’re only a fool
Of its double recursion it needn’t be said
You’d prefer analytical functions instead


Pooper Scooper

I didn’t field an entry to the Fedivision Song Contest in 2024. In lieu, given that 2024 is the 50th anniversary of Abba’s famous win in the Eurovision Song Contest, I offered this exhibition parody piece, ineligible for the contest in almost every way.

I wrote the chorus for Pooper Scooper at least ten years ago, and completed the rest of the lyrics in 2024. In the intervening years, I’ve noticed that at least two other renditions of the same parody concept have materialized. It’s evidently a predestined idea.

Part of the challenge of Pooper Scooper was pitch shifting the vocals to cover all four of the band’s vocalists. My DAW software, Cubase, has a clever formant-preserving pitch shift module which got me the extra three semitones of range needed for the lead vocals (and the ridiculous seven semitones for some of the backing vocals).

I would like to state on record that song parodies are ridiculously hard work to do well, Abba songs doubly so, with enormous levels of multitracking. Would I do this again? Hell, no.

Also, sorry for rhyming “Schmackos” with “tacos”.

Instruments used: MODO Drum, MODO Bass, Korg Kronos, Korg Opsix.

Pooper scooper, lying on the sidewalk
Shining in the sun
Rex, what have you done?
Can’t you just do number one?

Rex, you truly live like you’re a king
And I love you like you love Schmackos
No, you can’t have some of my beesting
No, you can’t have some of my tacos
So imagine you’ve heard me put on my sneakers
Somehow you already know
Why’s it gotta be so difficult to go before we go?

I need a pooper scooper, lying on the sidewalk
Shining in the sun
Rex, what have you done?
Can’t you just do number one?
Without a pooper scooper, I’d watch out where I’d walk
Friend, if I were you
What’s that on your shoe?
Yesterday they were brand new

Rex, I wish that you could comprehend
Our relation’s like matrimony
I apologize if I offend
But that stool’s the size of a pony
There are moments when I’m sneaking through the back door
You’re already on your toes
Everything would be so different if it weren’t so on the nose


I’ll leave it there, it will survive
This number two reminds me guiltily that I’ve
Just got to walk away and then, if I’m polite
I just know it’s gonna be a coprolite

(Chorus) Copy Copied Failed Close