Pulsar: Audio

Are you ready for this? :)

Some notes about the video.

So far I’ve got the two square-wave voices, triangle and noise working. Most of the effects/commands are working apart from pitch slide (to note) and vibrato. I’ve not done any work so far on DPCM or stuff like auto-echo (which I’m still trying to figure out how to port from NTRQ so that it will work at 4x times the speed and data throughput!)

Basically I’m just stuck on the Song Screen changing one voice between several test chain/patterns.

The first pattern, 09 (on track B) has a simple square sound but I’m manipulating the pitch sweep in the pattern.

Then chain 00 is a drum beat, again using square wave but this time using a table to modify the pitch. The nice thing about the tables for this is that you have really fine control over the speed of the table at every step.

Then chain 01 shows an arpeggio chord which is severely pitch swept then also some fill-in notes that use the always-force-both-pitch-registers method to get that almost-FM sound/distortion.

Then I accidentally set track A to the same chain :) And turn it off again (chain 0A is empty)

Then chain 03 is a funky little beat using a combination of table pitch to make the kick drum and modulating the pitch sweep to produce some interest in between. Oh, there’s a ‘groove’ or ‘speed table’ in operation which is why it’s got a bit of a swing feel :)

Now I start chains in some of the other voices (about 1:30)

Chain 06 shows more of the hard frequency writing.

Chain 08 comes in on the noise channel to make some hihats.

About 2.30, I start a pattern on Track C (triangle). It’s a weird little pattern that, once again, modulates the pitch sweep up and down.

At 3.10, I jump through the chain->pattern->instrument->table editor and show a nice trick. Ultra fast turning the triangle on and off (the table alternates between 2 steps that set ‘volume’ to 0F and 00). Then I try setting an octave pitch offset too which makes it sound even weirder! :)

Then I turn off some of the other voices so you can hear just triangle (oh and the noise is still on). Then I move the loop point of the table (J–) and you can see how it affects the sound even further. This can also be done with any of the other voices. :)

Then I bring some patterns back in, change them. Then about 6:00 I show changing the gate time of the instrument. This (along with all other instrument parameters) can be changed in the pattern or in the table.

Then I remove all the voices one by one until the triangle remains.

17 comments to Pulsar: Audio

  • Really nice and distinctive sounds!

    keep up the wonderful work!

  • Jace

    Things get mind-bending around 3:14. I really hope you understand the level of magnificence you are emitting into the universe.

  • im excited. this is sounding great!

  • B00daW

    Refresh rate wank. :D Beautiful. Real time refresh rate wank would be amazing…

    Do I also smell the possibility of 4-bit or 7-bit PCM wavetable streaming? ;P

    • Hey dude!

      Long time no see :)

      There is absolutely no way I’ll be doing samples (apart from DPCM) – the refresh is pretty much going to take the whole of one frame’s worth of CPU time.

      Nice to hear from you though ;)

  • Wow! Sounds really really great. 4x refresh speed really does some magic, eh? :P
    A little tech question from someone not too familiar with the NES’ architecture though. What exactly does increasing the refresh speed do to give that sort of difference? I’m guessing it fires an IRQ every refresh, so you can use the extra speed for more precise updates?

    • There’s no IRQ’s going on, it’s all timed with delays so;

      refresh audio
      refresh audio
      refresh audio
      refresh audio

      It works best if you can space out the refreshes even during one frame.

      The reason it sounds different is because you’re effectively getting 4x the resolution (and speed) for real-time effects such as pitch modulation, vibrato, amplitude envelopes, pitch tables etc.

      I guess if think about refreshing at 60hz being a 1-bit sampling, refreshing at 240hz could be thought of as 4-bit sampling.

      That’s probably the worst analogy in the world though :D

      Oh, the other thing that I’m exploiting are some of the “quirks” of the NES audio registers. For example, it’s generally a bad idea to constantly write to the upper frequency register because it resets the phase of the square-wave output. At 60hz this just sounds crap but at 240hz you can turn it into a kind of crude FM by writing to it every refresh. Combine that effect with the ability to sequence it on/off inside Patterns or Table effects and it opens up some interesting possibilities.

  • Well wait a minute then. What does 240Hz do at a low level then? If you’re not running your audio engine off of it, what difference does it make, since it’s not overclocking the NES.

  • Well, it’s not that the NES itself is running at 60hz, just that I’m refreshing the audio synthesis 4 times per frame 4 x 60hz = 240hz.

    What difference does it make? Have you heard anything else on a NES sound like Pulsar?


  • Ohhhh, ok! That makes more sense then :)
    Good point though, I’ve never heard anything on the NES sound nearly this good. Great job :D

  • B00daW

    With the refresh rate changes, it should be possible for you to create virtual additional square wave channels as well.

  • I want to hear a simple arpeggio at 240Hz. Like a 047. I guess it must sound more like a real chord (changing notes very very fast). I tried making arpeggios in FamiTracker, changing the engine speed to custom/240Hz. Sounded quite odd. Sounded better in 120Hz. (240 was too fast).

    What commands/effects will there be? Are they using Fasttracker/Pro Tracker standard (Cxx colume, Fxx tempo etc.) I understand that there will be new commands for Pulsar exclusive effects too… :)

    Pulsar is one of the coolest thing I’ve seen on the NES! Amazing stuff, keep up the good work Neil.

  • Funnily enough, the faster you go the less like a chord it sounds. I guess your ear needs the individual pitches to be a certain length or they don’t register in your brain.

    Commands will be of that format, yes, though each command may/may not be the same function in Pulsar as it is in other trackers. I’ve tried to keep close to LSDJ so quite a few you’ll be familiar with.

    Thanks for your enthusiasm.


  • waoh mr Neil!

    I LOVE THIS PROJECT!, PULSAR is very intuitive like Lsdj!!!! yessssssssssss!

    All my thanks for you man!, now i can see me more tracking in a NES hardware with my gameboy experience.

  • [...] work directly on the game system. (NTRQ image above; see the video of Pulsar at top.) Full details: Pulsar: Audio at NTRQ [...]

Leave a Reply




You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>