Jump to content
IGNORED

Trying to make some PoKEY music!


VinsCool

Recommended Posts

1 hour ago, Stephen said:

Forget correct, we just want in tune :)

Speaking of which, I was experimenting with Just Intonation based on keys yesterday-- however I have nothing yet to show because things did not seem to work as nicely as anticipated.

However, I just managed to hack Analmux's RMT Patch8 work into my own version, and so far everything seems to work, feels really good to be able to use a melodic Distortion 2 with proper tuning directly in the editor now lol
I also just discovered the Distortion A table inside of Patch8 is literally the exact same one I made up recently, based on B4=499.4hz so it could also work being the lowest (FF) note :D 

More on that later once I can get of my own tuning in action with it.

  • Like 2
Link to comment
Share on other sites

My own RMT hack running the Analmux Patch8 stuff... seems to work pretty well!
So hopefully I can replace the tables with my own and use the optimised space to have more than just 3 tables now :D 
 


I'll post my files later once I am 100% sure I broke nothing important! lol
 

  • Like 6
Link to comment
Share on other sites

Hey guys, so I finished this up tonight, I successfully ported over the entire RMT 1.28 Patch8 into 1.30, with some tiny changes of my own.
Other than that they should be functionally 100% identical :) 

Now I got the groundwork done for editing my own tables over it, so hopefully I can share something useful soon!
any suggestions are welcome, for now I'm thinking about what to change and what to add :D 

 

 

rmt130p8.zip

  • Like 3
Link to comment
Share on other sites

2 hours ago, VinsCool said:

Hey guys, so I finished this up tonight, I successfully ported over the entire RMT 1.28 Patch8 into 1.30, with some tiny changes of my own.
Other than that they should be functionally 100% identical :) 

Thanks. 

I'll check it out :)

  • Like 1
Link to comment
Share on other sites

A quick little cover of a nice little tune for some tests!
Pinky Xmas Edition - Overworld 1 Atari PoKEY Cover

For this one I used the 15khz clock, Croissant Sawtooth lead, Filter for the arps, and it was done in my patched version of RMT, then coverted with the RMT 1.28 patch 8 tables from RMT2LZSS.

 

Everything worked perfectly :D 

 

Pinky - Xmas Edition - Overworld 1 Final.rmt Pinky - Xmas Edition - Overworld 1 Final.xex

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

...so back to hacking RMT again, based on the Analmux Patch 8 I ported into 1.30 yesterday.
I figured out some interesting stuff that will become incredibly useful soon.
 

Spoiler

Original Patch 8 Mapping:

RMT          PoKey        Bits:  Clock:    Number     Instrument
distortion:  distortion:                   of bytes:  name:

0            0            8      x         x          White noise
2            2            8      1.79 MHz  48         Poly 5 / Generator 2
4            A            8      1.79 MHz  36         Sawtooth / Triangle
6            C            8LSB   1.79 MHz  32         Clarinet (Poly 4), LSB
8            A            8HSB   1.79 MHz  64         Harmonic square undertones of Clarinet / Distortion guitar, HSB
A            A            8      15 kHz    48         Pure bass
A            A            8      1.79 MHz  12         Pure flute
C            C            8      1.79 MHz  31         Poly 4 (degenerate 1)
C            C            8      1.79 MHz  17         Poly 4 (degenerate 3)
E            8            8LSB   1.79 MHz  32         Distortion guitar (Poly 9), LSB


Useful HEX informations (Original Patch 8):

I see 5 "unique" tables...

Distortion 0 uses table 00 dist 00
Distortion 2 uses table 3C dist 20
Distortion 4 uses table 9C dist A0
Distortion 6 uses table 00 dist C0
Distortion 8 uses table C0 dist A0
Distortion A uses table 00 dist A0
Distortion C uses table 6C dist C0
Distortion E uses table 00 dist 80

Apparently, I can use ANY value between 00 and FF to start my tables!
Gonna be incredibly useful...


Notes tables and mapping:

00 -> frqtabpure-frqtab
3C -> frqtabpoly5-frqtab
9C -> frqtabsawtooth-frqtab
C0 -> frqtabcldghi-frqtab
6C -> frqtabpoly4-frqtab
?? -> frqtabcldglo   ;I need to identify this one... D0? 06? A8? I need to confirm...

If I could find how to call that table, I will be able to force it anywhere without forcing 16-bit (joinX+Y)...
Clearly it could be done since the hi byte table can be used.

