ivop Posted October 14, 2020 Share Posted October 14, 2020 (edited) Here's the release of v1.0 of Pokey Explorer! Pokey Explorer is a tool to explore all possible register combinations of the Atari 8-bit Pokey chip. Here's the source, and some kind of manual This originated in this thread, where you can see how it came to be, and why There are two binaries. One for PAL and one for NTSC, because the sweep timing is different (edit: and the tuning notes are different!) Have fun and explore Please report any bugs you find. pokeyexp-v1.0-ntsc.xex pokeyexp-v1.0-pal.xex Edited October 14, 2020 by ivop 12 3 Quote Link to comment Share on other sites More sharing options...
archon800 Posted October 15, 2020 Share Posted October 15, 2020 There's no way to halt a sweep. Quote Link to comment Share on other sites More sharing options...
ivop Posted October 15, 2020 Author Share Posted October 15, 2020 7 hours ago, archon800 said: There's no way to halt a sweep. Thanks for the feedback. I knew I'd forgotten something. Probably add that for version 1.1. Right now, I'm thinking/working on a native batch version without any user interaction, so one can run 20 sweeps overnight. Quote Link to comment Share on other sites More sharing options...
ivop Posted October 16, 2020 Author Share Posted October 16, 2020 (edited) You can now hold START during a sweep to stop it prematurely. I chose not to include checks for START in every loop to not clutter the code anymore than necessary for this functionality. It responds once per play and gap time loop. Worst case (now) is 4s play time and 1s gap time. So it could take up to five seconds to abort the sweep. IMHO that's tollerable during experimentation with sweeps (average is 2.5s and that's with maximum play and gap time settings). After that, you prepare specific sweeps upfront anyway. pokeyexp-v1.1rc1-ntsc.xex pokeyexp-v1.1rc1-pal.xex Edited October 16, 2020 by ivop 2 Quote Link to comment Share on other sites More sharing options...
Synthpopalooza Posted October 17, 2020 Share Posted October 17, 2020 So as not to crowd your thread, I may start another, dedicated to mapping out settings using this tool ... thanks to this I've already gotten a bit of a head start on two more settings. Unless you are ok that I put such material in here ... Quote Link to comment Share on other sites More sharing options...
ivop Posted October 17, 2020 Author Share Posted October 17, 2020 You can post your results here, or in a thread of your own. Whatever you find most comfortable Quote Link to comment Share on other sites More sharing options...
Synthpopalooza Posted October 20, 2020 Share Posted October 20, 2020 In that case ... I have been working on AUDCTL=$64 and AUDC1=$Ax ... hi pass filter with both 1 and 3 set to 1.79 mhz. This makes sawtooth waves. There are several scales, which come about due to the offset between AUDF1 and AUDF3 ... so far I have scales for +/- 1, +/- 2, and will be investigating the 3 and 4 ratios. With the 1 offset, we start at a#0 and go up to about c3 before tuning errors start happening. At the 2 ratio, the range goes up an octave. At 3, the range goes up a 4th interval. At 4, we are at 2 octaves (about a2) ... haven't explored beyond there, but I have a pattern down and a note table is forthcoming. 1 Quote Link to comment Share on other sites More sharing options...
ivop Posted October 20, 2020 Author Share Posted October 20, 2020 (edited) Wow, that's a very interesting setting! This is plus/minus 8. C4/CC but CC/C4 is also a note. But for example, C3/CB is not nice to the ears, as you get a high whistle note, too. The resulting sawtooth is pretty nice. I hope it will be possible to find a proper table with all tones close to tuned and without whistle notes. The eventual table could mix different offsets and which AUDF is the higher value. Edit: wanted to do a sweep with an interval of $0808 (start at $040c or $0c04), but I don't support 16-bit intervals *sigh* feature request to myself Edited October 20, 2020 by ivop Quote Link to comment Share on other sites More sharing options...
Synthpopalooza Posted October 20, 2020 Share Posted October 20, 2020 I think there is a limit to the offset before the frequencies become unlistenable. Quote Link to comment Share on other sites More sharing options...
ivop Posted October 20, 2020 Author Share Posted October 20, 2020 Yes, there are many combinations that introduce high whistle notes, that interfer with our work This is what my ears say: +/-1 is always listenable +/-2 is listenable if the values are multiples of 2. the odd values have an out of tune harmonic. +/-3 similar, one out of three is a clear sawtooth (e.g. $6568, $6265), the rest is meh... +/-4 is only without disharmonics for multiples of 4 and both least significant bits set to zero. +/-8 same as 4, but three bits set to zero +/-16 similar, but four bits.... The lower frequencies are more subject to whistle notes, and the bigger the offset, the sooner it starts when you increase the values and lower the frequency. Bottom line: we need 16-bit intervals for sweeps. An interval of $0101, and start with $0001 or $0100, and the same for $0202, $0303, etc... intervals with matching start values. These sawtooths really sound good, without the low-pass filter muffling we know from some other soundchip Quote Link to comment Share on other sites More sharing options...
ivop Posted October 20, 2020 Author Share Posted October 20, 2020 (edited) +/-5 also works, $5b60, $6065, $656a, etc... +/-6 are the same as +/-3 +/-7 prime! $5e65, $656c, $6c73, $737a, and so on 8 and 16 overlap with 4, (edit: and 2!) 9 and 12 overlap with 3. 10 and 15 overlap with 5. That leaves us: +/-11 prime. $7580, $808b, $8b96, and so on (interval is $0b0b) and +/-13 prime. $7e8b, $8b98, $98a5, interval $0d0d Edit: next prime is 17. $95a6, $a6b7, $b7c8, $c8d9, etc.. interval $1111 Final edit: reverse 16-bit is also without disharmonics, i.e. both $7580 and $8075 sound clean (interval $0b0b), but if my ears don't fool me, they are not the same frequency. SO, bottom line is see previous post Edited October 20, 2020 by ivop 1 Quote Link to comment Share on other sites More sharing options...
ivop Posted October 20, 2020 Author Share Posted October 20, 2020 I enabled 16-bit intervals. Most of the code was already prepared for that. Here's a sweep of one of synthpopalooza's discoveries. Filter 1+3, 1 and 3 @1.79MHz, 16-bit sweep of 1+3, start value $0001, interval $0101, short play time, no gap, just an example Notice how after $8081 you slowly hear a high note that messes things up in the bass range But, here's v1.1rc2 with 16-bit intervals pokeyexp-v1.1rc2-ntsc.xex pokeyexp-v1.1rc2-pal.xex sweep-synth-0101.mp3 3 Quote Link to comment Share on other sites More sharing options...
ivop Posted October 20, 2020 Author Share Posted October 20, 2020 (edited) Here are the settings I think are all without disharmonics: (n) start_value --> interval (1) $0001 --> $0101 (n=prime) start_value --> interval (2) $0002 --> $0202 ($0001 --> $0202 doesn't sound that bad, too) (3) $0205 --> $0303 (5) $0106 --> $0505 (7) $030a --> $0707 And all the sweeps work with both 16-bit and reverse 16-bit! (where $030a turns into $0a03 for example, for prime number 7). I don't think the next primes (11,13,17) are useful. Edit: All sweeps eventualy end up with that high pitched overtone I mentioned earlier. It depends on your age when you start hearing it Edited October 20, 2020 by ivop Quote Link to comment Share on other sites More sharing options...
Synthpopalooza Posted October 21, 2020 Share Posted October 21, 2020 So, its now just a matter of taking these sweeps, mapping them, and sorting out which frequencies match closest to get an optimal note table. Quote Link to comment Share on other sites More sharing options...
emkay Posted October 21, 2020 Share Posted October 21, 2020 8 hours ago, ivop said: I enabled 16-bit intervals. Most of the code was already prepared for that. Here's a sweep of one of synthpopalooza's discoveries. Filter 1+3, 1 and 3 @1.79MHz, 16-bit sweep of 1+3, start value $0001, interval $0101, short play time, no gap, just an example Notice how after $8081 you slowly hear a high note that messes things up in the bass range But, here's v1.1rc2 with 16-bit intervals pokeyexp-v1.1rc2-ntsc.xex 6.63 kB · 5 downloads pokeyexp-v1.1rc2-pal.xex 6.63 kB · 5 downloads sweep-synth-0101.mp3 522.04 kB · 16 downloads This is only not shown in RMT, because RMT doesn't support 16 bit values. At least it shows the possibility of wave shaping , forward sawtooth, backward sawtooth.. and so on, at 16 bit resolution. Pulses a "3.58 MHz" allow clean mid to high range waves of all possiblities. "digital playback via hardware! given. Quote Link to comment Share on other sites More sharing options...
ivop Posted October 21, 2020 Author Share Posted October 21, 2020 12 hours ago, Synthpopalooza said: So, its now just a matter of taking these sweeps, mapping them, and sorting out which frequencies match closest to get an optimal note table. Yes, "just" that 12 hours ago, emkay said: This is only not shown in RMT, because RMT doesn't support 16 bit values. Yeah, that's a pity. But a new player routine will be written. Expect the tracker late 2025 or early 2026 1 2 Quote Link to comment Share on other sites More sharing options...
ivop Posted October 21, 2020 Author Share Posted October 21, 2020 1 hour ago, ivop said: But a new player routine will be written. This part was not joking BTW. Either Synthpopalooza, or I, or both, or together, or somebody else, will probably write a new player that can handle all these exotic settings and note tables. Except for STIMER reset and SKCTL (reset and two-tone mode), everything can be captured to SAP-R and replayed with dmsc's LZSS player. ~1140 cycles per frame. So the new player does not have to be optimized for performance, but for features And then implementing a tracker is an exersice for the reader 6 Quote Link to comment Share on other sites More sharing options...
foft Posted October 21, 2020 Share Posted October 21, 2020 A new tracker that supports such features would be awesome. I was wondering ... Could openmpt be used along with sample packs like this to compose for pokey/sid? http://little-scale.blogspot.com/2009/01/atari-pokey-noise-sample-pack.html?m=1 http://little-scale.blogspot.com/2009/10/commodore-64-sid-8580-basic-sample-pack.html?m=1 Then a pattern replay routine could be used that does everything mod like except the samples, adjusting pokey/sid settings each frame instead to match the samples? 1 Quote Link to comment Share on other sites More sharing options...
ivop Posted October 21, 2020 Author Share Posted October 21, 2020 I decided to keep the version number the same for the new batch processor, so here is v1.1rc2 of Pokey Batch Explorer. The batch sweep settings are seperated from the main source in sweep.s. Spoiler ; SWEEP 1 ; ; Synthpopalooza's 1+3 filter, 1 and 3 @1.79MHz ; Interval of $0101 and reverse 16-bit ; SWEEP 2 ; Plain $Ax sweep SWEEP 3 ; $8x, poly counter 9-bit, channel 1 clock 1.79MHz, 8-bit sweep ; $03 + n*7 Audacity screenshot of amplitudes: You can clearly see that during the "plain $ax" sweep, the volume increases when the frequency decreases. I suppose that's what emkay means when he complains about volume problems first-batch-3-sweeps.mp3 pokeyexp-batch-v1.1rc2-ntsc.xex pokeyexp-batch-v1.1rc2-pal.xex 1 Quote Link to comment Share on other sites More sharing options...
ivop Posted October 21, 2020 Author Share Posted October 21, 2020 (edited) 2 hours ago, foft said: A new tracker that supports such features would be awesome. I was wondering ... Could openmpt be used along with sample packs like this to compose for pokey/sid? http://little-scale.blogspot.com/2009/01/atari-pokey-noise-sample-pack.html?m=1 http://little-scale.blogspot.com/2009/10/commodore-64-sid-8580-basic-sample-pack.html?m=1 Then a pattern replay routine could be used that does everything mod like except the samples, adjusting pokey/sid settings each frame instead to match the samples? If I understand it correctly, that's a sample pack for a MOD tracker. If you carefully sequence your MOD file to not use more than 3 (SID) or 4 (Pokey) channels at the same time, you can indeed replay the same patterns and song data on a real machine. I think both Goat Tracker (C64) and Raster Music Tracker (Atari) can import MOD song and pattern data. But after that, you have to create your own instruments. Edited October 21, 2020 by ivop Quote Link to comment Share on other sites More sharing options...
rensoup Posted October 21, 2020 Share Posted October 21, 2020 2 hours ago, ivop said: If I understand it correctly, that's a sample pack for a MOD tracker. If you carefully sequence your MOD file to not use more than 3 (SID) or 4 (Pokey) channels at the same time, you can indeed replay the same patterns and song data on a real machine. I think both Goat Tracker (C64) and Raster Music Tracker (Atari) can import MOD song and pattern data. But after that, you have to create your own instruments. I think he means using openmpt with a standard Pokey sample pack which mimics your note tables to avoid having to write a new tracker and instead 'simply' write an openmpt player on the A8 (since you were planning to write a player anyway)? 1 Quote Link to comment Share on other sites More sharing options...
rensoup Posted October 21, 2020 Share Posted October 21, 2020 (edited) Would it be possible to use opentmpt + a sample pack and simply export the raw pokey data ( possibly LZSed ) ? That way it would be possible to export fancy stuff like stereo @ 400hz and it would be playable on a real machine. Edited October 21, 2020 by rensoup Quote Link to comment Share on other sites More sharing options...
Synthpopalooza Posted October 21, 2020 Share Posted October 21, 2020 3 hours ago, ivop said: I decided to keep the version number the same for the new batch processor, so here is v1.1rc2 of Pokey Batch Explorer. The batch sweep settings are seperated from the main source in sweep.s. Reveal hidden contents ; SWEEP 1 ; ; Synthpopalooza's 1+3 filter, 1 and 3 @1.79MHz ; Interval of $0101 and reverse 16-bit ; SWEEP 2 ; Plain $Ax sweep SWEEP 3 ; $8x, poly counter 9-bit, channel 1 clock 1.79MHz, 8-bit sweep ; $03 + n*7 Audacity screenshot of amplitudes: You can clearly see that during the "plain $ax" sweep, the volume increases when the frequency decreases. I suppose that's what emkay means when he complains about volume problems first-batch-3-sweeps.mp3 1.89 MB · 3 downloads pokeyexp-batch-v1.1rc2-ntsc.xex 5.37 kB · 3 downloads pokeyexp-batch-v1.1rc2-pal.xex 5.37 kB · 2 downloads Yes, this volume issue occurs with most settings involving hi pass filter. I noticed it too. This can be used to advantage tho ... for example, putting in delay echoes without altering the volume settings. Quote Link to comment Share on other sites More sharing options...
Synthpopalooza Posted October 22, 2020 Share Posted October 22, 2020 I did some experimenting using SAP and a music routine that involves using frequency and duration on each channel. It even worked with SKCTL. Quote Link to comment Share on other sites More sharing options...
Synthpopalooza Posted October 22, 2020 Share Posted October 22, 2020 http://atarionline.pl/forum/comments.php?DiscussionID=5365&page=1#Item_48 A thread I started on atarionline.pl ... it has some info on aubiopitch as well. Might be of use ... 1 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.