Stem Hero

TURN THE SONG INTO YOUR MIX

Your song. Your mix.

Stem Hero is a multitrack music player. It plays separate instrument tracks together so you can rebalance a song, mute parts, or solo the instrument you’re learning.

Clone Hero & YARG songs

Open a song ZIP or a collection ZIP and choose a song. Extracted audio stems from compatible Rock Band and Guitar Hero song conversions also work.

ZIPs are the easiest option on phones. Song and collection folders work where folder selection is supported.

Your own multitrack audio

Load separate OGG/Opus, WAV, MP3, FLAC, M4A/AAC, or WebM audio files. Format support depends on your browser.

Names such as guitar.ogg, bass.ogg, and vocals.ogg help identify the instruments.

What should be in a song?

Start with the song’s separate audio stems. Include song.ini, album artwork, and notes.chart or notes.mid when available for song details and instrument clues.

Use unpacked song assets. Packaged .sng/.yargsong files and console game archives need extracting to a supported folder or ZIP first.

To adjust instruments independently, load separate recordings for those parts. A single mixed recording plays as one track.

Basic keeps the mixer simple. Nerd adds effects and detailed controls.

Your audio stays on this device.

Transport

Load a song to begin

Stable engine
00:00.000 / 00:00.000

Mixer

No stems loaded

Your mixer will appear here. Load two or more stems to test synchronized playback.

MULTI-SONG SOURCE

Choose a song

Archive

LARGE DECODE WARNING

This song may exceed browser memory

Stem Hero must expand compressed stems into PCM for playback. Continuing may cause this tab to slow down or close on a memory-limited device.

Estimated decoded audio
—
Decode warning threshold
—
Stems selected
—

Settings affecting your mix

These settings stay active in Basic Mode.

Song notices

Open a song or collection

Files stay on this device.

More ways to open

Pan

Tip: hold the pan control and drag sideways for quick adjustment.

Effect parameter

Stem Hero

0.2.48 · Changelog & license

Unlicense · full license text

Stem Hero’s original app code is released under Unlicense. This does not change the rights in audio or assets you load. Official license text

This is free and unencumbered software released into the public domain.

Anyone is free to copy, modify, publish, use, compile, sell, or
distribute this software, either in source code form or as a compiled
binary, for any purpose, commercial or non-commercial, and by any
means.

In jurisdictions that recognize copyright laws, the author or authors
of this software dedicate any and all copyright interest in the
software to the public domain. We make this dedication for the benefit
of the public at large and to the detriment of our heirs and
successors. We intend this dedication to be an overt act of
relinquishment in perpetuity of all present and future rights to this
software under copyright law.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.

For more information, please refer to <https://unlicense.org/>

Full changelog

Every released build, newest first. Earlier entries describe features as they shipped; later builds may replace or remove them.

0.2.48 Complete history, Unlicense and a clearer start
  • Added a complete changelog covering every released build from 0.1.0 onward, ordered newest first.
  • Adopted Unlicense and included its full text in the app and as a separate file.
  • Moved the intro panel’s Open New action to the top and made it larger and more prominent.
  • Added changelog/license access in the welcome screen, loaded Basic mixer, Nerd About panel and footer.
0.2.47 Peak hold and slower meter fall
  • Master and track meters in both modes hold measured peaks for at least 40 ms.
  • Full-scale meter fall increased to 500 ms after the hold; smaller peaks fall proportionally faster.
  • New or equal peaks refresh the hold, lower readings do not, and rising levels remain immediate.
  • Preserved raw clipping detection, analyser cadence, shared meter state and stop/source cleanup.
0.2.46 Custom presets remain reachable
  • Fixed the preset dropdown collapsing in desktop Custom track effects.
  • Placed the preset menu on its own full-width row in both track and master racks.
  • Aligned the six effect enable buttons in equal-sized rows with square styling and clearer enabled states.
0.2.45 Flat tracks and smoother meters
  • Squared Basic track outlines, fader frames, meter strips, transport and song-row edges.
  • Removed decorative card gradients, inset shadows and meter/thumb glows while retaining fills and focus.
  • Added immediate meter attack with a time-based, proportional 100 ms full-scale fall in both modes.
  • Kept raw clip detection separate from meter smoothing and reset both views on playback/source teardown.
