Work in progress Fledgetone is still being built, so things may change or break.

Guide Game music

Game music

Fledgetone makes music for games that reacts to play: a song's sections become states the game switches between, its tracks layers it fades in and out, with stingers for moments, and exports that carry it all into a game engine. Any song with markers works: open a starter (File › New…) or your own song, and its sections are the states.

Game preview: hear it the way the game will play it

The Game tab of the bottom panel (the Game button at the top right opens it) is for rehearsing adaptive music, the kind that changes with what the player is doing:

The Game tab: the states, the intensity curves for each stem group, the stingers and the game exports.
The Game tab: states, intensity, stingers and the game exports.

Stingers (at the bottom of the panel) are short cues a game plays over its music when something happens. Choose one from + Add a stinger…: Victory (a fanfare), Level up (a rising arpeggio), Item found, Checkpoint, Danger (tense low pulses) or Game over (falling to a low minor chord). Each is written in the song's key, worked out from its notes and shown next to the heading, and plays at the song's tempo.

Loop variations (under the stingers) export 2, 3 or 4 takes of the loop region, so a player who stays in one place doesn't hear the very same loop over and over: the game picks a different take each time round. A is the loop as written; B ends with a snare fill into the loop point, C with a tom fill, and D drops the hats for the first half with a kick pickup at the end (the fills go on the first drum track that plays through the loop's last beat). With Human feel ticked, tracks without the Human insert get a light one, so every take's timing and dynamics differ too. Export saves a .zip of seamless WAV loops (with loop points), all exactly the loop's length and at one level, so the game can switch takes at the loop point without a jump.

Audition like the game

Audition like the game (in the Game tab) renders the states, their stems, the stingers and the transition sounds exactly as the game kit exports them (it takes a few seconds, more for a long song), then plays them with the kit's own web player. Big pads switch states (a waiting one pulses until its line), stinger pads fire stingers on the next beat, and Intensity crossfades the stem groups. Every switch follows your transition matrix, crossfades included, so what you hear is what the game will do. The song stops while it's open.

Costumes: the same music played another way

Costumes (in the Game tab) are the song played another way: each track on another instrument, or silent, and maybe faster or slower. The game swaps costumes mid-loop and the tune carries on in its new clothes: the 8-bit version in a retro room, a music box in a dream, the night version after dark, a hurry-up when time runs low.

How each state plays: shuffled pieces and silences

Under the states, How each state plays sets, for each state:

The timeline plays a state as written; the game kit's players (and Audition like the game) do the shuffling and the silences.

Effects in the game

The game kit's players can shape the music for what's going on, with no extra files: underwater (a low-pass and a big room), muffled (behind a wall, the pause menu), low health (duller, further away), dream (soft, washed in reverb) and none, gliding over a second or so. Try them in Audition like the game (the Effect buttons). In code it's setEffect("underwater") (web), set_effect("underwater") (Godot) or SetEffect("underwater") (Unity); setFilter and setReverb set the low-pass and the reverb directly. Sound effects aren't touched.

Parameters: one number from the game, several changes in the music

A parameter is a number the game sets, 0 to 1, that moves several things in the music at once: danger raising the intensity as enemies close in, health muffling the music as it runs out, depth under water. The game doesn't need to know how the music is mixed; it just calls setParameter("danger", 0.7) (web), set_parameter("danger", 0.7) (Godot) or SetParameter("danger", 0.7f) (Unity). It's how games drive their music in FMOD and Wwise.

In the Game tab, Parameters adds one from a preset (or your own, empty):

