Appendix A. The Filters



This appendix is generated each time it is accessed from the File -> Filter Guide menu item in a Sequitur song window.

The images on this page are in PNG format. If your browser does not display the images correctly, it is probably missing a PNG viewer plugin.

A.1. 

 

MIDI In

Type: Input
Maximum connections: 1
Version: 1.0

I correspond to a single BeOS MIDI producer. The most common type of MIDI producer is a hardware MIDI port installed on your system, although any application that generates MIDI data can publish a MIDI producer. Any MIDI In filter that is a result of an application will appear and disappear as the application is opened and closed. A BeOS MIDI producer can supply its own icon (software synthesizers frequently do), although any that don't will receive the standard icon with a unique colour.

These filters can only be placed in the first slot of the input pipeline. Once the filter is in the pipeline, you can change its MIDI channel by clicking anywhere on the icon and selecting a new channel from the popup menu. Alternatively, you can open the properties window for the filter and change the channel there. The properties window also allows you to turn off MIDI event types, which prevents them from appearing in a track.

There are a variety of ways to add MIDI ports to your system: Some soundcards have supported MIDI ports, or drivers have been published for several popular USB-based MIDI interfaces (such as the Yamaha UX256).

A.2. 

 

MIDI Out

Type: Output
Maximum connections: 1
Version: 1.1

I correspond to a single BeOS MIDI consumer. The most common type of MIDI consumer is a hardware MIDI port installed on your system, although any application that receives MIDI data can publish a MIDI consumer. Any MIDI Out filter that is a result of an application will appear and disappear as the application is opened and closed. A BeOS MIDI consumer can supply its own icon (software synthesizers frequently do), although any that don't will receive the standard icon with a unique colour.

These filters can only be placed in the last slot of the output pipeline. Once the filter is in the pipeline, you can change its MIDI channel by clicking anywhere on the icon and selecting a new channel from the popup menu. Alternatively, you can open the properties window for the filter and change the channel there.

The properties window allows you to turn off MIDI event types, which prevents them from being performed. Additionally, the Send MIDI Clock checkbox, when on, will send MIDI clock signals to the MIDI consumer. This can be used for any MIDI device which syncs to MIDI clock. For example, many devices with an arpeggiator can sync to MIDI clock so the sequencer's tempo controllers the tempo of the arpeggiation. Note that you only need to turn this option on for a single channel of a single MIDI consumer.

There are a variety of ways to add MIDI ports to your system: Some soundcards have supported MIDI ports, or drivers have been published for several popular USB-based MIDI interfaces (such as the Yamaha UX256).

A.3. 

 

Be MIDI Synth

Type: Output
Maximum connections: 1
Version: 1.1

I am a filter for the standard Be-supplied software General MIDI synthesizer. I will only appear if you have a BeOS-compatible soundcard. Once the I have 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.

This filter uses the factory supplied Be MIDI Synth device. If you wish to change any device properties (such as patch or controller names) for tracks that use the Be MIDI Synth, change that device. 

A.4. 

 

Chorus

Type: Through
Maximum connections: 1
Version: 1.0

I produce up to four additional notes for every note I receive. The chorused notes can be offset in pitch by octave and/or step amounts, and their velocities can be scaled. Typically, the velocity should be increased for notes lower in pitch and decreased for notes higher in pitch.

A.5. 

 

Console

Type: Through
Maximum connections: 1
Version: 1.0

I print in the terminal every MIDI event I receive. I am 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 be launched from a command line.

A.6. 

 

Controller Envelope

Type: Through
Maximum connections: 1
Version: 1.1

This filter is now obsolete. Use Motion Control, instead.

I convert each note I receive into a series of control changes based on the note velocity -- effectively, I transform a note into a controller sweep. 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.

A.7. 

 

Copy

Type: Through
Maximum connections: Unlimited
Version: 1.0

I copy all events I receive to all of my outputs.

A.8. 

 

Dan

Type: Through
Maximum connections: 1
Version: 1.0

I am thoroughly commented template for writing your own C++ filters. The source code can be found in the DevKit/ExampleFilters/ folder.

A.9. 

 

Dianne

Type: Through
Maximum connections: 1
Version: 1.1

In addition to the Dan filter, I am a template for writing your own C++ filters. The source code can be found in the DevKit/ExampleFilters/ folder.

In previous versions of Sequitur I was the Example filter. For every note I receive, I create a softer note one beat before and one beat after the input note.

A.10. 

 

Dissolve

