Jump to content
IGNORED

My POKEY experiments using nonstandard settings


Recommended Posts

Beginnings of a title theme for ARTI ...

 

Settings:

 

AUDCTL=$44 (hi pass on 1 and 3, clock 1 only on 1.79, base clock is the standard 64 khz)

 

00 - $2x (guitar lead)

01 - $Cx (standard non mod 3 bass aka RMT E)

02 - $Ax (harmonic for 00)

03 - $Ax (standard square wave)

 

This is distortion 2, hi pass, with a single 1.79 clock on the first channel.

 

I have logged several guitar tables for this setting.  It allows finer control of the modulation than double 1.79 ... the disadvantage is, it requires the 64 khz clock so you must use the $Cx distortion for bass sounds here.

 

This is only a beginning, but it kinda has a heroic old west feel to it ...

 

I will flesh this one out later.

 

The same setting may also be useful in 15 khz mode too.

arti-title.asm arti-title.s arti-title.xex

  • Like 4
Link to comment
Share on other sites

So the challenge in logging all the hi pass settings ... is that you have 7 possible clock settings in each distortion:

 

15+15

64+64

1.79+1.79

1.79+15

1.79+64

15+1.79

64+1.79

 

Which ones are useful depend on your distortion settings, but in most cases, the frequencies follow this rule:

 

Channel 1's value is from that distortion's note table for the clock set on that channel.

Channel 3's value is from the $Ax note table corresponding to that channel's clock

 

The two channels maintain a frequency ratio and harmonic for each possible note table.

The $Ax distortion played in 3 will add a harmonic (octave, 4th, 5th, etc.)

 

The exceptions come in the $Ax double 1.79 croissant mode, and any others that depend on 1.79 in 3 channel, because the modulating frequencies are ultrasonic.

 

This will make frequency tables easy to log.

 

When combining 2 and 4 channels, it is only the 15 or 64 clock that is a factor here

Edited by Synthpopalooza
  • Like 2
Link to comment
Share on other sites

26 minutes ago, Mathy said:

Hello Synthpopalooza

 

Sorry if this is a stupid question.  I know nothing about music and my memory is even worse...

 

No 15 + 64 and 64 + 15?

 

Sincerely

 

Mathy

 

I can answer to this one.

 

Basically, 15khz and 64khz are 2 different clocks, they cannot be used together at the same time since Bit 0 of the AUDCTL register sets the clock speed, and as such, it could only be one or the other.

 

The only exception applies to the 1.79mhz clock speed, which could be used in the channels 1 and 3, alongside of 15/64khz, and the channels clocked faster will take priority regardless of the base clock speed initially set.

 

If the joined 16-bit mode is also set, as long as the 1.79mhz clock is set in the linked channels, they will also take priority over the main clock.

  • Like 1
Link to comment
Share on other sites

1 hour ago, Mathy said:

Hello Synthpopalooza

 

Sorry if this is a stupid question.  I know nothing about music and my memory is even worse...

 

No 15 + 64 and 64 + 15?

 

Sincerely

 

Mathy

 

To add to the response above:

 

Having 1.79 clocks on two channels independent of the base clock  is a distinct advantage.

 

For example:  Let's say you want to use one of the 15khz basses,  like the $Ax one.  To get your high end, you can set 1.79 on 1 and/or 3, and use the 2 or C distortions to cover this.

 

In addition, as stated above, the 7 combinations are only in the event of using 1 and 3 in hi pass.  2 and 4 can also be combined, but as 1.79 is not available on these, your only options there are either the 15 or 64 base clocks, which will be the same on both.

 

Then there's the 64-bit megachannel trick (I used it on the Metroid Krayt double POKEY tune), done by setting 16-bit on both channels, and having one 16-bit channel filter the other.  I haven't dived deeply into it yet, but it's the same concept, 7 clock channel combinations are possible.

Edited by Synthpopalooza
  • Like 1
Link to comment
Share on other sites

To add even further to the response above, it is also possible to combine 16-bit with any of the combinations, and channel 2 or 4 could be used the same way, making them able to be filtered as ch 1+2 being the carrier, and ch4 the modulator, or the opposite, ch2 the carrier, and ch 3+4 being the modulator.

 

And those also can be used with no limitation without the 1.79mhz clock when they are joined.

