On 9/26/2022 at 12:38 PM, Ed Minchau said:
I'd sure like a link to Furnace and your code in this thread, please.
I gotcha fam:
https://github.com/tildearrow/furnace My code is mostly contained in engine/zsm.* and zsmOps.* - I had to make a couple of tweaks in engine.h etc to make the project as a whole know that the code is there, and then there's the spaghetti bowl that is gui.cpp but that has little to do with my code - only putting the menu option and file dialog box components for ZSM files into the logic.
Of course, Zsound is found at
https://github.com/ZeroByteOrg/zsound This repo contains not only the X16 library, but a set of other tools for creating and manipulating the data files as well. For instance, it contains a python script which is a frontend to sox for creating the "ZCM" files (they're basically WAV files for Zsound)
Quote
With the change to IRQLINE coming in the next version of VERA, it should be easy to incorporate PCM audio snippets into Zsound; well, relatively easily.
I presume you mean in ZSM music, not Zsound as a whole? Zsound already has a PCM playback engine that lets you easily trigger digi samples as SFX in programs. The challenges I'm facing for getting PCM into ZSM playback are:
- There are two basic "paradigms" for this: Triggering one-shot samples, or manipulating sample stream playback on the fly. Each one's got a challenge for me. One-shot is easy and I already have "hooks" in the ZSM standard to allow for this, but the challenge here is how to get such things from various VGMs - many of the PCM sound chips favor the streaming method and aren't just simple one-shot triggers. How to convert this (intelligently) into a collection of the various sample clips is challenging to me. For stream playback, I kind of have the opposite problem. Encoding is easy, but architecting the player library to facilitate near-realtime fidelity to what the original playback source did is much harder.
- Architecture challenges in the library - I want to make sure the implementation stays as lean and mean as possible - not requiring a lot of code be linked in if it isn't needed. For instance, if the PCM engine is not included, ZSM files should play back everything but the PCM track. Etc.