0.2.44 Shared welcome screen and asset guide
  • Added one square, flat intro panel shared by Basic and Nerd before loading.
  • Explained Stem Hero and supported Clone Hero/YARG songs, collection ZIPs, extracted game stems and ordinary audio.
  • Added a song-asset guide covering metadata, artwork, charts and formats that require unpacking first.
  • Improved empty Nerd startup by showing the intro first and hiding the disabled mixer workspace.
0.2.43 Shared logo, header and Nerd pan knobs
  • Embedded the one-line vined STEM HERO logo with colors and background matched to the app.
  • Made the logo, Basic/Nerd switch and Open New header consistent between modes.
  • Moved Nerd track volume above Mute / Pan / Solo and changed Pan to a dual-action knob.
  • Added effect-parameter explanations to the tap-open dialog, keeping floating sliders compact.
  • Enlarged song-selection text and added game/source and chart author to its third line.
0.2.42 Effect knobs and compact Basic header
  • Replaced all 28 effect parameter sliders per rack with labeled knobs and formatted values.
  • Tap opens a slider dialog; holding for 500 ms or deliberately dragging opens the shared floating slider.
  • Hidden disabled effect modules now retain their settings until enabled.
  • Shared pan/effect gesture safeguards prevent scrolling and cancelled gestures from changing parameters.
  • Squared Basic buttons and toggles; renamed the loader Open New and moved it beside the mode switch.
0.2.41 Clearer song choices and shared UI polish
  • Song choices use three lines: Title, Artist · Album, then stem count, with larger titles.
  • Removed redundant folder/metadata text from the third line while retaining search and tooltips.
  • Applied the square, flat theme to shared pickers, notices, summaries, warnings and loading panels.
  • Enlarged dialog targets and bounded filter/list scrolling so actions stay reachable.
0.2.40 Song/collection opening and quick pan
  • Renamed Open Song to Open Song/Collection and clarified collection loading throughout the UI.
  • Redesigned the pan dialog with a flat filled slider, center marker and large Center/Done actions.
  • Added hold-for-floating-slider pan editing with relative horizontal movement.
  • Long holds and adjustments beyond two displayed pan points suppress the release dialog, including after returning to the starting value.
  • Added scroll, pointer-capture, lifecycle and viewport safeguards for the floating control.
0.2.39 Saved-mix notice and flat Nerd console
  • Added Saved mix restored notices with Accept and Reset; they dismiss after 10 seconds while keeping settings.
  • Reset restores the newly loaded song defaults and offers Undo without changing playback position.
  • Mode switches preserve notice deadlines; edits, source changes and stale timers cannot affect newer mixes.
  • Continued the square, flat Nerd treatment across cards, effects, controls and dialogs.
0.2.38 Compact transport and reclaimed track space
  • Placed compact Play/Stop controls beside the scrub bar on one full-width Basic row.
  • Placed master volume and Clip on the second row, with metering integrated beneath the fader text.
  • Fixed inherited layout rules that collapsed the master fader and stacked transport controls.
  • Loaded Basic uses the remaining live viewport for tracks and hides the footer; short windows retain normal scrolling.
0.2.37 Transport finish and first Nerd refresh
  • Reset Undo now expires after 10 seconds without changing playback or the current mix.
  • Removed Recent Songs/Mixes and manual relinking; ordinary opening still restores saved settings.
  • Reduced guarded track/master volume drag threshold to five CSS pixels.
  • Restyled master volume and scrub controls as filled Basic-style sliders.
  • Started the matching Nerd fader, readout, control and Mute/Solo visual refresh.
0.2.36 Intentional volume drags and Basic polish
  • Required deliberate horizontal movement before changing track/master volumes; taps and vertical swipes preserve values.
  • Used relative adjustment after the initial ten-pixel dead zone and kept keyboard range controls.
  • Added pointer cancellation, capture and lifecycle cleanup for guarded faders.
  • Polished Basic panels, fader text, Pan captions and Mute/Solo states.
0.2.35 Reset Undo and Basic notices
  • Added Reset Mix Undo in both modes, restoring levels, pan, mute/solo, effects and quick-mix selection.
  • Undo retains settings only and is invalidated by subsequent edits/source changes.
  • Added an advanced-settings summary with explicit Review in Nerd and Keep as is choices.
  • Added persistent Basic import notices and details while keeping routine ignored files quiet.
  • Avoided flagging ordinary restored instrument labels as advanced changes.
