Jump to content
ivop

Pokey Explorer v1.1 release

Recommended Posts

Previous thread

 

Here's the release of Pokey Explorer v1.1. It's a tool to explore all possible combinations of Pokey registers that have an effect on the sound you hear.

 

New:

 

- 16-bit intervals

- hold START to STOP a running sweep1

- batch processing

 

Batch processing is for advanced users. I have included an example sweeps.s file. You can change that, or include your own source file with multiple sweeps and rebuild the batch binaries.

 

TODO:

Do a really long sweep with e.g. 20 different settings and long play times. After that, import the file in Audacity and cut-off the noise before the first countdown and everything after The Final Countdown ;) With the correction factors mentioned in the previous thread, you can calculate exactly where each sweep starts and stops. Write a Bash script to do the calculations automatically. Cut-up the file in pieces, then run them through aubiopitch, and Bob's your uncle. Hopefully :)

 

Full source is here. And the manual.

 

1 That's like old Windows, where you have to go to the START menu, to stop/shutdown your machine ;)

pokeyexp-batch-v1.1-ntsc.xex pokeyexp-batch-v1.1-pal.xex pokeyexp-v1.1-ntsc.xex pokeyexp-v1.1-pal.xex

Edited by ivop
forgot to attach binaries, some clarifaction and spellin errors ;)
  • Like 7
  • Thanks 3

Share this post


Link to post
Share on other sites

Ok ... 

 

Small update on that mode we were documenting:

 

Notes below about $B000, regardless of interval, have those nasty sound artifacts.  Going to have to redo the table a bit.

Share this post


Link to post
Share on other sites

I did not have the motivation yet to work more on the automation of generating tables, and replaying the tables only, and run that through aubiopitch. Lately I did some RMT music in emkay's thread and not much more. But I have not forgotten about it.

Share this post


Link to post
Share on other sites

Hey, nice tool!

 

Since I rediscovered my 600XL a few weeks back, I've been doing exactly what this program is written for - digging into what the POKEY has to offer - by writing little BASIC routines. But now stumbled on this program, thanks for coding!

  • Like 2
  • Thanks 1

Share this post


Link to post
Share on other sites
2 hours ago, Probabilitydragon said:

Hey, nice tool!

 

Since I rediscovered my 600XL a few weeks back, I've been doing exactly what this program is written for - digging into what the POKEY has to offer - by writing little BASIC routines. But now stumbled on this program, thanks for coding!

So my efforts to make it work on a 16kB machine were actually useful? :) Did you run it on real hardware? I tested with Altirra in 600XL mode, but not on real hardware. Both my 600XLs are 64kB. And the keyboards are broken.

 

Share this post


Link to post
Share on other sites

By the way ivop:  Had another setting I wantrd to get your thoughts on.  

 

$2x on first channel ... 1.79 on 1 and 3 just like on the $Ax ones.  Here's what I have discovered:

 

First channel gets the $2x frequency value from my 1.79 note table.  Third channel will generate tones which are modulated, either on the frequency, up or down an octave, or up or down a 4th interval.  Mod 32 frequencies on the third channel make solid tones.

 

Will send a preliminary note table soon

  • Like 1

Share this post


Link to post
Share on other sites
Standard $2x @1.79 AUDCTL=$64

(AUDF1) table		AUDF3 values

A - 255 				255, 251, 247, 243, 239, 232, 222, 219, 216, 213, 202, 192, 187, 185, 165, 160,
					155, 142, 106, 97, 69, 58, 51, 27
A# - 240				248, 244, 242, 240, 236, 225, 212, 209, 206, 195, 190, 185, 176, 175, 174, 172,
					168, 166, 165, 164, 157, 152, 136, 131, 121, 120, 119, 93, 85, 81, 74, 58, 57,
					27
B - 227					254, 252, 243, 227, 213, 195, 187, 182, 175, 156, 150, 128, 125, 107, 89, 81, 
					76, 73, 62, 58, 36, 29, 27, 18, 17
C - 216					251, 244, 240, 231, 216, 209, 191, 172, 171, 151, 138, 131, 120, 106, 84, 59, 
					58, 51, 40, 36, 27, 18
