Jump to content
pirx

New POKEY bass sounds, Pavros research project

Recommended Posts

The very detailed and in-depth research of POKEY by @pavros, continuation of work of beloved @analmux et al. has been just published on atarionline.pl (http://atarionline.pl/v01/index.php?subaction=showfull&id=1564612394&archive=&start_from=0&ucat=1&ct=nowinki).

It was previously available in the latest issue of Atari Fan - twenty pages of dense wizardry, but now you can download the whole thing including demo programs and source code.

Unfortunately the whole saga is in Polish language only, but we shall be able to help somehow if such a help is needed.

The pack is here: http://atarionline.pl/pliki/pavros_znieksztalcenie_C.7z

 

  • Like 9
  • Thanks 1

Share this post


Link to post
Share on other sites

I've read the AtariFan article and it is VERY helpful.

It explains all quirks of C distortion. How and why different timbres are generated using different frequency values. Why some tones are stable (which form what in RMT is called bass E), and some not (bass C in RMT). What else there is (multiples of 5 and 15) and why it's not used.

And especially, how some CAN be stabilized and used reliably.

The article goes to incredible depth, contains lot of tables. The problematic is really complex though, and I understood most of it only after playing with it myself.

I do believe I know understand everything in the article though, and if Pavros won't make English version himself (in past he mentioned he will), I can do some (lot shorter) to sum it up later.

 

Unfortunately there is one more problem, I haven't found being discussed. In simple terms, whenever you change frequency with this new bass, there is audible click.

I can even explain why it is, and why it's basically impossible to fix, but it would make no sense without explaining all before it. So Pavros, if you're here, hit me up.

It might still be usable in some cases, but I consider it big limitation.

 

Here is short example .. frequency is multiple of 3, stabilized using pokey reset (first method, basically the code from the article), lowest frequency, shifted up and down by 3. You can also hear the clicks in the Pavros testers.

 

CBass.xex

Share this post


Link to post
Share on other sites

According to the tester app comments, the type 2 generator doesn't produce clicks as it uses cpu timing rather than pokey timers. Only the type 1 generators click... at least, that's what the comments claim.

Share this post


Link to post
Share on other sites
1 hour ago, Chilly Willy said:

According to the tester app comments, the type 2 generator doesn't produce clicks as it uses cpu timing rather than pokey timers. Only the type 1 generators click... at least, that's what the comments claim.

Interesting, will recheck the chapter .. my polish is far from 100% :-D

 

...

 

Ok, so I recheck the chapter, and I'm not entirely sure now what you are talking about. What do you mean by type 2 generator ?

 There are 2 method of synchronization, one using STIMER and another using AUDF=0. I presume this is what you mean.

STIMER will definitely cause clicking. But that's not what I'm talking about.

 

My demonstration uses synchronization only at the start, not between the notes. I tries to keep the channels synchronized by using only multiplies of 3. The poly counter is synchronized so it produced the exact same 5 bits of the sequence every time. And since only one of them is 1, and the rest is 0, we always get 10000 sequence. If you write the right values of AUDF, synchronization isn't needed (which is discussed in another chapter).

You will still get clicks when writing to AUDF though. Every multiply of 3 scans the same 5 bits. But every multiply of 3 scans them in different order !

One can scan them like 1,2,3,4,5, another will go 1,3,5,2,4, or 5,4,3,2,1. The resulting wave will always be single one separated by four zeros.

But there will be phase jump every time you change AUDF.  The sequence can come out like this:

 

100001000010(new AUDF)01000010000

 

This will happen if the sampling order changes from 1,2,3,4,5 to 5,4,3,2,1. That's what my example is about, I don't think it's being discussed in the article. I will be glad to be wrong.

 

Btw. there is no demonstration of the principle used in a song, right ?

 

PS. I think you will get the same effect using Pavros testers, turning the synchro off (L key) and then using Z,X,C for changing note. Synchro off makes lot less clicking than synchro on, but there is still some clicking.

Edited by R0ger
  • Like 2

Share this post


Link to post
Share on other sites

I hear some bass if I have the Sub turned up, otherwise, it sounds like an annoying buzz to me.

 

Share this post


Link to post
Share on other sites
5 hours ago, Kyle22 said:

I hear some bass if I have the Sub turned up, otherwise, it sounds like an annoying buzz to me.

 

 

I usually don't write anything about it because the main part belongs to stabilized sounds. Which is a good thing that hopefully will bring some music creation tool for the Atari including that.

Last time, when I had the Atari plugged to a Hi Fi, is about 30 years ago. Back then I tested all possible deep sounds that could be useful as a "bass" . When they were talking about "bass" it could only mean the acoustic bass range with distortion that reminds of  a Bass Guitar. The sound were distinguishable from the high mid range of notes that POKEY produces at 64kHz.  

There is ONE "orbit" when using the Polycounter , resulting in a low buzzing noise, resulting in a good usable "bass" tone. But that tone is excluded from development for a unknown case.  

If people really want to have powerful bass sounds , there is no other chance than to use digitizing.  

Share this post


Link to post
Share on other sites
On 8/3/2019 at 10:46 AM, R0ger said:

Ok, so I recheck the chapter, and I'm not entirely sure now what you are talking about. What do you mean by type 2 generator ?

 There are 2 method of synchronization, one using STIMER and another using AUDF=0. I presume this is what you mean.

STIMER will definitely cause clicking. But that's not what I'm talking about.

 

Look at the comments at the tops of the playAndSyncXX.asm files. In particular, playAndSync2.asm says

The advantage is that when synchronization is applied to single channel then others are not affected - there is no audible click as the STIMER register is not written to.

Share this post


Link to post
Share on other sites

Yes, exactly. STIMER clicks are not what I'm talking about. Clicks I talk about happen without ANY synchronization between notes. And the happen on the channel with the bass.

Share this post


Link to post
Share on other sites

The problem is the channel is in an indeterminate state (0 or 1) - which is part reason why the sync is being done in the first place.

If clicking is present it could probably be reduced by decaying the volume then doing an attack phase on the next note though the problem there is we often just want a rapid transition from one note to the next.

Or maybe something with forced volume could be done - set an intermediate state during the sync though that would probably mean less click but it always occurring.

  • Like 1

Share this post


Link to post
Share on other sites

this might sound strange but try rotating through the channels until you find a combination with less clicks. Might be remembering a different situation but there might be a minute difference. can't hurt to move them around and limit volume of adjacent channels.

  • Like 2

Share this post


Link to post
Share on other sites
15 hours ago, Rybags said:

The problem is the channel is in an indeterminate state (0 or 1) - which is part reason why the sync is being done in the first place.

If clicking is present it could probably be reduced by decaying the volume then doing an attack phase on the next note though the problem there is we often just want a rapid transition from one note to the next.

Or maybe something with forced volume could be done - set an intermediate state during the sync though that would probably mean less click but it always occurring.

 

Ah, okay, that makes more sense and doesn't come out in the comments. Thanks.

Share this post


Link to post
Share on other sites

I had an idea today .. if I only need synchronization on the beginning, I can simply use RMT player after I do the synchronization. As long as I only play RMT C bass on one channel and nothing else, the synchronization should hold. And it seems it does !

 

First XEX is example of constant volume, second XEX uses some decay. Not total decay. I just wanted to hear how is it going to help. IMHO not much. Complete decay removes the click perfectly, obviously.

It starts on deepest sound using default RMT freq tables, which is G# (F2 divisor).

 

The bass is softer than comparable E bass, but out of all possible C bass sounds, the stable one is one of the weakest and most buzzing. And it's just normal 8 bit C bass, with all it's inaccuracies.

If you mix drum & bass in one channel, this won't help you at all. I typically do reserve 1 channel for bass, so it's not an issue. And like this it's really simple to use, just add some extra code in music init to sync the timers to polycounter.

 

Please note it was not tested on real hardware, only in Altirra.

 

CBass1.xex CBass2.xex 

 

Edit: here is my song Dreams from IRQ bass testing adapted for this bass. It uses long tones, and on every bass note change there is also drum beat in other channel, so the clicking is not a problem.

 

CBass3.xex

Edited by R0ger
  • Like 2

Share this post


Link to post
Share on other sites

Another idea .. if you would mix this bass with drums .. and you only used multiplies of 3 in the drums instruments .. it would still stay synced !

 

  • Like 3

Share this post


Link to post
Share on other sites
7 hours ago, R0ger said:

I had an idea today .. if I only need synchronization on the beginning, I can simply use RMT player after I do the synchronization. As long as I only play RMT C bass on one channel and nothing else, the synchronization should hold. And it seems it does !

 

First XEX is example of constant volume, second XEX uses some decay. Not total decay. I just wanted to hear how is it going to help. IMHO not much. Complete decay removes the click perfectly, obviously.

It starts on deepest sound using default RMT freq tables, which is G# (F2 divisor).

 

The bass is softer than comparable E bass, but out of all possible C bass sounds, the stable one is one of the weakest and most buzzing. And it's just normal 8 bit C bass, with all it's inaccuracies.

If you mix drum & bass in one channel, this won't help you at all. I typically do reserve 1 channel for bass, so it's not an issue. And like this it's really simple to use, just add some extra code in music init to sync the timers to polycounter.

 

Please note it was not tested on real hardware, only in Altirra.

 

CBass1.xex 1.87 kB · 5 downloads CBass2.xex 

 

Edit: here is my song Dreams from IRQ bass testing adapted for this bass. It uses long tones, and on every bass note change there is also drum beat in other channel, so the clicking is not a problem.

 

CBass3.xex 2.26 kB · 7 downloads

 

 

 

Nice progress. This is exactly what's needed. Some command to synchronize the generators. Allowed to be set in the editor.

Once before starting , and optional : once before any pattern is played and once before a row of programmed FX follows.

There is no need to synchronize every time an Instrument is getting started, because there are physically limited acting rows that POKEY does almost the same till some uncontrolled influence happens. 

 

Share this post


Link to post
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.

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...