Type: Through
Maximum connections: 1
Version: 1.0

1 a: to become dissipated or decomposed. 1 b: to fade away.

A.11. 

 

Duration

Type: Through
Maximum connections: 1
Version: 1.1

I set or modify the duration of all incoming notes.

A.12. 

 

Eat Duplicates

Type: Through
Maximum connections: 1
Version: 1.0

This filter deletes the following events:

This filter has no controls. 

A.13. 

 

Echo

Type: Through
Maximum connections: 2
Version: 2.0

I echo note events based on my parameters.

Types

Duration

This is the amount of time between each echo. If you select the "Tools use grid duration" option, then when the Echo filter is used in a tool its duration will come from the current note length of the track window you are working in.

Depth

The number of additional notes to generate after the first. In Mouse distance and Mouse location modes, this is the maximum number of additional notes to generate.

Velcocity

Start and Stop

These are the relative locations in the echo curve, ranging from 1.0 to 0.0, through which to spread note velocities. For the full curve, start is 1.0 and stop is 0.0; for a reversed curve, start is 0.0 and stop is 1.0.

Curve

Exponent

This is a modifier for all curves, raising the final value (ranging from 0.0 to 1.0) to this exponent's power. A value of 1.0 here is a linear curve. A value greater than 1.0 creates a faster curve (it drops from 1.0 more quickly), while a value less than 1.0 creates a slower curve.

Period

For a sinusoidal curve, this is the number of iterations of the sin functions to include in the curve. A value of 1.0 creates a single sin iteration, going from 1.0 down to 0.0 and back up to 1.0.

Connections

This filter can have either one or two connections. If it has a single connection, then all events it receives and generates are sent out that connection. If it has two connections, then all events it receives are sent out the first connection, and all events it generates are sent out the second.

A.14. 

 

Eric

Type: Through
Maximum connections: 1
Version: 1.0

I am a template for writing your own C++ filters. The source code can be found in the DevKit/ExampleFilters/ folder.

A.15. 

 

Erode

Type: Through
Maximum connections: 1
Version: 1.0

Successive notes placed at half duration.

A.16. 

 

Tool Input

Type: Tool Input
Maximum connections: 1
Version: 1.0

A source for the pipeline page of the Edit Tool and Edit Multi Filter windows.

The Edit Tool window can have any number of Tool Input filters (although only one per pipeline). Each filter corresponds to one of the active tracks. For example, the first Tool Input filter in the tool corresponds to the primary track, the second corresponds to the second ordered track (if any), etc.

The Edit Multi Filter window can only have a single Tool Input filter. All previous filters in the pipeline with the multi filter send their output to this Tool Input filter.

A.17. 

 

Keyboard Splitter

Type: Through
Maximum connections: 2
Version: 1.0

All notes above the split point continue down my pipeline. Notes below the split point are sent to my connection, if any

A.18. 

 

Merge

Type: Through
Maximum connections: 1
Version: 1.0

I am a simple passthrough. I merge together input from multiple sources.

A.19. 

 

Metronome

Type: Through
Maximum connections: 1
Version: 1.1

I am used to generate click events. I am most appropriate in the output pipeline. The output filter for the track I reside in 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.

A.20. 

 

Monophobic

Type: Tool Through
Maximum connections: 1
Version: 1.0

I am only available in a tool pipeline. I cause all selected note events to follow the mouse as it is dragged up and down.

A.21. 

 

Motion Control

Type: Through
Maximum connections: 1
Version: 1.0

I transform each note I receives into a series of control changes based on my current motion.

Amount

Amount determines the level of the controls generated.

Motion

The Motion menu button presents a list of all available motions. Selecting one will copy that motion into the filter, making it the current motion. Below this button is a motion editor, which operates the same as the Edit Motion window.

Control Number

This list box allows you to select the type of control change that will be created.

A.22. 

 

Motion Splitter

Type: Through
Maximum connections: 2
Version: 1.0

I send all events either down my pipeline or to my connection, if any. The Split point controls where to send events: All events on or above the split point continue down my pipeline, all events below it are sent to my connection. The split point corresponds to the possible values of the motion, ranging from -100 to 100.

Amount

These controls modify the motion curve, acting as an offset to the split point. When the Amount: value is at 100%, the split point directly corresponds to the current motion. As the amount increases, the split point effectively decreases.

If Tools follow Y is on, then when this filter is used from a tool, the amount will be set according to the distance the mouse has traveled up or down from the point at which it was pressed. Tools follow X adds an addition dimension, with the amount dropping off towards either end of the selected events.

