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. 

 

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.2. 

 

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.3. 

 

Console

Type: Through
Maximum connections: 1
Version: 1.1

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.4. 

 

Controller Limiter

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.5. 

 

Controller Map

Type: Through
Maximum connections: 1
Version: 1.1

I am a map of control changes. Every controller can be mapped to a new control value.

A.6. 

 

Controller Range

Type: Through
Maximum connections: 1
Version: 1.0

I am a map of control change ranges. Every controller can be given a new range. For example, if the range is 0 9, then the controller is mapped so that it stays within this range. If the incoming value is 10, it's remapped to 0, 11 to 1, etc.

The intended use for this filter is to map button presses from keyboards to a range suitable for the destination control. For example, if you have a keyboard with a button configured to send values of 0 - 127 on controller 12, you can use a Controller Range to map those values into something useful. Say controller 12 controls the filter type on a synthesizer, and their are 10 types, so the valid range is 0 - 9. This filter will step through the range, always keeping the control value valid.

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. 

 

Event Map

Type: Through
Maximum connections: 1
Version: 1.0

I transform each event type into a new event type.

A.17. 

 

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.18. 

 

Inverse

Type: Through
Maximum connections: 1
Version: 1.0

This filter inverts the pitches of all notes. 

A.19. 

 

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.20. 

 

Merge

Type: Through
Maximum connections: 1
Version: 1.0

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

A.21. 

 

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.22. 

 

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.23. 

 

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.24. 

 

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

This control modifies 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 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.25. 

 

MultiChorus

Type: Multi Through
Maximum connections: 1
Version: 1.0

Type: Multi Through.

A.26. 

 

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.27. 

 

On Key

Type: Through
Maximum connections: 2
Version: 1.1

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.

This filter can have either one or two connections. If I have two connections and I am in Discard mode, then all discarded events are sent to the second connection.

A.28. 

 

Oscillator

Type: Through
Maximum connections: 1
Version: 1.0

This filter time stretches all selected events. Tool only. 

A.29. 

 

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.30. 

 

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.31. 

 

Particle Decay

Type: Through
Maximum connections: 1
Version: 1.0

Successive notes asymptotically approach zero. Simulates radioactive beta decay.

A.32. 

 

Pink Noise

Type: Through
Maximum connections: 1
Version: 1.0

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

A.33. 

 

Quantize

Type: Through
Maximum connections: 1
Version: 1.3

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.34. 

 

Reverse

Type: Through
Maximum connections: 1
Version: 1.0

This filter time-reverses all events. 

A.35. 

 

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.36. 

 

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.37. 

 

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.38. 

 

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.39. 

 

TimeStretch

Type: Through
Maximum connections: 1
Version: 1.0

This filter time stretches all selected events. Tool only. 

A.40. 

 

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.41. 

 

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.42. 

 

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.43. 

 

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.44. 

 

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.45. 

 

Vaccine

Type: Through
Maximum connections: 1
Version: 1.0

I alter the value of various event properties based on my motion. For each event I receive, I check where it falls on the motion, then alter it accordingly. The property that is altered depends on the event:

Amount

Amount determines how much the current motion value affects the value. When the Amount: value is at 100%, then the final value will exactly match the current motion value. For example, if a control change being processed occurs at a motion hit that is at 50%, then the CC's value will be increased by a total of 50% of the value 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 events will be processed. When set to 0% (Never) this filter is effectively bypassed. When set to 100% (Always) every event 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.46. 

 

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.47. 

 

Velocity Map

Type: Through
Maximum connections: 1
Version: 1.0

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

 

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.49. 

 

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: