Jump to content
IGNORED

Moving beyond RMT ?


rensoup

Recommended Posts


Several people have mentioned that RMT isn't the panacea anymore... so perhaps it is time to start discussing how to move beyond RMT.

 

So I'm creating this thread because nobody else is willing to :)  

 

(Doesn't necessarily mean I want to get involved into any kind of coding!)

 

One thing that is critical I think is to use Dmsc's LZSS player, as I mentioned many times, its main advantage is its speed no matter how complex the sound effects are. 
Its second advantage is that it already exists and doesn't require upgrading if new sound effects are implemented (because it just replays raw Pokey data).

 


Possibilites from a tech POV:


1.Upgrade RMT ?

 

It is a possibility, even though Raster's not with us anymore, some people seem have to have the source code. 

 

( The source code for one the very first releases is actually available from Raster's homepage: http://raster.infos.cz/atari/rmt/rmt.htm : 2003/01: RMT 1.01 beta - rmt101b.zip (105 kb), rmt101b_src.zip (170 kb))

 

The PC tracker is written in C++ but the sound is actually played with the 6502 ASM player through emulation of the 6502 and Pokey which means implementing new effects require modifying the 6502 player which would bloat it/slow it down, not exactly ideal since it is also used on the A8.

 

Since I have a compatible player (RMT2LZSS) written in C#, it could be possible to remove the 6502 emulation from RMT, replace it with the C# player and leave the Pokey emulation to be able to still play the tunes inside the tracker. The tunes could then be exported to LZSS for playback on the A8.

It should then be possible to easily add new sound effects to the C# player.

 

2.Start from an existing tracker ?

 

This means getting a functional UI but non working player. The player and all its effects would have to be adapted 
for Pokey. Is there a tracker for a different platform that has enough bits in common with Pokey? 

 

I like https://famistudio.org because its interface seems really user friendly and if you watch the demo video, it seems pretty easy to create tunes with it.

 

3.Start from scratch ?

 

A mammoth task... 

 

A slightly different proposition would be to reset RMT by just starting from the C# player and rebuilding a new UI around it. And using Fox's ASAP, the Pokey emulator that's powering RMT. 


4.Update RMT with patches ?

 

That's a dead end since adding a feature means removing another one. What's needed is a tracker than handles all the patches at once (and more).

 

 

To reiterate, this doesn't mean I want to get involved in the coding or implement every feature request that may pop up but at least let's get the ball rolling!
 

  • Like 8
  • Thanks 1
Link to comment
Share on other sites

32 minutes ago, j1mp4ck said:

It would be interesting to be able to use micro samples (1kb 4bits) with a pingpong loop, something like a .mod file or gravis ultrasound did but much more basic, to use a sample with a chord on one channel and not sound a tremolo chord.

Sample the waveform and repeat it with note correct intervals. 

This would be great, if the other missing stuff was somehow managed. 

Particular SIO-Loaders and parts of demos could be done with such method aswell. 

Link to comment
Share on other sites

3 hours ago, j1mp4ck said:

It would be interesting to be able to use micro samples (1kb 4bits) with a pingpong loop, something like a .mod file or gravis ultrasound did but much more basic, to use a sample with a chord on one channel and not sound a tremolo chord.

What kind of sampling rate would work though ? the idea with LZSS would be to able to go above 200hz (on all 4 channels), 400 and perhaps 800 but it's not really possible to go beyond that unless you have 3 channels at 50hz and the 4th one at higher frequencies.

 

3 hours ago, emkay said:

This would be great, if the other missing stuff was somehow managed.

Now's the time to mention the "other" missing stuff again!

Link to comment
Share on other sites

@NRV mentioned a bunch of things a while back

 

Quote

1 similar to RMT, but new PC Editor, that play sounds (notes, instruments, songs..) with Pokey emulation
2 player uses LZSS, but extended to support "patterns" per song, or per channel/voice (maybe only needed for songs too long, or with too many patterns)
3 the editor can have any number of custom note tables in memory (each with any number of notes)
4 notes tables can be loaded and saved (the editor comes with many included)
5 instruments can be loaded and saved (the editor comes with many included)
6 tables of notes and instruments can reference specific channels, combinations of channels, 16 bit values, filters, etc (basically AUDCTL settings)
7 can provide very fine control of the Pokey values each frame, but only if the user need it
8 instrument editor and note tables editor Would be different applications (you can work with all 3 open at the same time)
9 coded in a modular way (many small applications would be the ideal), so different people can contribute different parts, some parts can be replaced and also added in the future (support for hard bass, soft synth, samples with different methods for the far future)

 

1 I'm really not a RMT user so that could be a dumb question but I guess you can't play a single instrument without writing it to the pattern ?

 

2 That could in the future as for now LZSS is the job

 

3 That's been mentioned a few times, and Analmux did a bunch of patches which involved mostly table hacking. And so has @VinsCool. So that'd be a really useful feature I guess? With LZSS and a new tracker it would be a pretty easy feature to add.

 

6 can anyone explain this ?

 

  • Thanks 1
Link to comment
Share on other sites

After all the experiments from Vinscool, Synthpopalooza and other people, I would say that supporting custom note tables (3) and providing fine control over all the Pokey values per frame (7), when needed, are the most important.

 

You can forget about number 6. It was that sometimes, some note tables or instruments, need to be used in specific channels. But you can give total freedom to the user in the end, there is no need to check everything.

  • Like 1
  • Thanks 1
Link to comment
Share on other sites

6 would mean that depending on what setting we are trying to achieve, specific tables would be called to it, so for example, turning an instrument into 16 bit on the fly would switch to the same note but on that table, high pass filter could have its own if certain modulation is intended (eg: the channel is 7 semitones up to get a "distortion guitar" sound), going into 15khz or 1.79mhz with a different distortion would make the frequency adjusted to the note that was playing, etc

 

Pretty much what RMT already does automatically, except the user would be allowed to chose what, how and when things would happen.

 

At least this is what I believe I understand this would be.

 

 

  • Like 1
Link to comment
Share on other sites

On 3/8/2021 at 1:34 AM, VinsCool said:

6 would mean that depending on what setting we are trying to achieve, specific tables would be called to it, so for example, turning an instrument into 16 bit on the fly would switch to the same note but on that table, high pass filter could have its own if certain modulation is intended (eg: the channel is 7 semitones up to get a "distortion guitar" sound), going into 15khz or 1.79mhz with a different distortion would make the frequency adjusted to the note that was playing, etc

? 

 

Can you clarify that a little? I've hardly ever used RMT ?. If you have a 8 bit instrument, do you switch to 16bit manually with AUDCTL ? wouldn't it sound completely different ?

 

Any chance of making a very simple test which would demonstrate the various AUDCTL modes?

  • Like 1
Link to comment
Share on other sites

In somewhat related news I've taken a look at Fox's ASAP library (its pokey core is used in RMT as well). It use its own variation of the C language which can be translated into C# (or C++, Java,...).

 

So I was able to plug the ASAP Pokey core in into RMT2LZSS and turn a RMT tune into a WAV without the need of a 6502 emulator (C# RMT player raw data directly fed into C# Pokey emulation).

 

That means the 6502 player is gone!

 

https://sourceforge.net/projects/asap/

http://cito.sourceforge.net

 

 

  • Like 1
  • Thanks 1
Link to comment
Share on other sites

45 minutes ago, rensoup said:

Can you clarify that a little? I've hardly ever used RMT ?. If you have a 8 bit instrument, do you switch to 16bit manually with AUDCTL ? wouldn't it sound completely different ?

Yeah, that's what I'm saying, same for any other mode and combination.
The only way to get certain things to work is either rely on the hardcoded method provided by RMT (which is pretty much very limited, but "just works", or manually... by creating a new instrument for every setting, and manually chose the frequency if it needs to be adjusted.

 

47 minutes ago, rensoup said:

Any chance of making a very simple test which would demonstrate the various AUDCTL modes?

In what way exactly, however?

Link to comment
Share on other sites

 


 

1 hour ago, rensoup said:

?

 

Can you clarify that a little? I've hardly ever used RMT ?. If you have a 8 bit instrument, do you switch to 16bit manually with AUDCTL ? wouldn't it sound completely different ?

 

 

 

It's not AUDCTL only that needs different note tables , it'

For now RMT has a separated Note table for the AUDC(0-3) registers.

In RMT named Generator 0,2,4,6,8,A,C,E.

Not sure about Gen. 0,4, and 8 (seems to be one table)

Gen. 2 seems to share the table of Gen. A. 

Is is already a difference between 2 and A on the same AUDCTL setting.

If now clocking 1.79MHz is used, the generators need ofcourse a new table. 

Particular gen. 2,4, and C

In RMT , Gen. "E" is a bit misleading. 

As on the real hardware A and E were the same type (clean tone) , gen. E has a separated Note table, using only the stable orbit sounds.

Then there is the 16 bit combination used in RMT that were known as hardware bass.

What's missing is the 16 bit value of the 2 channel combination with, and without 1.79MHz clocking. 

And, well, VinsCool's latest edit shows that 8 bit resolution using the Pulse width feature plus some better pitch alignment(custom note table), reaches even a better resulting tone.

Which comes to my definition of "32 Bit" sound. 

The both "filter" channels do act together in a 16 Bit way. And there is the timing that allows to handle different types of waveforms and combination of ALSO 16 Bit. 

It's not a 32 Bit as such. 

It's like a square , where you can chose any position from x and y in combination. 

This means, the interactivity while POKEY plays music, allows to handle 8 bit sounds like 16 bit sounds. And it is possible to set any resulting wave form to it. 

But it is not all usable together.

And here comes a special Note Table into gameplay ;).

While all 8 bit  (and 16 Bit) instruments only need a fix note table, the PWM needs an editable note table.

One of the real missing features in RMT is the possibility to adjust the resulting pitch on a single channel, when all channels were playing. 
It solves the tuning for particular single steps. 
This will help to remove cancelling or "clamped detuning" .

  • Like 1
  • Confused 1
Link to comment
Share on other sites

Have a listen to my latest 15kHz (on the main lead) edit:

 

(If you like, I could post a version with standard instruments there ;)  )

 

Remember the low resolution, and the resulting pitch you get. 

 

It's still the unpatched RMT 1.28 used . No optimization for 15kHz . Just the "adjustment of resulting sounds) 

 

The different sounding colors make the tune more pleasant than just using one wave style.

 

Sometimes it sounds  likely to be played by a second voice, but it is just a different wave for a moment.

Sometimes it helps to interact with the 3rd voice, making tremoloes more fluent .

Sometimes it is interacting at 3 channels..

 

And, if people don't understand how it helps with overall tuning, I might post a version of the real RMT notation setting ;)

 

 

 

  • Like 2
Link to comment
Share on other sites

34 minutes ago, emkay said:

It's not AUDCTL only that needs different note tables , it'

For now RMT has a separated Note table for the AUDC(0-3) registers.

RMT currently only has 3 tables, and 1 16-bit table.
The 3 main tables are Pure tone, used for 0, 2, 4, 8 and A (which is very much incorrect, since they all need their own tuning to even work nicely), and 2 bass tables, these 2 are only used for Distortion C and "E" setting (E in reality is simply C with different tones on certain frequencies), Bass Table 1 is also used in "Distortion 6", the 16-bit bass setting, as a fallback when used on a unsupported channel.

16-bit is made of 1 high order byte table, and 1 low order byte table, one in each channel used for it. The tone is very much what "Distortion E" sounds like, but in reality way more 16-bit settings could be done, and they also need their own tables.
 

41 minutes ago, emkay said:

If now clocking 1.79MHz is used, the generators need ofcourse a new table. 

Particular gen. 2,4, and C

More than that, actually, 15khz, high pass filter modulation (not just SID-like sound, but many combinations!), and different combinations of several settings, AUDCTL bits, and most likely more, they really do need their own tables to get some very solid tones and notes being in-tune together.

 

44 minutes ago, emkay said:

And, well, VinsCool's latest edit shows that 8 bit resolution using the Pulse width feature plus some better pitch alignment(custom note table), reaches even a better resulting tone.

Which comes to my definition of "32 Bit" sound. 

The both "filter" channels do act together in a 16 Bit way. And there is the timing that allows to handle different types of waveforms and combination of ALSO 16 Bit. 

It's not a 32 Bit as such. 

I like to call all that high pass filter stuff "cheap FM" for the same reason, lol

 

45 minutes ago, emkay said:

It's like a square , where you can chose any position from x and y in combination. 

This means, the interactivity while POKEY plays music, allows to handle 8 bit sounds like 16 bit sounds. And it is possible to set any resulting wave form to it. 

But it is not all usable together.

And here comes a special Note Table into gameplay ;).

While all 8 bit  (and 16 Bit) instruments only need a fix note table, the PWM needs an editable note table.

One of the real missing features in RMT is the possibility to adjust the resulting pitch on a single channel, when all channels were playing. 
It solves the tuning for particular single steps. 
This will help to remove cancelling or "clamped detuning" .

And you lost me here, lol

  • Like 1
Link to comment
Share on other sites

3 minutes ago, VinsCool said:

RMT currently only has 3 tables, and 1 16-bit table.
The 3 main tables are Pure tone, used for 0, 2, 4, 8 and A (which is very much incorrect, since they all need their own tuning to even work nicely)

 

 

Makes sense. I wasn't sure particulary with the noise generators.

 

3 minutes ago, VinsCool said:

 

, and 2 bass tables, these 2 are only used for Distortion C and "E" setting (E in reality is simply C with different tones on certain frequencies), Bass Table 1 is also used in "Distortion 6", the 16-bit bass setting, as a fallback when used on a unsupported channel.

16-bit is made of 1 high order byte table, and 1 low order byte table, one in each channel used for it. The tone is very much what "Distortion E" sounds like, but in reality way more 16-bit settings could be done, and they also need their own tables.
 

 

Raster did a great job with RMT. 

It's just that most informations had been wrong (still today ) . 

 

3 minutes ago, VinsCool said:

More than that, actually, 15khz, high pass filter modulation (not just SID-like sound, but many combinations!), and different combinations of several settings, AUDCTL bits, and most likely more, they really do need their own tables to get some very solid tones and notes being in-tune together.

The resulting intervalls at a 5 or 7 note shift  (for example).

 

3 minutes ago, VinsCool said:

I like to call all that high pass filter stuff "cheap FM" for the same reason, lol

 

And you lost me here, lol

In theory you're still close :)

 

 

  • Like 1
  • Confused 1
Link to comment
Share on other sites

Yep, I agree with that :D

 

Raster really did a good job, it's just a bit disappointing how limiting some things were implemented, because the POKEY chip can produce some really amazing sounds.

 

Not lying here, when I did not understand the chip as much I can today, I thought many things were much more limited due to the way RMT was handling them.

I assumed high pass filter muted the modulator channel, same with 16-bit, or that the notes available were the only ones possible (and I think I was able to prove there was way more possibilities using custom tuning tables!).

So once I could actually know the secrets of the chip, I was pretty much facing a wall of hard coded limitations, that could be worked around manually using AUDCTL settings in instruments and manually playing the frequencies needed using commands 1 and 2, for example, or relying on Speed 1 patterns (Famitracker style!), Or custom tables, as shown by Analmux in RMT patch8, or even my own for tuning purposes, which was only intended as a personal use first but now I think there may be more stuff that could benefit from that, etc

 

having a new tracker which handle do everything RMT could do, but better, with LZSS, means we could do nearly anything, and hopefully having more control over the sounds would make certain things much easier as well, despite being a lot more complex on the get go.

 

note tables for example, are not an exaggeration for that alone, having support for more than 3 hardcoded tables would unlock a lot more power without relying on manually making instruments for 1 specific frequency, and would also avoid having to resort on using hacked versions as well.

 

so if instruments could also change more things on the fly, such as distortion, or AUDCTL alone, plus having support for custom tables, would mean quite a lot of things could be done, and once the hard work is done once for a certain thing (eg, a table of notes for a special setting), that makes things much easier to do once they are available.

 

POKEY Explorer has been incredibly useful for these experiments, so having a tracker that could let the user do nearly the same amount of stuff on the fly to make an instrument could make a huge step forward in creating really impossible sounding POKEY music, I believe :D

 

 

 

  • Like 3
Link to comment
Share on other sites

Hello R0ger

 

7 hours ago, R0ger said:

Oh the ideas I have. But what good is it when there is just no time. And this one will need a lot.

 

Two options:

 

a) Share them with the guys in this thread, so they can research/implement them.

