Stem engine
Rozdělení nahrávky do stop
Cíl: Uživatel vloží nahrávku a dostane rozdělený mix do několika stop - bicí, basa, zpěv, ostatní. Tato funkce slouží pro trénování s nahrávkami - jak pro vymazání vlastních partů, tak pro analýzu.
Problémy
Tady není ještě úplně jasné jak k cíli dojít - lze použít externí API (LALA.AI, Moises), open source model na vlastním serveru (UVR5), nebo programovat vlastní. Další oříšek bude přehrávání v browseru.
Po rozdělení bude uživatel vidět jednotlivé stopy, se kterými bude moct dál pracovat - fadery, základní EQ presety, mute/solo. Bude potřeba vyřešit:
Synchronizace stop
Nebude možné použít audio elementy, kvůli synchronizaci.
<audio controls src="song.mp3"></audio>- Synchronizace: Každý
<audio>přehrává nezávisle. Čtyři stopy se nemusí spustit přesně současně. - Drift: Stopy se mohou časově rozcházet.
- Seeking: Při přeskočení na jinou část skladby se každá stopa načítá zvlášť.
- Buffering: Když jedna stopa čeká na data, ostatní mohou pokračovat.
- Přesnost: HTML Audio neposkytuje sample-accurate plánování přehrávání.
Řešení: Šlo by řešit přes AudioContext a AudioBufferSourceNode, ale jedná se stále o kompromis.
Zátěž pro RAM
AudioBufferSourceNode vyžaduje dekódované audio v RAM.
Pouze 4 stereo stopy po 6 minutách při 48 kHz / 32bit float zaberou přibližně 0.5 GB RAM. (problém na mobilu a hlavně na starších tabletech)
Řešení: Udělat streamování (Extrémně složitý problém), nebo ošetřit, aby nedošlo ke 'zmrazení'. Na druhou stranu funkce multitracku se nebude používat při živém hraní, takže nároky 100% spolehlivost jsou nižší.
Ostatní
Určitě je spousta dalších věcí, které se po cestě najdou - toto téma jsem nezkoumal příliš do podrobna.