c#- 205					255, 250, 245, 236, 212, 205, 181, 176, 171, 162, 160, 159, 158, 156, 155, 154,
					145, 140, 131, 123, 120, 116, 104, 86, 78, 77, 76, 75, 72, 68, 58, 56, 50, 49,
					44, 41, 37, 36, 27, 18
D - 193					251, 250, 240, 231, 222, 218, 216, 214, 203, 193, 187, 181, 173, 168, 161, 145,
					138, 134, 126, 107, 82, 67, 65, 58, 32, 29, 27, 18
D# - 181				251, 240, 235, 230, 221, 201, 199, 184, 181, 178, 151, 147, 145, 143, 118, 113, 
					90, 87, 59, 58, 57, 43, 33, 27
E - 171					250, 244, 239, 231, 219, 217, 199, 182, 179, 176, 165, 160, 151, 140, 139, 120,
					116, 97, 89, 86, 68, 58, 56, 41, 36, 32, 27, 26, 20, 16
F - 161					255, 252, 234, 209, 189, 182, 161, 151, 120, 115, 106, 89, 62, 58, 51, 29, 27,
					26,  18
f# - 152				254, 244, 238, 232, 226, 221, 216, 211, 204, 182, 175, 152, 120, 114, 100, 89, 
					74, 58, 48, 35, 27, 22, 20
G - 143					249, 244, 239, 236, 224, 221, 213, 208, 203, 194, 190, 186, 182, 173, 168, 148, 
					143, 134, 130, 120, 102, 94, 89, 82, 80, 64, 63, 58, 49, 45, 38, 27, 17
g# - 135				250, 249, 229, 223, 217, 201, 192, 165, 150, 135, 58, 47, 27

A - 127					250, 246, 242, 235, 228, 210, 207, 199, 194, 167, 145, 141, 136, 127, 119, 112
					91, 66, 58, 54, 27
a# - 121				254, 246, 244, 242, 238, 231, 224, 219, 211, 200, 185, 172, 151, 148, 145, 122, 
					121, 120, 119, 110, 98, 72, 64, 58, 47, 46, 37, 27, 21
B - 113					255, 246, 238, 230, 223, 216, 192, 187, 182, 174, 159, 147, 144, 141, 121, 113, 
					94, 89, 85, 74, 70, 58, 35, 27, 22, 14
C- 106					244, 231, 223, 216, 209, 171, 151, 138, 120, 106, 84, 58, 51, 40, 27, 18

C# - 100				254, 244, 226, 211, 204, 175, 146, 125, 120, 100, 71, 58, 48, 39, 27, 22

D - 94					249, 244, 239, 230, 221, 213, 202, 192, 186, 158, 156, 148, 146, 139, 134, 131,
					128, 120, 99, 94, 77, 71, 58, 45, 27, 24

D# - 88					255, 244, 224, 200, 186, 183, 180, 165, 159, 146, 120, 88, 58, 42, 27, 19

E - 83					241, 182, 170, 162, 157, 138, 120, 112, 89, 83, 67, 58, 54, 27, 25

F - 79					253, 247, 241, 230, 215, 206, 194, 162, 152, 143, 139, 137, 120, 113, 101, 79,
					58, 27
f# - 74					238, 216, 204, 182, 152, 120, 114, 100, 89, 74, 58, 48, 35, 27, 22

g - 70					251, 244, 187, 166, 160, 157, 149, 144, 135, 131, 129, 120, 81, 70, 58, 33, 27
					
G# - 65					244, 237, 234, 210, 195, 182, 180, 178, 141, 120, 103, 89, 88, 87, 65, 58, 42,
					27, 19
A - 62					252, 244, 223, 191, 182, 174, 163, 142, 128, 120, 89, 85, 62, 58, 40, 29, 27, 18

A# - 57					248, 232, 206, 195, 185, 168, 131, 122, 120, 118, 101, 93, 85, 82, 58, 57, 27

B - 55					244, 240, 232, 225, 205, 199, 179, 155, 129, 120, 118, 114, 58, 55, 27

C - 51					244, 240, 216, 209, 151, 138, 120, 106, 67, 58, 27, 18

c# - 47					249, 244, 222, 214, 207, 200, 182, 154, 120, 111, 109, 105, 98, 89, 75, 64, 58, 47, 30,27

