Jump to content
IGNORED

Trying to make some PoKEY music!


VinsCool

Recommended Posts

4 hours ago, EnderDude said:

Ah yes, the cousin of croissant saw! ;)

Yep, speaking of which:

Improved the sawtooth tuning a lot, and compromised it a bit to reduce the hissing as much as possible.
Seems to hold up very well now!

 

tracker.obx
How to use: AUDCTL = $64, must play the same notes in CH1 and CH3 (use the same pattern to save time), CH3 will be automatically muted to not murder the ears.

 

What is next? Turns out the Triangle uses the exact same frequencies, but the resulting sound is also exactly 1 octave lower... and I will add code to allow this as well ?

Stay tuned for further updates.

  • Like 8
Link to comment
Share on other sites

Just now, MrFish said:

What's it supposed to do?

 

tracker.obx is the file used by RMT made in a certain way to work with the tracker UI. It's not intended to be ran on its own and therefore crashes the system when attempting to do that. In this instance, vin put essentially added another routine to its code to use two tables for CH1 and CH3 when the conditions AUDCTL = $64, and the same notes being played are met. Essentially, tracker.obx defines the behavior of the tracker driver.

  • Like 2
  • Thanks 1
Link to comment
Share on other sites

4 hours ago, EnderDude said:

tracker.obx is the file used by RMT made in a certain way to work with the tracker UI. It's not intended to be ran on its own and therefore crashes the system when attempting to do that. In this instance, vin put essentially added another routine to its code to use two tables for CH1 and CH3 when the conditions AUDCTL = $64, and the same notes being played are met. Essentially, tracker.obx defines the behavior of the tracker driver.

Alright, thanks for the explanation.

 

21 hours ago, VinsCool said:

Yep, speaking of which:

So, no binary for the new Pinky?

 

Link to comment
Share on other sites

2 hours ago, MrFish said:

So, no binary for the new Pinky?

Soon, for now I used it to test some of the code.

And I have managed to get a lot better now, so a binary will be made later once I'm done adjusting my new Sawtooth/Triangle code...

I'll post a tracker binary later as well, I have something to test before, but so far the results are very promising:
- Instrument AUDCTL $60 = Triangle output

- Instrument AUDCTL $60 + AUTOFILTER = Sawtooth

Both of which use the exact same frequencies table.

I had to code the Sawtooth a bit smarter to not break the already in place FILTER code, so I came with a pretty dumb approach for it.

First I look for the reg2 value, and if it's negative, I know FILTER is enabled.

Then I ORA the filter AUDCTL into the v_audctls variables.

immediately after I EOR the reg2 value with $80, effectively reversing the bit, and so it won't try to overwrite everything I did once the actual FILTER code is executed.

A plan for later too: CMD6 for Sawtooth, where $01 sets the wave to be normal, and $FF will invert it.

Why even do that? because I can, and that could lead to very interesting modulation.

Also that would literally be a matter of swapping the tables LSB pointers in memory, so that would not even hog the CPU when it will be executed.

Oh and also there is actually no need to manually put the notes in Channel 3 anymore either, the frequencies will be taken automatically if the Channel 1 has the criteria matching for executing that new block of code I inserted into the 1.79mhz pointer hijacking code heheh

 

So yeah, stay tuned, I will post some more experimental stuff soon, and post proper binaries later as well, since I have to build them manually for the time being.

Edited by VinsCool
forgot some details
Link to comment
Share on other sites

10 minutes ago, VinsCool said:

 

A plan for later too: CMD6 for Sawtooth, where $01 sets the wave to be normal, and $FF will invert it.

Why even do that? because I can, and that could lead to very interesting modulation.

 

If you can manage it at the correct speed, you get a real triangle sound.

The high clocking 1.79MHz filter allows to produce any resulting wave, as the part that builds the low tone is the interference of both channels, that gets built at the double clock of both channels (3.59MHz).  

I'm still wondering, if people sometimes will manage to do "digiziting" with this feature, as the resulting sound has a logical low pass filter.

  • Like 1
Link to comment
Share on other sites

Oh man I can feel my brain escaping from my physical envelope, and beg for help, because it's helpless.

Anyway have some.... experimental stuff.

  

sketch 68 - torpeur et ondulation delta.obx

I am sorry for eardrums damage, at this rate I'll give myself tinnitus, become tone deaf, and compose music using overtones only lol

Edited by VinsCool
Linked the video
  • Like 4
  • Haha 2
Link to comment
Share on other sites

wow, parts of that are nothing short of amazing... and the percussion section  is of note...

  now might be a good spot take some time and normalize your ears for a while with pure soothing tones to ward off tinnitus, overtones, and eventual tone deafness, the damage is not permanent.. yet... ear care is very important :)   lmao

Edited by _The Doctor__
  • Thanks 1
Link to comment
Share on other sites

