Recording MIDI input

The MIDI input recording feature is primarily intended for the case where a MIDI controller device is being routed through Polymeter to the output device. For example you might be using a MIDI controller to tweak the settings of a software synth. If you record a live performance in Polymeter, it's not enough to record only your dubs. In order to entirely capture the performance, the controller moves must also be recorded.

Recording of MIDI input is optional, and it's off by default, for backwards compatibility. To enable it, open the Options dialog and set the Record Input option to "Dubs + MIDI." Now when you do the Record command (Transport/Record), in addition to your dubs, any MIDI events received from the input device will also be recorded. Note that playback of the recorded events occurs ONLY in Song view. There's currently no way to directly view or edit the recorded events, though this may change in future versions.

The timing resolution is pretty good, but there can be problems with recording latency. If the recorded events playback out of sync with the sequencer tracks, you can offset their timing via a Master property, Record Offset. This offset is in ticks. To make the recorded events earlier relative to the sequencer tracks (the usual case), enter a negative value.

It's unusual for a record offset to be specified in ticks as opposed to milliseconds, but it has one big advantage: once the record offset is correctly set for a given recording, you can subsequently change the song's tempo and the record offset remains correct.

There's no exact method for determining the amount of recording latency. The most direct approach is to record yourself playing along with a click track and then adjust the record offset by ear until it sounds in sync. You can also inspect the timing differences in the MIDI output view. On a typical system, the record latency is about 40ms, but your results will depend on your hardware configuration. Once you know your recording latency, you can compute the appropriate record offset for a given song via the following function:

offset = (tempo / 60) × timebase × (latency / −1000)

This assumes the latency is specified in milliseconds. For example if latency is 40ms, tempo is 90 BPM, and timebase is 120, the function is:

offset = (90 / 60) × 120 × (40 / −1000)
offset = 1.5 × 120 × −0.040
offset = −7.2

So in this case the record offset should be −7 ticks.