PR8 - NES Drum Synthesiser

This is an archive of a topic from NESdev BBS, taken in mid-October 2019 before a server upgrade.
View original topic
PR8 - NES Drum Synthesiser
by on (#70921)
Seems like a good place and time to talk about my next project.

I'm creating a drum (and bass-line) machine for the NES.

+ 6 virtual tracks, one drum sound assigned to each track
+ each drum sound can use all 5 or any combination of the NES's hardware voices
+ where two drum sounds require the same hardware voice(s), voice allocation to is done on a bottom-up basis depending on which track the drum sound is assigned to
+ drum parameters include: amp envelope, LFO, pitch sweep, arpeggio, duty modulation etc. all running at 120hz
+ patterns are 16 steps long (and 6 tracks deep)
+ simple song structure - 256 steps with loop feature
+ on each pattern grid cell, where you place a trigger to play a drum sound you can set 5 playback parameters: root note, retriggering speed and 3 proxy parameters
+ the proxy parameters are defined in the drum sound, each one points to one of the 42 different parameters that make up the drum sound
+ this enables you to modify up to 3 parameters in real time, changing any or all 3 values on every step of the pattern
+ I plan to have some kind of external sync (either as master or slave, depending which is possible/easier :) )

Here's a screen shot of the latest ROM.


I've got all the synthesis working currently and I'm able to fake a single track of a pattern and modulate the proxy parameters. I'm really, really excited about this as I think it's the first time anyone has approached NES audio in this way. I'm going to try to do a video soon.


by on (#70924)
Wow, looks really cool.

by on (#71020)
Couple of videos of PR8 in action.

Still early days yet but it's taking shape quickly.

by on (#71034)
Damn, this is awesome! I could see the chip-tune scene using this. I want to use it for my music project (SCR) as well.

by on (#71046)
It looks and sounds really cool.

by on (#71053)
The thing about all of Neil Baldwin's videos is that they are long enough and varied enough that it looks like he's having a live jam session.

by on (#71066)
Heh, sorry :)

I try to practice just a few things to show but there are often bits where I do the wrong thing or think of something else to do or just plain forget what I was supposed to do next.

I do try to keep them as short and interesting as I can. One time though I think I ended up doing a 21 minutes video of Pulsar but there was so much good stuff in it that I just split it in two (it was too big for YouTube) and uploaded it. :)

I've just added a couple of really nice features:

+ If you edit a drum patch and change one of the Px parameters (Px parameters are the 3 parameters-per-drum that you can modify in the step sequencer), you might have already entered data for the Px parameter in the Pattern and this most likely will be 'invalid' for the new parameter. WIth a quick combo-button-press, you can 'remap' the values in the Pattern to be reset to the default value for the target parameter.

+ You can now vertically shuffle the order of the tracks around in the Grid. This is important because the priority of what gets written to the audio registers is based on the vertical position in the Grid. The lower down the Grid the track is, the higher priority it has. Really cool feature.

+ I've now changed the DCM component so that a value of 00 in the sample number parameter means "don't play a sample". This makes real-time changing of a drum patches sample much more useful.

Stuff that is immediately on my to-do list:

- solo/muting of tracks (and a way to convey this information on-screen)
- copy/paste Pattern tracks (and a way to inform user this has happened)
- copy/paste drum patches (same as above)
- get the remaining 3 tracks working

The "getting the remaining tracks" task is interesting. I roughly calculated that I should have enough time to do 6 but I'm not so sure it will cope now. Adding another tracks is relatively 'modular' so I will just keep adding them until I run out of CPU time :) There's an awful lot of data getting shifted about at the start of each 'note' which causes a massive spike. Even if I end up cutting it down to 4 tracks it will still be very cool. The other 2 will be a bonus.

by on (#71156)
New video:

by on (#72095)
New video:

by on (#72264)
I never get tired of those realtime echos or whatever they're called.

by on (#72558)
1st draft of PR8 manual is online:

by on (#72866)
very cool stuff

by on (#73972)
PR8 V0.99 now released