train~ Reference

Pulse train generator

train~

Description

train~ generates a pulse signal whose period is specifiable in terms of milliseconds (see <~ for a method of making a pulse wave at a specified frequency). It also sends out a bang when going from 0 to 1, so it can be used as a metronome with a floating-point interval.

Examples

Provide an accurate pulse for rhythmic changes in signal

Discussion

The signal output can be used as a control input for sah~ as shown in the example below, or at very small intervals, it is audible.

Arguments

inter-pulse-interval [number]

Optional
Unitsms

Sets the initial value for the inter-pulse interval in milliseconds. The default is 1000 ms. If a signal object is connected to this inlet, the corresponding initial argument value is ignored.

pulse-width [number]

Optional

Sets the initial value for the pulse width. The default is 0.5. If a signal object is connected to this inlet, the corresponding initial argument value is ignored.

phase [number]

Optional

Sets the initial value for the pulse phase. The default is 0. If a signal object is connected to this inlet, the corresponding initial argument value is ignored.

Attributes

interval [float]

Specifies the period (time interval between pulse cycles), in milliseconds, of a pulse train sent out the left outlet. Signal inputs override this attribute value.

phase [float]

Sets the phase of the onset of the "on" portion of the pulse. A value of 0 places the "on" portion at the beginning of the interval, while other values (up to 1, which is the same as 0) delay the "on" portion by a fraction of the total inter-pulse interval. Signal inputs override this attribute value.

resetmode [int]

When resetmode is set to 1, train~ will defer an interval change. If the interval is 2000 and you change it 400, train~ will wait until it completes the current cycle to change the interval to 400. When resetmode is set to 0 (the default), the interval is changed immediately.

width [float]

Controls the pulse width or duty cycle. A value of 0 has the smallest "on" pulse size, while a value of 1 has the largest. A value of 0.5 makes a pulse with half the time at 1 and half the time at 0. Signal inputs override this attribute value.

Common Box Attributes

annotation [symbol]

Sets the text that will be displayed in the Clue window when the user moves the mouse over the object.

background [int] (default: 0)

Adds or removes the object from the patcher's background layer. background 1 adds the object to the background layer, background 0 removes it. Objects in the background layer are shown behind all objects in the default foreground layer.

color [4 floats]

Sets the color for the object box outline.

fontface [int]

Sets the type style used by the object. The options are:

plain
bold
italic
bold italic Possible values:

0 = 'regular'
1 = 'bold'
2 = 'italic'
3 = 'bold italic'

fontname [symbol]

Sets the object's font.

fontsize [float]

Sets the object's font size (in points). Possible values:

'8'
'9'
'10'
'11'
'12'
'13'
'14'
'16'
'18'
'20'
'24'
'30'
'36'
'48'
'64'
'72'

hidden [int] (default: 0)

Toggles whether an object is hidden when the patcher is locked.

hint [symbol]

Sets the text that will be displayed in as a pop-up hint when the user moves the mouse over the object in a locked patcher.

ignoreclick [int] (default: 0)

Toggles whether an object ignores mouse clicks in a locked patcher.

jspainterfile [symbol]

JS Painter File

patching_rect [4 floats] (default: 0. 0. 100. 0.)

Sets the position and size of the object in the patcher window.

position [2 floats]

g/s(set)

Sets the object's x and y position in both patching and presentation modes (if the object belongs to its patcher's presentation), leaving its size unchanged.

presentation [int] (default: 0)

Sets whether an object belongs to the patcher's presentation.

presentation_rect [4 floats] (default: 0. 0. 0. 0.)

Sets the x and y position and width and height of the object in the patcher's presentation, leaving its patching position unchanged.

rect [4 floats]

g/s(set)

Sets the x and y position and width and height of the object in both patching and presentation modes (if the object belongs to its patcher's presentation).

size [2 floats]

g/s(set)

Sets the object's width and height in both patching and presentation modes (if the object belongs to its patcher's presentation), leaving its position unchanged.

textcolor [4 floats]

Sets the color for the object's text in RGBA format.

textjustification [int]

Sets the justification for the object's text. Possible values:

0 = 'left'
1 = 'center'
2 = 'right'

varname [symbol]

Sets the patcher's scripting name, which can be used to address the object by name in pattr, scripting messages to thispatcher, and the js object.

Messages

bang

Sending a bang to train~ will reset the cycle to make the "high" part of train~ start immediately.

int

Arguments

parameter-settings [int]
Numbers can be used instead of signal objects to control period, pulse width, and phase. If a signal is also connected to the inlet, float and int messages are ignored.

float

Arguments

parameter-settings [float]
Numbers can be used instead of signal objects to control period, pulse width, and phase. If a signal is also connected to the inlet, float and int messages are ignored.

resetmode

Arguments

on/off [int]
The message resetmode 1 will defer an interval change to train~. If the interval is 2000 and you change it 400, train~ will wait until it completes the current cycle to change the interval to 400. The message resetmode 0 will cause train~ to change the interval immediately.

signal

In left inlet: Specifies the period (time interval between pulse cycles), in milliseconds, of a pulse train sent out the left outlet.

In middle inlet: Controls the pulse width or duty cycle. The signal values represent a fraction of the pulse interval that will be devoted to the "on" part of the pulse (signal value of 1). A value of 0 has the smallest "on" pulse size (usually a single sample), while a value of 1 has the largest (usually the entire interval except a single sample). A value of 0.5 makes a pulse with half the time at 1 and half the time at 0.

In right inlet: Sets the phase of the onset of the "on" portion of the pulse. A value of 0 places the "on" portion at the beginning of the interval, while other values (up to 1, which is the same as 0) delay the "on" portion by a fraction of the total inter-pulse interval.

Output

bang

Out right outlet: When the "on" portion of the pulse begins, a bang is sent out the right outlet. Using this outlet, you can use train~ as a signal-synchronized metronome with an interval specifiable as a floating-point (or signal) value. However, there is an unpredictable delay between the "on" portion of the pulse and the actual output of the bang message, which depends in part on the current Max scheduler interval. The delay is guaranteed to be a millisecond or less if the scheduler interval is set to 1 millisecond.

signal

Out left outlet: A pulse (square) wave train having the specified interval, width, and phase.

See Also

Name Description
<~ Is less than, comparison of two signals
>~ Is greater than, comparison of two signals
clip~ Limit signal amplitude
phasor~ Generate sawtooth signals