What happens
Opening any track that plays through the Web Audio engine logs one error per stem, six lines, before the user has done anything:
[player] audio error stem[0] vocals: MEDIA_ELEMENT_ERROR: Empty src attribute 4
[player] audio error stem[1] drums: MEDIA_ELEMENT_ERROR: Empty src attribute 4
... one per stem
Why
The elements really do have no source, and that part is correct. When the engine owns playback, static/js/player.js builds the multitrack with url: null for every stem, because the engine streams the audio itself and the multitrack is only there for the lanes.
The guard that was meant to skip logging for exactly those stems tests stemsByName[name]?.url instead. That is the original stem descriptor, which still holds the real URL the engine is streaming from. So the guard passes, an error listener is attached to an element that was deliberately never given a src, and the element duly reports one.
The comment above it states the intent correctly. The check just reads the wrong object.
Impact
Playback is unaffected, and has always been unaffected. The cost is diagnostic: anyone who opens a console, or attaches one to a bug report, sees six errors that have nothing to do with their problem. It makes healthy installs look broken and buries real errors underneath.
Found while verifying #600, and unrelated to it.
What happens
Opening any track that plays through the Web Audio engine logs one error per stem, six lines, before the user has done anything:
Why
The elements really do have no source, and that part is correct. When the engine owns playback,
static/js/player.jsbuilds the multitrack withurl: nullfor every stem, because the engine streams the audio itself and the multitrack is only there for the lanes.The guard that was meant to skip logging for exactly those stems tests
stemsByName[name]?.urlinstead. That is the original stem descriptor, which still holds the real URL the engine is streaming from. So the guard passes, an error listener is attached to an element that was deliberately never given asrc, and the element duly reports one.The comment above it states the intent correctly. The check just reads the wrong object.
Impact
Playback is unaffected, and has always been unaffected. The cost is diagnostic: anyone who opens a console, or attaches one to a bug report, sees six errors that have nothing to do with their problem. It makes healthy installs look broken and buries real errors underneath.
Found while verifying #600, and unrelated to it.