In this case, they will be clocked by either 15/64khz, and the pitch generated will use the exact same formula, with only a few variables being offset due to the cycles difference that has to be taken into account.

 

I think that goes without saying, once a pattern was identified by hand, coming up with the actual maths to procedurally generate them at a known constant pattern cycle will be incredibly valuable for using the chip with advanced sound synth capabilities.

 

I do have a handful of those formulae fully documented, and a lot more is to come, much of which would not have been possible without the hard work synthpopalooza has put into the researches :)

Link to comment
Share on other sites

I have had no luck with those either so far, only found what looked like a potential divisor pattern, but no way to truly predict them as far as I did my own research on them.

 

This is a great example why identifying a pattern could be a really good thing: a lot of tables could then be generated with no more effort than feeding a few numbers to a formula and output the resulting pitch calculated with them.

 

I definitely will go dive deep back into this now that I have been able to do all the other things I wanted to finish this month, haha

 

 

 

 

 

 

Link to comment
Share on other sites

  • 2 weeks later...

So I finished the A.R.T.I. title theme.  As above, uses AUDCTL=$44, single 1.79 on first channel only, $2x + $Ax distortion, hi pass.

 

I think it sounds very heroic!  I had to tweak the note tables a bit to get the perfect swirling effects on some of the notes.

arti-title.asm arti-title.s arti-title.xex

  • Like 3
Link to comment
Share on other sites

Beginnings of the title theme to Metroid.

 

Setup:

 

POKEY 1:

 

AUDCTL=$78 (standard 1.79 plus 16-bit on 0+1, and on 2+3)

SKCTL=$03 (no special settings)

 

$00 and $01:  $Ax 16-bit square wave - bass

$02 and $03:  $Ax 16-bit square wave - accompaniment

 

POKEY 2:

AUDCTL=$40 (1.79 on first channel)

SKCTL=$8B (two-tone mode)

 

$00:  $Ax - high pitched saw wave, modulation for two tone

$01:  silent - high pitched saw wave, frequency carrier for two tone

$02:  $8x - noise percussion, 8-bit channel

$03:  unused

 

By rolling the modulation frequency on first channel of POKEY 2, the eerie echoing effects of the high pitched saw wave on the NES original can be simulated.

 

This only has the first 3/4 of the theme ... the rest will be finished at a later date when I am not pressed to get into bed for work, lol.

 

For best results, listen to this on a double POKEY system, set to mono, not stereo.   Also another caveat:  Some versions of PokeyMax, as well as Altirra versions between 3.20 and the current Altirra, will not play the two-tone channel properly (the current Altirra has fixed this problem).  @phaeronAnyway you can add double POKEY mono playback to the next Altirra release?

 

My ultimate goal is a recreation of the entire Metroid soundtrack in double POKEY setup ... as a demonstration of what double POKEY can do in playing NES music.

 

metroid-title-dblpokey.asm metroid-title-dblpokey.obx metroid-title-dblpokey.s

Edited by Synthpopalooza
  • Like 2
Link to comment
Share on other sites

I revisited this a couple of days ago:

 

 

 

As a recap:  Setting 15khz mode and using C distortion makes a stable bass, and the waveform changes depending on which channel you play the note in.

 

The interesting part is:  Channels 1 and 4 play the inverse waveform of each other.  If you delay the note in one channel in just the right way, you can get some interesting phase cancellation effects.  I tested this out on my own and it definitely works, but some more experimentation in this area is clearly called for ...

  • Like 2
Link to comment
Share on other sites

What I was speaking of in the above post, was setting AUDCTL=$01, for 8-bit on all four voices, and using C distortion.

 

Unlike standard 64khz clock, where mod 3 frequencies are buzzy/unstable and the other ones are more harsh, 15khz clock makes all frequencies (except for mod 5 which is silence) the buzzy ones, and they are stable.  The waveform returned depends on the frequencies, and what channel you play in.

 

1.  either a 60% duty cycle (11000), or an irregular pattern (01001), dependent on frequencies

2.  the same, but the frequencies are switched

3.  always 20% duty cycle (10000) regardless of frequency

4.  inverted waveform of 1 (00111 or 10110)

 

