Appendix A. The Filters



Filters do nothing more than receive MIDI events and transform them into other MIDI events. There are three types of filters:

A.1. Filter Properties
Almost all filters will have a properties window which allows you configure the filter's parameters. This window is accessible after the filter has been placed in a pipeline. Either double-click the filter or click its associated property menu button and choose Properties. While all filters allow you to enter a label, all other properties vary between filters.

A.2. Description of Filters

Dynamic signifies that the filter may not exist on your system. Read the filter description for the conditions that determine whether or not you have this filter. Also, be aware that the BeOS architecture makes it possible for any software to publish itself so that it appears as an input or output filter in Sequitur. For example, most software synthesizers, such as ObjektSynth, will appear as output filters in Sequitur.

Edit control signifies that the filter supplies an easy-access control that gets placed in the edit controls area of the track window.

Be MIDI Synth
Type: Output.
Notes: Dynamic.

This is the standard Be-supplied software General MIDI synthesizer. This filter will only appear if you have a BeOS-compatible soundcard. Once the filter has been placed in the output pipeline, you can select from amongst the sixteen MIDI channels by accessing the properties. As a convenience, two- and three- button mice can access the channels through a special right-click popup menu. 
Chorus
Type: Through.
The Chorus filter can be used to play up to four additional notes for every note it receives. The chorused notes can be offset in pitch by either octave or step amounts, and their velocities can be scaled.  
Console
Type: Through.
This filter writes all of its MIDI data to the terminal. It is useful for debugging any filters you've written, so you can see the output they are providing. In order for this filter to work, Sequitur must have been launched from a command line. 
Controller Envelope
Type: Through.
This filter takes the notes it receives and converts them into a series of control changes based on the note velocity -- effectively, it applies controller sweeps to a track. One such application would be to write a single drum part, and 'carve' that part out of a long, evolving sound. Here is how you would achieve that effect:

Create a song with two tracks, both of which have the same MIDI port and channel chosen as their output filter. On the second track, select a sound that will play for any note duration (for example, a flute would work -- a percussion sound like a snare drum would not work, because the sound stops playing shortly after the note is triggered), then place a note down at measure two and continue it for two measures. Keep in mind that you want this track to have a very thick sound. Since you'll be carving pieces out of it, there shouldn't be any quiet time. Layer the voice or even start a new one halfway through the original if necessary.

On the first track, place a Controller Envelope filter as the only filter in the output pipeline (other than the output filter). Now open the first track and place several short notes (start with 16ths) during the two measures that you placed the note on track two. When you play the song, you should only hear track two during the notes you placed in track one.

This filter generates control changes of your choice (the default is volume, control change 7), starting with an initial value (by default zero), and continuing for the attack duration until the start of the note is reached. The final control change of the attack duration will be the same value as the note velocity -- that is, the controllers will sweep down if the initial value is higher than the note velocity, and sweep up if the initial value is lower than the note velocity. The decay duration sweeps the controllers back to the initial value. You can select how many controllers are generated by setting the density value -- lower values will generate more controllers.

While this filter might not seem obvious from the description, you can spend a few moments using it in the edit pipeline to understand how it works. 

Dan
Type: Through.
The Dan filter was designed to be a detailed template for making your own filters. The source code, complete with comments, can be found in the DevKit/ExampleFilters/. folder. 
Duration
Type: Through.
Notes: Edit control.

This filter is used to assign or modify the duration of all incoming notes. Its setting panel allows it to be configured in two ways: In absolute mode, the duration of all notes will be set to the absolute value of MIDI ticks. In scaled mode, the duration of all notes will be scaled to the supplied value, where 100 will have no effect, values below 100 will shorten the notes, and values above 100 will lengthen them. 
Echo
Type: Through.
This is a simple echo filter that takes notes and adds several duplicates at lower velocities. You can control the depth (number of echoes) and time between echoes. 
Example
Type: Through.
This is another filter which can be used to help learn how to write your own filters. The example filter takes an input note, and duplicates it, creating softer notes one beat before and one beat after the input note. 
Metronome
Type: Through.
This filter is used to generate click events. It is most appropriate in the output pipeline. The output filter for that pipeline determines which of your instruments will perform the click. Controls allow you to set the note value and velocity for several different types of clicks. By default, the metronome will only click while the song is recording; however, unchecking the On Only While Recording box will allow it to click during playback, as well.
MIDI Port Out (appears as /dev/midi/... in the Filters window)
Type: Input, output.
Notes: Dynamic.

