midiselect

Select and interpret raw MIDI data

Description

The midiselect object receives raw MIDI bytes and selects and separates the input stream. MIDI data to be selected is set using the midiselect object attributes bend, ch, ctl, note, pgm, poly and touch. There is a separate data outlet associated with each of these seven MIDI data selection attributes. Any input data which is unselected will be sent out the object's eighth raw MIDI data outlet.

Note: Due to the nature of the MIDI coding, use of the ch attribute is cumulative: at least one channel needs to be specified; otherwise, all raw MIDI data will be sent out the 8th outlet.

Arguments

None.

Messages

bang Clears the midiselect object's memory of any partial MIDI messages received up to that point.
int MIDI-message-bytes [list]
Numbers received in the inlet (usually from a seq or midiin object) are treated as bytes of a MIDI message. The status byte and the filtering attributes determine the outlet which will be used to output the data bytes.
float MIDI-message-bytes [float]
Converted to int.

Attributes

Name Type g/s Description
bend int When then bend attribute is set to 1, Pitch Bend information is sent out the 6th outlet, otherwise the Pitch Bend is sent out the 8th outlet as raw MIDI Data.
ch atom The ch attribute allows you to specify which MIDI input channels will be selected. While you can choose input from all channels by instantiating the midiselect object the the argument @ch all, you can also select specific channels (e.g., the argument @ch 1 3 5 will only select MIDI information on the first, third and fifth channels).
ctl atom The ctl attribute allows you to specify which MIDI controller messages will be selected. By default, no controlers are selected. You can select specific controlers to be filtered (e.g., the argument @ctl 7 9 64 will select the controler 7 (Volume), 9 (Pan), 64 (Sustain Pedal)). To select all controllers, use the argument @ctl all. To select no controllers (the default), use @ctl none.
note atom The note attribute allows you to specify which MIDI note messages will be selected. By default, no notes are selected. You can select specific notes to be filtered (e.g., @note 60 64 67 will select the C4, E4, G4 notes). To select all notes, use the argument @note all. To select no notes (the default), use @note none.
pgm int When then pgm attribute is set to 1, Program Change information is sent out the 4th outlet. Otherwise, the Program Change is sent out the 8th outlet as raw MIDI Data.
poly atom The poly attribute allows you to specify which MIDI poly pressure will be selected. By default, no poly pressure is selected. You can select specific notes to be filtered (e.g., @note 60 64 67 will select the C4, E4, G4 notes). To select all the notes, use the argument @note all. To select no notes (the default) use @note none.
touch int When then touch attribute is set to 1, After touch data is sent out the 5th outlet. Otherwise, the Aftertouch is sent out the 8th outlet as raw MIDI Data.

Information for box attributes common to all objects

Output

int: Out 4th outlet: The number is the program change.

Out 5th outlet: The number is the aftertouch (channel pressure) value.

Out 6th outlet: The number is the pitch bend value.

Out 7th outlet: The number is the MIDI channel number.
list: Out leftmost outlet: A note-on message. The first number is a pitch value and the second number is the velocity value.

Out 2nd outlet: A polyphonic key pressure message. The first number is an aftertouch (pressure) value and the second number is the pitch value (key number).

Out 3rd outlet: A control message. The first number is a control value and the second number is the controller number.

Examples

See Also

Name Description
midiparse Interpret raw MIDI data
borax Report current information about note-ons and note-offs
midiformat Prepare data in the form of a MIDI message
midiin Output received raw MIDI data
midiinfo Set a pop-up menu with names of MIDI devices
Max MIDI Tutorial 3: MIDI Parsing Max MIDI Tutorial 3: MIDI Parsing