The Good Ship Laravel

I like writing songs about open source, but I’ve never actually released any or posted them publicly, mainly because my singing is fairly terrible, and trying to find others willing and able to sing about these things seems hard! I really liked “the Wellerman” sea shanty craze of 2021, I had a thought that I should make use of the the nautical theme that runs through a lot of Laravel’s nomenclature to write a shanty of my own, that wasn’t just another cover of the Wellerman. It also occurred to me that I could semi-speak the words (in a pirate voice of course!) instead of outright singing, and that made it feel a bit less daunting. I wrote the intro first, and I liked the storytelling aspect, though as intros go it’s quite long. The first verse came quite easily as I built a list of words and kind of ticked them off the list. The timing and rhyming structure is straight Limerick, which makes things very easy. The main melody was just the result of doodling on the keyboard for a bit. I was pleased with the sailor/Taylor rhyme for the chorus, but it took me ages to come up with the rest of it. I had several failing attempts at a melody for the chorus, eventually just singing something that the words fitted, and then turning that into an accordion line, then building out everything else around it.

The instrumentation was very simple – it’s a sea shanty so we need simple folk instruments – accordion and cajon, and then a plucked upright bass to fill it out. In the final chorus I threw in some lovely blatty brass and a bit of piccolo, since the top end was kind of empty.

The Logic Pro arrangement

I recorded the vocals for the intro in July 2021, but re-recorded them later for consistency. I sang the first (lowest) line of the chorus vocals, and then did something I’ve done before – copy the track, and then use Logic’s Flex Pitch editor to shift notes around to make harmonies, generally upwards, since I’d sung a low line to start with. Having found harmonies that worked, I then re-sang the new line, as a heavily edited one doesn’t sound quite right, especially when pitch shifts are quite large. I then repeated the process for a second time, giving me a three-part harmony for the chorus. Flex Pitch let me correct pitch, but also timing – the harmonies sound so much better when they line up in time too. The low line was only possible for me to sing because at the time I was recovering from COVID and a very nasty sore throat, so while I was feeling much better, my voice was much deeper then usual, and I could hit much lower notes! Overall I found the singing much easier than the other things I’ve tried to sing because it was pitched much more comfortably for my voice.

If you like this song, you might like to have a listen to my later creation, “Tailwind“.

Software & Hardware

  • Apple Logic Pro X
  • Behringer UMC404HD USB audio interface
  • Aston Element dynamic microphone
  • Adam Audio TR5V monitors
  • KRK RP10S subwoofer
  • Arturia Minilab Mk II MIDI keyboard
  • Behringer DSP8024 Ultra-Curve Pro (room correction)
  • Mackie Big Knob passive volume control

Instruments & effects

  • Accordion, cajon, upright bass, piccolo, seagulls and waves from Logic’s standard sample library
  • Brass section from Logic’s Studio Horns instrument
  • Rowing boat sample I found from some ancient soundfonts collection
  • iZotope RX7 noise reduction
  • SSL Channel Strip (EQ, compression)
  • Logic standard compressor, EQ, de-esser
  • Logic “Space Designer” reverb
  • One of Logic’s default mastering configs for final output
Intro:
I was cast adrift in development seas
a shiver of bugs a’circlin’ me
Naught but a pair of oars and my IDE
to keep my app from drownin’

I spied at last a distant sail
I signalled for ‘elp to that caravel
As she hove to I made out her name;
’Twas the good ship Laravel!

Verse 1:
Gather ye round my developers
and I’ll spin you a yarn most eloquent
A tale of passport and breeze,
socialite and jetstream
a cloud full of vapor and elegance

We’ve resources and models and more
Controllers and actions galore
Fortified with some rum,
and a sack of enums,
we’ll build an app clients will adore


Chorus:
Train your telescope on that far horizon
Don’t get marooned on development island
We’re gonna build an app so well
On the good ship Laravel

Get on board now, every sailor
dance to the tune of cap’n Taylor
You’ve never built an app so well as
On the good ship Laravel

Verse 2:

With livewire on top of your scripts
and laracasts dishing out tips
We’ve got the best pest
to chase the rats from your tests
and artisan helping you ship

