Matilde Tracker v1.8

# Matilde Tracker v1.8 for Buzz

## Introduction

Matilde Tracker is a tracker machine for Buzz which behaves more like Protracker than Jeskola Tracker.

All Protracker effects that make sense in Buzz are implemented and behave in a similar fashion to their Protracker cousins, so you'll feel right at home. The E/xy effects have been renamed to Ex/yy, read on.

Additionally you now have two effects per note, life is sweet!

The machine is a stereo generator, so you need Buzz 1.2 or later to use it. In fact, you'll probably need the latest beta too. If you think you need the newest version of Buzz, go to www.buzzmachines.com. You'll also auxbus.dll. If stereo is annoying, there's a mono version you can use instead.

Volume, pitch and panning envelopes are supported, they take 64 ticks to complete. If this value is undesirable, it can be changed in the machine's attributes.

Have fun,
Carsten Sørensen

## Known bugs - in order of severity, worst first:

- Playing with samples that are not present in the wavetable might crash buzz. This also affects peer stuff badly.
- Slider positions are not initialized correctly on loading new module, unless you progam their settings in the pattern.
- Note delay (ED) cannot be combined with certain effects.

## Requirements for going open-source

- The stand-alone resampler part must be kept as a replaceable stand-alone component, because SurfSmurf has future plans with this.
- MTrk must also be functional without the Overloader (even tho the absense of Overloader-specific features is acceptable)
- Stability must have priority over adding features in the development of MTrk.

## What's new in v1.8?

(v1.8 additions by Kibibu and Joachim Michaelis)

- Seperate tuning attributes for each note
- Volume ramp now 10x more precise. Default value is now 0ms instead of 1ms. Increase to 10 or 20 if you encounter clicks.

## What's new in v1.7beta?

(All v1.7 additions by Joachim Michaelis)

- Attribute "Filter Mode" is now 2 by default instead of 1
- Changed NO_VALUE ass suggested by zeffii

## What's new in v1.6beta?

(All v1.6 additions by Joachim Michaelis)

- Changed name to avoid messing up old Buzz songs
- Volume now behaves more logaritmic - like analog gear
- Slider: Amplitude decay
- Slider: Sample offset
- Slider: Offset mode (quantized or free percussion-suitable)
- Slider: Tuning
- Command: 2F long loop fit
- Command: 30 probability without note off
- Attribute: Long loop fit factor
- Attribute: Offset volume gain

## What was new in v1.5?

- Virtual channels! Read more below.
- New combined note delay and cut command (18)
- New sustain pedal command (19)
- New note cut (DC) command that releases note instead of setting volume to zero
- Note delay (ED) command can now delay note off's
- Bug fixed with looping stereo samples
- About window made bigger
- Bug fixed with some effects causing bi-di loops to mess up
- Fixed CPU use problem with very volumes (<= -100dB)

## What was new in v1.3?

- Small bug fixed regarding volume envelopes whose first point was zero
- Bi-directional loops, works when Buzz 1.2 is released
- Wavetable screen wave playing supported
- Wavetable screen envelope cursor supported
- Randomize volume command (14)
- Random delay command (15)
- Randomize pitch command (16)
- Harmonic play command (17)
- Spline interpolation (check attributes)
- Envelopes for pan and pitch
- Attribute for pitch envelope depth

Improved MIDI support:

- Attribute for MIDI wave to use
- MIDI now uses full polyphony or free tracks only, yet another attribute
V2 TODO: Two virtual channels per track, selectable via attributes. V2 TODO: WAV harddisk streaming V2 MAYBE: Timestretch

## What was new in v1.2?

- Stereo wave support added. You need the "latest" Buzz to use it.
- Yet another reloading-waves-while-playing crash fixed.
- Continued arpeggio problem fixed
- Subdivision precision improved
- Loop points are now set the same way as Jeskola Tracker
- Default name changed by popular request
- MIDI support added
- Shuffle command added (command 13)
- Loop fit command added (commands 11 and 12)
- F/00 crash fixed
- Command 2 crash fixed
- WM errors fixed