So what this means is, to play the same frequency in 1 and 4 simultaneously, introduces phase cancelling effects.  How much of the phase gets cancelled depends on how many cycles delay between playing the frequency on channel 1 and the same one on channel 4.

Edited by Synthpopalooza
  • Like 2
Link to comment
Share on other sites

In regards to double 16-bit:  Yes, and it's of particular advantage in double POKEY.  The C and A distortions can be used for the entire range of A0 up into the 8th octave, without tuning errors ... this also includes the mod 3 less buzzy distortions (aka RMT C) as well.  So basically 4 16-bit channels, perfect tuning, more than capable of equalling the NES.

  • Like 2
Link to comment
Share on other sites

Also when converting NES music:

 

The NES has a Triangle wave (which converts nicely to $Ax wave, or $Ax two-tone on higher notes), and three pulse waves:  50% square, 25% rectangle, 75% rectangle.

 

For double POKEY, $Ax distortion works for the 50% waves, the other two can be handled in C distortion.  The mod 3's make it sound a bit brighter, but with some wave instability due to polycounters.  The non mod 3's make a really bright wave, making the sound more harsh and aggressive.  You can then use an 8-bit channel on the second POKEY at $8x for noise, or at $4x for those buzzy sounds on that NES channel.  This leaves still an 8-bit channel free for SFX.

Edited by Synthpopalooza
  • Like 1
Link to comment
Share on other sites

  • 4 weeks later...

just wow. The Pokey is really starting to rival the SID, if not beat it. Just that the SID has nicer Sawtooth and Triangle pulses, as well as a real highpass, but the POKEY has those, an extra voice, and real volume channels on all 4 voices! Soo much stuff with the POKEY.. Imagine the music tracks!

  • Like 1
Link to comment
Share on other sites

1 hour ago, Ecernosoft said:

just wow. The Pokey is really starting to rival the SID, if not beat it. Just that the SID has nicer Sawtooth and Triangle pulses, as well as a real highpass, but the POKEY has those, an extra voice, and real volume channels on all 4 voices! Soo much stuff with the POKEY.. Imagine the music tracks!

Not sure if those incapable Mods will show this , but POKEY don't need to "start" beating SID, as SID wasn't available in 1979...

Link to comment
Share on other sites

Just now, Albert said:

I have to ask, why are you such an asshole?

 

 ..Al

Sorry, but I'm not the cause for your false recognition.

Did you see the latest software for the Atari? It's a part of my comunication which you were surpressing without any evidence. You are supporting the assholes and surpess the developers.

Link to comment
Share on other sites

24 minutes ago, Albert said:

I have to ask, why are you such an asshole?

 

 ..Al

You are really fascinating. 

Come on, you were a C64 freak. Atari is only some base for earning money. 

Knowing nothing about the great 8 bits, you were just leaded to judge for assholes that pay for your live, isn't it ?

Link to comment
Share on other sites

6 hours ago, Ecernosoft said:

just wow. The Pokey is really starting to rival the SID, if not beat it. Just that the SID has nicer Sawtooth and Triangle pulses, as well as a real highpass, but the POKEY has those, an extra voice, and real volume channels on all 4 voices! Soo much stuff with the POKEY.. Imagine the music tracks!

It's a mixed bag really ... the SID can do some things POKEY can't, and vice-versa.  The real thing with POKEY is that there are a lot of settings that haven't even been touched yet, plus the SKCTL two-tone mode, originally designed for Cassette I/O, has some unintended musical applications as well.  It's really crazy ...

  • Like 3
Link to comment
Share on other sites

10 hours ago, Synthpopalooza said:

It's a mixed bag really ... the SID can do some things POKEY can't, and vice-versa.  The real thing with POKEY is that there are a lot of settings that haven't even been touched yet, plus the SKCTL two-tone mode, originally designed for Cassette I/O, has some unintended musical applications as well.  It's really crazy ...

As someone very into sound synthesis (and owner of a few classic synths from the 70's / 80's), SID is really solid for music and true analog synthesis.  IMHO, it can't touch POKEY for the sound effects, you typically see that when you compare the same game on the two platforms.  Each has their own strength, but from a synthesis perspective, POKEY has shown it's no slouch, and the settings that many here have uncovered really opened my eyes - it's far better than I once thought and I think there's more to come.

  • Like 1
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...