The framework’s the star, that’s for sure
but there’s packages of treasure to explore
but the best bit’s the crew,
and you can join too –
everyone’s welcome aboard

Chorus2:
Train your telescope on that far horizon
Don’t get marooned on development island
We’re gonna build an app so well
On the good ship Laravel

Get on board now, every sailor
dance to the tune of cap’n Taylor
You’ve never built an app so well as
On the good ship Laravel
The good ship Laravel

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.

An explanation for non-Laravel folk!

A shiver is the collective noun for sharks. An IDE is an integrated development environment such as PHPStorm or VS Code; think MS Word, but for programming. An app, in this context, is a web application built in PHP. Sail is the name of a Laravel feature for managing local development environments. A caravel is a 15th century Portuguese sailing boat, exactly the kind of vessel that a stranded pirate might encounter, and also the word that gave inspiration for Laravel‘s name. “Hove to” is a sailing manoeuvre used to more or less stop a boat by pointing the sails in opposing directions, very useful when picking up castaways. A yarn is a story, often nautical, and a thread, but it’s also the name of a Javascript package manager. Eloquent is the name of Laravel’s database abstraction layer. Passport, Breeze, Socialite, and Jetstream are all Laravel features for building authentication workflows. Real clouds are made of vapor, but Laravel’s serverless service is called Vapor, and runs in the cloud. Elegance? Well, it mostly rhymes with eloquent, and is something that any framework aspires to. Models, controllers, actions, and resources are all important parts of a typical web app built in an object-oriented style; I was planning to have a line about “plundering” to go with resources, but that didn’t make it. Fortify is another Laravel authentication feature, but rum is a traditional source of income for pirates, on top of its role in providing Dutch courage. Enums are a common programming language feature, but notable because they were added natively to PHP 8.1 recently. Telescope is an in-app debugging utility. Horizon is a queue monitoring extension. Cap’n Taylor is of course Taylor Otwell, the creator of Laravel. Livewire is a toolkit for building dynamic, interactive web interfaces for Laravel apps. Laracasts provides an amazing library of training material for Laravel and related technologies, and also a great forum. Pest is a relatively new system for building automated tests that Laravel uses. Artisan is a command line tool that helps automate numerous development tasks. The crew is Laravel’s development team, but also the enormous and diverse community of developers that make Laravel far greater than a typical framework – it’s home for many of us!

NASA Space Sounds for EXS-24

I saw that NASA released a load of audio clips from various historic space missions – from Sputnik to the final flight of Atlantis, via the moon! Space sounds have long been used musical contexts – SpaceOddity, Telstar, Pulsar, Lemon Jelly’s “Space Walk” to name but a few. I felt I had to make these more musically useful that the ‘ringtone’ MP3s available on NASA’s site, so I wrapped them up as a library for the EXS-24 sampler (appears in Apple’s Logic and Logic Express DAWs). The sounds will work straight away in Logic, but the sounds are accessible in the archive as AIFF files so you can easily convert them to other formats. I split up the sounds into the same historical categories as on the NASA site so you’re not loading up all the samples at once. Keyboard mapping isn’t anything particular (white notes starting at C1), but I did clean up the samples a little and edited down some shorter clips of the more familiar or musical sounds (“Houston, we have a problem”, “The Eagle has landed”, “That’s one small step” etc).

The original sounds are mostly mono with low bandwidth, resolution and sample rate, but many are supplied as stereo 44.1KHz 16-bit files, so I’ve converted them all to that as EXS-24 doesn’t seem to like mixing sample rates in one instrument.

So, go ahead and download the NASA sample library! (70Mb zip)

Obviously I have no rights to these samples; NASA is encouraging people to download and use them at will, and I assume it’s being published under their open-source license.

I wrote this entry a while ago but forgot to post it, duh.

Speaker & room calibration

