English Amiga Board

English Amiga Board (https://eab.abime.net/index.php)
-   Amiga scene (https://eab.abime.net/forumdisplay.php?f=2)
-   -   A new really fast MOD replayer (https://eab.abime.net/showthread.php?t=106187)

leonard 11 March 2021 00:24

A new really fast MOD replayer
 
Hi!

Another Amiga MOD replayer! Key feature of this one is .. speed :) Average speed per frame is 6 times faster than previous fastest amiga player. Hope you'll appreciate!

https://www.pouet.net/prod.php?which=88177

Antiriad_UK 11 March 2021 00:28

Yay. Can’t wait to try out. Just commented on pouet - how does it work as replayer code looks nothing like replay code :) would love an insight.

Jobbo 11 March 2021 00:30

Sounds incredible!

Could you possibly write up some details on how players normally work and how you managed such an amazing improvement?

I would be fascinated to hear the details!

Thanks regardless! Awesome contribution!

Antiriad_UK 11 March 2021 00:37

Quote:

Originally Posted by leonard (Post 1469254)
Hi!

Another Amiga MOD replayer! Key feature of this one is .. speed :) Average speed per frame is 6 times faster than previous fastest amiga player. Hope you'll appreciate!

https://www.pouet.net/prod.php?which=88177

Btw. You should have skipped light speed and gone full spaceballs ludicrous speed ;)

https://youtu.be/ygE01sOhzz0

leonard 11 March 2021 00:47

basically all magic is in the converter and the new data format. The converter is really processing the music file (all mod fx are supported), and basically output a stream of direct amiga hardware register values. To keep the final data size reasonable I tested tons of various data encoding and I'm happy with the final result. LSP files are "almost" same size as original .mod file ( sometimes smaller, sometimes bigger, depends of the .mod)
The "insane" mode is a generated source code using a dedicated piece of code for every combine of hardware registers to set per frame. Obviously all combine won't fit, so only patterns used in the specific .mod are generated.
I wrote LSP when I was writing some Amiga world records and I was annoyed by the "peak" time of all other player. Like if you want to beat a sinus-dots demo, every cycle count :)

Jobbo 11 March 2021 00:54

Thanks Leonard!

When can we see these record breaking effects? Revision???!!

lesta_smsc 11 March 2021 00:54

Already posted on another topic for the same player, but well done @leonard on this. I wonder how this will change things for the future of demo scene where every byte counts! I know there are some demo competitions for very small files on pouet so this could be a game changer - is there scope to use this on PC for say .xm type files?

Antiriad_UK 11 March 2021 00:54

So sounds similar to the really old school spectrum 128 files where it’s a stream of output. :)

Current intro I’m working on is deep into note triggers and/or e8 triggeres. Can I message you about those?

a/b 11 March 2021 04:59

:great

Took a quick look at the standard player. One question: are there any restrictions regarding the minimum sample size? It looks like you are using the same method to set the repeats as P61 in noshortsamples mode (postponed until the next frame, instead of after ~11 raster lines).

roondar 11 March 2021 09:11

This is really cool, I'll be checking it out for sure!
Great stuff, the code seems easy to integrate as well :)

leonard 11 March 2021 09:42

Quote:

Originally Posted by Jobbo (Post 1469265)
Thanks Leonard!

When can we see these record breaking effects? Revision???!!

That was the plan, but unfortunately my gfx artist was too busy and I didn't get any gfx in time for Revision :( That's why I release LSP as a standalone (LSP was sleeping on my disk for too long )

I still have some features I want to add for next version:

- ability to "sync" music with demo effects, without losing any cycle if you don't need to sync ( probably generating a table with frame number <-> mod position. Then it's up to the user to sync using the frame count number

- LSPConverter already "simulate" the complete mod and warn you if some samples are not played completely. Right now it's just a warn, but I can just strip the end of the sample ( I think no amiga tool is doing that right now )

