ivop Posted September 16, 2020 Share Posted September 16, 2020 And perhaps we can also generate brown noise in some way? Spoiler Brown noise is an urban myth that certain combinations of frequencies make everybody in the room shit their pants uncontrollably 1 Quote Link to comment Share on other sites More sharing options...
Synthpopalooza Posted September 16, 2020 Author Share Posted September 16, 2020 Distortion settings on the 2nd silent channel do not affect the sound on the first channel, only the frequency settings. Quote Link to comment Share on other sites More sharing options...
ivop Posted September 16, 2020 Share Posted September 16, 2020 14 minutes ago, Synthpopalooza said: Distortion settings on the 2nd silent channel do not affect the sound on the first channel, only the frequency settings. Thanks! Is that also the case if you reverse the silent/non-silent channels? My question is, which distortion is dominant in 16-bit mode and does it matter which one is silent? And what about high pass filtering where channel 1 and 3 (or 2 and 4) use different distortions? Does that matter? Looking forward to your pokey test program Quote Link to comment Share on other sites More sharing options...
Synthpopalooza Posted September 16, 2020 Author Share Posted September 16, 2020 In either combination of 16-bit mode, the distortion of the channel being played takes precedence, and is modified by the frequency setting of the other channel. In hi-pass and two-tone mode, this is also true, however there are possibilities where the normally silent channel can be played to add to the waveform. In these cases, the distortion setting of the silent channel usually has to match that of the other channel for the modulation to work. The one exception so far to this, is $4x @1.79/64khz in two tone mode. Because the silent 2nd channel actually takes its carrier frequency values from the standard $Cx 64khz 8-bit table, if you want to play that channel atop the $4x channel, you must play it in $Cx Clocks are another issue. In 16-bit mode, 1.79 mhz will affect both channels, so there are only three clock settings. In two-tone and hi-pass, the 1.79 clock is applied on top of the base 64 or 15khz clock, making for 4 possible combinations. In hi-pass, 1.79 can be applied on either channel, making for 7 possible combinations when doing hi pass on the 0 and 3 channels. Two tone also does not work in tandem with 16-bit. In hi-pass plus two tone, only the 0 and 2 settings are of use, unless you are also playing the 1 channel atop the 0, in which case the 1+3 modulation can be added. In $Ax this is easy to implement as I have those modes mostly already documented. Quote Link to comment Share on other sites More sharing options...
Synthpopalooza Posted September 16, 2020 Author Share Posted September 16, 2020 (edited) So, the best way of proceeding, is documenting the basic filtered modes (16-bit, Reverse 16, two-tone, hi-pass), before applying the hi-pass to either of these. I have already managed to eliminate some combinations already ... e.g. Reverse 16 will only work with $2x and $4x in 1.79mhz mode, and I believe the same applies to $8x or $0x plus poly9. In $Cx Reverse 16, we can also ignore the 15khz clock as well, I think, leaving 64 and 1.79 as the valid settings. Edited September 16, 2020 by Synthpopalooza 1 Quote Link to comment Share on other sites More sharing options...
Synthpopalooza Posted September 16, 2020 Author Share Posted September 16, 2020 Another thing I might do is provide my tables for the $4x and $8x poly9 Reverse 16-bit settings to have you check them for accuracy. Basically these settings make warbling guitar sounds, with an adjustable vibrato controlled from the second frequency channel. There are several ratios between AUDF1 and AUDF2 which make these, but I calculated the optimum settings that make the greatest note range. I will also provide the $4x 1.79 two-tone mode settings I got so far. I was able to deduce a pattern, so we basically have the default $Cx 64khz scale in 2nd channel, and the modulations are done in the first channel based on either mod 3, mod 5, or non mod. With mod 5, it's basically a fuzz box distorted $Cx standard bass scale. Quote Link to comment Share on other sites More sharing options...
Synthpopalooza Posted September 17, 2020 Author Share Posted September 17, 2020 OK, this is a quick and dirty program. Line 21 is where the settings are set. This one has Reverse 16 $4x @1.79 mhz. Change this to whatever you need. The arrows step through the settings, while plus and minus will step through the standard $Ax square table for comparison. Space bar will switch to 15 khz mode to test bass frequencies. I used a multiplier of 1.016 to correct for 15 khz mode. FREQTEST.TUR 1 Quote Link to comment Share on other sites More sharing options...
Synthpopalooza Posted September 17, 2020 Author Share Posted September 17, 2020 And some note tables ... atari distorted guitar.txt AUDCTL=$40 SKCTL=$8B AUDC1=$4x AUDC2=$00.txt AUDCTL=$50, AUDC0=$4x by octave number.txt AUDCTL=$50, AUDC0=$4x, AUDC1=$00, table optimized for new RMT patch.txt Quote Link to comment Share on other sites More sharing options...
Synthpopalooza Posted September 17, 2020 Author Share Posted September 17, 2020 Another thing I will do is run through a preliminary list of all the as-yet unmapped settings in reverse 16-bit, 2-tone, and hi-pass to determine which ones will be suitable for music, then write these ones down. This will at least give us a good starting point. Once these are finished, then we go to adding hi-pass to these settings. Quote Link to comment Share on other sites More sharing options...
Synthpopalooza Posted September 17, 2020 Author Share Posted September 17, 2020 The other caution: There are some settings in the $2x (mod 32 I think) or $Cx/$4x (mod 5), and maybe even in the $0x/$8x plus poly9, where such frequencies will intermittently generate a tone or silence depending on polycounter settings. Any automated program for dumping tones to .wav will need to take this into account. Quote Link to comment Share on other sites More sharing options...
Synthpopalooza Posted September 17, 2020 Author Share Posted September 17, 2020 Oh and one more note on the reverse 4x RMT table: c1 (126,212,50) Means that AUDF0=126, AUDF1=212 and can be varied by +/- 50 to introduce a warbling vibrato effect. This method also works on the $8x plus poly9 reverse 16 table. The higher up the note scale you go, the smaller this range gets, until you get to 0 ... then the steady tones drop out, then notes get dropped from the scale and tuning errors abound. Quote Link to comment Share on other sites More sharing options...
Synthpopalooza Posted September 18, 2020 Author Share Posted September 18, 2020 So, a short list of the modes that need documenting... omitting the ones that I believe do not produce usable musical tones: Reverse 16-bit: $0x plus poly9 @1.79mhz (?) $2x @1.79 mhz $2x @64 khz (?) $4x @1.79 mhz (documented) $8x plus poly9 @1.79 mhz (documented) $Ax @64khz (documented) $Ax @1.79 mhz $Ax @15 khz (?) Two-tone: $0x plus poly9 @1.79 mhz (?) $2x @64khz $2x@64khz + 1.79 mhz $4x @64khz + 1.79 mhz (partially documented) $4x @64khz (?) $4x @15.khz + 1.79 mhz $8x plus poly9 @64 khz + 1.79 mhz $Ax @64khz (documented) $Ax @15khz (documented) $Ax @64khz + 1.79 mhz (documented) $Ax @15khz + 1.79 mhz $Cx @64khz $Cx @64khz + 1.79 mhz $Cx @15khz + 1.79 mhz (?) $Cx @15khz (?) Hi-pass ... most of these are "?" $0x plus poly9... 64+64, 64+1.79, 1.79+64, 1.79+1.79 (?) $2x 64+64, 64+1.79, 1.79+64 $2x 1.79+1.79 (partially documented) $4x 1.79+1.79 $4x 64+1.79, 1.79+64 (?) $8x plus poly9 all settings except 15khz (?) $Ax 64+64 (documented) $Ax 15+15 (documented) $Ax 1.79+1.79, 1.79+64, 64+1.79, 1.79+15, 15×1.79 $Cx all settings not using 15 khz "?" indicates the setting needs to be tested to see if usable music tones exist. In addition, $8x and $0x using poly17 should be investigated for useful percussive sounds. I found some interesting ones using the two-tone mode in $8x poly17 1 Quote Link to comment Share on other sites More sharing options...
Synthpopalooza Posted September 18, 2020 Author Share Posted September 18, 2020 (edited) duplicate post deleted ... damn phone ? Edited September 18, 2020 by Synthpopalooza Quote Link to comment Share on other sites More sharing options...
ivop Posted September 19, 2020 Share Posted September 19, 2020 (edited) Your Turbo Basic program was a little too spartan for my taste, so I started out writing my own tool anyway Here's a screenshot of its GUI. Keys F and G toggle the filters ("gilter") Keys J and K toggle channel join ("koin") Keys 1, 2, 3, 4, 5, 6, 7, 8 increase pokey register values Keys Q, W, E, R, T, Y, U, I decrease pokey register values Hold shift to increase/decrease by $10 P, C, A, D control the remaining AUDCTL bits M toggles two-tone mode S will sweep one of the 8-bit values from $00 to $FF(settable start/end/step/pause time) Z will zweep one the 16-bit pairs from $00 to $FFFF (settable start/end/step/pause time) Record WAV with emulator The GUI is fully functional, i.e. elements can be turned on/off. Now I need to connect that to routines that handle the key presses and act accordingly. But first I have to see the final of the Tour de France time trial! Edit: and hold control to match AUDF frequencies to the nearest $Ax. Further idea is to add a second pokey, but for now this should suffice. Edit2: the CTRL bit for $Ax is not going to work with K: handler, but I'll figure out another way to incorparate a tuning table... stay... tuned Edited September 19, 2020 by ivop 4 1 Quote Link to comment Share on other sites More sharing options...
Synthpopalooza Posted September 19, 2020 Author Share Posted September 19, 2020 (edited) Cool! I would probably institute the standard 16-bit $Ax table as a reference, since it's better tuned. Can't wait to play with it! Also, you could put in a polycounter reset for those settings that make intermittent silence like the $Cx and $2x settings. Edited September 19, 2020 by Synthpopalooza Quote Link to comment Share on other sites More sharing options...
Synthpopalooza Posted September 19, 2020 Author Share Posted September 19, 2020 Oh and I just thought ... 16 bit won't work if testing hi-pass, so maybe an alternating 15khz/64khz table like I had. I am at work now ... want to have a play though. So, how do we then further automate this from a wave recording? How does this FFT stuff work? Quote Link to comment Share on other sites More sharing options...
ivop Posted September 19, 2020 Share Posted September 19, 2020 Here's what I have so far: https://github.com/ivop/pokey-explorer/blob/master/pokeyexp.s handle_keypress is something for tomorrow or the day after. First, I'm going kayaking with my brother tomorrow 8-bit or 16-bit tuned tables and shortcuts to play the $Ax notes is something for after that. Quote Link to comment Share on other sites More sharing options...
ivop Posted September 19, 2020 Share Posted September 19, 2020 1 hour ago, Synthpopalooza said: How does this FFT stuff work? https://en.wikipedia.org/wiki/Fast_Fourier_transform http://www.fftw.org/ In a nutshell, you sample a "window" of a certain number of audio samples. You run a matrix transformation on that array of samples, and end up with a bunch of "frequency bins" of varying intensity. You can then determine the dominant frequency. 1 Quote Link to comment Share on other sites More sharing options...
Synthpopalooza Posted September 19, 2020 Author Share Posted September 19, 2020 (edited) Awesome ... might have to mess with that. What is a good software for Windows that can do this? Edited September 19, 2020 by Synthpopalooza Quote Link to comment Share on other sites More sharing options...
ivop Posted September 20, 2020 Share Posted September 20, 2020 17 hours ago, Synthpopalooza said: What is a good software for Windows that can do this? I have no idea. I'm not a Windows person. And as for FFT/DFT, I know the theory, somewhat, but have never used it in practice. My idea is to write a simple unix style filter app with the fftw library, where you can do fftwapplication <pokey.wav >frequencies.csv Not sure if I'll continue Pokey Explorer tonight. I'm knackered after kayaking this afternoon Quote Link to comment Share on other sites More sharing options...
ivop Posted September 20, 2020 Share Posted September 20, 2020 (edited) Couldn't help it. Here's an updated version. All visible UI items (inverse video keys) are functional now. No sweeps yet, but I hid that line https://github.com/ivop/pokey-explorer edit: remember, holding shift with 1-8/Q-I increases/decreases by $10 (16). So many weird sounds to be found. Perhaps I should add a random button Edited September 20, 2020 by ivop Quote Link to comment Share on other sites More sharing options...
Synthpopalooza Posted September 20, 2020 Author Share Posted September 20, 2020 So a question: Will we be able to do 16-bit sweeps on the hi pass channels (0+2, 1+3) as well as the 16-bit and 2-tone channels? The good news is, on the hi pass ones, I think we can work from the existing 8-bit tables on those distortions so that makes the job a bit easier. Quote Link to comment Share on other sites More sharing options...
ivop Posted September 20, 2020 Share Posted September 20, 2020 9 minutes ago, Synthpopalooza said: So a question: Will we be able to do 16-bit sweeps on the hi pass channels (0+2, 1+3) as well as the 16-bit and 2-tone channels? Yes, the idea is that 16-bit "Z"weeps can be done on any combination of channels. Attached is the latest version of "pokey explorer". Downloading the xex from github is not reliable. Would be nice if it could be tested on real hardware. I have not been able to do that, because my SIO2PC PC's monitor died recently. And so did my card reader a while ago. Can't put files on my SIDE2 CF card. pokeyexp.xex Quote Link to comment Share on other sites More sharing options...
Synthpopalooza Posted September 20, 2020 Author Share Posted September 20, 2020 I may get a chance to tonight. Fingers crossed Quote Link to comment Share on other sites More sharing options...
ivop Posted September 22, 2020 Share Posted September 22, 2020 (edited) On 9/21/2020 at 12:33 AM, Synthpopalooza said: I may get a chance to tonight. Fingers crossed Hmmm. I developed this with atari800. Not tested with Altirra or real hardware. Yesterday I finally upgraded from debian 9 (stretch) to debian 10 (buster). A lot of grief (lost network, lost graphics, etc...) but all fixed and in the end I'm satisfied with my new setup. Now I ran pokeyexp.xex with wine on Altirra (installed the latest version 3.90) and it does not register any key presses. I have no idea why. To any of the 7 downloaders, does it work on Altirra on Windows and/or does it work on real hardware? It's pretty weird. I use a few CIO macros ported over from the ATMAS-II library. Used it for midimon. It's basically OPEN #1,4,0,"K:" and then Get each character one by one. It works on atari800. So am I doing something wrong or is it just my b0rked wine Altirra? Edited September 22, 2020 by ivop 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.