I was lucky enough to pick up a Behringer Ultracurve Pro DSP8024 for a mere £50 on eBay recently. It turned out to have a buggy OS version (1.2), and Behringer very kindly sent me a replacement EPROM with a new 1.3 OS on it, which works just fine. I now have it installed between my Soundcraft mixer and my Wharfedale active monitors. I used its “Auto-Q” calibration routine and put up with some quite loud pink noise to calculate a room correction curve. Because it knows the spectrum it’s generating, it assumes that what it gets back has been altered by the combination of speakers, room and microphone, so it can calculate an eq map to compensate for it. It’s quite fun to watch as it has a nice big LCD screen to display the 31 1/3 octave bands – the initial spectrum is fairly peaky, but as it iteratively applies corrections you see (and hear) it flattening out. It’s also very obvious that my monitors don’t put out much below 50Hz (it analyses down to 20Hz), but that’s to be expected from a moderately sized box with a 6.5″ driver. The results are really pretty good, sounds lovely and smooth, but the real surprise is when you’ve been listening to it for a while and you switch out the EQ – it’s really quite a shock to hear the uncorrected version. Lots of purists don’t like room correction by EQ, saying it’s better to fix the room in the first place, and also that EQ calculated like this is highly dependent on the listening position (which it is). I have a lots of bookshelves facing my speakers; they make fantastic diffusers, and I have some Universal Acoustics absorber tiles on the sloping ceiling above my listening position. The longest room mode will be fairly undamped (I’m not about to start hanging duvets around the walls!), but the resulting EQ is below 6db in either direction across the whole range – I’ve heard of rooms with 24db peaks! Anyway, after all that, it sounds lovely, and I’m happy!

Mixers

I’ve had a little Behringer UB802 mixer for some time and found it very frustrating to use as a front-end to my computer system. There’s nothing particular wrong with it (clean audio, good functions, simple, reliable), it’s just not very well suited to the job, mainly because its routing is not flexible enough to be used for audio input at the same time as output. One big problem I had was that the mic I use for audio input (mainly for Skype) routed to my speakers too; a recipe for feedback and poor input level.
In order to resolve all this, I’d been contemplating a Soundcraft Compact 10 as it seemed to have much better routing options. Last week I managed to pick up the smaller Compact 4 for a mere £30 on eBay (I figured I could live without the extra size and inputs for that price). What a difference! It achieves its wonders by having an additional “recording” mix buss. It also has separate routing for monitoring. Each channel has a button that when pressed, routes that input to the recording buss and removes it from the main mix. Similarly there is a monitor button that routes it to the monitor buss. if neither are pressed, it goes to the main mix, which you can conveniently route back to the monitor mix too. Multiple mix busses are par for the course on bigger mixers, but almost nobody does it for small mixers, yet there are tons of n:2 small mixers around that are used in this role, suggesting there are a lot of frustrated users that don’t know there is a way out. As Soundcraft’s manual says:

Why don’t other manufacturers design consoles like this ?
a) Because they are out of touch ?
b) Because they are not very innovative ?
c) Because they don’t have the experience ?
d) Because they don’t listen to their users ?
Who knows :-)

The upshot of all this is that I can route the microphone to the computer’s audio inputs without having it also appearing on the mix bus going to the monitors. As far as I can tell, this routing flexibility makes the Soundcraft about the only small mixer that’s actually designed for this role. Most seem to gloss over this routing problem, or not want to “confuse” users with the concept of an additional mix buss. As an added bonus, it has two headphone outputs that are independent of the mix output, so I can turn my speakers down without turning down my headphones. The Behringer tries to do this, but only by giving you main and monitor mix levels, but as far as I can see you never really need the main mix outputs, only the monitor mix. The only real workaround for simple n:2 mixers is to have a separate mixer for input and output, which is quite a reasonable proposition when you see the price of things like the Behringer Xenyx 502, but I’m much happier having it in one box. Behringer make bigger mixers that have more busses (I think the cheapest is the Xenyx 1222FX), but they are also bigger, more complex and more expensive – overkill for my application.
It’s also interesting to contrast the marketing. Behringer describes the 802 as having 8 inputs, which is technically true – 2 mono, 2 stereo, and a stereo return – but in reality that’s only 5 independent inputs (total of 10 input channels). Soundcraft go the other way – the Compact 4 has 5 independent inputs at a push, but you can actually squeeze 8 channels into it in total, and you can actually get 16 channels into the Compact 10. British understatement at work?
The Behringer is still a great little mixer, and I’ll miss its diminutive size, the aux send, and a couple of extra inputs (which, now I’m firmly in software-synth land, isn’t really a problem any more). Anyone want to buy my UB802?