Jump to content
IGNORED

[RELEASE] RASTER Music Tracker, v1.34.00


VinsCool

Recommended Posts

2 hours ago, rensoup said:

No shit, that's what RMT2LZSS does and what I've argued for for about a year but encountered great resistance from the dutchs and the canadians ?

 

Once you go that road you can't output regular xex players anymore and must use LZSS though.

Yeah some but not fully.

I spoke strictly for the simple functions like SetUpInstrumentY2 or rmt_silence.

Going to rewrite a total driver for real time playback, then exports, would be a nightmare for me as things are.

 

That being said I have been busy in my corner for a couple days now, so whatever happens, I give an attempt anyway.

 

While I am pretty interested to see a driver-less version for rmt tracker itself, the 6502 driver will still be very useful for me, and obviously as soon as full LZSS gets added, if I can ever do that by myself (doubtful, but can't give up before trying I guess). 

 

2 hours ago, rensoup said:

? That doesn't look stable at all... You don't seem to use effects... if you look at emkay's latest vid, it wobbles a lot more depending on what he's using.

RMT can do 8x but it potentially leaves no CPU for anything else.

No shit it is not stable, I even gave the reason why.

It was still stable enough to maintain an acceptable output, albeit laggy, the whole timing routine did hold up, the best it tried for sure.

 

As remaining relatively stable, I achieved 12x without issues still in NTSC, again, the worst possible hardware for huge CPU loads, and no optimisation in the driver either.

Despite that, all the things do run, from instrument speed 1 to 16, each ones of them required few adjustments between certain speed to not run too fast or too slow to cause a rolling image, and right now that's all sorted too.

I noticed at first attempting to get speeds higher than 4 would make rmt run literally faster as well, I remember rmt2lzss has the same symptoms the first time it had 800hz added, but anyway I did identify why that was happening, got all the numbers I needed to adjust the speed, and could certainly exploit it to achieve some nonstandard bpm as well.

 

Also I wanted to point out currently all the 6502 code I put together is not optimised at all, barely just functional to prove what is possible right now.

 

Speaking of which I spent my entire week end studying and documenting everything I could from the original and commentated 6502 sources straight from the Czech language (and that was really unpleasant, I'm definitely never going to code in French after this experience), so sorry I have not been able to provide anything better yet, that is my next goal right now, cleaning up and optimising everything I am implementing a lot better than it is.

I'm aware how much bloat is going on, but still, things work, and that's my goal for now. 

 

by the way, the wobble you see in emkay's video doesn't even matter because the setpokey subroutine is always running at the exact same scanline immediately after a wsync on the screen, so the wobbling is only visual there.

 

There are other things involved in the instruments timing but that is another can of worm to open another day, because I honestly just don't feel like it right now, I'm just somewhat upset about how much troubles I gave myself today to document a lot of the design choices, and what I can do to try improving all the things I did try to hijack into it as well.

 

I'm only 1 person right now, and I don't have much experience so I suppose the broken parts i did do had to be expected.

At least, I do try right now, so I cross my fingers, i seem to enjoy taking unnecessary measures just to prove a point lately.

 

Anyway, we'll see what happens next.

I've got a lot of stuff to do with the code I edited, and frankly i'm also pissed off for unrelated reasons, so i hope I can finally I get through the aggressive changes I planned to do for over a month now.

  • Like 1
Link to comment
Share on other sites

Sigh... I was trying to edit my post but Atari Age would not let me, sorry for double posting...

Anyway.

 

Just to reiterate, I take no offence to the points raised, I should have known what to expect when I get excited and show half baked ideas with little to no structure to them.

Also, being frustrated right now has absolutely nothing to do with the messages posted here, or about what I did spend my evening deciphering to improve my own attempts with the work I put into the unofficial RMT code.

I just wanted to clarify that because I just realised how much I seem pissed off in my response, and I promise this is not against anyone in here, or anything I was working on.

Just a poorly timed situation, and a bit of justified irritation after having a not very good day and read some posts that hurt me a bit.

I have already invested a lot of my own time for this project, so I apologise if I happened to have taken any criticism with a bit more aggressivity than usual for some time now.

 

To tell the truth, I have not been going very well, and this Unofficial RMT project, no matter how ambitious, or possibly arrogant and/or pretentious it looks like coming from me, is still one of the few things legitimately I have been enjoying working on.

I don't actually mind not being very good at making music, or even programming since more recently, or working on something maybe 2 people still use today, I just do it because I originally wanted to be able to do something, and share with everyone, because I like to do things that make people happy.

So, knowing this, I dug myself quite a rabbit hole, but it was well worth it.

 

So anyway, rensoup, to come back to your reply, I am aware a lot of the things I did so far aren't very polished, and I accept the truth, because you're right anyway.

I don't have any reason to get irritated over something like that so I will just do better for the next time before I share a proof of concept.

I still hope I can get better at what I do, regardless what it is, and not get myself overwhelmed by real life stories that make me hate life itself.

Like I said above, I have been working on many things behind the scene, and really took unnecessary measures just get better at programming, and to make many of my ambitious ideas work.

For now, I hope I can do the improvements I wanted to do into 6502 ASM code, a language I have not yet fully mastered, but I will give my best shot again for the next time I have something worth demonstrating in this thread, maybe tomorrow or maybe 2 month later.

I mostly have posted the 6502 ASM progress on my github, so keep an eye on it if you are interested, I have been posting commits for a couple days now, without what I have worked on for the last 2 days, but that will be for another day.

Regardless of the time I need, I will try to do my best to make it worth it, and make good use of all the new tricks I learn, I don't want to deceive everyone, especially since I unofficially have received Raster's legacy for the Atari 8-bit scene, and he's certainly the very last person I would want to disappoint now.

 

Good night, or morning if you're in the other side of the globe, it's midnight around here, and cold, very much appropriate for the mood of the evening, I suppose.

Sorry for overreacting earlier. That was not my usual self.

  • Like 7
Link to comment
Share on other sites

Okay, let's say yesterday was an outtake... there are days like that.

 

I finally started to undergo very drastic changes into the 6502 assembly code, going much deeper than my previous attempts.

This time, I'm literally rewriting the entire driver, bits by bits, with a much better understanding of how it's supposed to work.

 

I've managed to essentially merge 2 entire blocks that caused me issues for a long time, related to getting the AUDCTL bits as early as possible, as well as instrument commands used in the same batch.

I was able to find many optimisations here and there, since I had altered all of the original code, that made several things no longer needed.

By far the much bigger improvement here is my aggressive initialisation of instrument flags, I realised how stupid my first approach was, but this time it's a really massive improvement, both for size and CPU cycles wasted.

 

I finally got to do more conditional assembly as well, and cleaned up everything I have so far.

Here's the same tune I used in the failure of 16xVBI test, this time at the original speed, with a much, much, much more reasonable CPU usage.

dasmplayer.xex

 

Now I got the much better implementation of my aggressive initialisation code in place, and merged Raster's original parts of rmt_p3 into it, so now everything I need for my own approach during the music playback is possible, and won't require tons of workarounds wasting resources all the time.

If you are interested to see what I did up to right now, here's rmtplayr.a65: https://github.com/VinsCool/RMT-Patch16/blob/main/rmtplayr.a65

  • Like 6
Link to comment
Share on other sites

46 minutes ago, emkay said:

Bad news, the RMT Player from 1.32 on seems to bloat the memory usage. 

Yes yes, I know that.

Some of this is necessary (tuning tables), some not so much... I'm attacking major bloat problem right now.

I have a lot of room to improve, and did do some progress already, but that's not close to be the best.

 

Just about 20 minutes earlier today I realised something I worked on last night to make it better suddenly got ridiculously smaller just by not being an idiot.

So it's easy to assume I will stumble in a lot of cases like this as I keep proofreading my changes and do them in less bad ways.

  • Like 4
Link to comment
Share on other sites

On 2/14/2022 at 6:07 AM, VinsCool said:

Sorry for overreacting earlier. That was not my usual self.

No need to apologize, your results are great!  I'm just questioning the methods... You seem to be blissfully opening cans of worms after cans of worms, that's all?

 

If you're enjoying that and don't care how many years it takes to get to the results you want, by all means, keep going but that's not the vibe I'm getting from your posts.

Seems that everything takes a lot longer than you'd want and that's in no small part due to that 6502 player. Adding news stuff is more complicated, cause CPU hog, mem hog and sometimes news issues.

 

So you get trapped into that cycle:

hack in feature, break stuff in the process

optimize for CPU

optimize for RAM

fix some of the broken stuff (leave some for later)

 

You might be loving right now (I know I wouldn't) but how are you going to feel about it in a year when you've invested considerable effort and time and it gets worse and worse to maintain? The more you invest yourself into something, the harder it gets to step back and consider that's it's the wrong path and pivot.

 

☮️

  • Like 2
Link to comment
Share on other sites

8 hours ago, rensoup said:

No need to apologize, your results are great!  I'm just questioning the methods...

Thanks.

Yeah, I totally see where you came from, so I cannot blame you.

8 hours ago, rensoup said:

You seem to be blissfully opening cans of worms after cans of worms, that's all?

I honestly have a feeling a bunch of them were sealed tightly using a blowtorch too... But who am I to not try to open them anyway? lol

8 hours ago, rensoup said:

If you're enjoying that and don't care how many years it takes to get to the results you want, by all means, keep going but that's not the vibe I'm getting from your posts.

I totally do!

On the other hand, real life does not work well with my time lately... That's probably the vibe you get, and I am aware of that.

No matter how frustrating my attempts  are, they are not the cause of me feeling overwhelmed. More of a side effect really.

8 hours ago, rensoup said:

Seems that everything takes a lot longer than you'd want and that's in no small part due to that 6502 player.

Right now, it's mostly a free time and motivation problem, not the limitations.

I'm more upset about not finding a few hours during a day to play with the project, which in return makes things take much longer than I want.

8 hours ago, rensoup said:

Adding news stuff is more complicated, cause CPU hog, mem hog and sometimes news issues.

Yeah, that's exactly what I finally have tackled down for the last few days whenever I had some time, and got a really good amount of the issues solved, or at least greatly improved now.

I've finally mitigated 2 major issues I always worked around previously, so all the workaround involved had to be re-written, or even removed entirely.

So regardless of the fuck going, I finally have got the results I want! 

8 hours ago, rensoup said:

So you get trapped into that cycle:

hack in feature, break stuff in the process

optimize for CPU

optimize for RAM

fix some of the broken stuff (leave some for later)

That was true, until at least 2 days ago now!

In fact, things work much better than ever, and taking into account this has become very different compared to the bloated mess I had been toying around since last week end, I think that was worth it.

8 hours ago, rensoup said:

You might be loving right now (I know I wouldn't) but how are you going to feel about it in a year when you've invested considerable effort and time and it gets worse and worse to maintain?

I would agree if/when this is the case!

*Now* it is much less worse to maintain after some of the big changes I finally did into the driver, at least.

My first mistake was taking the driver code, and work around it, but this time I aggressively changed everything I needed to change to get what I wanted, and thankfully nothing broke again since.

Maintenance is still in progress, I need to finalise optimisations, but slowly I got almost all the features work exactly as expected, had many interesting observations for future improvements, and many ideas for what could be exploited to get more features added, or just solving some baffling flaws I discovered as I was testing as many cases as possible.

 

Obviously, not having to rely on a 6502 ASM driver would solve a lot more issues, so this is more of a game for me, than really trying to prove a point anymore (I have proven all my points already by now, I believe).

8 hours ago, rensoup said:

The more you invest yourself into something, the harder it gets to step back and consider that's it's the wrong path and pivot.

I sense the Prince of Persia frustration with this statement ? 

Yeah, I see what you mean. But what if I tell you I go offtrack and create my own path instead?

Honestly, you have got many solid arguments, I do not deny that.

I go the way I want, because I can, or because I cannot yet do differently.

Also, I learn better that way, so allow me the time I need, and I will find a way, even if I tend to take unnecessary steps just to prove a point, lol

 

Now more seriously, regarding the observations about the project so far:

 

- Functions baked within the 6502 ASM driver used inside the tracker can *very easily* be replaced with proper C++ versions, and will definitely be done at some point

Like I mentioned the other day, this will by far be the easiest part I can do, and will do first in the near future, after I get good enough results with the 6502 code. I made a lot of progress now.

 

- Driver routines *In Tracker* will most definitely be replaced by a proper C++ version, as well, but that will not be until I am satisfied of all the work involved into the 6502 code.

I am really close to have it fully understood and documented now, so this could happen sooner than I hope... ? 

 

- The entire purpose of "You See What You Get" inside the Tracker part has been achieved for a long time now, I just really enjoy to push the limits... don't they say, "limitations breed creativity"?

This is probably the very reason why I even did all of this in the first place. Working with RMT, was, not, fun, at all! It was also a lot more frustrating if RMT2LZSS was added into the mix!

Being able to get the sounds I want, in real time, is the goal I originally set a few months ago, and this one has been quite literally SMASHED after I got my hands on the full RMT sources, honestly!

 

- The long term goal will be to use real time C++ driver routines for Tracker playback, and LZSS compression for export binaries, but this is a far-fetched objective, and definitely not my #1 priority.

Again, it's not due to the urge to be contrarian or stubborn, it's just that what is already in place does work well enough, I want to continue this way until I feel it is finally time to level up with the exp.

Ideally, I'd first attempt re-write the driver for the Tracker once my 6502 patched version satisfies me enough, then I would keep the 6502 ASM version for the exports, until there is a viable solution for merging/pairing RMT2LZSS into RMT, or just have a way to export SAPR from it, at the very least.

 

Anyway, I'm a lot more quiet and usual due to real life reason, but despite this, I still have made progress in the project, and like I said, I focused on the 6502 ASM code for the last couple days now, in order to "debloat" it as much as I could while gaining both memory and performance.

So far, so good! You see my recent commits there, if you are interested: https://github.com/VinsCool/RMT-Patch16/blob/main/rmtplayr.a65

rmt_p3 is by far the biggest improvement I did over the original driver implementation, and the tuning tables side has been gaining numerous optimisations since the last few days, too.

 

  • Like 5
Link to comment
Share on other sites

I think I am able to code now

The volume bars visualisation was an idea by PG, and I'm happy to say I was able to make it happen after I saw the mockup and thought about how to make it :D 

Uses a mix of ANTIC mode 6 and mode 2.

 

Maybe this could become the future XEX export format ?

 

Sketch 24 (New Player Test).xex

  • Like 10
Link to comment
Share on other sites

4 hours ago, YQN said:

Do .xex exports work with some emulators? Just tried on my Retropie and got a message saying it needs real hardware :( Or did I do something wrong?
 ?

yes. I use the xex exports in Altirra and Atari800 (Linux) all the time. 

example. recorded, using Altirra:

https://youtu.be/zMR2WNQzh3A

Edited by Kjmann
Link to comment
Share on other sites

Wow my emulator won't even start anymore ?

I'm asking about the new exports vs the exports from RMT 1.28. I remember exporting a tune that worked fine on Retropie but this time with 1.32 I got that green screen of death saying real hardware is required (using atari800 on debian).

Edited by YQN
Link to comment
Share on other sites

5 minutes ago, YQN said:

Wow my emulator won't even start....?

this time with 1.32 I got that green screen of death saying real hardware is required (using atari800 on debian).

sounds like a problem with the emulator. maybe a configuration problem? 

I'm using Atari800 on Linux mint with no issues. I also use Altirra with WINE. 

Link to comment
Share on other sites

I'm having way too much fun with this "RMT Player with cool VU Meter and the usual Vin's Bloat ™️" :D 

 

 

Okay here's the progress!

- rasterbar toggle -> done
- play/pause -> done
- songline seek -> done, needs some more tweaks
- multiple keys pressed at once condition (SHIFT+key) -> functional, but some things are a bit off, needs hardware tests to confirm

Also yes, the timer does not pause, I will add this in a moment, I kinda forgot about it lol
I'll add a stop function too, using the S key, where playing again will undergo the rmt_init subroutine before going back to the play loop.

 

 

  • Like 7
Link to comment
Share on other sites

20 hours ago, YQN said:

Hey Vin Vin :)
Do .xex exports work with some emulators? Just tried on my Retropie and got a message saying it needs real hardware :( Or did I do something wrong?
Very exciting stuff anyway! Keep it up! ?

It should work with all emulators unless a setup is incorrect... which seems like the case based on the replies below.

I use Altirra for all my tests, and occasionally test on my real 800xl machines when I want to make sure everything works like it should :) 

Link to comment
Share on other sites

11 minutes ago, ivop said:

Nice stacato/percussive notes, and very much in tune as far as Pokey can be pushed. Did you compose this yourself (pokey tune by emkay) or is it a cover? If so, could you point us to the original?

It's of course a cover of the MOD "Chinese Dreams" of the game "Full Contact". 

But the Pokey tune is done by me :)

Since VinsCool did this correction of the "notation and depending frequencies" , the changes make just sense. 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...