Wednesday, March 4, 2020

Polymeter 0.0.27 increases max track length

Polymeter 0.0.27 greatly increases the maximum track length, and adds new features such as recording of MIDI input and a convergence calculator.

Maximum track length

A track can now have up to millions of steps, depending on its Quant. This was achieved by completely replacing the default profile read/write implementation. This upgrade also made reading and writing the document much faster, with the difference being most noticeable for very long tracks.

Track length is still limited by several factors. The hard limit is that the product of the track’s Length (in steps) and Quant (in ticks) can’t exceed 2 billion. Attempting to exceed this limit causes the error message “Track too long.” But well before reaching this upper limit, you’ll experience problems with the track’s steps not displaying correctly (or at all) in the Track view. This occurs because the width of the Track view is similarly limited, to around 100 million pixels.

For example, a Length of 1 million and a Quant of 30 gives a product of 30 million ticks, which seems doable. But how wide are the steps in pixels? At the default zoom, they’re 20 pixels wide, necessitating a Track view width of 20 million pixels, which is already quite large. Zooming in a few times makes the track too wide, causing incorrect display. This view width / zoom limit may be addressed in a future release, but in the meantime it’s recommended to keep tracks under a million steps, or even less if unusually large Quant values are used.

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 parameters 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 MIDI / Record Input option to true. Now when you do the Record command (Transport / Record), any MIDI events received from the input device will 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 are out of synch with the sequencer tracks, you can adjust their timing via a new Master parameter, 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 the 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 usual approach is to record yourself playing along with a click track and then adjust the recording by ear until it sounds in sync. You can also inspect the timing differences in the MIDI output view. On my 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) * PPQ * (latency / -1000)

This assumes the latency is specified in milliseconds. For example if latency is 40ms, tempo is 90 BPM, and PPQ 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.

Convergence calculator

This calculator shows all the convergences between a given set of loop lengths. If tracks are selected, the input comes from the track selection, otherwise you can enter a set numerically in the dialog.

If the input is from selected tracks, the results are shown in either steps or ticks, depending on the Quants of the selected tracks. There are three distinct cases:

  1. The selected tracks all have the same Quant. In this case, the results are shown in steps.
  2. The selected tracks have different Quants, but all the Quants are integer multiples of the smallest Quant. In this case, the results are shown in steps of the smallest Quant. For example, if the selected tracks have Quants of 30, 60, and 120, the results are shown in steps of 30 ticks.
  3. Neither of the preceding cases apply. In this case, the results are shown in ticks. This can make the numbers much bigger, and may cause the calculator to take noticeably longer.

If you compare the results to the Time to Repeat function, bear in mind that Time to Repeat is shown in beats, which must be converted to either steps or ticks depending on the cases explained above.

If you prefer to enter a set numerically, make sure no tracks are selected when you show the calculator dialog. The set must consist of at least two comma-separated positive integers. Note that zero is not a positive integer. A valid input set could look like this:

2,3,5,7,11

Simply type the set and press Enter or Tab. To export the results, use the clipboard: copy the output edit control’s text, using Ctrl+A and Ctrl+C or the context menu, and paste it into the desired application.

Note that the convergence calculator is also available as a script (JavaScript) that should run in any browser including on mobile phones.

No comments:

Post a Comment

Heptatonic scales with a minor third

Which heptatonic scales consist entirely of semitones, whole tones, and a single minor third, without having two semitones in a row? The he...