Impulse Tracker Filters for Dummies

nldsr^lfn


Background

Any function, whether periodic or not, can be analysed into a set of sine waves (Fourier analysis/transform), which, when added together (Fourier synthesis), reconstitute the original wave. A graph of the amplitude of the Fourier components as a function of frequency is called a spectrum. Fourier analysis takes us from the time-function to the spectrum, and Fourier synthesis takes us from the spectrum back to the time-function. One can think of movements back and forth between a time and a frequency domain.

A filter, in acoustic terms, causes frequency-dependent changes in amplitude and phase of the constituent sinusoids of a waveform. These changes can be most conveniently represented in a Bode plot.

The top part shows how the amplitude at a given frequency is affected by the filter: it plots the gain, i.e. the ratio of the amplitudes before and after the filter, against frequency. The bottom part shows how the phase is affected by the filter.

The timbre of the sound is not affected by the phase but strongly depends on gain variations.

Filters in Impulse Tracker

The filter in Impulse Tracker is of the "low-pass resonant" type:

* The "low-pass" bit means that only frequencies below a characteristic frequency will pass through (gain=1), whereas higher frequencies are attenuated (gain approaches 0).

* The "resonant" bit means that the transition between pass and attenuation is not a simple decline in gain, but can involve an increased/decreased gain at the characteristic frequency.

If you are familiar with (soft)synths: tweaking the "frequency" and "resonance" knobs alters the characteristic frequency and the amount of resonance.

Pros and cons

Filters afford a good way of adding variation to samples. Filter slides also sound way cool, and are a standard motif in techno. And you can do wild things with chip tunes. My advice for you is to experiment. ;)

However, there's a couple of points on the downside. The biggest reason why not to use filters is that a lot of people won't hear your tunes the way they're supposed to play. Many module-playing programs have no or poor support for filters. Also, filtering is pretty heavy on processing; while that's okay for just listening to a tune, forget about using filters when you're making a tune for a demo. The oldschool approach is to trade speed for size by using a bunch of samples that you have filtered with your favorite audio software, but this nowhere near matches the versatility of a fully controllable filter. A solution to both compatibility and speed problems is to purchase the .WAV writing driver from Jeffrey Lim and release your work as MP3.

A good player for Impulse Player tracks on the Win9x platform is Sonique. It is based on MikIT (I believe), and it is the most accurate player I've tried. For Linux, I think that the Modplug-plugin for XMMS sounds fairly good. The Libmikmod one doesn't.

Setup

Step 1 - Setting up your soundcard

To benefit from IT's resonant filters, you need to have an MMX machine and an MMX driver for your soundcard, or the Soundblaster AWE32/64. First, start IT with the appropriate driver. I have an AWE64 Gold, so I use the SB16 driver, like this:

 it.exe -sitsb16.mmx

Now, go to the driver setup page (Shift+F5) and choose "MMX, Filtered" (or similar).

Step 2 - Setting up MIDI macros

The way to use filters is by setting them with MIDI-macros. The default ITMIDI.CFG is already set up properly. Press Shift+F1 to get to the MIDI setup screen. Go to "MIDI Output Configuration". Enter this under Macro Setup:

  SF0 F0F000z

  Z80 F0F00100
  Z81 F0F00108
  Z82 F0F00110
  Z83 F0F00118
  Z84 F0F00120
  Z85 F0F00128
  Z86 F0F00130
  Z87 F0F00138
  Z88 F0F00140
  Z89 F0F00148
  Z8A F0F00150
  Z8B F0F00158
  Z8C F0F00160
  Z8D F0F00168
  Z8E F0F00170
  Z8F F0F00178

Press Shift+F1 again to return to the MIDI setup screen. Choose "Save Output Configuration".

NOTE! Remember to set "Embed MIDI data" to ON before saving your tracks. If you don't, the song might sound weird on other setups.

This is a simplistic explanation. For technical details, consult FILTERS.TXT and MIDI.TXT in your Impulse Tracker distribution.

Using filters

The best way to test filters is by using a clean square wave. Square waves were used as the primary signals in most analogue synths (303s etc.), and that's because they have a broad frequency composition which subsequent filters can play with (if you want the reason for that broad composition, look up Taylor series :)).

If you're going for the default setup, cutoff frequency is controlled with Z00 - Z7F and resonance with Z80 - Z8F in the effect row. For instance, try this:

 C-5 01 64 Z10
 ... .. .. .00
 C-5 01 64 Z30
 ... .. .. .00
 C-5 01 64 Z50
 ... .. .. .00
 C-5 01 64 Z70
 ... .. .. .00

Low values of Zxx will give you nothing but the lowest frequencies, while Z7F resets the filter (all frequencies are played). Z80 is the default resonance setting (no resonance).

With Impulse Tracker 2.15 (the registered version) there is another way of doing filters, with filter envelopes. Here, instruments can also have default cutoff / resonance settings.

Advanced techniques

High pass filters

Yes, high-pass filters are possible in IT, a little secret of my own.

The problem with this technique is that you need TWO copies of the sample for it to work. One normal and one exact copy, only inverted (do this in your favourite sample-editing software ... I prefer Cool Edit Pro for this). If you play these together, the two waveforms will cancel each other out, leaving only silence. What happens if you put one of the waveforms through a low-pass filter? Exactly! Only the lower frequencies cancel out, leaving you with the higher frequencies!

Try this example (sample 01 is the original wave, 02 is the inverted one):

     chan 0            chan 1

  C-5 01 64 Z50  |  C-5 02 64 Z7F
  ... .. .. .00  |  ... .. .. .00
  . . .

Now, if you're a bit clever, you can also do Bandpass filters and Bandcut filters. I leave this as an exercise to the reader. ;)

In closing

If you have any questions, remarks, corrections, tips, etc, don't hesitate to mail me. My mail adress is nldsr@neenjas.net.

Peace and respect,

nldsr.