b) There is this week in September where you can use 100% of your time on these ideas. ;-)

 

Sincerely

 

Mathy

 

  • Like 1
  • Haha 2
Link to comment
Share on other sites

20 hours ago, emkay said:

For now RMT has a separated Note table for the AUDC(0-3) registers.

In RMT named Generator 0,2,4,6,8,A,C,E.

Not sure about Gen. 0,4, and 8 (seems to be one table)

Gen. 2 seems to share the table of Gen. A. 

Is is already a difference between 2 and A on the same AUDCTL setting.

yes, the new RMT2LZSS should address that.

20 hours ago, emkay said:

If now clocking 1.79MHz is used, the generators need ofcourse a new table. 

I'm not sure what all the frequencies mean... Every time I see 15khz mentioned, I know its the duration of a scanline but how does that relate to Pokey ? same with 64khz and 1.79mhz (yes I know it's the CPU frequency but again what does that have to do with sound ?)

20 hours ago, emkay said:

What's missing is the 16 bit value of the 2 channel combination with, and without 1.79MHz clocking. 

That I could actually do... 

 

If AUCDTL has linked channels and AUDCTL is 64khz -> use 16bit table A

If AUCDTL has linked channels and AUDCTL is 1.79MHZ -> use 16bit table B

 

?

20 hours ago, emkay said:

