Thank you so much for your detailed feedback and advices about humanization : this is really helpful and can not thank you enough for providing such valuable insights. I am not a string player and apparently I missed many points for realistic humanization.
for the piano accompaniment, humanization is out of the box from Dorico: it applies pitch contour algorithm on note velocity and not sure it applies accents for note changes. I will take this advice into account when programming my piano y editing the velocity directly in Dorico.
For strings or sustained notes instruments, the scope of the plugin, I did not push the logic so such advanced level, just bow changes, and vibrato curves for long notes as you noticed. I understand the duration threshold should be adjusted consequently: easy as this is a general settting of the plugin. But applying different curve for two consecutive note and adjusting for instance the bow pressure based on the phrase is another logic level on which I lack the relevant knowledge to implement realism. This said, let me think and work this out. Your CC curves and comments / examples are self explanatory and a good start for me to work on. Again thank you for these insightful feedbacks. Hope the plugin will work on your PC.
Thank you for sharing your workflow. This is indeed the best way to generate a meaningful tempo track. Automation of tempo track is a completely another level of logic and I doubt this can be done by an algorithm. So we still need to spend time manually on this important dimension of our music as you suggested. I wish you a great day.
It looks like the contours involving loudness are in MIDI values. If you want the contours to “sound” like they “look,” they need to be in dB, or some linear function of dB.
HumanizerHost version 0.3.0 has been released. This version adds a Monitor tab that shows, in real time, exactly what the humanizer plays: one scrolling track per monitored CC with the humanized output as a solid curve and your original playing dashed, plus a mini piano-roll of the note stream on the same timeline. A sliding window (1–30 s) and a Freeze button let you examine phrases in detail, at zero cost to the audio engine. The release also gives the plugin a branded header with logo, version and copyright, and the session-wide bypass button moved up there for a cleaner tab bar. Installers available for MacOS (universal) and Windows (not tested).
HumanizerHost version 0.4.0 has been released — the pitch threshold becomes a global Keyswitch threshold: notes below it still play but no longer trigger the long-note curves or the legato pre-glide either, and they are hidden from the Monitor’s note strip. Smoother output overall: Glide now eases the combined output (curve × phrase contour), and outside a curve the CC ramps to the player’s value instead of jumping. Variation keeps each note’s start and end exactly on the designed curve. New defaults for fresh instances: scale per octave 70%, Variation 25%.
1) Every rack slot now receives its own rendition of the performance: the curve variation is seeded per slot, an Ensemble timing setting (Notes tab) spreads each note a few milliseconds per slot like the players of a section (durations preserved, keyswitches untouched), and a Variation per instrument setting (Phrase tab) makes each slot lean into the phrase contour differently. Slot 1 always plays the exact reference rendition, and exports stay reproducible.
2) Also new: curve lanes can target Pitch bend as well as any CC — full-resolution 14-bit bend curves on long notes (min/max keep their 0–127 units: 0 = max down, 64 = centre, 127 = max up), the player’s own bend passing through outside them.
3) The instrument rack grows from four to sixteen slots (scrolling in the Instrument tab), and the Monitor gains a slot selector.
4) In the Phrase tab, two follower controllers (vibrato depth and vibrato rate) can mirror the dynamics CC output, each scaled by its own percentage — vibrato that breathes with the phrase.
5) multi-core rendering (on by default): occupied rack slots are rendered in parallel across CPU cores instead of serially on the audio thread, so a rack full of heavy instruments (SWAM, large samplers) no longer saturates a single core. The worker pool is shared by every HumanizerHost instance in the session — large templates with many instances don’t oversubscribe the CPU. A Multi-core toggle in the Instrument tab disables it if a hosted plugin misbehaves.
The reason of this plugin : I am searching for orchestra play back realism after the discontinuation of the NotePerformer Engine. I love writing music but do not want to waste hours programming my midi CCs even if I have to acknowledge this is the way real pro composers will shape and produce their music… but I am an amateur. With the past years I learned however how to shape my dynamic and vibrato curves and found this task quite repetitive and believe it could be automated. Last but not least, sample libraries, even the most expensive such as Spitfire audio, are lacking of realism and for years I tried to include in my template the Swam instruments from Audio Modelling with no success : too much manual programming. Now, with my HumanizerHost 0.6.0 one instance of the plugin can host 16 Swam Violin solo, positioned in a concert hall using MIRPRO 3D, each receiving dynamic and vibrato depth and rate slightly different curves, bow pressures and bow position, following the phrase contour with humanization of long note and slight detune using the pitch bend : the result is a convincing 16 violins I section. My new orchestra template is now full SWAM with up to 80 swam instruments all positioned in a concert Hall using MIRPRO 3D. The real work, and this is not in the installer I share for free, is to design your own curves (e.g. dynamic, vibrato depth) for your woodwinds, brass and strings. This is a question of personal taste and sometimes, I found myself tweaking the curves to give a particular piece the character it required. So the plugin is not at all plug and play as you will need to edit the curves to your midi CC programming habit.
Now, hereafter the audio rendering of “Flying Theme” from John Williams using the 0.6.0 version with 100% SWAM instruments (important note : all instrument of your template should be hosted in the plugin as they need to be delayed with the window time, but with contour and curves disabled). PLEASE WAIT 10 seconds before it starts (time window of 10 seconds)
And an excerpt of the Allegro Con Brio of ther 5fith Symphony of Beethoven
Both are using the same template. Using a MacBook Pro M3 max.
My friend composers. A quick note of my HumanizerHost using 80 SWAM instruments : my MacBook Pro M3 Max is not able to render the audio live because of CPU usage, no issue when exporting the audio. And no issue with 80 kontakts players on my MacBook Pro if not using SWAM. I am doing very very high CPU/GPU intensive tasks for my programming/data/AI consulting work so I upgraded to the Mac Studio M5 Ultra. I will use it for my music composition hobby as a side benefit, but the astronomic price of this hardware cannot be justify by music production only.
Thanks for working on this! I use SWAM with my EWI-5000 (and Camelot), but my MIDI CC assignments are, most likely, different than yours — I’ve adapted them for my individual setup. I have to take the time to go through what you’ve posted to see how I can use it but wanted to let you know that I appreciate the effort you’ve put into this. Thank yoy!
— Jim
Thank you for your support. I will release today the version 0.8.0 that better handle multi-processing, solving the audio drops during tutti. Works very well with my MacBook Pro M3 max but not tested in its Windows version. Nice to read your interest in this plugin and happy to provide you with support if needed.
The changes compared to the previous release (0.6.0) (mainly performance optimization):
0.7.0 — phrase follower CCs (vibrato depth/rate) gain a bipolar offset applied after the scale, so a fading phrase can keep a little residual vibrato instead of going to zero. Good for pp and ppp notes where a slight vibrato should apply.
0.8.0 — multi-core rendering that survives a tutti: the worker pool now uses only the performance cores (a worker on an efficiency core took three times longer and stalled the whole block), and on macOS the workers join the audio workgroup of the device your DAW streams on, so the system schedules them with the audio thread. Sixteen SWAM instruments with sixteen Vienna MIR Pro inserts at 4096 / 48 kHz: 63 ms per block serially, 10 ms in parallel, worst block 15 ms. New render meters: each slot strip shows its peak render time per block (instrument, then fx), and a line under the master volume shows the rack’s peak against the block’s budget, the workers and the workgroup — orange past half the budget, red when over. Fix for MacOS user. Not tested on Windows machine.