Frequency

This control determines how often the filter is applied. With a Frequency of 0%, this filter is effectively bypassed. With a Frequency of 100% this filter operates on every event it receives. When between those values, this filter will operate on each event based on the selected Frequency.

Motion Selection

The Use Motion button presents a list of all the installed motions and lets you select one, copying the selection into the filter and making it the active motion. If Use motion from track is on, then the filter's current motion is ignored, and whatever motion is active in the track for the events being processed is used.

A.23. 

 

MultiChorus

Type: Multi Through
Maximum connections: 1
Version: 1.0

Type: Multi Through.

A.24. 

 

Note

Type: Through
Maximum connections: 1
Version: 1.0

I perform no processing on events. I am merely a place to store some text.

A.25. 

 

On Key

Type: Through
Maximum connections: 1
Version: 1.0

I take 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.

A.26. 

 

Tool Output

Type: Tool Output
Maximum connections: 1
Version: 1.0

A target for the pipeline page of the Edit Tool and Edit Multi Filter windows.

The Edit Tool window can have any number of Tool Output filters (although only one per pipeline). Each filter corresponds to one of the active tracks. For example, the first Tool Output filter in the tool corresponds to the primary track, the second corresponds to the second ordered track (if any), etc.

The Edit Multi Filter window can also have any number of Tool Output filters, again at most one per pipeline. The number of Tool Output filters determines the maximum connections the multi filter can have, and each Tool Output filter corresponds with any connection filters, in order.

A.27. 

 

Pandemic

Type: Through
Maximum connections: 1
Version: 1.0

I generate random control changes with each note I receive. By default, I generate 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.

A.28. 

 

Particle Decay

Type: Through
Maximum connections: 1
Version: 1.0

Successive notes asymptotically approach zero. Simulates radioactive beta decay.

A.29. 

 

Pink Noise

Type: Through
Maximum connections: 1
Version: 1.0

Successive notes constrained to Voss-McCartney 1/f fractal algorithm.

A.30. 

 

Quantize

Type: Through
Maximum connections: 1
Version: 1.2

I snap event times to a grid. If the Tools use grid option is active, then I will use the grid from the current track window (this option is only valid if I am being run from a tool). Otherwise, I snap events to the grid specified by my duration control.

If Quantize start time is checked, then I align the start of all events to the grid. If Quantize end time is active, then I align the end of all events to the grid.

A.31. 

 

Rubber Stamp

Type: Tool Through
Maximum connections: 1
Version: 0.1

I transform events into control changes based on my motion. This is a prerelease version of this filter.

A.32. 

 

Selective

Type: Through
Maximum connections: 2
Version: 1.0

I allow through only the selected event types, diverting all other events to my second connection (if any). By default, all event types are selected, allowing everything through.

Most events have a checkbox for simple allow / don't allow behaviour. For control change events, you can choose the specific controller number to allow.

A.33. 

 

Short Shift

Type: Through
Maximum connections: 1
Version: 1.0

I offset the start and end times of each event I receive. The Start shift parameter increases the start time by the given value. If the Negative box is checked, the start time decreases. If the Use tool grid box is checked, then the Shift: time specified is ignored, and the current grid is used.

The End parameters work the same, but affect the end time of each event. To retain the same note duration, the End shift and End negative values should be identical to the Start shift and Start negative values.

A.34. 

 

Til The End

Type: Through
Maximum connections: 2
Version: 1.0

I am a form of echo that uses measure information for my stop condition. When I am in fill mode, I will fill depth number of measures with the current event. When I am in copy mode, I place a single copy of the event in depth number of measures.

If I have a single connection, all events go to that connection. However, if I have two connections the original event will go out the first connection, and all new events will go out the second.

The Grid is only active in Fill mode. It determines the grid on which each note is aligned.

A.35. 

 

Transpose

Type: Through
Maximum connections: 1
Version: 1.0

I shift notes up or down in pitch. You can control the shift in octaves or steps.

A.36. 

 

Uncertain Chorus

Type: Through
Maximum connections: 1
Version: 1.0

I create a random chorus for each note I receives. If I am in an input or output pipeline, I create a random note based on my Frequency. If I am in a tool pipeline, I follow the mouse, and create random notes between where the mouse was pressed and its current Y position.

A.37. 

 

Uncertain Shuttle

Type: Through
Maximum connections: Unlimited
Version: 1.0

For every event I receive, I randomly choose one of my connections and send the event to it. I can have any number of connections.

