← All posts

Managing a tune library across a fleet of quads

· workflow · rtttl · tips · esc

Three quads, two firmwares, a folder full of RTTTL strings named "new-tune-final-v2". Time to bring order to the chaos before your next reflash wipes a melody you loved.

Here's a failure mode nobody warns you about: you flash a new Bluejay release, the ESC settings reset, and the melody you spent an evening perfecting is gone — and you never wrote the string down. It lived only on the ESC.

If you run more than one quad, or reflash more than once a year, you need a tune library. Not a fancy one. A text file. But a deliberate one.

The one rule: ESCs are not storage

Treat the ESC like a deployment target, never like the master copy. The master copy of every melody lives in a file you control. The workflow is always: edit in the file → paste into ESC-Configurator → save to the quad. Never the other direction.

(Yes, you can read a melody back out of an ESC. No, you won't remember to do it before the one reflash that matters.)

A format that works

One plain-text file, one block per tune. Mine looks like this:

## Zelda Secret — whoop, cheerful
## fits: 65 bytes, tested on 0802 + 1102 motors
zelda:d=16,o=6,b=180:a5,a#5,b5,c,8c#

## My arm tune — all quads
## fits: 48 bytes, ends on held g5 so it reads as "ready"
armed:d=8,o=5,b=140:c,e,4g,c,e,4a,g,e,4c

The comment lines carry the two things you always forget: which quads it's tested on and why you made the choices you made. Six months later, "ends on held g5 so it reads as 'ready'" saves you re-deriving your own reasoning.

Byte count matters because the budget is 128 bytes and a tune that fits on your Bluejay quad may need trimming elsewhere.

Record which quad plays what

Second half of the file: a manifest.

# 5" freestyle  — Bluejay 0.21 — plays: armed
# 3.5" toothpick — Bluejay 0.21 — plays: zelda
# 7" LR         — AM32 2.18    — plays: armed (AM32 variant, see below)

The firmware column earns its place the first time you have quads on both Bluejay and AM32 — their melody handling differs, and a string tuned for one may need adjusting for the other. Keep both variants in the library, labelled.

Version the file

Put the file somewhere that survives a dead laptop: a git repo if that's your thing, otherwise any synced folder (Dropbox, Drive, iCloud). Motor melodies are tiny — a decade of tunes is smaller than one photo. There is no storage excuse.

If you use git, you get history for free: every tweak to a tune is recoverable, including the version you liked better before you "improved" it.

Preflash ritual

Before any firmware update, thirty seconds of discipline:

  1. Open ESC-Configurator, read the current melody off each ESC.
  2. Diff against your library by eye. Anything on the quad that's not in the file gets added now.
  3. Then flash.

That's it. Three sections in one text file: tunes with comments, a quad manifest, and a habit of updating it before you flash. The whole system costs five minutes to set up and has saved every melody I've written since — including the ones from the library here, which I still keep local copies of, because the master-copy rule doesn't have exceptions.

← All posts