Raster Music Tracker Patch 16
BotB Academy Bulletins
Level 16 Chipist
post #143913 :: 2021.07.09 3:19pm
  Spring, raphaelgoulart, DCT Master, argarak, sean, irrlicht project, kleeder, Oli, puke7, Yung Gotenks, mirageofher and tennisers liēkd this
Hey guys, this is something I have been working on for some time now.
Hopefully this will make music creation in the Atari 8-bit format a more pleasant experience!

Changelog for this hacked RMT version since my earlier Tuning patch 15:
- This version was based on Analmux's RMT Patch 8, so several of his changes remain in place, mainly the FILTER not muting the other channel, for example
- Most of the work was done directly in the rmtplayr.a65 code since the last patch! This will allow way more things to be done as I slowly learn how to code in 6502 ASM...
- New and improved volume lookup table, saved 128 bytes of data, at the cost of some extra cycles to be executed. Special thanks to TakuikaNinja for the idea and help implementing it! This doesn't seem to sound any different from the old code, yet the space saved is considerable!
- Improved several of my tuning tables, based on my spreadsheet maths and formulae figured out over time.
- Re-ordered several tables based on the discovery earlier that a full 256 bytes could be addressed, so the most optimal setup for the moment has been squeezed. This is not definitive yet, so changes are likely to happen as I understand better.
- 16-bit trigger now depends on having both the correct AUDCTL value, either $50 for 1+2 or $28 for 3+4, and must also use Distortion A to work at all.
- Added a dumb check for if Command 1 was used as well, will skip the hijack if detected, in order to keep certain things like percussions functional.
- 16-bit table is loaded from the space cleared from the optimised volume code, nothing lost and nothing new!
- Distortion 6 hijack is removed entirely, so instead it's temporarily replaced with an optimised Distortion A table for 15hz bass, with matching tuning to the other ones.

More can be done, I am sure of it!
Unless I fucked things up everything should play the same as before but now with some extras available, except for the 16-bit and Distortion 6 changes done like I mentioned above. :D

Also, not seen in the tracker itself, there is a Distortion C 15khz table hijack, will work by using AUDCTL 01 and Distortion C, but only in the XEX exports for now, since my earlier hijack code broke the tracker lol

Enjoy, I hope I will be able to do more soon!

Download can be found in the Atari Age thread I posted a bit earlier:

I also posted it in the Discord a moment ago :)
Level 31 Chipist
post #143918 :: 2021.07.09 6:17pm
  VinsCool and mirageofher liēkd this
3am-very-sleepy-kleeder-brain wants to ask if sap export works on this and i would guess not, right? which turns this into a fantasy-chip-tracker?
correct me if im wrong
Level 23 Chipist
irrlicht project
post #143931 :: 2021.07.10 2:51am :: edit 2021.07.10 2:52am
  nitrofurano and VinsCool liēkd this
Wow, big fat thumbs up for this!

> New and improved volume lookup table, saved 128 bytes of data, at the cost of some extra cycles to be executed. Special thanks to TakuikaNinja for the idea and help implementing it! This doesn't seem to sound any different from the old code, yet the space saved is considerable!

Is there a switch for this? There might be situations where rastertime is more important than size (eg games/demoscene productions).

kleeder: They mention .xex works in all cases, which I think is more relevant than .sap. Imo we should allow .xex as a filetype, just like we allow .prg for sid.
Level 31 Chipist
post #143932 :: 2021.07.10 2:54am
  VinsCool and irrlicht project liēkd this
.xex is allowed !!! the lyceum page for some reason just doesnt show it in the info box for this format lol

also thats crazy cool!
Level 28 Chipist
post #143935 :: 2021.07.10 3:09am
  VinsCool liēkd this
Exciting news for pokey, The list of changes sounds juicy. I am not 100% clear what they all mean (stuff like the distortion ranges) but I will definitely be giving this a go very soon.
Level 20 Chipist
post #143956 :: 2021.07.10 5:16pm
  VinsCool and kleeder liēkd this
SAP does indeed work
Level 16 Chipist
post #143957 :: 2021.07.10 9:28pm
  nitrofurano and kleeder liēkd this
Thanks everyone!

Kleeder: Yes, SAP and XEX exports do work, they were the first things tested, actually! I had more trouble getting my piss poor week old ASM experience code to work in the tracker itself, but figured it out thankfully c:

irrlicht project: Yeah, it's actually pretty simply to edit out, the only downside is that the current 16-bit tables would need to be removed entirely since they now use that space :P
It's just a matter of editing a couple lines of code to re-introduce the original huge ass 256 bytes table for the volume itself.
I'm still a very noob at coding but there definitely as a way to actually easily switch from one or another... I'll keep this in mind for a later version!

TristEndo: To make it short, improved tuning, more tables with said tuning, new method to trigger 16-bit mode, some optimisations with space in mind here and there, and a new volume code taking half the memory for a minimal performance hit!

Spring: I actually did not expect SAP exports to work at all, so I was surprised to find out my sloppy code actually worked there too, since I mostly focused on the XEX format, lol
Level 16 Chipist
post #144163 :: 2021.07.15 12:52am
  mirageofher liēkd this
Raster Music Tracker Patch 16 Beta3 has been uploaded!
Download in the Atari Age thread post.

- Redone the entire hijack code using a different entry point, this made everything a lot easier to manage, and future-proof in case more tables and more hacks get added in the future
- Hijack code considerably cleaner, and should take a lot less memory and cycles to run, with hopefully no penalty on everything else.
- Got rid of the 'BASS16' code entirely, this was the base from the earlier attempt, but with the newest way to handle 16-bit, it was no longer required! saved a lot of space by the same way.
- Distortion A and Distortion C now have a fully operational switch to appropriate 15khz tuning tables, simply use the 15khz bit in the instrument to use it!
- Copied Distortion C back into Slot 6 again as a fallback for compatibility reasons, the Slot might be used for other stuff in the future, so nothing is definitive!
- Added a set of 'tabbeganddistor_extra' for the hijacked code, so mapping tables to specific slots will then be very easy to add, move, and change to different ones in the future
- 16-bit hijack code has been done in such a way that now each tables, Hi and Lo, can be used independently in their appropriate channels, automatically, using the required AUDCTL value, being $50 and $28, and must also use Distortion A
- 16-bit can also effects! just edit instruments like normal, so vibrato, detune, portamento etc can be used, however things are limited a bit due to the channels not operating as a 16-bit number
- 16-bit has been future-proofed as well, so now it would only be a simple change to, for example, allowing volume output in the Lo channels, to produce Reverse-16 sounds with the appropriate tuning tables
- There is a catch however, you have to make sure both Hi and Lo channels have the right instruments playing, else some bad (or maybe intended) sounds will be also output, an easy way to handle is to simply use the same pattern in each channels, the appropriate table will be used in each.

LOGIN or REGISTER to add your own comments!