mmontag / chip-player-js

Web-based music player for a variety of video game and chiptune music formats.
https://chiptune.app
GNU General Public License v3.0
324 stars 17 forks source link

musician playalong mode / voice IDs- ideas #142

Open binary1230 opened 7 months ago

binary1230 commented 7 months ago

First: this player is such an amazing technical feat and is so easy to use. I've been using it for years, thanks so much for gluing together so many disparate and opinionated music libraries into a cohesive, easy to use, and really smooth/easy interface.

I'm a musician (and a dev) and find myself using this player to mute voices on tracks and play along (like, muting the leads vs drums vs bass)

I was considering how difficult it might be to implement the ability to implement a set of global "play along mode" settings. This could be something like "mute all drums" or "mute bass" and it would work across supported/known songs in the catalog.

The fun part of that is, of course, there's no standard amongst songs (even in the same game, or even within the same song sometimes) for which of their voices are part of which categories.

So, we'd have to create some kind of way to take each track and "tag" the voices.


So for example, for FF6: The Decisive Battle https://chiptune.app/?play=Nintendo%20SNES%2FFinal%20Fantasy%20VI%2F124%20The%20Decisive%20Battle.spc

The map could look something like this: [ DSP1 => [ instrument=>[Strings, High, Melody], role=>[Lead] ]] [ DSP2 => [ instrument=>[Organ], role=>[Lead] ]] [ DSP3 => [ instrument=>[Bass], role => [Rhythm, Bass] ]] [ DSP4 => [ instruments=>[Kick, Snare], role => [Rhythm, Drums] ]] [ DSP5 => [ instruments=>[Strings, Low, Harmony], role => [Rhythm, Drums] ]] [ DSP6 => [ instruments=>[Organ, Harmony], role => [Rhythm] ]] [ DSP7 => [ instruments=>[Cymbals], role => [Rhythm, Drums] ]] [ DSP7 => [ instruments=>[Hi-Hat], role => [Rhythm, Drums] ]]

Oh but... crap DSP5 it also turns into harmony guitar, and DSP1 and 2 trade off when they are lead vs rhythm parts haha :). to do it right, would have to add some timestamps to each tag.


But, just being able to tag 'Rhythm' vs 'Leads' vs 'Bass' vs 'Drums' would cover a lot of ground.

It could be something where this is a library users could build over time by submitting their preset assignments one song or album at a time.


Then when you're in play-along mode, you select a preset of categories (like "I want to hear everything except drums" or "turn off the leads"), and it remembers that as it goes from song to song.

I'm sure that's a giant project, I was actually thinking about taking a shot at a basic version of this, if you had any suggestions for where to best store the meta-data (is there already some kind of tagging system with the catalog stuff? I'm unfamiliar with the codebase)

mmontag commented 7 months ago

This is a fun idea, but yes very ambitious. It might make more sense as a top-down music theory product like Hooktheory.

To answer your question, there is no structured metadata storage in chip player. All the metadata comes from the files. I don't have a database yet so I would just approach this with json files or something.