... well fuck, I cannot call it :C so I have 64 bytes I need to "force" in 16-bytes.
BUT I can use any of the following 256 bytes in any way I want as "tables".


-------------------------------------------------


;Current Patch 8 tables, all notes start on B-...


;64 bytes, Lo table, can only be used when "forced 16-Bit mode" is enabled.

;Clarinet Lo (Distortion C)
73 DE 58 F0 97 4D 21 04 E7 E8 F8 17
36 73 B0 FC 48 A3 0D 77 F0 78 F1 88
1F B6 4D F3 A8 4E 03 B8

;Distortion Guitar Lo (Distortion 8)
B1 B5 B9 BC   ;starts on G-
C0 C3 C6 C9 CC CE D1 D3 D5 D7 D9 DB
DC DE E0 E1 E2 E4 E5 E6 E7 E8 E9 EA
EB EC EC ED


;256 bytes, can be used ANYWHERE, to make up "tables" in all RMT Distortions (0,2,4,6,8,A,C,E)
;Offset goes in order, so 00 to FF is where a "table" can start.

;Pure Bass (Distortion A), 00
FF F1 E3 D6 CA BF B4 AA A0 97 8F 87
7F 78 71 6B 65 5F 5A 54 50 4B 47 43
3F 3B 38 35 32 2F 2C 2A 27 25 23 21
1F 1D 1C 1A 18 17 16 14 13 12 11 10 

;Pure Flute (Distortion A), 30
E0 D3 C7 BC B1 A7 9D 94 8C 84 7C 75

;Poly5 (Distortion 2), 3C
E7 DA CE C2 B7 AC A2 99 90 88 80 79
72 6B 65 5F 5A 54 4F 4B 46 42 3E 3B
37 34 30 2D 2B 28 26 23 21 1F 1D 1C
19 18 16 15 13 12 11 10 0F 0E 0D 0C

;Poly4 Degenerate 1 (Distortion C), 6C
F0 E1 D5 CA BD B2 A8 9D 96 8E 84 7C
76 70 69 63 5D 57 52 4E 49 45 40 3C
39 36 31 30 2D 2A 27

;Poly4 Degenerate 3 (Distortion C), 8B
EF E3 D4 C8 BC   ;starts on F#
B3 A7 9E 95 8C 86 7D 77 6E 68 62 5C

;Sawtooth (Distortion A), 9C
74 71 6E 6A 67 64 61 5E 5B 59 56 53
51 4E 4C 4A 48 45 43 41 3F 3D 3B 3A
38 36 35 33 31 30 2E 2D 2B 2A 29 27

;Clarinet Hi (Distortion A), C0
1C 1A 19 17 16 15 14 13 11 10 0F 0F
0E 0D 0C 0B 0B 0A 0A 09 08 08 07 07
07 06 06 05 05 05 05 04

;Distortion Guitar Hi (Distortion A), E0
8F 87 7F 79   ;starts on G-
71 6B 65 5F 59 55 4F 4B 47 43 3F 3B
39 35 31 2F 2D 29 27 25 23 21 1F 1D
1B 19 19 17

 

All of that stuff also matches the ASM code shared with Patch 8, so I am pretty sure I am on the right track.
That also means I could in theory hack a normal RMT version (EG: my own tuning patch) to have more tables with this knowledge in mind!

 

TLDR; I found out that I can pretty much juggle with 256 bytes of notes "tables" in any way I want, while I am stuck with 64 bytes that can only be called when "forced 16-bit mode" is enabled, which is a little frustrating, but definitely NOT unusable.
In fact, I could improve many of Patch 8 ideas into my own with this knowledge in mind.


So now, I have a really good lead for where to star hacking in my own tables with very little stress other than evenly spreading 256 bytes to all of them, while 16-bit Lo can only be 64 bytes, I can very easily make use of it the same way Analmux did.

---

So unrelated to that I found a mistake in my cover from yesterday, and unlisted the video. I will post a fixed version later.


In the meantime, here's my own arrangement of Necromancer, theme from the Atari 8-bit game, that I did earlier today for absolutely no reason but here is it anyway :D 
I had first covered it in the .it format, then ported it to RMT just to see how well my own tuning table took it, and honestly, it sounds even better than the original now, in my opinion! 
 

 

Anyway, this is all I have for tonight, have fun, and keep playing Atari! 

Necromancer.it Necromancer Theme Final.rmt Necromancer Theme Final.xex