D - 45					249, 244, 239, 221, 213, 202, 192, 186, 165, 156, 148, 134, 131, 120, 99, 94,
					91, 58, 45, 27, 24
D# - 43					255, 244, 239, 220, 204, 197, 184, 178, 158, 120, 108, 107, 100, 90, 83, 58, 43
					27
E - 40					244, 223, 206, 198, 191, 178, 172, 120, 103, 101, 97, 87, 84, 58, 40, 27, 18

F - 38					250, 244, 213, 182, 164, 159, 141, 133, 126, 123, 120, 89, 80, 58, 52, 38, 27, 24,
					20, 17

F# - 35					244, 238, 216, 182, 169, 152, 147, 120, 117, 106, 100, 89, 74, 58, 48, 27, 22


G - 33					251, 244, 187, 149, 144, 135, 131, 120, 70, 58, 33, 27



Solid note table:

AUDF1 taken from $2x 1.79 table

AUDF3 where (freq+4) mod 31=0

Solid note table 2:  AUDF1=AUDF3, from $2x 1.79 table

Here is that note table.  AUDF1 is taken from my POKEY note table, $2x @1.79 mhz clock.  It's a good starting point anyway.

  • Like 1

Share this post


Link to post
Share on other sites

Yes, running on real hardware, but my 600XL is basically like an 800XL, the 1064 has been attached as long as I can remember.

 

I have been samplng POKEY sounds & I love the way they sound with acoustic instruments. I've mostly been fiddling around with distortion / noise value 12 in my basic programs. Uncharted territory with high pass filters, for instance, and I will dig into some things mentioned on this thread as well!

Share this post


Link to post
Share on other sites
On 12/18/2020 at 12:23 AM, Synthpopalooza said:

Here is that note table.  AUDF1 is taken from my POKEY note table, $2x @1.79 mhz clock.  It's a good starting point anyway.

Sounds good! Obviously I have not checked all combinations by hand/ear, but especially with high values on the third channel, you get nice stable notes and even sort of chords with that 4th you mentioned, like C+E. And AUDF1==AUDF3 always works :) I noticed that the volume decreases a lot if you lower AUDF3 to less than half of AUDF1.

 

Edited by ivop

Share this post


Link to post
Share on other sites

A question regarding PE 1.1

 

- when I join channels one and three and am using the "pure tone" square waves $Ax at 1,79MHz, the output of the sound behaves very differently than I'm expecting.

 

When I do a basic routine with POKEing the AUDCTL to 80 (joining the channels and clocking channel 1 to 1,79MHz) and controlling the frequencies with the frequency bytes of channel 1 and 2, I get what I am expecting - I get 16 bit frequencies with one of the channels acting as the high byte / coarse control and the other one as low byte / fine tuning.

 

But, while using Pokey Explorer, something very different happens. I don't really understand what's going on, but certainly not just square waves at 16 bit frequency resolution. Am I getting something wrong?

Share this post


Link to post
Share on other sites

Another note, I don't know if this is a bug or a keyboard layout related issue - 

 

when I press shift+6 (& on my keyboard), supposed to increase AUDC3 by $10, AUDF4 increases instead by $10.