0.2.34 Basic Mode preview
  • Introduced persistent Basic/Nerd selection and a simple song-opening dialog.
  • Added compact labeled track faders, percentages, pan values, Mute/Solo and meters.
  • Shared transport, source, quick mixes and mixer state with the existing Nerd engine.
  • Mode switches preserve playback and move existing nodes without redecoding or rebuilding effects.
  • Added compact mobile layout and quiet notices for active advanced settings.
0.2.33 Streaming recovery and desktop refinement
  • Added playback-health status for stable playback, streaming drift, correction and buffering.
  • Used the median progressing stem position as the streaming project clock.
  • Added sustained-stall detection and bounded playback recovery with separate diagnostics.
  • Expanded the desktop workspace and made the utility sidebar independently sticky and scrollable.
0.2.32 Experimental low-memory streaming
  • Added an off-by-default browser-streaming preference for the next song load.
  • Preflighted every stem before replacement and fell back to the stable engine if streaming setup failed.
  • Connected streamed audio to the existing mixer/effects graph without retaining full-song PCM buffers.
  • Added drift correction, readiness diagnostics and explicit media/object-URL cleanup.
  • Kept the stable synchronized buffer engine as the default; streaming remains experimental.
0.2.31 Idle suspension and bounded auxiliary assets
  • Suspended idle audio after a grace period and preserved delay tails before suspension.
  • Bounded chart/MIDI inspection, artwork size and selected-song auxiliary extraction.
  • Added artwork rejection, staged-data and completed-load telemetry.
  • Preserved the stable engine’s full-song decoded-buffer behavior.
0.2.30 Styled chart metadata and Neutral migration
  • Rendered supported chart-author color, bold, italic and underline tags safely as styled text.
  • Removed size tags and kept search, sorting, titles and accessibility labels free of markup.
  • Migrated inactive nameless/Custom effects to Neutral so dormant racks do not reopen detailed editors.
  • Preserved active Custom processing and dormant parameter values.
0.2.29 Lazy effects and visual efficiency
  • Neutral racks allocate no effect nodes; enabled modules allocate only what they need.
  • Disabling modules releases their nodes while retaining settings.
  • Cached unchanged parameter targets and saturation settings and coalesced slider-label refreshes.
  • Stopped idle visual refresh and bounded transport, level-meter and visible compressor updates independently of display refresh rate.
0.2.28 Memory and load-efficiency implementation
  • Bounded streamed ZIP extraction and checked CRC while consuming output.
  • Serialized native file reads/decodes so cancelled or timed-out work cannot overlap another native task.
  • Guarded playback starts against stale resume, seek and replacement operations.
  • Improved retained-memory telemetry and corrected song_length millisecond interpretation.
  • Grouped archive directories once and excluded previews/redundant stems before extraction.
0.2.27 Legacy role inference and decode telemetry
  • Treated rhythm.ogg as ambiguous rather than automatically labeling it rhythm guitar.
  • Used explicit stream mapping, Player2 metadata and chart/MIDI evidence to distinguish bass from rhythm.
  • Displayed role confidence and evidence in import reports and diagnostics.
  • Added estimated/actual decoded-memory and peak-loading measurements.
0.2.26 Effects lifecycle and accessibility
  • Created doubler/chorus oscillators only while an enabled rack actually uses modulation.
  • Stopped and released oscillators on bypass, preset changes, removal and page exit.
  • Reduced decorative motion and visual update frequency for reduced-motion preferences.
  • Improved slider scrolling and dialog focus restoration.
0.2.25 Mobile loading and lifecycle hardening
  • Hid unreliable mobile folder selection and recommended ZIPs or individual audio files.
  • Kept desktop folder loading available and explained the mobile fallback.
  • Added pagehide cleanup, recoverable back/forward navigation and background audio-resume handling.
  • Hardened interrupted pointer interactions and state persistence.
0.2.24 Simpler effects workflow and fewer decode warnings
  • Removed the redundant mixer-level Effects editing toggle; racks remain available when loaded.
  • Kept named presets compact and Custom detailed, with independent bypass controls.
  • Raised large-decode confirmation thresholds for ordinary multistem songs.
  • Retained estimates, cancellation, current-song preservation and post-decode memory accounting.
0.2.23 Full-mix presets and stereo delay
  • Expanded master presets with transparent glue, punch, warmth, tape finish, brightness, low-end and vocal-forward options.
  • Added stereo/ping-pong delay with millisecond or tempo-synced timing.
  • Added feedback, cross-feedback, repeat filtering and wet/dry controls with bounded feedback paths.
  • Persisted delay settings independently for every track and master rack.
