christophhart / HISE

The open source framework for sample based instruments
http://hise.audio
Other
965 stars 112 forks source link

Inconsistent Behavior Between Exported VSTi MIDI Output and HISE VST-hosted Project MIDI Output in DAW #463

Open aaronventure opened 7 months ago

aaronventure commented 7 months ago

I'm creating a rather simple MIDI effect. Take in the controller value, fill the array, get the average, output that instead. Some checks for notes playing to ensure a smooth experience. Using the timer callback to send that average as a controller.

If I load this inside the HISE VST in the DAW then load an instrument right after, it works as expected. I can monitor the MIDI with ReaControlMIDI and it's all great.

But when I export this as a VST3i plugin (the MIDI FX export results in a plugin that outputs no MIDI when loaded as vst3 in a DAW), the output seems to have interspersed real controller values. The result is controller output that jumps all over the place.

Here's the snippet. Don't forget to enable MIDI output in the project settings.

HiseSnippet 1699.3oc6X0uaaaCDWJIpqRqcXEaO.r4OJjQ7br6Z65lm2RhSxfWW9.0cEEnnnfQh1lHRjFTTo0qM.8gcO.6MX6HojkriShmQSF1vBJJLIui2u638oNTvCHIIbgks6yFMjXYeKmtiXxAsGfoLqNaaYeam85rcGT2XNWNvZqQCwIIjPKa6k+IEI1tqXo+6O9wsvQXV.oXKKqmyoAjegFSkE6d3FOgFEsKNj7LZbIpevFcB3r17HdJ.mkcpaMDGbLtOYerhrkbrruwNgTIWzUhkjDK6U1hGNp6.9aXF5eNMgdTDQsngUW3hLauKOJTgX0tVsGPiBOLWsSrrrcNrvHrrwH7kN6QCoi2uvX745CPEbT1dXuzjva4IfWixvqdI3MCHYWBRqXfzcb5FHnCkEmnvyMb1SAsxnvPl0RCtkCCLbIfQjf1THvidAx6cddqudqq1+7b8bWeciHQcSi8borHJif5kxBjTNCkjFi7wpyq349NOW2Hd.NRs8lnVn5Mgcf+0iKP9LDkgLjZNesVHVFABhLUnusMgcN0H2qSkaySHBv+7rJH1bvGYkbcMI0hHr9xA+ynwcIxY7bRjYZZUjAbUQmfiRISn3zVZc1nCAQDrnYt9qNBQ+9LECQWaMfSMqFxeI8UfISekJdNUo5dmdc3J6IH8QTy600f3TRSBIEEcIPpvvDkfqU+gMM3.eR+sR60iHfse4qZVrtlfjPDmP7aTudklZZCB5vFlJyPtYGyB0uSzIy2LlmxjE6JHvqRBosZWsPtdTZPDn1BBjyDIGPfPAP38fjVds4vOYxZw3iI6JfEcxOx+Q0qWE8Hs15AVpDI3cH.UbeHyRKTNi3vvmv3G4up9fUqhpq+GvTNEfqKjPcHQHojDPFw+b2C1ufdHeo6pwT1peGpQU0OwuU8y6+X0hDIYXW5uQLGdJbqSGXvY5KRILAOxOfGOjy.wNN7.td8yxdX4fZBvtG5aNoo2oflkix9DY6bdyAWEE1yt413nnifZk9SJPkwoj0w7nOKyi4DPeanLq5+6xsQiY5bLRvsbFij6pgjd3zH4yUZIr28e34Y4LW+EZ5lxKdFFQO2hXDcJGeXSWSwPkd4O93pSDS.tIW3SPlteNuAS.8JMKoT6ykjCX9ZzCd8pvVo1oOKzCEXh87bmUrnIQbhDKjlrDHZODiKQhTFix5CYl6g70suUilnZtR7TyI9UPsZg5giRxyIanReWZB8Km1oRdwk8fNMf5XfZxBeFW05yAoRkM7TOzzpUudF8ZN4Iy7DAhVylB54r1erUENF7mORQjRCffk6cuIydc2VnFY5j13vElzH3.YJT0Q6I.mUjOblBQ6OpcNbMWD.GiItj8sJJMY7E2t8369hs50GWKad76xvYkr5bSilwHg1mkqoIfqRfjDB7BTSf23bAlqpFh24DkuqTniLJe6WjG073RodSLj.1T345PvuFZF8IjQI.U2srI3Rc6LE2mzUwPYdPiAs4ALuY.gAHFcLHLnEJBZnQ3kiElEpxdXdmtCqxgZqsVQmUJ2ogFQjKOZBhehJ.Uc8SEj9Cpjdn2+9oJuV3flq87gYpjQTpmLjghxkziAAsSDIV8pUWaaJNkxfB9R+xB5qZLo2Sg7f.wRQaAAUyFGnVVapEdiUxi7mYrpOSGJVNErhPXDkIm6w47m6o7XYAlTqkHjy5vnxCFRXm2vZVY4igYjVJCU.oR8DReV1DRcingDgEElF5Sbz0Csz.t7npVyAy2zwXdmh6Or6FV+ZmswRrZPsL7TTfD1aaxIvTulw1bc1ljbL7hqAbVAD3tuTH+VvNZqj2n7ejWJEtzaXmMecrdB7hk32pV9grkkK1Vn8e6FVyERFq+ZnDlCkv+VPI7xfxYmzElwlGlFgkSN3s5qMjc.3UNwHup9BYIT4nxOwezlFedg3cbNjJCFLaLtzLvnxI9J.iYeCia6rCDRGHK.3JN69hqlOXQYweyy46H8oNpXEXEQ7w3qHMbt+JR1KeU7UiV4ewe0nuvo6D0DfFzl0mPx92cPmSyqWTCfWRidquNrSBOhTan.l0y+h5GSUNZN6mrTSB+Kn50BUA4+yU9ehbkOkmJgFngwUETUoUnZeWHYU.AjNiAMCppxtjxawrtddC.pfV8h+D9K6vFp01YG1H+vqEYDiCD7WGXhtT4etodGPuY5OXuqydp0nFS29kpWgP5qCBl7pNCi2eQY7qWTFevhx3CWTFezhx32rnL93KmQUR1MSk7XSnok0dGtiNcks8NLL3kqiHr9K.zPuaoB

Here's a screencap of the ReaControlMIDI log which shows the plugin outputting values that it shouldn't be outputting. If you load that snippet into the VST version of HISE inside your DAW and use it as a MIDI plugin, the output works as expected - for the target controller, it's only outputting the average of the array, with none of these weird values.

image

davidhealey commented 5 months ago

Do the MIDI effect related fixes from yesterday make any difference here?

aaronventure commented 4 months ago

Hey, yes, it still has MIDI bleed through in compiled VST3i as of 29 Feb

84f92f322e1be538bb3cc42a7ef7492b962519ae

HISE plugin works fine, compiled does not. It's like Message.ignoreEvent(true) sometimes fails, causing the physical value to still reach the downstream MIDI processor which then sends it out into the world.