A short guide for composers and sound designers who want someone to hear their adaptive work react, not just read about it.
A linear cue speaks for itself. Someone presses play and either they like it or they don’t. Adaptive music doesn’t work like that, because what you’re showing isn’t the music on its own, it’s how it behaves when the game changes its mind. The best work a lot of us do is the hardest to show.
Why a reel can’t show this
An audio player plays one timeline from start to finish. Adaptive music is a set of decisions waiting to be made. The loop coming around with its tail ringing over the restart, the state arriving on the next bar, the section waiting for its exit and playing the bridge you wrote for that move, none of it happens unless someone clicks something. And a good seamless loop sounds like nothing at all, which is the point of it, and why nobody notices it in a reel.
A video, or a build of the game
The simplest honest answer is to record yourself doing it. Screen capture with the music running, click between the states, let the ending play, upload it. It’s cheap and it travels anywhere, but it can’t hand the choice over. The viewer hears the one path you took at the timing you chose, and can’t try the transition they were curious about, which is usually the awkward one.
A build of the game is better, if the music is already in one. Nothing beats hearing it in context, doing its job. But the build isn’t yours, work in progress often can’t be shared at all, and even when it can you’re asking a producer skimming portfolios to install something before they hear a note.
A hosted player, or a page you build yourself
Plenty of players will host your files and let a visitor press play, and some let you line up several at once. What none of them know is where your loop points are, that your tail is meant to ring over the restart, or that a switch should land on the next bar line rather than whenever the click happened.
You can build the page yourself. All of it is possible in a browser, and that’s how Loopsmith’s own web players work. But you’re writing a small music engine, and it has to be touched again every time the music changes.
What Loopsmith’s portfolio page is
Portfolio page writes one HTML file for your own website, itch page or portfolio. In the editor it’s in the Export card’s More export options, right under Client review page, and in the Switcher and Area music windows it’s on the Web page… button, under For your website (portfolio). It lands in your output folder as <song>_Portfolio.html.
A visitor presses Play and hears the score move the way a game would move it. It runs the same players Loopsmith writes for the web, so the loop points, the tails, the crossfades and the bridges are the ones you’re shipping. The audio travels inside the file, so there’s one thing to upload and nothing to point it at.
Loopsmith asks three things, once. Your name, remembered for next time and shown under the title. A page title, which starts as the track’s name. And one optional line about the music. A small Made with Loopsmith link sits at the bottom, with a tick box to turn it off.
It leaves out the delivery fact grid, because loop points and tails are what a client checks and a visitor is there for the music. There’s one plain line saying what to click and a status line naming what’s playing. The page has no fixed width, so it reads on a phone, and it takes light or dark from the visitor’s own setting. To drop it into a page of your own, the finishing message hands you the line to paste, with a height already worked out for the shape you wrote:
<iframe src="Harbour_Town_Portfolio.html" width="100%" height="420" style="border:0"
loading="lazy" title="Harbour Town"></iframe>
What a visitor can click
Every shape Loopsmith builds gets a page, so a visitor can click between your states, sections, areas, layers, takes or clips. A single loop, a stem set, a set of variations, random clips, a Sections set, the Switcher and Area music.
A single loop repeats with the tail from each pass ringing over the restart. A stem set starts every layer together on one clock and keeps them there, with an on and off button for each, so the arrangement builds and thins out while it plays. Variations play a different take at each restart, the outgoing take’s tail ringing over the one that follows. Random clips play between two and eight clips of different lengths one after another in random order, which is how an ambience bed made of several phrases behaves, and if you’re a sound designer that’s probably the page to put up.
A Sections set waits for the section that’s playing to reach its next exit, plays the bridge written for that move, and starts the new section from its top with the old one still ringing underneath, so a visitor hears the move rather than a cut. The Switcher crossfades to the state you click on the next bar line, picking it up at the same place in the bar. Area music loops the area the set starts in, and clicking another crossfades there over 1.5 seconds with the new area starting from its top. An area of several files plays them all together, in step.
What the page is honest about
The audio in it is a compressed preview, Ogg Opus at 128 kbps for a single loop and 96 kbps for a set, named in the footer of the page itself. It isn’t the delivered audio, though the loop points, the tails and the timing are, so the page is for the music and the way it moves, not the codec.
The size limit is a real one. Loopsmith measures the finished page before it writes anything and refuses over 12 MB, counting every take, layer, section, bridge, state or area file and its tail, so a long set can be too big for one page. Then it’s fewer parts, a shorter loop, or sending the exported folder with its browser tester instead.
These pages play in Chrome, Edge, Firefox and Safari 18.4 or newer. Safari before 18.4 can’t play Ogg at all, and the page says so instead of sitting there silent. In the editor the button needs Loop style set to Two voices: tail rings over, the delivery it plays, and in the demo build a page uses one of your three tracks, or nothing at all if it’s a track you’ve already used.
The same file, for a client
The portfolio page has an older sibling, and half the time it’s the one you want. Client review page writes the same kind of file for the client or developer who has to check a delivery, as <song>_Client_Review.html. It keeps the facts the portfolio page drops, the loop start, loop end, loop length and tail length, the track name and the date, and on a single loop or a stem set it keeps Plain hard cut, so a client can hear the same loop with the tail cut off at the loop end, one click apart. In the Switcher and Area music windows both pages sit on one Web page… button, as For a client to review and For your website (portfolio).
How Loopsmith makes this easier
This is the part I built Loopsmith to take off your plate. You finish the music, and it does the setup.
- You don’t build a player. One button writes the page, with the scheduling, the tails and the crossfades already in it, and it behaves the way your delivery behaves because it runs the same web players Loopsmith writes for your game.
- There’s one file to upload, because the audio is inside the page.
- Revisions are a re-export. Re-render in your DAW, reload, and write the page again.
- The same work covers the client, because the review page is the same file with the delivery facts put back in.
The demo is the full app with three free tracks, which is enough to put a playable page of your own music on your site tonight. It’s Windows, and it costs nothing to find out. There’s more on the product page, and if you’re still deciding what shape your cue should be, the adaptive music guide covers stems, states and sections.
Austin Haynes is a composer for games, including Cognition: An Erica Reed Thriller (AdventureGamers Best Music of 2013) and The Silver Lining. If your project needs music, you can hear his work at austinhaynesmusic.com.