The humanization Plugins for long note I have developed : your thoughts? (Free download link)

Hi my friend composers. Dorico is fantastic for humanization but lacks functionnality for long notes (sustained or legato) humanization. I raised this point in a wishlist one year ago on this forum and decided to develop my own VST3 plugins yesterday using Fable 5 from Anthropic. Took me 4 hours. I am interested by your thoughts on this project. Here after an audio demo for the Violin I section without and with this plugins plus the explanation of what does this plugins. Maybe the Dorico developpers team will consider this functionnality in their future release, would be a time saver : I prefer to compose than spending hours playing with midi CCs.

HumanizerHost — Overview

HumanizerHost is a VST3 instrument for macOS (built for Dorico) that hosts your sample libraries and makes sustained notes breathe. Instead of flat, static MIDI, every long note gets a musical dynamics curve — a swell, a messa di voce, a fade — written automatically as MIDI CC, exactly fitted to the note’s length.

How it works

HumanizerHost delays the incoming MIDI by an analysis window (default 5 s, adjustable). That delay is what lets it see the future: when a note arrives, the plugin already knows how long it will last. Notes longer than the long-note threshold get an expression curve stretched over their full duration; shorter notes pass through untouched. The delay is real and audible by design — it is identical live and on the timeline, so what you hear is what exports.

The Humanize page — 8 CC lanes

Each of the eight lanes writes one MIDI CC (CC1 Mod Wheel, CC21 Vibrato, or any other) and has its own:

- Curve — a breakpoint editor (drag points, double-click to add, bend segments) defining the shape applied to every long note.

- Presets — eight factory shapes (Swell & settle, Messa di voce, Crescendo, Diminuendo, Attack & sustain, Fade at end, Sforzando, Flat) plus your own:save the current curve under a name, rename or delete it. User presets are stored app-wide and available in every project.

- ModeReplace overwrites any CC you play; Scal* multiplies your played CC by the curve, so your own expression still shapes the result.

- Min / Max — the CC output range the curve is mapped into.

- Glide — instead of jumping, the CC ramps into each new curve (0–500 ms). Glide is legato-aware: on overlapping notes it pre-glides to the next note’s starting level before the attack, so your library’s legato transitions trigger at the right dynamics.

The Instrument page — a 4-slot rack

Four slots are layered and summed, each with:

- an instrument (any VST3 — Synchron Player, Kontakt, BBC SO, …),

- an optional insert FX (e.g. Vienna MIR Pro for placement/reverb),

- a slot volume, into a shared master volume.

Plugin editors open in floating windows. When loading, type keywords to filter the plugin list by name, maker or format — Enter or double-click loads.

Scanning runs safely out-of-process via Manage plugins….

Everything — hosted plugins, their full state, curves, settings — is saved with the Dorico session, and audio export (freeze/render) is fully supported.

Is it publicly available? I’d love to try it. Perhaps I missed a link above?

Hi my friend, it not yet available at it is at the early development stage. I was wondering if it was an interesting approach and what could be improved in the approach. but yes no issue : checking how to share the VST3 beta properly. Would be for Mac silicon only : is it ok for you ? Franck

Mac Intel here, sorry, but thanks for trying.

Sorry to read that. My approach is to proof the concept to Steinberg for them to implement such humanization logic for long notes in Dorico. It was really easy to develop and the Dorico team have access to their proprietary file structure so they could code the logic without the time delay I have (because the VST listen to midi)

Here is a complete example of a strings section with the plugin enabled and disabled (“To Samuel”, composed in 2022)

Enabled

Disabled

Your thoughts ?

Definitely adds a bit of life, but you can tell the curves are pinned to note values (lengths) because they sound the same for the same note lengths. I’m not sure how far you want to take it, but adding context to the curve choice, or rather rules, e.g., two notes of the same length in a row get two similar, but different curves. So you have banks of curves for a particular note length that are applied based on some rules.

There’s probably an endless amount of logic you can add to it.

Great ideas. Thank you for listening. Indeed long consecutive notes at the same length and pitch sounds identical, so the humanization objective is lost in the logic. I love the idea of round robins applied to curves. Or I can try is to add some randomness in the curves, maybe simpler programatically. Next round this weekend. Thank you for your interest and feedback. Franck

Looks like I am reinventing the Noteperformer Engine at this stage if I take into account the phrase. I think I need to have to have a deep breath first :joy: All thoughts to add better humanization logic are very welcomed.

Of course, that was my first thought but then having a “curve” tool is useful it its own right.

The old Eastwest strings had lyrical and expressive variants that had differing curves. I recently revisited them and made a handful of playing techniques (expressive and lyrical with short, medium, long modifiers). The combinations (exp fast, etc.) gave life to the score and made me appreciate that old library again.

So… curves are good.

This is the way indeed to sound realistic indeed ! So interesting. Thank you for sharing your approach !

This already sounds very promising. I’ve developed my own logic for humanizing long notes: two or more consecutive long notes get a small expression curve. Slurred notes i treat like one note. The last note of a phrase drops much more sharply at the end. The louder a note, the flatter the curve; the same applies to very soft notes. I make the expression most pronounced in the mezzo-piano and mezzo-forte range. In the end I can fine-tune as needed.

Thank you my friend for sharing your approach. Can you clarify “two or more consecutive long notes get a small expression curve” ? For last note drops of course. For me the general phrasing needs to be still drawn by the composer to follow the phrase, so I am using the dynamic marks (pins) all along the phrase and do the drop manually just like you do : this is best practice you are right. Flattening the loud and soft note is an excellent idea indeed ! Thank you ! Will look how to implement that

So I implemented the curves variations to make sure two consecutive note of same pitch and duration do not sound the same : per-note random jitter of the curve points (timing and value), so two identical notes never render the same curve twice. Seeded per note: exports reproduce the performance you approved. The audio exemple hereafter with the jitter set to 25% both for dynamic and vibrato. Sounds Better. Thank you for the idea.

Yes it does. your welcome.

A human using a bot to help them make music for other humans and make it sound like a human made it.

This is the world I’m living in. Humans humanizing music that they could just make themselves, seeing as they are human.

I use when my finance permits real orchestra, or when orchestra accepts to perform my music for free . But this rare so I rely on audio mockup and midi automations. But it is so time-consuming to program each note. I prefer spend my time writing my music.

I just checked your name. I’m not good in remembering nicknames. So: Hi Franck! Great to „seeing“ you again.

It would look something like that. If the notes wer slurred, I would start by treating them as one note.

Yes, understanding, or at least attempting to understand the phrase is integral but what Frank is going for also has its uses.

Thank you ! This is a curve with slight below the dynamic ramp at the beginning and at the end of the long notes, whatever its duration is. So the plugin I am developing is doing so, great !. The good thing is that it scale the dynamic accordingly (not replacing your CC) so it applies during crescendo and decrescendo without cc editing and simulate the move of the bow for the strings. What is interesting is that because the curve can be edited, we can give a specific character to the piece (for instance swelling long notes). I am wondering if I should not implement key switch to move from one curve to another one, so each long note can have its own dynamic curve template. But it complicate the plugin. Thank you for your input !