- XenRoll is a xenharmonic (microtonal) piano roll audio plugin.
- You can choose the pitch of notes with an accuracy of one cent, and there are 1200 cents in an octave (so it's a 1200 EDO piano roll)!
- You can bend notes independently in a visible way.
- This plugin features a unique short-term pitch memory model that shows the tonality, stability, and consonance of notes/keys. It includes two dissonance submodels (with visualization): one based on compactness and the other on partials' beating.
- You can generate notes and/or a pitch curve in real time by singing/humming.
- You can use the keyboard to play and record keys.
- You can display a clock diagram that shows notes, intervals, and chords in real time.
- You can import and export tracks.
- You can have several independent instances of this plugin in a single project and view ghost notes from other instances.
- XenRoll uses either MPE or MTS-ESP (as a master) for microtuning.
ββVideo examples
ββSo far, only VST3 versions for Windows, Linux, and macOS are available. Go to the Releases tab and download the corresponding archive. Instructions are included inside.
ββThis plugin is intended for use inside a DAW. Place the synth/sampler after XenRoll in the track's FX chain.
ββXenRoll has two tuning modes: MPE (selected by default) and MTS-ESP. The tuning mode is the same for all instances of XenRoll in the project; it can be changed in the UI via the combo box at the bottom right. After changing it, you need to save and reopen the project for the changes to take effect. Many things change depending on the tuning mode, so I strongly advise you to read at least the first two rows (requirements):
| Property | MPE | MTS-ESP |
|---|---|---|
| Suitable DAWs | Almost any | Many popular ones: FL Studio, Reaper, Bitwig Studio, Cubase/Nuendo, Logic Pro, Ableton Live, and others |
| Synth/sampler requirements and setup |
|
|
| Compatible with DAW native piano roll | DAW native piano rolls have nothing to do with XenRoll. They work in 12 EDO. | The DAW's native piano roll is unsuitable1 for working with the MIDI channels used by XenRoll instances. |
| Max number of instances | Not limited | 16: one instance per MIDI channel |
| Pitch accuracy | Depends on the MPE pitch bend range in XenRoll2. Maximum errors in cents:
|
The maximum error is less than 1Γ10β»ΒΉβ° cents because the pitch is set using a frequency in Hz as a double-precision floating-point number. |
| Max number of pitches | Not limited, but no more than 15 simultaneously played pitches (because each note uses its own MIDI channel, not including the first one). This can be greatly relaxed3. | 128 different pitches (pitches that match at least one note) |
| Max bend that a note can have | Depends on the MPE pitch bend range in XenRoll2; it is Β±48 semitones by default, so the default maximum bend range for a note is approximately Β±48 (47.5β48.5) semitones. If the MPE pitch bend range is set to Β±96 semitones, the maximum bend range for a note will be approximately Β±96 (95.5β96.5) semitones |
Β±10 octaves = Β±120 semitones (the full XenRoll pitch range) |
| Single pitch polyphony4 | Supported | Not supported (may be added in future versions, but it is unlikely) |
| Type | Name | Developer | MPE mode, setup | MTS-ESP mode, setup |
|---|---|---|---|---|
| Hybrid Synth | Surge XT | Surge Synth Team | β
Enable MPE. |
β
Disable MPE if enabled. Turn off the 'Menu β MIDI settings β Use MIDI channels 2 and 3 to play scenes individually' setting. |
| Synth (Wavetable) | Serum | Xfer Records | β
Enable MPE and turn off the 'limit polyphony to one of any note number' setting. |
β
Disable MPE if enabled. |
| Hybrid Synth | Serum 2 | Xfer Records | β
Enable MPE if it is disabled. |
β
Disable MPE. |
| Synth (Physical Modeling) | Pianoteq | Modartt | β
Set the pitch bend range in the settings equal to the MPE pitch bend range in XenRoll settings (by default: Β±48 semitones β (-4800, +4800) range). |
β |
| Hybrid Sampler | Shortcircuit XT | Surge Synth Team | β
Enable MPE in 'PARTS'. Set the 'semi bend range' in the MPE settings equal to the MPE pitch bend range in XenRoll settings. |
β
Set the MIDI channel shown in the bottom right corner of XenRoll in 'PARTS'. |
| Synth (4-bit Wavetable) | Junior | Fors | β | β
|
| Synth (Spectral Warping Wavetable) | Vital | Matt Tytel | β
Enable MPE |
β |
| Synth (Analogue) | Diva | u-he | β
Enable MPE |
β |
This is just a list of some synths/samplers that I personally tested. In fact, many more synths/samplers may work with XenRoll.
You will need JUCE, a C++ compiler, CMake, and the C++ Boost library. You may have to make some adjustments to CMakeLists.txt. You can use the provided *.bat/*.sh scripts.
To debug the plugin through VS Code with any DAW, configure the .vscode/launch.json file.
video1.webm
video2.webm
This project is licensed under the GNU General Public License v3.0.
Footnotes
-
The pitch of a MIDI note depends arbitrarily on its number. In addition, during the playback of bent notes, XenRoll changes the frequency of the MIDI note in real time. β©
-
Don't forget to sync this value with the synth/sampler! β© β©2
-
In
MIDI channels economy mode(can be enabled in XenRoll settings), simultaneously playing non-bent notes that have the same {pitch mod 100Β’} will occupy the same MIDI channel. But if the synth/sampler does not support polyphony on each channel individually in MPE mode, there will be errors! β© -
Whether two or more notes with the same pitch (the pitch of a bent note equals its initial pitch) can be played simultaneously. β©