This filter corresponds to a single hardware MIDI port installed on your system. You will see a different color filter for every MIDI port you have, or none of these filters if your system has no Be-compatible MIDI ports. The best way to add MIDI ports to your system is to purchase Virtual DSP's MIDI Oxygen 44, a 4 in 4 out USB-based MIDI interface. See the links page for more information.

Once a MIDI port has been placed in an input or output pipeline, you can change its MIDI channel by clicking anywhere on the icon and selecting a new channel from the popup menu. 

On Key
Type: Through.
Notes: Edit control.

This filter takes all incoming notes and makes them conform to a desired key. You can choose from several predefined scales or make your own. Incoming notes that aren't in the selected scale can either be discarded -- they are never heard from again -- shifted down to the next note that is in the scale, shifted up, or shifted up or down, depending upon which shift is closest.  
Pandemic
Type: Through.
This filter will generate random control changes with each note it receives. By default, it generates a single random pan value between 0 and 127. The range can be constrained by setting the min value and max value properties. If the duration is greater than one, a series of control changes will be generated, that sweep from the previously generated value to the new random value. The density control sets how many controllers are generated during the sweep -- lower values generate more controllers. 
Quantize
Type: Through.
Notes: Edit control.

The Quantize filter adjusts the start time of events to snap to a grid. In addition, it adjusts the end time of note events. There is a modifier value provided that lets you set the number of eighth notes in a beat. By default, the value is the standard two, but changing it to three, for example, will create triplets.

This filter has a special meaning to Sequitur: By default, the edit pipeline of all tracks contain a single quantize filter, which the track uses to allow users to assign a duration to create all new note events with. Additionally, when using any track tool that operates on a grid, the tool will locate the first Quantize filter in the edit pipeline and use its value as the grid. 

Random Control
Type: Through.
This filter has been replaced by Pandemic, and is obsolete. It will be removed from all future versions of Sequitur. 
Reverb
Type: Through.
This filter will create a dense echo of each input note, trailing off in scale and velocity.  
Riffed Off
Type: Through.
This filter is used to generate new beats based on a single note. It does this by taking the note and transforming it into a series of notes that stop at the end of the measure the original note resides in. Each generated note is assigned a random velocity, and then passed through several Vaccine filters to help accent the beat. 
Transpose
Type: Through.
This filter with shift notes up or down in pitch. You can control the shift in octaves or steps. 
Unquantize
Type: Through.
Typically, MIDI performances have computer-perfect timing. Unquantizing is a process that slightly alters the time of MIDI events in order to create a sloppy, more human feel. The Amount parameter of this filter determines the maximum number of ticks that a single event can be offset, by randomly generating a value between zero and the Amount and applying that to each event.

Randomly quantizing a performance makes it less mechanical, but generally not any more human, since human players tend to have patterns in their imperfections. If the Drifting parameter is on, this filter uses the Recovery value and Step value together to simulate a human player drifting on and off the beat. The Recovery is the maximum number of ticks it takes the performer to return to the correct time, the Steps are the number of ticks in each step on the return. This filter is used heavily in the file Examples/DianneHackborn - Bells.mid 

Vaccine
Type: Through.
This filter is used to alter the velocity of notes based on the current beat (as defined by the time signature). By default, half the time it accents each note on the beat by doubling the velocity. The proximity to beat value determines where in each beat the accent should occur: When set to closest, notes closest to the start of each beat have the most accent, when set to furthest, notes furthest from the start of each beat have the most accent. At 50, notes towards the center of each beat have the most accent.

The frequency control determines how often a note is accented. At 100%, every note is accented, with the amount determined by how close each note is to the range specified by the proximity to beat control. At 0%, this filter is effectively switched off.

The amount control determines how much to alter the velocity of the notes that are affected. The frequency can be switched to a negative value for deaccenting the beat. For example, you could use two Vaccine filters, one that places accents closest to the beat, and one that places deaccents furthest from the beat -- this technique creates a wider dynamic range than a single Vaccine filter.

Trivia: The name 'Vaccine' doesn't really imply anything about the filter. The original name was 'Velocity Accent.' This was later shortened to 'V.accent,' which quickly became pronounced 'vaksent.' From there, it was a small leap to 'vaccine.' 

Velocity
Type: Through.
Notes: Edit control.

This filter is used to assign or modify the velocity of all incoming notes. Its setting panel allows it to be configured in two ways: In absolute mode, the velocity of all notes will be set to the selected velocity. In scaled mode, the velocity of all notes will be scaled by the supplied value, where 100 will have no effect, values below 100 will soften the notes, and values above 100 will louden them.