|On this page|
The MIDI Out CHOP sends MIDI events to any available MIDI devices. These devices can be other software programs (midisynth) or devices attached to the serial ports. Channels are used to control the sending of the MIDI events. The channels are evaluated over the last time slice (from the last framebar position to the current).
An event is sent every time a channel changes its value during this slice. All timing is preserved, as long as the framebar is running in realtime. Channels are mapped to events by their name. Events like notes, controllers and velocities must be followed by the note/controller number (n65, c7).
If the number is left off a note event, the note number is the value of the channel. Other events, which are sent to the entire channel, do not need a trailing number (pc, pw). The channel prefix can be used to identify the MIDI channel the event should be sent on (i.e. "ch1n45" assigns that Houdini channel to note 45 messages on MIDI channel 1).
Where the MIDI events are sent to.
The filename of the output MIDI file.
Write MIDI File
Writes all the data to a MIDI file.
The MIDI channel(s) to output to. If a channel prefix is not given, all channels will receive the same events.
The prefix string that all input channels must have in order
to extract the channel number from their name (ie.
ch1note44, with a channel prefix of
Echo Messages To Textport
If enabled, all MIDI events are logged in the textport as they occur.
MIDI events are generated and queued this amount of time ahead of the current frame.
All events will be played later by this amount of time.
Max Jump Time
If the Frame Bar increases by this amount or more since the last cook, MIDI events in that interval will be skipped.
If Houdini could not cook in time to generate the next MIDI events, it recovers by one of three methods. Missed events are skipped, delayed or output immediately.
'All Note Off' events can be sent upon the start Off and/or end of the output.
All Notes Off
Sends an All Notes Off message to all MIDI channels.
The base name of the note channels.
If input channels have a number after the name, it is assumed to be the note number. If not, the channel value is assumed to contain the note number.
The base name of the velocity channels.
The name of the aftertouch channel.
The name of the channel pressure channel.
Channel values in the range
0-1 are mapped to
Pitch Wheel Name
The name of the pitch wheel channel.
The base name of the controller channels.
Sends 7 or 14 bit controller events.
Maps channel values from different ranges to
The name of the program change channel.
Bar Ramp Name
Clock ticks frequency is determined by the period of the
ramp. The ramp must be
Ticks Per Bar
The number of clock ticks per ramp.
Send Start/Stop/Continue Events
Sends the appropriate events when the framebar starts or stops.
Some of these parameters may not be available on all CHOP nodes.
To determine which channels get affected, some CHOPs have a scope string. Patterns can be used in the scope, for example
* (match all), and
? (match single character).
The following are examples of possible channel name matching options:
Matches a single channel name.
chan3 tx ty tz
Matches four channel names, separated by spaces.
Matches each channel that starts with
Matches each channel that has
foot in it.
? matches a single character.
t? matches two-character channels starting with t.
Matches number ranges giving
[xyz]matches three characters, giving channels
Sample Rate Match
The Sample Rate Match Options handle cases where multiple input CHOPs’ sample rates are different.
Resample At First Input’s Rate
Use rate of first input to resample others.
Resample At Maximum Rate
Resample to highest sample rate.
Resample At Minimum Rate
Resample to the lowest sample rate.
Error if Rates Differ
Does not accept conflicting sample rates.
The units for which time parameters are specified.
For example, you can specify the amount of time a lag should last for in seconds (default), frames (at the Houdini FPS), or samples (in the CHOP’s sample rate).
When you change the Units parameter, it does not convert the existing parameters to the new units.
Time Slicing is a feature which boosts cooking performance and reduces memory usage. Traditionally, CHOPs calculate the channel over its entire frame range. If the channel does need to be evaluated every frame, then cooking the entire range of the channel is unnecessary. It is more efficient to calculate only the fraction of the channel that is needed. This fraction is known as a Time Slice.
Causes the memory consumed by a CHOP to be released after it is cooked and the data passed to the next CHOP.
The Export prefix is prepended to CHOP channel names to determine where to export to.
For example, if the CHOP channel was named
geo1:tx, and the prefix was
/obj, the channel would be exported to
You can leave the Export Prefix blank, but then your CHOP track names need to be absolute paths, such as
Every CHOP has this option. Each CHOP gets a default color assigned for display in the Graph port, but you can override the color in the Common page under Graph Color. There are 36 RGB color combinations in the Palette.
Graph Color Step
When the graph displays the animation curves and a CHOP has two or more channels, this defines the difference in color from one channel to the next, giving a rainbow spectrum of colors.
This example demonstrates how to write MIDI data using the MIDI Out CHOP, and read it in using the MIDI In CHOP. The MIDI that is written out is based on geometry, and the MIDI that is read in is controlling other geometry.
The following examples include this node.