Each thing a parameter moves is a line you can change: what it moves (Intensity, Filter in Hz, Reverb, Volume, or one stem group's Layer level), what it goes from and to, and over which part of the parameter (as danger goes from 0 to 50%: before that it holds its first value, after it its last). move something else… adds a line. starts at is where the parameter is when the game starts.

When several parameters move the same thing, the strongest wins: the highest intensity and reverb, the lowest filter; volumes and a layer's levels multiply. The effects (above) and setFilter / setReverb combine the same way. A song whose parameters move the intensity follows them rather than setIntensity.

Move them in Audition like the game: each parameter gets a slider under Intensity. Try it in a game drives a parameter called danger (or threat, tension, alert) with the guard, like the intensity, and one called health (or hp, life) with your hearts. The game kit carries them all (its README lists them); the FMOD and Wwise packages leave them out.

Try it in a game

Game → Try it in a game… (or Try it in a game in the Game tab) drops your song into a little game so you can hear it react to play. Pick the game at the top (it remembers your pick):

Try it in a game: the music follows what happens in the level.

In the 3D arena and the platformer:

Sound effects maker

The Sound FX tab of the bottom panel (or Tools › Sound effects maker, or search sound effects) makes the sounds games are full of: menus, hits, pickups, magic, footsteps, jingles and ambience loops. It has four parts: Make a sound, Make a set, My sounds and In this game.

The Sound FX tab: groups of sound kinds, the layers of the current sound and its finish settings.
The sound effects maker, in the Sound FX tab.

Make a sound. Pick a group (Retro, UI, Combat, Movement, Rewards, Magic & Sci-fi, Jingles, Foley, Loops, Nature, Places, Creatures), then a kind of sound: Click, Confirm, Error, Sword swing, Heavy impact, Footstep, Gem, Level up, Teleport, Victory, Rain, Forest, Thunder, Wolf and about a hundred more. Each click makes a new one of that kind and plays it. Mutate makes one like it but a little different; Surprise me any kind.

Make a set. Every sound a kind of game needs, in one go: Menus & UI (12 sounds), Retro platformer, Action RPG, Sci-fi shooter, Casual & puzzle, Ambience loops, Nature & places, Animals & creatures and Foley & props. The sounds of a set share a style (the same tone, register and space), so they sound like a family, and they're levelled to sit together. Play each one, ↻ for another of it in the set's style, Edit to shape it in Make a sound, ✕ to leave it out, New style to make the whole set again differently, and Hear all. Download set saves a zip with a folder of files named for the game (with variations, if you set them) and a sounds.json that opens the set again in My sounds (Import), to change it later.

In this game lists the song's game sounds: what the game kit export carries next to the music, each named for the game (sword_hit) and played with playSfx("sword_hit") in its players. Play each one, rename it, set its Variations, Edit it (then Update in game puts your changes back) or remove it. Add all to game on a set adds the whole set. They're saved with the song.

My sounds keeps the sounds you Keep in this browser: play, Edit, save or delete them. Export all saves them to a file, to back them up or share them; Import opens one (or a set's sounds.json).

The same settings always make the same sound, so a sound you kept can be made again exactly.

Micro-variations for game sounds

A sound a game plays again and again (a footstep, a sword swing, a menu click) sounds mechanical if it's the very same every time, so games pick one of several slightly different takes at random. Right-click a short clip (a beat or two) and choose Generate variations…:

The game kit: everything for the game in one file

Export game kit (.zip) in the Game tab makes everything a game needs to play your music, and your sound effects, the way the panel does. Choose what it's For first:

What's inside:

FMOD and Wwise

File › FMOD / Wwise package… (also in the Game tab) lays your game music out for audio middleware, in one .zip:

Versions of FMOD and Wwise differ, so each script step reports whether it worked (OK or SKIP) rather than stopping the rest.

The web runtime kit: music with no audio files

For a web game where download size matters, Export web runtime kit (no audio files) (in the Game tab) makes a .zip with just:

In the game: const music = await loadSong('./song.json', { onProgress }), then music.play(...), music.setState(...), music.setIntensity(...) and music.stinger(...), exactly as with the game kit's web player. Synthesizing takes a few seconds per minute of music (longer on slow devices; a 16-bar song with three stem groups took about 12 seconds in testing), so start it while the game loads and show a progress bar. Recorded instruments download their samples from the same public libraries the app uses, so they need a connection; the synths need nothing. The plugins the song plays (Fledge Synth and the rest) go in the kit too, in fledgetone-plugins/ beside bos-player.js, so the game doesn't need fledgetone.com for them; if one can't be loaded, loadSong says which instead of leaving its part silent.

GPL-licensed plugins (Surge XT, Dragonfly, Plateau, the Tonewheel Organ): before the kit takes one along, a small window names it, says what the GPL asks (you may ship it in any game, paid or free, but if you share the game its source must be available and its licence must go with it), who made it, with links to its project, its source and where to contact its makers, and offers Export with it or Cancel. With it, the kit also has GPL-PLUGINS-NOTICE.txt (each plugin, its makers and the link to its source) and GPL-PLUGINS-LICENSE.txt (their licences): keep both with your game. A Surge XT patch the song starts on goes in with it.