CommandTracker: Mostly ideas for a music tracker sparse file format
Posted: Sat Jan 16, 2021 10:45 pm
Haha well I'm having a lot of trouble trying to do a multiquote so I'll just reference some of the points:
Multi-Voice Instruments
I actually didn't think about this, but it's a good point! Can you elaborate on the types of things you'd want to do with more than 1 voice? Chorus and supersaws came to mind here. Delay also. A lot of things I'd do as instrument automation in DAW land I'm used to doing in trackers by way of channels. Here there's definitely a trade-off in terms of file size though - a 3-tap delay would use 3 channels. A chorus would use at least 2 and sort of "manually" creating these effects would use more notes and thus bytes. Likewise if you want to have a long tail on a note, you do that by way of multiple channels. Same is true if you wanted, say, a pulse-saw or tri-saw kinda thing like you'd find in a normal synth.
If channels and voices are not 1:1 mapped, my initial feeling is to let the sound engine figure it out ? But for peristence based trackers (like FamiTracker), many effects "stay on" until you turn them off or change them. This can be really convenient but might complicate things a lot here. Likewise, there isn't a concept of a "voice engine" in a tracker typically. You never "run out" of voices but not channels (ignoring Renoise here for the moment).
I'll have to ponder how all that'd work methinks. Takeaway is that I think such a concept, while pretty new for classical tracker, could be possible. It can also be something baked into the tracker - as in there might only be 8 channels instead of 16 in the tracker, but they can use multiple voices. Compared to SID trackers, this would be a pretty new concept. For me I have no problem doing all that in pattern data and actually kinda like that level of expression since I find it easier to do (compared to say automation lanes in Ableton) but that might be a question to posit to other tracker musicians. Especially ones used to something like Renoise, which really blends the idea of a DAW with a tracker. I don't think there's quite enough horsepower on the X16 for something of that magnitude (and/or that might be beyond my skillset :P).
Effects
So here I was thinking of a few things. I was coming up with a concept of envelopes. For VeraSound, LR+vol and wave+PWM could use the same envelopes (they're the same precision) and these can be assigned to things in the instrument AND/OR changed in the pattern data by way of an Envelope Effect. I'm unaware of trackers that used this concept (other than Renoise but I think it handles it differently) but that could be neat.
Then there's pattern level "automation" by way of effects. These would be stuff like these:
https://gitlab.com/m00dawg/commander-x16-programs/-/blob/master/command_tracker/effects/index.md
Of note, different trackers handled these differently. Impulse Tracker didn't have effect persistence. SO if you wanted to do a volume slide down (C04) you would have to define that over and over in the pattern data. In FamiTracker, you "enable" it once and it continues to take affect until you turn it off. I think the latter is more efficient (probably why FT does that) but the composer has to remember a bit more.
Most of those above are common tracker effects but how they are implemented could vary wildly. So they could be using things like modwheel if under the covers, they're using things like modwheel or interact more directly with the sound engine and the composer doesn't have to be any the wiser.
Instrument Compatibility
Yes I think sharing instruments is something that is indeed possible, at least if/once figuring out the voice to channel concept. I wrote up some ideas of what an instrument would be here:
https://gitlab.com/m00dawg/commander-x16-programs/-/blob/master/command_tracker/file_formats/file_format.md
That's pretty early on and incomplete heh but my envelopes concept included the concept of looping, so if one wanted an instrument to have a default vibrato, one can either set it in the channel data (noting that, if there is effect persistence, it can be set once at the beginning of the song), or use an envelope with a loop. It also probably make sense to have a concept of instrument effect default though, like pre-setting a vibrato value like one would have in the channel data (so it works on any channel, not just the one with vibrato set). That would certainly be more efficient than using an envelope I think.
A lot of these concepts come from how I'm used to using FamiTracker. I think to your point of multi-timbral voices, not all of it may actually apply on the X16 though. E.g. if all instruments were 2 voice, that's still 17 total channels across 3 sound engines.
It's dinner time so I gotta cut this short but this is a great conversation!