## What was new in v1.1?

- Probability command (10)
- Sustain point and note off handled correctly
- Reloading-waves-while-playing crash fixed

## Virtual Channels

Matilde Tracker supports "virtual channels." It's a bit like NNAs in Impulse Tracker, but on the other hand, it's not. To use them, you must enable them for the tracker machine in question - this is done through an attribute (see below.)

When enabled, the tracker supports 64 note polyphony, in much the same way a hardware sampler handles it. What it does exactly, is when you play a new note the last one is allowed to finish. This is great for chord riffs, plucked strings and a bunch of other stuff. So now, instead of going through the hassle of using more tracks, you can enable virtual channels instead.

Sometimes the note will be cut anyway to make sure no samples sit there and take up all the channels. This happens when you have a looping sample with no suitable volume envelope. This is a safety measure and completely intentional.

## Using MIDI

Setting up MIDI input is now very easy - everything is controlled from the attributes.

You'll have to set up the attributes to the right channel. Now, the machine will respond to MIDI in events.
The tracks play the note with the last instrument used in the track, so a track will have to have played something before any sound is made. This is normally not what you want, using an attribute you can select the wave MIDI events will use instead.

The default behaviour for MIDI events is to use all available tracks in succession from left to right, including all unused tracks. You can change the behaviour using an attribute to use unused tracks only so you can jam along with your track.

For more information, refer to the attribute descriptions below.

## Machine attributes

Attribute | Description
Volume Ramp | The time in milliseconds micro volume-ramping takes. This is to avoid clicks.
Volume Envelope Span | The number of ticks a volume envelope spans from left to right.
MIDI Channel | The MIDI channel the machine responds to. 0 means it doesn't respond.
MIDI Velocity Sensitivity | How sensitive the machine is to MIDI velocity. 0 means it doesn't care, 256 means it cares a lot ;)
MIDI Wave | MIDI notes will use this waveform.
MIDI Uses Free Tracks | If 1 - MIDI notes will only use free tracks. If not, all tracks.
Filter | Filtering mode when playing waveforms. 0=none, 1=linear, 2=spline. Spline is much slower than linear, so only use it if you can handle it.
Pitch Envelope Depth | Pitch envelope will range between +- this attribute.
Enable Virtual Channels | 0=normal behaviour, 1=virtual channels enabled
Long loop fit factor | Adjust the length of the units of the 2F command. If you specify 1, the 2F command will be just like the 12 command. If you specify 2, it will loop fit twice as long breakbeats etc.

Offset volume gain

Drum sounds ususally fade out towards the end, so when you use the offset slider, the sound will attenuate. This attribute can resolve this problem by raising the volume correspondingly. The default value of 10 will cause a slight increase in volume, when you use the Offset slider in "percussion" mode.
0=volume is unchanged regardless of the Offset slider's position.

## Pattern editor

Column | Description
1 | The note to play
2 | The current wave. If empty, the previously selected wave will be used
3 | Volume. 0=mute, 40=half, 80=full, FE=about double the volume
4 and 6 | Effect to use, see below for description
5 and 7 | Argument to the effect

## Obsolete/changed/ignored Protracker/FT2 effects

Command | Description | Reason
5/xy | Keep tone portamento'ing and do volume slide with argument | Obsolete, there's two effects columns
6/xy | Keep vibrato'ing and do volume slide with argument | Obsolete, there's two effects columns
B/xx | Break to position | Not possible, machines have no control over the songposition
C/xx | Set volume | Replaced by the volume parameter
D/xx | Break to next position, step xx | Not possible, machines have no control over the songposition
E/0x | Set filter state | Not implemented, use a filter machine instead
E/3x | Set glissando | Not implemented
E/43, E/47 | Set vibrato waveform to noise | Not implemented
E/6x | Pattern loop | Not possible, machines have no control over the songposition
E/73, E/77 | Set tremolo waveform to noise | Not implemented
E/Ex | Patterndelay | Not possible, machines have no control over the songposition
E/Fx | Invert loop | Not implemented

## Implemented effects