Edited by VinsCool
  • Like 3
Link to comment
Share on other sites

16 hours ago, VinsCool said:

So unrelated to that I found a mistake in my cover from yesterday, and unlisted the video. I will post a fixed version later.

This is the real finished version now, with a hardware render this time!
I had left some transcription errors in my previous video so here's the result!
 

Pinky Xmas Edition - Overworld 1 (Atari PoKEY Cover, Recorded from Real Hardware)

This was recorded from my NTSC Atari 800xl :) 

 

Pinky - Xmas Edition - Overworld 1 Final.rmt Pinky - Xmas Edition - Overworld 1 Final.xex

  • Like 4
Link to comment
Share on other sites

On 6/22/2021 at 9:37 AM, VinsCool said:

A quick little cover of a nice little tune for some tests!
Pinky Xmas Edition - Overworld 1 Atari PoKEY Cover

 

53 minutes ago, VinsCool said:

This is some very amazing music by Spring, who used some of my note tables for its composition :D 

 

crazy insane sounds!

 

...But medieval cheerful ? ?

  • Thanks 1
Link to comment
Share on other sites

17 minutes ago, VinsCool said:

This is the real finished version now, with a hardware render this time!
I had left some transcription errors in my previous video so here's the result!
 

Pinky Xmas Edition - Overworld 1 (Atari PoKEY Cover, Recorded from Real Hardware)

 

Great instruments, and catchy tune.

 

I found some other Pinky stuff from TakuikaNinja, but I can't seem to locate this particular tune (at least on a 10 min search). Any links to the original (NSF file preferable)?

 

  • Like 1
Link to comment
Share on other sites

4 minutes ago, MrFish said:

I found some other Pinky stuff from TakuikaNinja, but I can't seem to locate this particular tune (at least on a 10 min search). Any links to the original (NSF file preferable)?

 

OK, I found it on youtube (kinda short play though).

 

[Note: It's the second tune in the vid.]

 

 

 

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

Some improvements of my tables:
- improved a bunch of notes here and there, adjusted several tables to sound better with Distortion A 64khz (via "Reverse 16-bit" table).
This improves Sawtooth, Distortion C 1.79mhz tables, 15khz basses, and few Distortion 2 notes.

Again, if anyone makes use of it, feel free to tell me if something sounds blatantly incorrect :) 

CustomNoteTables v26 edit4.txt

  • Like 1
Link to comment
Share on other sites

I forgot to post this test tune the other day.
Just experimenting with the Two-Tone Filter.
SKCTL=$8B

A big big thanks to Synthpopalooza for the detailed explanation about how to make use of it, I have to say, this is a criminally underutilised feature in music!

---

In other news, I have made some more progress hacking my version of RMT based on Analmux's Patch 8.
Got a preliminary mapping and notes tables done for it, still in the process of moving stuff around and experimenting with it, but otherwise I may be able to get something useful posted back here soon :) 

This is the plan I was following so far, however, several things are likely to be changed again, none of this is definitive yet!

Spoiler



