Back to the Lab

Bone Maestro

2026 · App · WIP

Bone Maestro is an iPad app for preparing and running custom performances with Ultra Skelly — Home Depot’s 6.5-foot animatronic. I built it because the stock app couldn’t do what I needed: longer audio, a character voice, and shows I could prep ahead and run from the doorstep.

AI-generated illustration of a monster concert with a skeleton conductor leading a slime keyboardist, ghost drummer, and creature band on a basement stage
Bone Maestro Shows on iPad with Skelly connected and GO buttons for ready Shows

02 / What problem was I solving?

The stock experiencelimited the performance.

When I first used the stock app, three limits shaped what I wanted to build:

  • Limit 01

    Moon concept icon — limited time window

    30 seconds

    The limit for a personal sound file.

  • Limit 02

    Speaker concept icon — locked stock voice

    A fixed voice

    I couldn’t change the voice to fit a character.

  • Limit 03

    Grave concept icon — finite onboard storage

    5 custom files

    The skeleton’s onboard custom-audio capacity.

My goal was to make custom performances I could prepare ahead of time and control from the doorstep.

03 / How does it work?

From a greetingto a show.

Here’s how I set up a Haunted House greeting, from preparing the line to running the show.

  1. 01

    Create a clip

    Record, import, or generate “Welcome to the haunted house.” Preview the audio on the iPad and save it to Library.

  2. 02

    Add the greeting to a Show

    Open Haunted House in Shows and use + Clips to add the greeting. Set its eye changes, movement, and lights, then place it first in the lineup.

  3. 03

    Run a show

    Use Connect to check that Skelly and its speaker are both ready. Open Haunted House and start the show from the iPad.

Watch Skelly perform

Skelly’s Halloween performance · 0:11
Extended Skelly performance · 0:42

04 / What did I design, and why?

Designing for the personrunning the show.

I moved preparation and playback onto the iPad, removing a computer and separate Raspberry Pi from the setup. Saved audio lives on the iPad, so a night’s content doesn’t have to fit in Skelly’s five onboard slots.

Shows turns clips into a performance.

At the doorstep, I want one place to see what Skelly will do next. Shows turns individual clips into a saved lineup I can prepare ahead of time and run from the iPad.

  • Build the lineup

    Add clips from Library and put them in order. In Haunted House, The Entrance opens the show and A Warning in the Dark follows.

  • Set the timing and cues

    Give each clip its own eye changes, movement, and lights. Set a pause after a clip when the next line needs room to land.

  • Run it from one place

    Once Skelly and its speaker are connected, start the whole Show or trigger a single clip from the lineup.

How Night queue runs several Shows

For a longer evening, add several saved Shows to Night queue and put them in the order you want. Bone Maestro checks that the queue is ready before it plays through. You can repeat the queue or shuffle the clips within each Show.

Shows on iPad with a green connection check, GO buttons for ready Shows, and a Resolve button for a Show with a missing clip
With Skelly connected, Shows gives ready performances a GO button and flags any lineup that needs attention.

Give Skelly a voice.

“Welcome to the haunted house” can sound friendly or threatening. In Library, I open Generate Voice to write the line, cast a voice, and direct how it’s delivered.

  • Choose who’s speaking

    Pick a voice in Voice & delivery. Voice settings hold controls like speaking speed and loudness, so the script stays in view while you write.

  • Direct a moment in the line

    Try “[whispering] Welcome… [break] to the haunted house.” Insert cues by hand, or use Add cues to suggest them for unmarked lines. Undo lets you try another direction.

  • Listen before it joins the show

    Generate a take with Fish Audio, preview it on the iPad, and tweak the script if the delivery misses. Save the take you want to Library so it’s ready to add to a Show.

How the Fish Audio integration works

When you tap Generate, Bone Maestro sends the script, bracket cues, selected voice, and voice settings to Fish Audio. The app keeps the API key in the iPad’s Keychain. Cue suggestions happen on the iPad. Fish Audio interprets the cues during synthesis, so delivery can vary between takes.

Bone Maestro converts the returned audio to a WAV. Preview plays the original take. Saving prepares the audio for Skelly’s jaw and stores the clip on the iPad, so a saved show can play without another Fish Audio request.

Generate Voice on iPad with a script editor, a voice selector, cue menus, and an Add cues button
Voice & delivery puts casting and cue controls beneath the script.

Show what still needs connecting.

The control link and speaker output are separate requirements. I show both states and put the next setup action beside the missing connection.

Reconnecting does not replay stopped content. The operator chooses what happens next.

Audio setup needed

Bone Maestro Connect screen with Skelly control ready and speaker setup still needed
The control link is ready. The next step is pairing the speaker in Bluetooth Settings.

Ready to perform

Bone Maestro Connect screen showing Skelly control and speaker both ready
With control and audio both connected, the next action is Open Shows.

05 / How did it evolve?

A simpler setup.A more deliberate show.

  1. 2025

    Explore live conversation

    I started with an iPhone app, ChatGPT, and voice APIs. The approach needed a coordinating server, and I didn’t have the time to take it further.

  2. July 5, 2026

    Try a local playback hub

    I explored a phone remote backed by a Raspberry Pi for saved audio, timing data, and scene playback.

  3. The iPad direction

    Bring the workflow onto iPad

    A busy, noisy trick-or-treating area made me question live conversation and repeated API costs. I chose prepared shows I could review in advance and control during the evening.

Links