when I press shift+7 (' on my keyboard), nothing happens

when I press shift+8 (@ on my keyboard), supposed to increase AUDC4 by $10, AUDC1 increases instead by $10. Pressing shift+2 also increases AUDC1 by $10.

Edited by Probabilitydragon

Share this post


Link to post
Share on other sites

Sorry for maybe a silly question but I don't have much experience with Pokey programming.

One question about the UI, I understand that some values in the UI are the Pokey registers. What is the one marked with question marks?

 

gui.thumb.png.85b974f614e7e96aaa2357b86651f4ea.png

Share this post


Link to post
Share on other sites
3 hours ago, Probabilitydragon said:

A question regarding PE 1.1

 

- when I join channels one and three and am using the "pure tone" square waves $Ax at 1,79MHz, the output of the sound behaves very differently than I'm expecting.

 

When I do a basic routine with POKEing the AUDCTL to 80 (joining the channels and clocking channel 1 to 1,79MHz) and controlling the frequencies with the frequency bytes of channel 1 and 2, I get what I am expecting - I get 16 bit frequencies with one of the channels acting as the high byte / coarse control and the other one as low byte / fine tuning.

 

But, while using Pokey Explorer, something very different happens. I don't really understand what's going on, but certainly not just square waves at 16 bit frequency resolution. Am I getting something wrong?

You need join channel 1 and 2 or 3 and 4 and have one of them run at 1.79mhz to achieve 16 bit.

 

What you did was joining 1 and 3, which corresponds to high pass filter.

 

3 hours ago, Probabilitydragon said:

Another note, I don't know if this is a bug or a keyboard layout related issue - 

 

when I press shift+6 (& on my keyboard), supposed to increase AUDC3 by $10, AUDF4 increases instead by $10.

when I press shift+7 (' on my keyboard), nothing happens

when I press shift+8 (@ on my keyboard), supposed to increase AUDC4 by $10, AUDC1 increases instead by $10. Pressing shift+2 also increases AUDC1 by $10.

Sounds like a keyboard mapping issue on your setup, it behaved like expected for me.

 

3 hours ago, Probabilitydragon said:

...lots of questions today, another question: what exactly is two-tone mode?

Okay this one is currently unknown stuff for me :D, but I believe it's related to SKCTL bits to enable it, generating tones for the cassette interface if I am not mistaken.

 

3 hours ago, ilmenit said:

Sorry for maybe a silly question but I don't have much experience with Pokey programming.

One question about the UI, I understand that some values in the UI are the Pokey registers. What is the one marked with question marks?

 

gui.thumb.png.85b974f614e7e96aaa2357b86651f4ea.png

SKCTL I believe.

  • Like 1
  • Thanks 1

Share this post


Link to post
Share on other sites
17 minutes ago, VinsCool said:

You need join channel 1 and 2 or 3 and 4 and have one of them run at 1.79mhz to achieve 16 bit.

 

What you did was joining 1 and 3, which corresponds to high pass filter.

Yes, the filter is another thing, and I’ve experimented with it a bit, mostly in Pokey Explorer. 
 

Also I’ve played around with 16 bit frequencies in both BASIC and PE, and there is either a bug in the program or I don’t understand how it’s supposed to work. 
 

A value of 80 / $50 in AUDCTL corresponds to channel 2 joined to 1 and channel 1 clocked @1,79MHz AFAIK 🤔

Share this post


Link to post
Share on other sites
13 minutes ago, Probabilitydragon said:

A value of 80 / $50 in AUDCTL corresponds to channel 2 joined to 1 and channel 1 clocked @1,79MHz AFAIK 🤔

Yes. Press J and A.

 

Then set AUDF1/AUDC1/AUDF2/AUDC2 to 00 A0 28 AA. There's your tone. 28 is the MSB, 00 is the LSB. channel 1 is silent, channel 2 has volume.

 

  • Like 2

Share this post


Link to post
Share on other sites

...and my POKEing around in BASIC was based on chapter 7 at de re atari, and yeah, there it says channel one muted and channel 2 on - so my BASIC routines were correct

Share this post


Link to post
Share on other sites

I just tested it - yeah, now I get the sounds that I wanted. Thanks a lot for the help!

 

Just did a very quick test with filter modulated 16 bit $Ax bass frequencies - sounds awesome, opens up again a new world of sounds!

  • Like 2

Share this post


Link to post
Share on other sites
6 hours ago, Probabilitydragon said:

...lots of questions today, another question: what exactly is two-tone mode?

By writing $8B to SKCTL, two tone mode is engaged.  You play notes in the 2nd channel and the modulation in the first, set volume of second channel to 0 ... sometimes both channels can be played.

 

It's used for cassette I/O but I've found some musical uses for it too.  I've documented the $Ax modes, and working through one using $4x.

  • Like 3

Share this post


Link to post
Share on other sites

@ivop:  I'd like to enlist your help ...

 

The idea is, I need a sweep ran using these settings:  AUDCTL=$64, AUDC1=$2x, AUDC3=$00, NTSC

 

For AUDF3, start at $1B (decimal 27) and step it up by 31

For AUDF1, sweep from $00 to $FF.  Do this for each 31 step of AUDF3

 

These settings produce solid tones ... where AUDF3 is smaller the volume is lower.

 

Thanks.  :)

  • Like 1

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