ross 11 March 2021 09:51

Great stuff Leonard!

Quote:

Originally Posted by leonard (Post 1469307)
- LSPConverter already "simulate" the complete mod and warn you if some samples are not played completely. Right now it's just a warn, but I can just strip the end of the sample ( I think no amiga tool is doing that right now )

Perhaps you can do the opposite as well ('enlarge' the sample) in the case indicated by a/b a couple of messages above.

:great

Samurai_Crow 11 March 2021 09:56

@leonard
Would using the Copper as a feeder to the registers behind the visible portion of the display be a plausible upgrade path? It would allow the CPU portion of the player to mesh with the "copper node" sorting and interleaving so that multiple calls for when the tempo would have required multiple CIA interrupts to be replaced by a callback hook in the copper list generation. A fortunate side effect of counting timing by rows of rasters at 15KHz would work equally well on PAL and NTSC modes. Having to wrap around the vertical blank with copper activity would seem to be the only side effect, other than the music nodes being stored in Chip RAM.

leonard 11 March 2021 11:03

Quote:

Originally Posted by ross (Post 1469310)
Great stuff Leonard!


Perhaps you can do the opposite as well ('enlarge' the sample) in the case indicated by a/b a couple of messages above.

:great

that's is definitively a good idea: doesn't slow down the replayer at all. I never found an audio issue with really short sample. Do you know any .mod file that have this "frame delay to set replen" issue I can test?

robinsonb5 11 March 2021 11:16

Quote:

Originally Posted by leonard (Post 1469307)
- LSPConverter already "simulate" the complete mod and warn you if some samples are not played completely. Right now it's just a warn, but I can just strip the end of the sample ( I think no amiga tool is doing that right now )


That's really cool! If you do strip away the unused data, though, be sure to take care of PAL/NTSC base clock differences, and maybe leave a few bytes' headroom for the benefit of non-cycle-exact emulation?


I'd also like to say thank you for sharing the source of your tiny LZ4 depacker.

alexh 11 March 2021 11:37

Very cool. I wonder... does it save anywhere near enough cycles to software mix two channels into one? Leaving 1 channel free for SFX?

chiark 11 March 2021 12:03

Brilliant, especially to keep size down too. Could this be the basis of a new format for Amiga audio...? (Realise it's basically a format that's setting hardware registers, but all the same it could be the right thing at the right time on that front too!)

ross 11 March 2021 12:55

Quote:

Originally Posted by leonard (Post 1469321)
Do you know any .mod file that have this "frame delay to set replen" issue I can test?

Sorry no, right now no specific .mod comes to mind.
I can only assume that some peculiar 'chip' type modules are more likely to suffer from this.

saimo 11 March 2021 13:53

Congratulations and thanks!

pink^abyss 11 March 2021 14:28

Quote:

Originally Posted by leonard (Post 1469260)
basically all magic is in the converter and the new data format. The converter is really processing the music file (all mod fx are supported), and basically output a stream of direct amiga hardware register values. To keep the final data size reasonable I tested tons of various data encoding and I'm happy with the final result. LSP files are "almost" same size as original .mod file ( sometimes smaller, sometimes bigger, depends of the .mod)
The "insane" mode is a generated source code using a dedicated piece of code for every combine of hardware registers to set per frame. Obviously all combine won't fit, so only patterns used in the specific .mod are generated.
I wrote LSP when I was writing some Amiga world records and I was annoyed by the "peak" time of all other player. Like if you want to beat a sinus-dots demo, every cycle count :)

Great execution Leonard! As always, you win over any amiga coder in optimization :great

Inspired by LFT from C64 I tried the same a year ago with my Pretracker replayer but my data exploded. A 3 minute song took around 50kb of replayer data when the original song only had 7kb of pattern data, so i scrapped it :)


All times are GMT +2. The time now is 20:22.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.

Page generated in 0.06374 seconds with 11 queries