Files posted by Yazwho
Happy New Year all! Given the site is a bit slow, I thought I'd show off the latest version of my player.
The biggest change in the latest version is that the commands now have 2 bytes of variable space to store their state, hopefully leading to some more interesting effects. You can hear an example with the 'warbling' on the track included. It's not vibrato by any stretch, but adds a little something. Hopefully you can hear the difference to the previous version here and agree its an improvement! (I am by no means a musician, so your mileage on that may vary!)
The 'tracker', BitPlayer, that I'm using and developing is still relatively basic in terms of its UI, but is slowly but surely maturing. This uploaded .prg file is what is produced when the X16 emulator is launched from the tracker. It's all hosted on Gitlab here. The .json file attached is the 'mod'.
There are of course a fair few things to do, the list is something like this:
PCM support Change the output to my own new templating engine instead of ca65 YM2151 support (X8 depending) Change the sound engine to use a common engine with the emulator that better represents the X16 - Probably by embedding a emulator directly into the application The new templating engine removes all the typical restrictions that 'macro assemblers' can have. It's written in c# and is currently based on the Razor engine. As such it's easy to embed within an application like BitPlayer to produce 65c02 asm. The engine and the compiler have a little way to go, but if you're interested there is more information here.
The track was originally by Archyx and can be found here.
Hope you enjoy this little intro! Best viewed on a local emulator. The web one doesn't seem to handle the audio too well.
More on the audio player:
Original mod by Archyx. See their other mods here: https://modarchive.org/index.php?request=view_artist_modules&query=69244
Thanks for looking.
As has been pointed out recently there is tooling for the X16, especially in terms of trackers.
There have been a few great examples of music on the forums, either playing a Amiga\C64 mod, or via a X16 tracker. And these are great.
That said, I did think maybe the community was missing a trick. If the goal is to make music for the X16 do we need to be able to run the tracker on it? Doesn't that make writing everything harder? If you have a modern machine, it would be easier and quicker to create a tracker on that. UIs are easy. MIDI keyboard integration is a mere nuget package away. Can hand edit json files if you want. IO is trivial. That's not to say writing a tracker for the X16 is wrong, it's just a different goal.
So that's what I did. Apart from the emulation of the X16's PSG which took a while to get going, it wasn't so bad to do -- WPF aside. I've ended up with an application which lets me produce X16 music. It can export an .asm file which can be imported into ca65, making integration into a project really easy with just two calls. It only uses single digit worth of cpu lines and 32 bytes in the ZP, so is pretty lean. That said, it does not yet support PCM audio not commands.
The music from file attached is sourced from part of a demo file that comes with FamiTracker. What did occur to me while doing this, is that VRC6 ( https://en.wikipedia.org/wiki/Memory_management_controller#VRC6 ) music is pretty damn good. In fact I'm sure a player for .ftm files could be written. (Given how long it took to get just the first 3rd of a demo file working, I might write a pattern importer myself..!)
For me, the audio quality demonstrates that Vera's PSG and some form of PCM is all that's needed for audio on the X8/16. (Sharpen your pitchforks!) It just needs to be a bit louder!
What next? Like all projects that have gone from 'Proof of Concept' to 'Production' in one step, has resulted in some of the code being a bit crap. Especially on the WPF side! If anyone is interested, I'll try to shore the code up and will post with an explanation of how it works soon.
For now the display shows the four counters. Counters for Frame, Line, Pattern, and the Next Line. Source is the VRAM address (I use VERA to stream out the data for the patterns, as it makes life much easier. I can't understate how useful this feature is.)
The bottom table is:
VERA registers Address of the instrument data Instrument Position Command Note Number Instrument Repeat Command 2bytes Parameters
Another small intro. Sadly still no audio.
If only it wasn't so painful to debug audio and if I had any sort of musical talent...
Thanks for looking!
Just a fun small intro put together to play around with the X16 emulator.
I'm looking forward to the next iteration of the hardware and emulation, especially around the audio.
Thanks for looking!