MIDI 2.0

Phylo is not a MIDI 1.0 app with a compatibility layer. It is a MIDI 2.0 device, and its controls were designed at that resolution.

Every control in Phylo stores a 32-bit value, the native resolution of MIDI 2.0, and a control's display range, unit, curve and step are data that travel with it. A cutoff is a frequency in hertz on a logarithmic curve, an octave is a stepped whole number, a waveform is a list of names. MIDI 1.0's 128 steps were never the ceiling, so a hardware knob and a knob on the panel are the same knob.

Controllers map themselves

Each device carries controller layouts: named pages of its controls, authored on the device editor's third tab. When Phylo runs it publishes itself as a MIDI 2.0 endpoint and serves those layouts over Property Exchange, the part of MIDI-CI that lets a controller ask a device what it has. An off-the-shelf MIDI 2.0 controller receives the standard control list and maps its encoders. A Phylo controller receives the page structure as well, with everything it needs to show a control the way the app does: the value in real units, the option names of a menu, whether a knob is stepped, and whether it is centred. There is no learn step and nothing to configure by hand.

The Controller Layouts tab in the device editor: four named pages, Oscillators expanded to show its eight controls and their CC numbersThe Controller Layouts tab in the device editor: four named pages, Oscillators expanded to show its eight controls and their CC numbers
The same synth's layout in the device editor: four pages, Oscillators, Filter, Amp & mix and Voice & tuning, with CC numbers assigned automatically and editable when a controller needs specific ones. These are the four banks in the rack below.

Incoming control changes and notes go straight from the MIDI thread to the audio engine, without a trip through the interface, so playing an instrument from a keyboard is as immediate as the engine's buffer. Note velocity arrives at 16 bits and is a modulation source you can patch to anything inside the instrument.

The virtual controller rack

To develop against real hardware before the hardware exists, Phylo has a virtual controller rack: a separate macOS app that publishes its own MIDI 2.0 endpoint, discovers Phylo through MIDI-CI exactly as a physical controller would, fetches the layout, and renders it as a control surface. It shows values in their real units, stepped controls turn with detents, centred controls draw their ring outward from the middle, and turning a knob moves the control in Phylo, while a move in Phylo moves the knob. Everything it shows is driven by the data a real controller receives, nothing more, so it is a faithful stand-in for the hardware to come.

The virtual controller rack showing a device's controller layout as knobs and readoutsThe virtual controller rack showing a device's controller layout as knobs and readouts
The virtual controller rack connected to Phylo, its four banks holding one page each of a synth's layout: oscillators, filter, amp and mix, voice and tuning. Its own colours, not the app's: it is a different device.
DemoThree Movements joined as a Composition. Generated for you.