Unify Manual

Your complete reference to PlugInGuru's creative playground!

User Tools

Site Tools


polybox

PolyBox

PolyBox is a built-in MIDI effect that distributes incoming MIDI data to multiple INST layers on consecutive MIDI channels. The original PolyBox, added in Unify v1.0.12, could only put each note on a separate layer, i.e., each INST layer was treated as monophonic. This enables three basic effects:

  1. Create a virtual poly-synth from multiple monophonic synth instances
  2. Add multi-core support to ANY synth plug-in (separate instances run on separate cores)
  3. Add interest to polyphonic chords and note sequences by making the various layers slightly (or hugely) different

For Unify v1.2, PolyBox was enhanced with new operation modes to allow two additional effects:

  1. Extended Polyphony, an expanded version of the “virtual poly-synth” technique
  2. Layer Sequencing: using multiple layers with different instruments to create complex rhythmic sounds.

The PolyBox GUI

PolyBox has a very simple GUI, featuring just two pop-up menus, one button, and one checkbox:

You use a single instance of PolyBox on a single MIDI layer, to control a “pool” of between 2 and 16 INST layers in Unify, set to listen on consecutive MIDI channels. Each layer in the pool becomes one “voice” of a virtual polysynth.

  • The Pool Size menu lets you choose the number of layers (1-16) in the pool
    • Choosing 1 allows you to use PolyBox as a simple polyphony-limiter effect. Use the default “Mono/EP” mode, and control polyphony using the “Voices Per Ch” selector.
  • The 1st MIDI Ch menu lets you choose the first of the pool's MIDI channels (1-16)
  • The Voices Per Channel menu chooses the maximum number of notes PolyBox will send to each layer in the pool.
    • At the default value of 1, each INST layer is treated as monophonic, and will sound only one voice at a time.
    • Higher numbers allow extended polyphony, combining two or more identical plug-in instances to achieve greater polyphony than a single instance allows; see below.

PolyBox may adjust your selections automatically, to account for the fact that there are only 16 MIDI channels. If you choose a pool size of 10, but then select 12 as the first MIDI channel, the pool size will automatically reduce to 5 (i.e., MIDI channels 12, 13, 14, 15, and 16).

The Reset button resets PolyBox's internal state, ensuring the next note it receives will go out on the first MIDI channel (i.e., to the first layer in the pool). This can be useful when each of the pool layers is set up differently, to ensure that the layer sequence is restarted.

Checking the Random box causes PolyBox to select MIDI channels randomly from the pool, rather than in strict round-robin order. This can be used for creative effects.

The Mode menu selects when PolyBox switches from one MIDI channel to the next as follows:

  • The default Mono/EP mode (Mono / Extended Polyphony) splits input chords to multiple output layers as before, but the new Voices per Channel menu allows you to choose the maximum number of notes sent to each layer.
    • The default is 1, which is the same as earlier versions of PolyBox.
    • Higher numbers allow more flexible extended polyphony, e.g. using two identical instances of a 6-voice polysynth on separate layers to create a virtual 12-voice version.
  • Chord mode sends entire chords to layers, advancing to the next layer when all notes are released (all fingers up) and the next chord is played.
  • Ch/AR mode (Chord / auto-reset) is the like Chord mode, but automatically resets to selecting the first layer each time you release all notes (actually, whenever the Transport stops). This can be used in combination with MIDIBox or another MIDI sequencer plug-in to achieve “Layer Sequencing” also known as Wave Sequencing; see below.
  • Knob mode allows the layer selection to be controlled using one of Unify's macro knobs. PolyBox exposes a single parameter called Channel (i.e., output MIDI channel) for this purpose.
  • Knob/rt mode is like Knob mode, but automatically retriggers any held notes on the next layer every time the layer changes, for a “strumming” effect.
  • cc126 mode is like Knob mode, but the output layer is selected by means of MIDI CC#126 instead of a linked parameter. You could, for example, capture a CC#126 MIDI sequence and play it in a MIDIBox instance placed before the PolyBox instance.
  • cc126 is the same, but with the note-retrigger “strumming” effect added.

Two additional choices were added in Unify v1.9, and remain somewhat experimental:

  • MPE Synth helps when using a non-MPE keyboard to control MPE synth plug-ins.
  • MPE Kbd helps when using a MPE keyboard to control a stack of non-MPE synths.

Setting up the INST layer pool

PolyBox is just a MIDI effect; it doesn't create any sound by itself. To use it, you need to create your “pool” of INST layers, assigned to listen on consecutive MIDI channels, to match the settings in your PolyBox instance.