;RMT Distortion (I'll call them "slots" -> POKEY Distortion -> Table Offset

;Slot 0 -> Distortion 0 -> Offset 00 (Pure Table)
;Slot 2 -> Distortion 2 -> Offset 30 (Poly5)
;Slot 4 -> Distortion 4 -> Offset 00 (Pure Table, as a placeholder) / Forced 16-bit mode -> Low Byte table offset 20 (Guitar)
;Slot 6 -> Distortion C -> Offset 90 (Poly4, 16 bytes, 1.79mhz notes) / Forced 16-bit mode -> Low Byte table offset 00 (Clarinet)
;Slot 8 -> Distortion 8 -> Offset A0 (White Noise, manually use Poly9 for the Distortion Guitar in Reverse-16)
;Slot A -> Distortion A -> Offset 00 (Pure Table)
;Slot C -> Distortion C -> Offset 60 (Poly4 combined into 1 huge Distortion C Bass table for 48 bytes, 16 bytes 1.79mhz notes)
;Slot E -> Distortion A -> Offset C0 (Reverse-16 harmonic table, for use with the Forced 16-bit mode Low Bytes)

;
;
;

;Preliminary tables...

;Low 64 bytes, from offset 00 to 3F, can only be used through "Forced 16-bit mode"...

;Offset 00, Clarinet, Slot 6, Distortion C, 32 bytes, copied from Analmux's Table, tbd...
DE 58 F0 97 4D 21 04 E7 E8 F8 17 36
73 B0 FC 48 A3 0D 77 F0 78 F1 88 1F
B6 4D F3 A8 4E 03 B8 ??   ;needs to assign a value to the ?? byte...

;Offset 20, Distortion Guitar, Slot 4, Distortion 4, 32 bytes, based on Synthpopalooza's Table, tbd...
7E 98 B2 9D 59 D1 BC A7 63 1F DB 97
24 E0 3E CB 58 E5 43 A1 2E 8C EA 48
A6 D5 33 62 C0 EF 1E 4D

;
;
;

;256 "buffer" bytes, from offset 00 to FF...

;Offset 00, Pure Table, Slot A, Distortion A, 48 bytes, Idem to Analmux's table (Alternate Tuning :D)
F1 E3 D6 CA BF B4 AA A0 97 8F 87 7F
78 71 6B 65 5F 5A 54 50 4B 47 43 3F
3B 38 35 32 2F 2C 2A 27 25 23 21 1F
1D 1C 1A 18 17 16 14 13 12 11 10 0F

;Offset 30, Poly5 Table, Slot 2, Distortion 2, 48 bytes, matches Alternate Tuning
D7 CA BE B3 A9 9F 96 8D 85 7E 77 70
69 63 5E 58 53 4E 49 45 41 3D 39 36
32 2F 2D 2A 27 25 23 20 1E 1D 1A 19
17 16 14 13 12 11 0F 0E 0D 0C 0B 0A

;Offset 60, Huge Ass Distortion C Bass Table, Slot C, Distortion C, 48 bytes, Matches Alternate Tuning
FF F3 E4 D8 CD C0 B5 AB A2 99 91 88
7F 79 73 6C 66 60 5A 55 F2 E6 D7 CB
BF B6 AA A1 98 8F 89 80 7A 71 6B 65
5F 5C 56 50 4D 47 44 41 3E 38 35 32

;Offset 90, 1.79mhz Distortion C Table, End of Slot C and Slot 6, 16 bytes, Matches Alternate Tuning
DC D0 C6 BB AF A5 9D 91 8A 82 7B 73
6C 69 61 5A

;Offset A0, Reverse-16 Poly9 Table, Slot 8, Distortion 8, 32 bytes, based on Synthpopalooza's Table, tbd...
8E 94 9A 9F A4 A9 AD B2 B6 B9 BD C0
C3 C6 C9 CC CE D1 D3 D5 D7 D9 DB DD
DE DF E1 E3 E4 E5 E6 E7

;Offset C0, Clarinet Harmonic Table, Slot E, Distortion A, 32 bytes, copy of Analmux's Table, tbd...
1A 19 17 16 15 14 13 11 10 0F 0F 0E
0D 0C 0B 0B 0A 0A 09 08 08 07 07 07
06 06 05 05 05 05 04 ??   ;needs to assign a value to the ?? byte...

;Offset E0, Guitar(s) Harmonic Table, Slot E, Distortion A, 32 bytes, based on Synthpopalooza's Table, tbd...
D4 C9 BD B2 A8 A0 98 8D 85 7F 77 71
6B 65 5F 59 55 4F 4B 47 43 3F 3B 37
35 33 2F 2B 29 27 25 23

 

 

There were several observations during my tests last night that reminded me I may have to do a few changes, mainly:

- Scrap the idea of using 1.79mhz Distortion C table in Slot 6, this one uses forced 16-bit mode in that very spot so it's useless! D'oh! I might use Distortion C there like normal instead, similar to how Vanilla RMT used it as a filler when 16-bit was not used...

- Scrap the idea of using an extra lower octave in Slot C, this ended up causing more problems than improving anything. I need to get Slot E back for the Gritty basses instead... But then, where do I move the Harmonic Tables...? I absolutely need the Distortion A for it...

- Scrap the idea of only using 48 bytes for the Pure Table... I found out I miss several notes because of that! Will re-use the leftover 16 bytes to get the full 64 bytes again, and thus using all the notes I wanted.
- Find a better way to handle the mapping of leftover space, because I know I won't use everything, and need to optimise several spots.
- Figured out how to remove/move some hacks such as forcing 1.79mhz, Poly9, JoinX+Y... However I want to keep the hack leaving the second channel playing regardless of 16-bit or Filter being used. There has to be a way without forcing certain things like those...

 

Will keep reporting progress as I find some ideas and some time to squeeze into this project :D

 

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