6 hours ago, emkay said:

If you can manage it at the correct speed, you get a real triangle sound.

I can definitely get it to work like any commands, being once per player call, or up to 4 times per vbi under normal means... Because there is some room to get even more juice squeezed with some tweaking, but that's a silly idea for another day.

 

I will add the CMD6 reversal today however, it's a simple one to do.

6 hours ago, emkay said:

The high clocking 1.79MHz filter allows to produce any resulting wave, as the part that builds the low tone is the interference of both channels, that gets built at the double clock of both channels (3.59MHz).  

It's actually the opposite.

The difference between 2 high pitched frequencies result into a low pitched interference in my experiment.

Using the filter on top of it creates a PWM that rolls so fast it's forming a sawtooth, and plays an octave higher than the "triangle" resulting sound.

The frequencies used in both situations are identical, and the pitch could never go above the highest a single channel can go.

1 hour ago, _The Doctor__ said:

wow, parts of that are nothing short of amazing... and the percussion section  is of note...

  now might be a good spot take some time and normalize your ears for a while with pure soothing tones to ward off tinnitus, overtones, and eventual tone deafness, the damage is not permanent.. yet... ear care is very important :)   lmao

Thank you!

My ears are doing fine after a (short) night sleep.

Honestly I am not too happy of whatever composition I was going with this, it was mostly 2 sections I improvised, changed key, made up some melody, then most of the rest was sound design experimentation.

This could be an interesting song demo if I put some more thoughts into the composition, maybe.

My original material isn't terribly good usually.

 

Anyway yeah, as demonstrated, I am still squeezing some juice out of the redesigned patch16 driver hack, and I am not done yet!

I need to clean and optimise my code too, but in the sense of being functional, it surely is!

 

Does not look like much happened, but I have done a large amount of improvements now, started again from a ground zero state, but recreated the earlier hack a lot more efficiently, with a plethora of new features and improvements, and each time I think I am done and will bundle a new release, I find some new ideas I want to try! Lol

 

But yeah, I think once I am done with the few sawtooth changes, I will stop there because I will never end otherwise.

Other fixes/additions can wait for later.

 

Here's the short list of improvements compared to the initial Patch16 version I had made (I have released it as Patch16 beta8, but now it's not even comparable anymore so I moved to version 2 directly):

 