For example, the following screenshot shows a pool of four instances of VK-1 Viking Synthesizer by Blamsoft (a free monosynth), driven by a single MIDI layer with a single instance of PolyBox, set up exactly as in the screenshot above.

All the important MIDI routing is established using the cluster of four controls at the far left in each layer. Recall this image from the layer-stack view page, which identifies the function of each control:

The MIDI routing is as follows:

  • The MIDI1 layer receives MIDI directly from the input (IN) on ALL channels.
    • The output channel setting (“NC”, no change) is not really relevant for this layer, since PolyBox alters the MIDI channels in its own way.
  • All four INST layers receive from the MIDI1 layer (“M1”, output of PolyBox), but on consecutive channels:
    • INST1 listens to MIDI channel 1
    • INST2 listens to MIDI channel 2
    • INST3 listens to MIDI channel 3
    • INST4 listens to MIDI channel 4
  • All four INST layers have their output channel set to 1, so even though they each receive MIDI on a different channel, incoming events are converted back to MIDI channel 1 before being sent to the synth.
    • This isn't strictly necessary for many synth plug-ins, which receive on all MIDI channels by default, but can be quite important for “multi-timbral” instruments such as Omnisphere 2, which are normally set up to play multiple parts on different MIDI channels.

Unify v1.0.12 provides some new options on the layer-operations menus (concentric-circles icon at the far right of each layer) to assist in setting up such multi-channel INST-layer pools. Just under “Duplicate layer” are four new layer-duplication options to expand a single initial layer to a pool of 2, 4, 8, or 16 layers on consecutive MIDI channels. (You can manually delete any extra layers if you want a different number.)

The four-layer arrangement shown above was set up as follows:

  1. The first layer was set up manually, exactly as shown.
  2. Dup 3x next MIDI ch was chosen from the INST1 layer-ops menu, to create the other 3 layers automatically

Extended Polyphony

Extended polyphony means using two or more identical INST layers to achieve higher polyphony than the actual instrument plug-in itself supports. You might want to do this for at least three reasons:

  1. The instrument plug-in is a monosynth; it doesn't support polyphony at all.
    • This was the issue addressed by the first PolyBox implementation in Unify v1.0.12. In Mono/EP mode, with Voices Per Channel set to 1, PolyBox will split up incoming chords and send only one note to each INST layer.
    • You can thus turn any monosynth into an N-voice polysynth by using N layers.
  2. The instrument plug-in is a polysynth, but it doesn't have as many voices as you need.
    • For example, KORG's PolySix synthesizer plug-in supports only six voices.
    • By using two identical PolySix instances on parallel layers, and setting PolyBox to Mono/EP mode, with Voices Per Channel set to 6, you end up with a virtual “PolyTwelve”.
  3. The instrument plug-in requires too much CPU power for the number of voices you need.
    • For example, VPS Avenger by Vengeance Sound can support plenty of voices, but requires so much CPU that voice counts higher than 4 are not practical on many computers.
    • By putting identical instances on multiple INST layers, you can use PolyBox to send only a few notes (e.g. 2 to 4) to each instance. Because Unify runs each layer on a separate thread, the work will be spread across more CPU cores, and you may be able to realize more polyphony this way, than you could with a single instance.

Wave (Layer) Sequencing

Using MIDIBox in Poly Tpose (polyphonic transpose) mode, running into PolyBox in Ch/AR mode (chord mode with auto-reset), into a pool of INST layers which are all different, you can create rhythmic evolving timbres.

  • See the new Unify Standard Library patch BPM SYNTH - Sequence Silk (WS) for an example
  • Create a MIDI layer with one MIDIBox instance followed by one PolyBox instance
  • Leave MIDIBox set to Poly Tpose mode (the default), and load a MIDI file that consists of a single note played repeatedly in a rhythmic pattern.
  • Set PolyBox to Ch/AR mode, and set the Pool Size to match the number of INST layers you have.
  • Set up your INST layers however you wish (they need not, and should not be identical, as they would be for extended polyphony), and make sure they are set to listen to an ascending sequence of MIDI channels
  • Important: Make sure the Unify Transport is set to MIDI / Quick Stop mode (the default).

Hold down a chord, and you will hear the layers play in sequence. This works as follows:

  • MIDIBox in poly-transpose mode plays your chord repeatedly, according to the rhythm of notes in the MIDI file.
  • PolyBox in chord mode sends each of the repeated chords to the next INST layer in round-robin fashion.
  • When you stop playing (all keys lifted), the Transport stops. PolyBox detects this and resets to the first MIDI channel.
  • When you start playing again, the Transport re-starts, and PolyBox starts playing again starting with the first layer in the pool.
polybox.txt · Last modified: 2024/03/09 19:37 by shane