0.2.22 Role-aware presets and Custom disclosure
  • Named presets hide module switches and detailed parameters while keeping the selector/status/bypass visible.
  • Custom exposes the exact currently selected settings without resetting them.
  • Filtered track and master preset menus by instrument role.
  • Added role-specific vocal, guitar, drum, bass, keys, backing and crowd presets.
0.2.21 Stereo modulation
  • Added independent Micro doubler and Stereo chorus to tracks and the master.
  • Added wet/dry mix, width, rate and depth controls with restrained defaults.
  • Added RHCP guitar double and Stereo chorus presets.
  • Persisted modulation settings and tracked oscillator lifecycle and cleanup.
0.2.20 Stereo repair and widening
  • Added stereo utility with independent left/right micro-delay and optional linked editing.
  • Added width, balance, channel swap and mono audition.
  • Displayed mono-compatibility risk hints and added RHCP guitar widen.
  • Persisted every stereo parameter independently per rack.
0.2.19 Compressor character and analog color
  • Added Clean digital, Opto smooth, FET punch and Tube / vari-mu compressor behaviors.
  • Added original tube/tape color with drive, wet/dry mix and independent bypass.
  • Added Eco, Standard and High processing-quality choices, with conservative mobile defaults.
  • Updated instrument/master presets and effects-cost diagnostics.
0.2.18 Audible EQ and clean compression
  • Added high-pass, low-pass and parametric mid EQ with independent bypass.
  • Added clean compression with threshold, ratio, timing, knee and input/output trims.
  • Added live gain-reduction readouts and optional approximate level matching.
  • Added conservative processing presets while keeping racks bypassed by default.
0.2.17 Independent effects-rack foundation
  • Added separate bypassed-by-default track and master effects racks.
  • Established Filter/EQ → Dynamics → Color order and real direct-versus-rack routing.
  • Added effects state, persistence, disclosure and diagnostics.
  • Processor slots were neutral placeholders in this build; audible processors followed in 0.2.18.
0.2.16 Desktop and laptop workspace
  • Introduced a wide-screen utility sidebar beside the transport and multicolumn mixer.
  • Expanded working width and reduced wasted desktop space.
  • Kept transport persistent and made track cards denser on laptops.
  • Preserved the mobile and intermediate-width single-column workflow.
0.2.15 Read/decode watchdogs and disposal
  • Added cancellable, size-aware deadlines for file reads and native audio decoding.
  • Tracked detached native tasks until they settled rather than treating cancellation as immediate browser cleanup.
  • Unified stem/project disposal for audio nodes, decoded buffers, source files and controls.
  • Added operation, timeout, decode-failure and released-memory diagnostics.
0.2.14 Album, playlist and stem filters
  • Added Album, Playlist/setlist and Available stem filters for large collections.
  • Grouped split drum/vocal files correctly for stem availability.
  • Expanded search and sorting with album, playlist, year and stem information.
  • Kept waveform/loop work deferred and prioritized the desktop/effects sequence.
0.2.13 Safe preflight and memory confirmation
  • Inspected candidate audio and metadata before clearing the current project.
  • Preserved the current song/session when replacement preflight, extraction or selection failed.
  • Added conservative decoded-memory estimates and Keep current song / Continue anyway confirmation.
  • Improved cancelled-switch and failed-load recovery.
0.2.12 Recent mixes and stronger song identity
  • Added a compact recent-mix catalog and explicit local-file relinking.
  • Used stronger stable fingerprints for source identity and saved settings.
  • Migrated older saved snapshots while storing settings/metadata only, never audio.
  • The recent-mix catalog was subsequently removed in 0.2.37.
0.2.11 Playback cleanup and diagnostic downloads
  • Released ended/stopped sources through a shared lifecycle path.
  • Guarded stale playback events and cleaned up partial start/restart failures.
  • Reset meters immediately on stop and handled restart errors visibly.
  • Added downloadable diagnostic reports containing metadata and measurements, not audio.
0.2.10 Clip indicators and mobile resume
  • Added latched master/track CLIP badges, individual clearing and Clear clip indicators.
  • Logged clipping peaks and reset clip state with project/reset actions.
  • Detected suspended/interrupted mobile audio and offered Resume from the transport.
0.2.9 Optional role editing and compact metadata
  • Hid role assignment during ordinary mixing and added Reassign roles / Done reassigning.
  • Preserved manual labels, crowd defaults, vocal quick mixes and saved assignments.
  • Combined filenames and technical details into a compact channel metadata row.