- Proper 16-bit support through AUDCTL bits, (some commands don't work properly like Portamento, but most like CMD2 and Vibrato, and Tables of Notes/Freqs work perfectly after I fixed them!

- New 16-bit tables for Distortion 2, A, C and E, with really good tuning thanks to my new formulae to predictively calculate the frequencies

- New Sawtooth tables, improved tuning and reduced the hissing when it was actually possible to not compromise the tuning too badly

- New feature: Triangle output using the Sawtooth tables

- Sawtooth and Triangle don't need external notes input, they will automatically use correct pitches as long as the requirements are met (work in progress)

- Sawtooth CMD6 command effects (planned, not tested yet)

- Manual tuning tables from the unused12th instrument byte (incomplete, RMT does not have the code to support this yet, but it does work in the player itself with modules I specifically have hacked for testing purposes

- major improvements of the hack itself, takes much less memory and cpu cycles, can be optimised very nicely with the FEATURES optimisations at assembly time (much optimisation still going to be done later, since I am not finished yet editing things)

- figured out a simple but effective way to improve the AUDCTL management considerably, to the point the 1 frame of delay problems are virtually gone now! (This may still need deeper testing, but as far as I am concerned, the delays are effectively no longer a problem for me, as I needed tight timing for certain things, and had got excellent results with my tests)

- CMD7 improvements for AUDCTL, SKCTL and Volume Only manipulation, things seem to work very nicely now

- Re-organisation of the memory and lookup tables to get much less redundancy, while also saving space and even cpu in some cases, such as dumb but simple BIT bytes table I have added into the mix

- and maybe more I forgot on top of my memory, but it's getting there now

 

The best of everything is despite the new code being loaded with more features and changes, it will still perform much better than the older code, even with all the extra stuff mixed into it, and masterfully exploited for really crazy sound design... At least, I have not been able to break anything unless it's already a known issue for a reason or another.

 

So yeah, I am excited for finishing off the version 2, update the RMT tracker to fix a few bugs, and bundle a new release in the near future :D

I am not yet close to have fulfilled all my ambitious ideas, hahaha!

  • Like 4
Link to comment
Share on other sites

25 minutes ago, VinsCool said:

 

It's actually the opposite.

The difference between 2 high pitched frequencies result into a low pitched interference in my experiment.

Using the filter on top of it creates a PWM that rolls so fast it's forming a sawtooth, and plays an octave higher than the "triangle" resulting sound.

 

It's not the opposite. It's just written from the opposite ;)

Ofcourse, the resulting wave is at low frequency. The Wave that is creating the result is based on 3.59MHz.

Link to comment
Share on other sites

8 hours ago, VinsCool said:

Oh man I can feel my brain escaping from my physical envelope, and beg for help, because it's helpless.

Anyway have some.... experimental stuff.

  

sketch 68 - torpeur et ondulation delta.obx 8.61 kB · 8 downloads

I am sorry for eardrums damage, at this rate I'll give myself tinnitus, become tone deaf, and compose music using overtones only lol

Ultrasonic earcleaner

  • Haha 2
Link to comment
Share on other sites

17 hours ago, MrFish said:

So, no binary for the new Pinky?

Now there is!

I have finally done my Sawtooth code to the point of being satisfied of what I got, so here's a new video upload, this time with the nice Sawtooth being tuned well, and even flex my new CMD6 hack: Reverse the waveform very easily :D 

Pinky Xmas Edition - Overworld 1 (Improved Sawtooth Version).obx

Edited by VinsCool
Linked the video
  • Like 8
Link to comment
Share on other sites

What if a PoKEY sounded like an Harpsichord...? (Fugue in C Major + 16-bit Pitch Accuracy Test)

This is probably one of my last tests before posting the patch16-2 driver ASM code with all the optimisations I was able to find.
So far everything seems to work with FEATURE definition assembly, and it's really making a difference too.

Here I want all features enabled at once for editing, and so far, so good, indeed!

 

If you want to play some tunes too, here's the current driver version I have, which has a few obscure bugs I fixed from my design, mainly very minor oversights I would not have noticed if I didn't actually spend time tracking down why some notes often "randomly" muted while I was testing some random modules earlier tonight, which was also from FEATURE definitions I had done wrong at first, like the CMD7 and the new FEATURES I have created specifically for my own design, but the conflicts seem to be resolved now.

I will look at this again tomorrow evening, but as far as I could tell for now, this may be as good as it could be for a while :D 

tracker.obx

And before anyone asks me why this is bloated, yes, I know, it is, lookup tables do take a lot of space, you see, I have no other option if I want acceptable tuning, hehe

Just remember once all the ASM sources with the proper FEATURE definitions for my driver patch are available, you can drastically reduce the memory and cpu usage by stripping away everything you don't actually need for an optimised music binary :P 

I have also the Distortion 6 now I have no idea what to do with it, but that's for another day.

Please don't try to use it for 16-bit, it's broken because of how I designed the alternative 16-bit code... for now.

I also don't have an export built but here's the module, just load it along with this driver version and it should sound exactly like what I recorded in the video.

 

fugue in c major stereo edit.rmt

  • Like 8
Link to comment
Share on other sites

  • 2 months later...

Heya, it's been a while since I gave this thread some attention :P 

 

I'm trying to make some original music again, so here's a sketch that I might or might not finish later, hehe ??
I'm having a little too much fun with the Filter making chords on a system that was clearly never designed for making them in the first place lol

 sketch 71 v9.xex

  • Like 3
Link to comment
Share on other sites

Is it just the perception?

Shouldn't  gen "C" always sound more in tune than gen "E"?

As Gen "C" is the original polycounter generator, gen "E" is just a spare part, using all and bsst fitting "corny bass sounds".  

But for some reason, gen "C" sounds more off than "E" . 

Same at the 1.79MHz clocking. The gen "E" sounds sound mostly as clean as some high toned sawtooth, while gen "C" sound jumpy. 

I also miss the 3rd orbit, as there are typically three different resulting waves produced by the polycounter basses... odd.

It's about those most unstable tones, but for some cases, a full available range could be more useful. 

 

 

And about the presentation. Letting the FX ascending in a progressive way might enhance things :)

  • Like 2
Link to comment
Share on other sites

1 hour ago, emkay said:

As Gen "C" is the original polycounter generator, gen "E" is just a spare part, using all and bsst fitting "corny bass sounds".  

But for some reason, gen "C" sounds more off than "E" . 

Both are a bit weird in relation to the frequencies they have available. It depends on the key whether the "C and E" are pretty much in tune or not. I assume Vinscool could tell you more about it, and with his upcoming new fork (:D) you can play with different tunings and transposing by tuning to a a higher or lower value.

 

Distortion $Cx has two nice timbres, but the downside is that the available frequencies do not match 12-TET for all 12 keys (or 24 if you count minor keys). And you have to tune your dist A tables to it, but that has been done already. And now adjustable in the upcoming fork release of Vinscool ;)  :D 

 

Edit: playing both timbres at the same time can also be tricky. They do not always play well together.

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

30 minutes ago, rdefabri said:

I love the stuff being done here, particularly with RMT.  Would these sounds be the same on a physical Atari 8-bit / POKEY?

Definitely.  The post directly above yours contains an XEX file.  Download that and play on the real machine to see.

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