Command | Argument | Description | Notes
00 | xy | Arpeggio On subdivision step 0, the original note will be played. Step one will play the original note+x halftones. Step two will play the original note+y halftones. Step three will restart the process |
01 | xx | Slide up xx notches |
02 | xx | Slide down xx notches |
03 | xx | Tone portamento If xx is zero, keep portamento'ing |
04 | xy | Vibrato x - speed y - depth If either is zero, use previous value |
05 | xy | Slide panning x - amount to slide panning left y - amount to slide panning right |
06 | xy | Autopan x - speed y - depth If either is zero, use previous value |
07 | xy | Tremolo x - speed y - depth If either is zero, use previous value |
08 | xx | Set panning position 0=left, 80=middle, FF=right |
09 | xx | Sample offset xx - offset into sample. Unlike Protracker this is not an absolute offset but scales to the whole length of the sample, ie a value of 80 will start from the middle of the sample. If there's no argument, the sample offset will be set right at the end, useful for E8/01. | Use with a note
0A | xy | Volume slide x - amount to slide volume up y - amount to slide volume down |
0F | xx | Subdivide amount This is the same as the Protracker Fxx command, except it doesn't actually change the speed of the song, only the speed of the track's effects. If the subdivide amount is higher, effects will be updated more often, making them run faster. The default value is 6. |
10 | xx | Probability (with note-off) xx - Probability for sample being played. 01=will almost certainly not be played, 80=50%, FF=almost certain. When notes are not played, the previous wave is interrupted. (see also command 30) | Use with a note
11 | xx | Loop fit xx - Number of ticks the waveform's loop should take to complete. Changes the frequency of the waveform. | Use with a note
12 | xx | Loop fit xx - Same as 11, but tracks song speed changes and adjust the frequency accordingly. | Use with a note
13 | xy | Auto shuffle x - Ticks to shuffle. 2 shuffles every other step, 3 every third step and so on. y=Shuffle amount. 0=none, F=almost a full tick. change the subdivision amount to, say, 10 for greater precision. |
14 | xx | Randomize volume xx - Maximum amount the volume will be randomized |
15 | xx | Random delay xx - Maximum number of subdivision steps the note will be delayed | Use with a note
16 | xx | Randomize pitch xx - Maximum number of notches the pitch will be randomized |
17 | xx | Harmonic play xx - The base frequency will be multiplied by xx |
18 | xy | Combined note delay and cut x - The subdivision step to trigger the note y - The subdivision step to release the note | Use with a note
19 | xy | Sustain pedal y - Subdivision step to trigger command x=1 - Depress sustain pedal x=2 - Release sustain pedal |
2F | xx | Long loop fit xx - Same as 12, but multiplied by 128 | Use with a note
30 | xx | Probability (without note-off) xx - Probability for sample being played. 01=will almost certainly not be played, 80=50%, FF=almost certain | Use with a note
DC | xx | Note cutoff, releases note |
E1 | xx | Fine slide up xx notches |
E2 | xx | Fine slide down xx notches |

E4

0x

Set vibrato type
x - 0 - sine, retrig waveform at samplestart
x - 1 - saw, retrig waveform at samplestart
x - 2 - square, retrig waveform at samplestart
x - 4 - sine, don't retrig waveform at samplestart
x - 5 - saw, don't retrig waveform at samplestart
x - 6 - square, don't retrig waveform at samplestart

E5 | xx | Set finetune for track 00 = -1/2 halfnote, 80 = 0, FF = ~+1/2 halfnote |
E6 | 0x | Set panning type See E4/0x for parameter |
E7 | 0x | Set tremolo type See E4/0x for parameter |
E8 | 01 | Reverse direction of sample being played |
E9 | xx | Retrig sample xx - subdivision count at which sample is retriggered | Use with a note
EA | xx | Fine volume slide up |
EB | xx | Fine volume slide down |
EC | xx | Note cutoff, set volume to zero |
ED | xx | Note delay Delay samplestart for xx subdivision steps | Use with a note
EE | xx | Fine panning slide left |
EF | xx | Fine panning slide right |