Tutorial #4: Arpeggios, Duty Modulation & Auto Echo!

This will be the last one for a little while – I don’t have time to do any more at the moment. This one is a juicy one though so should keep you busy.

Same setup as before, here’s a .sav file of where you should end up when you’ve done the tutorial (depending on how much experimenting you’ve done).



Getting Started With NTRQ

This info is correct as of NTRQ V1.1

Part 3: Arpeggios, Duty Table and Auto Echo

Once again, start where we left off in Part 2 by either following that tutorial or loading up the .sav file from Part 2.

This is a big one, get a drink and settle in :)

We're going to use the second Pulse channel (Track B) for this and we'll need a new Instrument. Go to Instrument 04 and set these values:

02 84 04 00 00 00

Move over to the Pitch Table and scroll down to index 0A (which should be "empty" i.e. 00 F0, if you've followed along properly). We're going to add some entries to give us a minor triad chord.

0A:00 F0
0B:03 F0
0C:07 F0
0D:FF 0A

and also we'll add another chord to create some interest. Add this below the minor triad entries:

0E:00 F0
0F:05 F0
10:08 F0
11:FF 0E

Next we'll use these "chords" in a Pattern but first a little discussion.

I guess this will be easier and more useful if I explain it in comparisson to LSDJ. Even though LSDJ has a table system too, I notice it also has a "chord" command which gives you a quick and simple method of putting arpeggio chords into your patterns (or whatever the LSDJ equivalent of that is - I still haven't really got around to having a proper go with it yet!). NTRQ doesn't have the luxury of multiple command/effect columns (in LSDJ you have the effect letter "A" etc and the full 8 bits of the value byte with which to represent the data for that effect, where NTRQ only has the 8 bits of the command byte to represent both the type of effect/command AND the required data) so we have to be a little more creative to achieve a similar result.

What we've set up in the Pitch Table therefore would be the equivalent of doing LSDJ chord commands with "37" and "58". The way to use them is just a little more abstract.

Another issue with only having one command/effect column is: what happens if we need an Instrument and a Pitch Table (to play the arpeggio) command on the same tick/step? Well, short answer is: you can't! There are a couple of ways around this though. One way would be to define a new Instrument for each chord "shape" you need in your song then set the Pitch Table parameter in each Instrument to point to the correct Pitch Table area for that chord. Problem is, this is wasteful of Instruments if you need a lot of chord types and also means having to tweak each Instrument separately if you want to adjust another aspect of the sound of the chord Instrument. The other way, which I'm going to go through in this tutorial, is to set up your base sound in the Instrument and use Pitch Table commands in the Pattern to switch chords, mimicking how you might do it with LSDJ. Which method you choose will depend on your song setup, number of Instrument etc.

The problem remains though that we need to set an initial Instrument command in the Pattern and, if we need to play an arpeggiated note on the same tick/step, it gets awkward. Two ways to solve this. One, you'd have a "blank" Pattern at the start of your song, for example, that sets up the Instrument number before you need to use it. Another way, which is what I'm going to show you, is to set up your chord Instrument with a Pitch Table setting so that when you want to change the chord shape you can use a Pitch Table command in the Pattern but when you want the original chord shape you just put the Instrument command in again to recall the orignal setting. Simple, eh? :)

So, we'll setup our chord Instrument with the first chord shape (00,03,07). Another little tip: if Instrument 04 is still selected in the Instrument Table (it will be highlighted in white), jump to the Pitch Table (if you're not already there) and scroll to index 0A (start of our first chord shape). Keep your eye on the PT entry for Instrument 04 (it's directly under "NT" of the word "INSTRMNT"). With the cursor on any of the two values on that line, HOLD A until the cursor "zooms in" and then tap B. You'll see that the PT value of Instrument 04 has been set to the current Pitch Table index (0A). So Instrument 04 should now be:

02 84 04 0A 00 00

Jump to the Pattern and move the cursor to the top of Track B. Add a "04" to the command column to select the Instrument and then continue to fill out the Pattern like this:

00:C4 04
01:-- --
02:-- --
03:-- --
04:-- --
05:-- --
06:C4 --
07:-- --
08:-- --
09:-- --
0A:-- --
0B:-- --
0C:-- --
0D:-- --
0E:C5 --
0F:-- --
10:-- --
11:-- --
12:-- --
13:-- --
14:C5 --
15:-- --
16:-- --
17:-- --
18:-- --
19:-- --
1A:-- --
1B:-- --
1C:C5 --
1D:-- --
1E:-- --
1F:-- --

It's a bit of a sparse and strange Pattern but there's a reason for this later :)

Play the Song and you should have some syncopated chords going on. Actually, jump up to the Speed Table and change it to:

00:04 01
01:04 02
02:04 03
03:00 00

which feels a little better :)

Leave the song playing and we'll change the chords a bit. Scroll to step 14 and put "6E" in the command column. You'll see from the hint text that 6x is the Pitch Table command. What we're telling NTRQ is that from this note onwards we want to use the entries at Pitch Table index 0E instead of what is in the original Instrument (0A). Once the Pattern loops the "04" command on the first step sets the chord back to the original. But you can do this any time to switch between the two chords. Go to step 1C of the pattern and put "04" in the command column. The observant of you might have spotted that you could also have put "6A" in the command here which would give you the same result i.e. setting the Pitch Table setting for the current Instrument back to "0A". As I said in earlier tutorials, there's often several ways of achieving work-arounds in NTRQ :)

