Back in the day when Amiga trackers were popular I had this vision of my own multi tracker. We saw an expansion of the tracker idea that went beyond the hardware limit of four channels. Perhaps because it was too obvious, even though expected, we also never saw a tracker by the exact name of MultiTracker. However, I had in mind an idea of my own for a music program, that was easy to program, and would feature multiple tracks that were becoming popular. With the influences of the time, the full title was to be called Channels X: MultiTracker.
It was going to be a step away from the typical tracker design with the rigid four on the floor in preset four bars per block. My tracker was to provide more freedom in the sense I would call it object oriented. Instead of working in the restriction of dealing with all tracks at once it split different parts of a song up separately into musical objects all coming together to form a song.
For example it would have included a drum programmer where you loaded typical drum sounds and set the triggers for each in a drum map. As well as building repeat patterns with bars. Melodies would also be separated with each instrument being able to have it's own tracker pattern. On top of this effects could be easily be inserted with multiple effects folded in layers so they could all be included without taking up screen space. There would be an auto repeat feature for things like the basic drum track where you only made changes when a bar changed that saved you from needing to tell it for every pattern.
The mixing routines would also be designed to provide the best quality possible. 8-bit samples would be mixed in 16-bit. 16-bit mixed in 32-bit. Just using integer math. As well as all samples combined with full original dynamic range then scaled down at the last step to the desired resolution. A HQ mode would have upscaled samples by their volume, with 8-bit samples scaled to 16-bits, 16-bit samples scaled to 24-bit, and both mixed in 32-bit. Up to a theoretical 256 channels.
IIRC I did some layout pictures in DPaint. But I never did much more. I got into other projects and the idea got left behind.
But now, I am thinking of a variation of a theme. Rather than writing a tracker based on this idea. I am thinking of creating a mixing routine and tracker format that is optimized for real time multi tracker playback. It would have different modes, with the speed proportionate to the memory used. It would also be designed with the Amiga Paula in mind, just without the precision offered by my original mixing idea.
The main idea would be to pre-render the tracks. That is, each track would be volumed leveled to how loud it is relative to other tracks, so all could be mathematically added with lowest overhead. Common instruments blended together would be rendered as one in order to optimise operations. Just like in a tracker it would be organised into patterns.
Either 8-bit or 16-bit could be specified as resolution. Because of the nature of the format the maximum resolution would be preferred as dynamic range is lost when each track is scaled down. But there is no secret here really and this happens eventually for all digital audio mixed down in a studio.
So, with modes of operation, there would be slowest to fastest using less to most memory. The slow mode would use the base rendered tracks, with real time adjustable volume scaling and variable frequency changes. The middle mode would use the base rendered tracks, with either real time adjustable volume scaling or variable frequency changes, whatever best suited the source module. The fast mode would use the base rendered tracks, with fully preset volume scaling and variable frequency changes, rendered in each.
As you can see, the CPU needs to do some mixing, but it is optimised for low overhead based on memory requirements. So, closest to the module format, with the song data and samples used, would be most overhead. In between sample data would be extended with pre-renders to provide an even balance between CPU over head and total module size. To the lowest overhead, but one where all sample data would take up the most space, with most redundancy.
Well, that's pretty much the ideas that have been floating around in my head for a while. Would any of these ideas be useful? Oh and yes, even if it is specified, these ideas target the original Amiga audio chip.  |