0.2.8 Persistent Now Playing card
  • Separated collapsible source controls from persistent song/artwork information.
  • Kept Choose another song visible with retained collection details.
  • Displayed stem count, duration and decoded memory and improved missing-artwork layout.
  • Added a retained-source recovery card after partial decode cancellation.
0.2.7 Cancellable, responsive loading
  • Added Cancel across scanning, metadata, extraction, CRC checking and decoding.
  • Yielded during long file operations so the interface stays responsive.
  • Protected newer operations from older completion/cleanup callbacks.
  • Preserved usable source sessions and cleaned up partially decoded replacements.
0.2.6 Result batching and manual roles
  • Rendered song choices in batches of 60 with Show more.
  • Added manual instrument-role correction and persisted assignments.
  • Reported decoded memory and pre-decode estimates for large songs.
  • Kept collection filtering based on retained metadata without rescanning.
0.2.5 Large-collection filters and collapsible loading
  • Added Artist, Game/source, Chart author, Genre and Year filters for collections over 100 songs.
  • Expanded text search, sorting, counts, filter reset and no-results feedback.
  • Expanded common game/source metadata codes into readable names.
  • Made source controls collapsible after successful loading.
0.2.4 Simpler green mixer and loading fixes
  • Muted crowd stems by default, including after reset.
  • Removed waveforms, zoom and A/B loops and their generation/drawing overhead.
  • Fixed the empty mixer message remaining visible after a song loaded.
  • Removed numbered workflow labels, refreshed the green/charcoal theme and corrected loading progress.
0.2.3 Loading progress and retained collections
  • Added a prominent loading panel with phase and file/song progress.
  • Retained ZIP indexes and folder song lists for Choose another song.
  • Switched songs by extracting only the selected song without rescanning the collection.
  • Released prior decoded stems while preserving the lightweight source session.
0.2.2 Compact transport and separate practice panel
  • Moved waveforms/loops out of the sticky transport into a separate normal-flow panel.
  • Kept mobile Play, Stop and seek together, with master controls on a compact second row.
  • Reduced mobile spacing and arranged wider playback/master controls side by side.
0.2.1 Large-ZIP and ZIP64 support
  • Indexed archives through bounded range reads instead of loading the whole ZIP.
  • Added single-disk ZIP64 sizes/offsets and bounded central-directory inspection.
  • Extracted only the selected song and streamed entry decompression.
  • Retained CRC checks, path/encryption rejection and archive safety limits.
0.2.0 Practice tools and saved mixes
  • Added combined/selected-stem waveforms, click/touch seeking and zoom.
  • Added A/B loop markers, enable/disable and clear controls.
  • Persisted per-song gain, pan, mute/solo, master and practice settings.
  • Waveform and loop features were subsequently removed in 0.2.4.
0.1.4 Multi-song ZIP selection
  • Added an in-app selector for songs inside collection ZIPs.
  • Read song.ini metadata to display title, artist, folder and stem count.
  • Added live search and a touch-friendly mobile chooser.
  • Extracted only the chosen song and preserved the current song when selection was cancelled.
0.1.3 ZIP and mobile importing
  • Added direct Clone Hero/YARG ZIP import and relevant-file extraction.
  • Inspected archive roots and rejected unsafe paths, encrypted entries and suspicious archives.
  • Added a dedicated Open ZIP mobile action while retaining the single-file runtime.
0.1.2 Intuitive mixer and quick mixes
  • Redesigned channels around instrument roles, filenames and role colors.
  • Added All Stems, Vocals Only, Instrumental and Reset quick actions.
  • Added per-channel reset, clearer live states and mobile layout improvements.
  • Added Space play/pause and Home stop keyboard shortcuts.
0.1.1 Clone Hero/YARG folders and single-file app
  • Added song-folder selection, drag-and-drop inspection and song.ini metadata.
  • Recognized conventional stem names and ordered channels by role.
  • Handled numbered drum/vocal precedence, cover artwork and import reports.
  • Combined the complete app into one deployable offline HTML file.
0.1.0 Initial playback proof of concept
  • Loaded multiple audio files through selection or drag and drop.
  • Scheduled all stems on one shared audio-clock transport with Play, Pause, Stop and seek.
  • Added per-stem volume, pan, mute, solo, meters and removal plus master volume/metering.
  • Added responsive desktop/mobile layout and decode/transport diagnostics; the initial release used separate local assets.