Duty Table
I'll have to assume you know what "duty" means in the context of NES audio. If not, have a read on the internet, there's plenty of information out there.

Currently the Instrument we've created is using a duty setting (DT) of "00" in the Instrument Table. This is pointing to index 00 of the Duty table (DTAB). As with other stuff you can jump to the correct line of the Duty Table from the Instrument Table by putting the cursor on the DT parameter, holding SELECT and tapping RIGHT (there's a list of all these context shortcuts in the manual).

A full explanation of all the features of the Duty Table are too much for this tutorial (it's in the manual!) but we'll go through a simple setup to get you started with the basics.

You'll see that the values at index 00 read "00 00". The first value is used to set the duty and the second value is similar to the Speed Table in that it tells NTRQ which Duty Table index to jump to next. This is how you setup basic Duty modulation. If you just want to change the Duty for our chord Instrument, change the first value on index 00 of the Duty Table to either "00", "40", "80" or "C0" - these are the basic valid values (directly linked to how they are written to the NES's audio registers). Have a go at that first to get the idea. It's quite a good idea to have the first 4 entries of the table set up with those basic values so copy this:

00:00 00
01:40 01
02:80 02
03:C0 03

then to change the duty for the Instrument you'd put either 00, 01, 02 or 03 in the DT parameter. Simple!

Related to this is the Duty Command for Patterns. Works like the Pitch Table one but instead temporarily overrides the duty table index for the Instrument. Look it up in the manual. :) Anyway, that's another tutorial...

So, we can set a single duty value for our chord Instrument and while it sounds a bit nicer, it would be better to get some duty modulation in and make it sound a lot richer.

You might have alread worked out how to do it. Scroll down to index 04 of the Duty Table and do this:

04:82 05 ;set duty 80, wait 2 ticks, jump to index 05
05:02 04 ;set duty 00, wait 2 ticks, jump back to index 04

then set the DT parameter of the Instrument to "04".

Have a play around with the "82" and "02" in the Duty Table to see how it affects the sound. For the "wait" value, don't go over "1F" (maximum values would be 1F, 5F, 9F and DF for duty 00,40,80 and C0 respectively). If you go over that, NTRQ will treat the values a bit differently and you might wonder what's going on (though you don't need to wonder because it's in the manual).

What we've setup there is a cyclic modulation but you can also do stuff like this:

04:83 05
05:00 05

notice that the second line ends in 05 and not 04. This causes NTRQ to play the note with a duty of "80" for 3 ticks then change to "00" and hold until a new note is played.

Auto Echo
I said earlier that there was a reason for making this Pattern a bit sparse. It's because I wanted to show you how the Auto Echo feature, far from just being a lazy, cheaty way to make single-voice-echo, is actually a really creative tool/effect in it's own right. You'll like this...

OK, as Auto Echo is a Pitch Effect (sorry if I sound like a stuck record but, read the manual...) we need to set it up in the Pitch Table and then use the Aux parameter of the Instrument to select it. Jump the the Pitch Table and scroll down to index 43 (no reason for the number, just putting this after the stuff we added in the first tutorial for the pitch sweeps). Stop the Song for now and add this line to the Pitch Table:

43:B0 21

Again, if Instrument 04 is still highlighted in the Instrument Table you can set the Aux (AU) parameter quickly and simply by holding A then tapping B. However you achieve it, you need to have "43" in the AU parameter of Instrument 04. OK?

Get the Song playing again. Nothing has changed :) I deliberately did this because it's cool to hear the effect switched on while you can hear it. With the song playing, go back to the Pitch Table @ index 43 and change it to this:

43:B3 21

Nice, eh? :)

What we've done there is to switch the echo on with a delay of 03 ticks ("B0" = echo off). I should say that because we've got a tricky little setup in the Pitch Table (our "swing" groove) that not all of the echo speeds work that well but try changing the B3 to, say, B1. For a "straight" 4/4-type of groove, B5 works really well. Practical limit on this is about "B7" but it does depend on the speed of your song (and a bunch of other stuff). You can read "why?" in the manual.

The other number, "21" controls how the echo decays. "2" means that 2 is initially subtracted from the amplitude of the note when the echo is fed back into the "signal" (therefore sets the initial echo volume relative to the volume of the actual notes). The "1" means for every feedback cycle, 1 is subtracted from the echo amplitude until it reaches 0. So by varying these numbers you can get quite a different sound. A value of "61" would mean a much quieter echo. Something like "26" would give a loud echo with a fast feedback decay (i.e not many "reflections"). Something like "40" would be a quietish echo but one that never decays to 0. As I said, it's quite a creative tool.

While the Song is still playing, try adding some more notes to the Pattern (Track B). Actually, first, go to step 0E of the Pattern and put "60" in the command column. This turns off the arpeggio temporarily.

Something else to play with while the Song is still going is the Gate value for Instrument 04. The Gate value influences the character of the echo effect because NTRQ only feeds the echo signal back into the Track when there are no notes playing or when a note is in the Release phase of the ADSR. It's all explained in the manual but for now, try a Gate setting of 01 or up to 08 to see how it changes the effect.

Then when you're done, press START to stop the track and hear the echo still decaying away. Nice... :D

Have fun!

1 comment to Tutorial #4: Arpeggios, Duty Modulation & Auto Echo!

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>