Internal tracks

An internal track alters the sequencer's behavior. Internal tracks are analogous to controller tracks, but instead of transmitting control change messages to the output device, they're handled within the sequencer.

An internal track accesses an internal controller. Up to 128 internal controllers are possible, though relatively few are currently implemented. Which internal controller is accessed depends on the control number, which is specified via the track's note property. Some of the internal controllers emulate existing MIDI controllers, and in such cases the same control number is used. For example, one of the internal controllers implements sustain, and like the MIDI sustain controller, it uses control number 64. The supported internal controllers are shown in the table below.

Internal tracks are per-channel, meaning that each internal track operates on a single MIDI channel, selected via the track's channel property. To operate on multiple channels, create multiple internal tracks, one for each of the desired channels.

Internal controllers

Control NumberNameFunction
62Duplicate NotesSets whether the channel prevents duplicate notes. Track steps are interpreted as unsigned values. A value of zero selects Allow, and any other value selects Prevent. This controller overrides the Duplicates setting in the Channels bar.
63Note OverlapSets the channel's method of correcting note overlaps. Track steps are interpreted as unsigned values. A value of zero selects Split, and any other value selects Merge. This controller overrides the Overlaps setting in the Channels bar. This controller only works if the note overlap master property is set to Prevent, otherwise it has no effect.
64SustainSets the channel's sustain switch. Track steps are interpreted as unsigned values. A value of zero turns sustain off, and any other value turns it on. While sustain is on, all active notes on the channel are sustained, regardless of their durations. This applies both to notes that are already active when sustain is switched on, and to notes that are triggered while sustain is on. When sustain is switched off, notes with expired durations stop immediately, but notes with duration remaining continue until their durations expire.
66SostenutoSets the channel's sostenuto switch. Track steps are interpreted as unsigned values. A value of zero turns sostenuto off, and any other value turns it on. Sostenuto is similar to sustain, except that it only sustains notes that are already active when sostenuto is switched on. Notes that are triggered while sostenuto is on are not sustained. Sostenuto is typically used to hold a note or chord, and then play melodies over the held note or chord. When sostenuto is switched off, notes with expired durations stop immediately, but notes with duration remaining continue until their durations expire. Sostenuto can be combined with sustain.
123All Notes OffTurns off all notes on the channel. Track steps are interpreted as unsigned values. Transitioning from zero to any non-zero value stops all notes immediately, regardless of their durations. Notes that are being held by the sustain or sostenuto internal controllers are also stopped immediately.

Internal versus external controllers

Why are internal sustain and sostenuto controllers useful? One reason is that the output device may not implement these controllers correctly or at all. Another reason is that the internal controllers modify the actual note durations, both during playback and in the MIDI export. Because internal sustain and sostenuto are applied to the note durations, the exported MIDI file will play as intended even if the playback device doesn't support these controllers. The Piano bar also shows the actual note durations resulting from internal sustain and sostenuto, which it doesn't do for the corresponding external controllers.