While all 8 bit  (and 16 Bit) instruments only need a fix note table, the PWM needs an editable note table.

 

?

20 hours ago, emkay said:

One of the real missing features in RMT is the possibility to adjust the resulting pitch on a single channel, when all channels were playing. 
It solves the tuning for particular single steps. 
This will help to remove cancelling or "clamped detuning" .

You mentioned that already... no idea what you mean... you'd to find a different way to explain it

  • Like 1
Link to comment
Share on other sites

19 hours ago, VinsCool said:

note tables for example, are not an exaggeration for that alone, having support for more than 3 hardcoded tables would unlock a lot more power without relying on manually making instruments for 1 specific frequency, and would also avoid having to resort on using hacked versions as well.

Well you have 8 now so go on, impress us again ?

19 hours ago, VinsCool said:

so if instruments could also change more things on the fly, such as distortion, or AUDCTL alone, plus having support for custom tables, would mean quite a lot of things could be done, and once the hard work is done once for a certain thing (eg, a table of notes for a special setting), that makes things much easier to do once they are available.

But if distortion is part of the envelope, it should already be the case ?

 

Better instrument support doesn't seem very difficult it's just that there's no editor for it... It may be possible to have a very simplistic external instrument editor (which would be totally incompatible with RMT though).

 

Or perhaps have extra parameters coded in the instrument names ????

  • Like 1
Link to comment
Share on other sites

 

2 hours ago, rensoup said:

 

You mentioned that already... no idea what you mean... you'd to find a different way to explain it

Every "Mod" Tracker has this feature.

 

In RMT it is for now:

c-4 01 f 06

 

c-4 is the note

01 is the instrument

f is the "global" volume

06 is the speed

 

Well. There are additional features on any tracker to allow the Arpeggio setting on the patterns aswell.

 

So it might be

 

c-4 01 f ff 038 06

 

 

now the command row has 

ff to pitch the dedicated channel one up (command 00 might reset it +-12 values might be enough )

-It is useful, if at a dedicated time, the channels might cancel each other , or the volume adds by the resulting wave.

-it also can help to optimize filter sweeps, instead of generating several different instruments.  

 

038 is just an example for some arpeggio implementation.

Edited by emkay
  • Like 2
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...