A.38. 

 

Unquantize

Type: Through
Maximum connections: 1
Version: 1.0

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

A.39. 

 

Unstack

Type: Through
Maximum connections: 1
Version: 1.0

I thin out stacks of notes, where a stack is a series of notes at the same start time. The Frequency control determines how many notes from a stack I remove. If this value is at Never, I do not remove any notes. If it is at Always, I remove every note in every stack. The Threshold control determines how many notes must start at the same time before I consider them a stack. The default threshold is 1, meaning that any group of two or more notes occurring at the same time is a stack.

The Shift parameters are an optional time shift I can apply to the notes, which is another way to thin them. These parameters will only work if the On checkbox is checked.

The Start shift parameter increases the start time of each note in a stack by the given value, resulting in a staircase effect for groups of notes. If the Negative box is checked, the start time decreases. If the Use tool grid box is checked, then the Shift: time specified is ignored, and the current grid is used.

A.40. 

 

Vaccine.P

Type: Through
Maximum connections: 1
Version: 1.0

I alter the pitch of notes based on my motion. For each note I receive, I check where it falls on the motion, then alter the pitch accordingly.

Amount

Amount determines how much the current motion value affects the pitch. When the Amount: value is at 100%, then the final pitch will exactly match the current motion value. For example, if the note being processed occurs at a motion hit that is five steps above the 0 center line, then the note will be increased by five steps.

Tools follow Y is only meaningful when this filter is being used from a tool. It causes the Amount value to be set by how far the mouse has traveled from the original point. If the mouse travels below the original point, the motion becomes inverted.

Tools follow X causes the Amount to taper off towards either end of the selected events.

Invert X is only valid if Tools follow X is on. It inverts the tapering effect, essentially turning it from a cone to a bowl.

Frequency

This parameter determines how frequently notes will be processed. When set to 0% (Never) this filter is effectively bypassed. When set to 100% (Always) every note is processed.

Motion Selection

The Use Motion button presents a list of all the motions currently installed in the system. Selecting one will copy it into the motion editor at the bottom of the window.

If Use motion from track is on, then my motion is ignored. Instead, I use whatever the current track motion is active for each event being processed. If no track motion is set, then nothing happens.

A.41. 

 

Vaccine.V

Type: Through
Maximum connections: 1
Version: 1.0

I alter the velocity of notes based on my motion. For each note I receive, I check where it falls on the motion, then alter the velocity accordingly.

Amount

Amount determines how much the current motion value affects the velocity. When the Amount: value is at 100%, then the final velocity will exactly match the current motion value. For example, if the note being processed occurs at a motion hit that is at 50%, then the note's velocity will be increased by a total of 50% of the velocity range, which is 64.

Tools follow Y is only meaningful when this filter is being used from a tool. It causes the Amount value to be set by how far the mouse has traveled from the original point. If the mouse travels below the original point, the motion becomes inverted.

Tools follow X causes the Amount to taper off towards either end of the selected events.

Invert X is only valid if Tools follow X is on. It inverts the tapering effect, essentially turning it from a cone to a bowl.

Frequency

This parameter determines how frequently notes will be processed. When set to 0% (Never) this filter is effectively bypassed. When set to 100% (Always) every note is processed.

Motion Selection

The Use Motion button presents a list of all the motions currently installed in the system. Selecting one will copy it into the motion editor at the bottom of the window.

If Use motion from track is on, then my motion is ignored. Instead, I use whatever the current track motion is active for each event being processed. If no track motion is set, then nothing happens.

A.42. 

 

VelociTease

Type: Through
Maximum connections: 1
Version: 1.1

I alter the velocity of all incoming notes. The change I make depends on my current mode.

 

A.43. 

 

Velocity Map

Type: Through
Maximum connections: 1
Version: 1.0

I takes a range of velocities and transform it into a new range. Any velocities out of range are ignored (so use multiple maps to get multiple bands of transformation). I can be used to compress (by setting the To values to a wider range than the From values) or expand (by doing the opposite).

A.44. 

 

Velocity Splitter

Type: Through
Maximum connections: 2
Version: 1.0

All notes above the split point continue down my pipeline. Notes below the split point are sent to my connection, if any.

A.45. 

 

Wipe Out

Type: Through
Maximum connections: 1
Version: 1.0

I delete events that are at their minimum values, as defined by each event, below. The Amount: control can cause events to change by the given amount. If Amount: is set to -100%, I automatically delete all events I receive. The Amount: controls the following values: