MidiFX Plugin from Hise
-
This is my findings so far, regarding compiling a "Midi FX Plugin" from Hise.
Tested in Logic, Live and Reaper
- Live
Au version is not recognized
VST3 is recognized but not able to open the GUI, and it doesn't have any affect in Live
VST2 is recognized and I'm able to open the GUI but it's dead.
Not dead, see the post regarding Ableton Live further down
-
Logic
The au version (of course), it's recognized and I can open the GUI. All tests works. -
Reaper
The au version is not recognized at all, the VST3 is recognized but is not working
The VST2 version is working. All tests works.
The tests
- Arpeggiator
- Midi Player
- Midi drop
- Midi drag
- Able to send and receive midi CC
- Tempo sync to host
- Free tempo regardless of host tempo
- Recording:
Logic only records pressed keys, nothing from the Midi FX plugin
Reaper records all the output from the Midi FX plugin, note events and midi cc
I miss the opportunity to use LFOs inside, I haven't been able to get them to work, I don't know if it's possible??
Here's a video
MidiFXPlugin VideoI used this snippet project to test
HiseSnippet 3437.3oc6as0jZibEVXaYavY7kMaUIOjGTMURJbrs.AL3YxdI.Rba3lLhggY1ZytBoFPFgjPRv.rY2xOtul+A6K4kjeDY+ojeB447xltkDfz.hAXsSkGlYpBU8kyo+Nm9bo6VsX0UE.FFp5XAB1XpF.Kvu.maphYO5d7RJXEYvBb.dEIQobsRqqQDCKyTMdCCfHVf.2MOpKABdOLq+92+oL7x7JBfkUgg0TUR.TVZfj4xZYSURRVNGuHngz.W8NQphBpJzpxpifv4t3Qwz3E5y2ETkG0s6fiE39YEkLU04L4MAFXAtWFUwob8TuRwt+MkLjZKCPEnv3fLxt5bpxhHDipEitmjrH6bw1.CxE1kJg6ZqD9XKYdQ8KUFO0pAhkT3VeD3Ndg2c8.OJ2vKpK3sFHcWWP5AymWrfjL+Tftq4EBmZbiC5Q55.ESNvvQ.OyGOMkSSMzgZV2SckUU0xpvCQmn6pQLuMrqbZ.uMD3tasnRsQQEyx3RRFXMSLu.r2HQDNkyvaxicm+1cvOJZbRkFIKcLct2jdFEMYqVJyJxTnHOMYMxZCUNcw+ZoY5SO6ETMGe0nnpEnxjbX0WGcL4aXSTrWW1dWTWKwaY3NcZ4hQKzJ4k5YRWucqxoUJ2nVgzcZj63SFzhjIGoTZV0QB8Kc4T9ST34DpVa53DTmjP7nxsxKlTM4al19zjMO6EbxQKWm+33BT54uRWXlD6zFLlmMJ2kkLHaoIlqvvqnGJVkcnb9IUEH6jHWl9FxutzIsxOYrVdoZkh1KqRilWd0rDLMJPWgVfte82zexrKZe4vVkKdQoVUKYDszaad9om2XTFN9homTOu1klZ5hmIUpByaf0VmWsW7bG0VpZClBwpKlqqIMStX0GjtyIG0Ht3Qm2SdJM44EOgLigJMy4brr0i27nAhmnkFvqwSxNksfXxXSOobAtNCUAQunPOEI12NVH5.xYkJ2KdyIwxHLnN4vW71wmwEukZxtyp0YRbsiZV3xJJEhwMfTRl6zdQGBqLc+5CORugYylstrAneBpw4qWsV+5kp2ucoi4JjXXySiwdRbUv3rU43OdRhpSRz4szjkkSpAljWraqBU5VKyw8Nk8EiO40mRln7XR9JIZ2hpaY1n4yvySl9Rw1EnzIiOS67YTlIHufucwY5LW91y.Yl0rJuPmAL0RdgjYknW0ZZ4xS3yK7FA4LUozFIY1OyjyUml9nR0Ng5rSFLHlB43imk83KpVZ7PQ1SnpdQF5iGxlgrSMZZkS4ISlVevvrG0X5a6OtTmAWztOek9YvPlt1Aq9q3QNy.naDYjrtT+1ph.kHkkZqyqOMRE01v9QvnJLZ.zWzHhf5fuiWSSF7czvXehvFLhTnHWVB150NMKcCtHoqxTOMWDVn2CAzWTBx5HKCGDYgOTj58lZ1aPjz0Y4hbFKjLlZmWkbfDJt.JZKmTWEdyQ5PHhWczfL7PePna8+3uC+6+7jTUUGHAa2JcvhXFL.k0UMJjAz8W2zc7d63HdBUfcqS8sN025TeqS8sN025TeqS8sN025TeqS8sN0+Oyo10QIbO6iR3Y3bB5RZlKaA4s+H7hJl.8N7B.Omlfcewty8ChSqB6ghI4.99fb5vBKnHbxnQeIA7mm+IgBInpXXRLlWmHstFnaWID1oH9LBqSVhrKvzyoqD9P2c6PHGVxfkZ4UH2p1vG55PP7RJjoVGaQ41xPZmCcH0zpCzTUfErF348wKwYXq3KQv1714BpFlah.m18RDMcMEeo.0Hp6gBoC5RHnNRwD12nexxhRJBvZL0GA9jPQhXqYLPlCHyL8vTQnrmKhDInkFhl1yXCM9ZaoS8a7s6v0gbSd4QfMPkU61.WRQVRAPzYjhfojpBgpxxYMzuHVnqJGVXN8uDNFPpednuITPoNDgcJEL3R5H0fOBijqf.YCf21LLU0BSgZ7agi+5QnWHb3yIMPMaADZdYYzQcE1Gf5iP4HyaTZblc.JhNcSFNCMWEiPnEKB+74zrIIXgNd8P2KbrvrkMixX3r1WbHzr3vWR.eDiw4oyiF1OS3TcBmGNUerS0G67.VcHDuR5TOUx4OcHH9b9GO17mNsjb9PjLw7mMN7KWutct24FUtticfzIoMM0kZOxDD1SKVLpjhZ6kJ4ft79QTF9PSvDSHpTF+EV84K23Lwbp8ap3Zn2dtXUgzI3vV6N.KFLqRWHWPCqE0ZCB+JJj.EDxHaIAXeVtPgoCOzSA032N2o4aVeGQwRrXxpbG06klo1LyeEyhvcqWu3Uf8ws5lzHqhwa10YCXxKdbgipplfZJgWLKrHEDz4kUGfxQVBL0H7yI9ThXD+9euUXc25Ja0sqH3AC5avZjVMDw0G8Nc1tgm54t3splMqQJDOrzUDHKtBKanJCH0zkf5nJPVx2EXq3l2Q63TVy6d4kyPLGb1B4m+YDTjQe9bg1NOkkQHT.c2wOEpNVoi1IzB5tivFVzIhWXQD0xD.1U+pEUCkH6PfnIZ6IA6t7GHnh8ZjRdd6B83U5BD8UEEVwRtca0g5HbUTde0G3a2q9Pv1lzUGUUJpHYVSCn32qlBywPFCKvANnB1USqEw8XmEwkYjoopBFZIlAwc7svrfr6EFh4G4bxRh.cKxwwWCoUSsMj9PbXzNncx0olXqnND97Xk6.8tj66iW4rFYuNsvk9tUzVnVYlMovtmMsejGbyhd+Y1zCWrO00o+2jRDsw4.QwiGiD9mb5zveYJC+gkkz4OVFF3uwGA+oPZZ3umTZ2F1XWeX+0dG1NCyfF1SgCS7gngkEACkbvxiUPkyhZ+0mxraCa7aRZOBMLEJfjtdngoEZXhmGVlUCU1D0dYOC6lLNluRocXB1E8vcsX6v6g7eP6UmuU1VOE26pA2AWKOVYn7Bqg1yJZcBKv8Y43pCc+0.5lRnHKAX.ikD.1aZKHNCvnOLvNVfOdQRMr.OXKhFLY4P9aSMcQg28EotRRzr2xV+yo5Aj51y0VJ+7Tn0Dg1xn8aG1ZuNDv7sHwdAHd7MDSwO.vu8..xH3fNfeIqd2vTvMVKJCXUMjPgtWzxO1NkgIPiSZlGqEQPG9Qx1IEbeqCF39VLj.R5TYq22dAUcoYvYEdYLiQc5HMAMOthrGzV1OvQ1Ky2FHaI5O1cMwboCRAboCfJDu5fTZqnCXbzAPawhLEIx0hfs7Y4KVEqCDcdkxDo.vjS7V4eBb2cGmTtv4656FmEu9bknuyUGfhRjMe9hoaTq9Z.YTeA4St4LL9XKgobc83WuF7oMO4ZQKA28NDvz304G.LAVs8DzwyvgLhrgvbAq5YUH3JWjIacNOFiXeseFiXr6fwXzMZ8EBmvFNFdr.OXaRrNws2wtp1rk9GfywlMKiW4Nlux8g6fb+wqWtgqUpAbnynNw550DvkPGxOy4CvcssN2VKXXScWXqEabb3NdwVZwZewjP2hF2vYolVxDLv9RLECxr6+rm8r4oIVz6GdSKkwOibyq6D13miQ9iwsOmOmweaQn0Bl7Ag+qQuWQHbvTkE2i3swcCvKbAPB8qAve367cl+w3Uq0HKAzmOCxeeWBj8fsYQi9.wUlkWEhu6MaTGt65qD9Aludx1quBg2La4ZzEabwNoqd31rRWefWpY+b0UKGthJhfIy2J1tp.OxODBAzVq.Ov1fqb1p4aT38sNzWWhTu6CfNLlGcXnsY48KgGwews6PhadUhESsRxXO2L00kIx+70qY1eiarvOf2XWA9O9Uo1ej9HSmqtpMRyIqxaJozsA584ZqoQ6jgAt+B+VLv65byKFnXJmMpzvwfCwzZiA5v8Fwxq.cMZ2c9U3M38gD76PTsLmHp1u+6+9exasVYJYXXrp1ZGQAph+MgHHNjcoY2g+QBOusmWhZ2xfC1RTqR4TkkUu5bU89FZ7B.X8Vm7TnuEa20TV61ah6DGaPS8i5q3xz7+S0TT6fl5Aa+9h8SSsC6w6QKuQyaIJb1WsONf6xXihCQXcflXXqdevOvc7Nq2V50h.54Zf+d6tQu73+9kawgLbskysWGG1A30AF.y0yhs6XDu9Vm1qiD7Q3HNXgk8CEO0hAb8k7AFam5.xEUcSzQr+yQi.El4u8osPa7TGF.c.Zqh15ChEvD6N2l+EUuWmF1A30DL4GCpiN668SZBhy0CtgTYv9cTXOx4jjZHA1jHr4ygDF5FLPpAL9fqFtN29mefOC1OFuIPVUPxb5VCh2+mH6GgWFnz0r21qG1+SmcsVlOCmtGuBLcFGPFHfBOdyFlqkQ+J7ZiL0FY9dhcOCuBaVqKHiCCWwbcKc8dBhQYUD8gMQ2xWQg0FYW0iY0amCLypp3HYTdE2e2QnO1JmFPKBzcBGzsvQAt3vod9Bcde8wHssP7Y3rRlB8VOFuyZvHLs1GBLtHkc1NcfVPKA38vy05Cy2qEVc0QnUPVg2TGcPcVY.gKVCFs11nA8ZBCbGT.R6xQQkQZ.NfhnUgeB9mSiTnxAbZjZdiXC3EzU+JAaaMzWK0CspAhIEq67VP7JnxDKdYT33QIihA27fzWIHfD+WA2X65oI1dPS78flD6AMGsGzjbOn406AMGuQZPqlM8HS0A1tCvJXyZuj8.K9V6fai++loSxCG
Don't forget to compile Hise with this enabled in projucer
![alt text]( image url)https://i.imgur.com/GD61q4o.png
- Live
-
@ulrik Have you experimented with different plugin categories and types?
-
@d-healey no I didn't even know about it :)
Thanks for showing, interesting -
@ulrik setting the AU_MidiProcessor flag might be useful for Au export. Let me know if this changes anything then I‘ll hook it up into the exporter.
-
@Christoph-Hart I'll experiment with it, thanks!
-
@d-healey @Christoph-Hart aha, you were talking about compiling Hise as a plugin right?
That's why I couldn't find the settings in the Hise Standalone project
Those settings are in the Hise Plugin project not for the the Hise standalone.I'm talking about compiling a MidiFX plugin from Hise standalone.
-
@ulrik I was talking about compiling your project as a plugin, not compiling HISE. Those settings are accessible in your project's .jucer file.
-
@d-healey ok, I didn’t know that, great thank you
-
This post is deleted! -
@Christoph-Hart said in MidiFX Plugin from Hise:
@ulrik setting the AU_MidiProcessor flag might be useful for Au export. Let me know if this changes anything then I‘ll hook it up into the exporter.
This is from the Ableton Live website
I did not know about this limitation before -
@ulrik Did you know of this little quirky setup needed for Ableton Live MIDI output, because I did not. My VST2 from HISE on windows work fine both in Ableton Live and Reaper.
https://help.ableton.com/hc/en-us/articles/209070189-Accessing-the-MIDI-output-of-a-VST-plug-in
-
@jonhallur Beautiful find! Thank you for showing, works great with Midi FX plugin vst2
-
@ulrik More updates.
If you like to use modulators and MIDI I have found the least changes you can do to the HISE code to make that happen.
diff --git a/hi_core/hi_core/MainController.cpp b/hi_core/hi_core/MainController.cpp index 2863465c6..5a40b119e 100644 --- a/hi_core/hi_core/MainController.cpp +++ b/hi_core/hi_core/MainController.cpp @@ -975,7 +975,7 @@ void MainController::processBlockCommon(AudioSampleBuffer &buffer, MidiBuffer &m } } -#elif HISE_MIDIFX_PLUGIN +#elif defined(HISE_MIDIFX_PLUGIN) || defined(ALLOW_MIDI_OUTPUT) synthChain->processHiseEventBuffer(masterEventBuffer, numSamplesThisBlock); @@ -1149,7 +1149,9 @@ void MainController::processBlockCommon(AudioSampleBuffer &buffer, MidiBuffer &m #endif #if !HISE_MIDIFX_PLUGIN + #if !ALLOW_MIDI_OUT midiMessages.clear(); + #endif #endif }
Then I added the following extra definitions
JucePlugin_ProducesMidiOutput=1 JucePlugin_IsMidiEffect=1 ENABLE_ALL_PEAK_METERS=1 ALLOW_MIDI_OUT=1
Export the plugin as a FX (not as MIDIFX) and Bob is your uncle.
-
@jonhallur If I change the code to this and export the plugin as FX plugin, will it really load as a Midi FX plugin?
-
@ulrik With out knowing it completely, I don't think under the VST2 or even VST3 (I´ve done some professional JUCE work before using VST3) there is no concept of a MIDI FX plugin.
At least in JUCE, you just tell the host that you want to receive and/or send MIDI. You can do the same with sound, stating how many channels you want to input/output etc.
I have no idea what a given host does with that information. The host will ask a plugin upon instantiation weather it will produce audio and/or MIDI. A JUCE plugin can answer yes to both. Perhaps some hosts will decide to put some plugins into some categories, but it works on Windows both in Reaper and Ableton Live
-
@jonhallur Ok I see, I might give it a try and see if also Logic will accept it as a MidiFX plugin, thanks! :)
-
@ulrik Please let me know, I don't have a Mac and I'm very curious about Logic.
-
@jonhallur I don't know if I did. it the right way but...
I changed the code (as you described), compiled Hise Standalone with the extra definitions, exported as FX plugin from Hise but it didn't show up in Logic under the Midi FX slot
-
@jonhallur am I supposed to set the extra definitions in Hise preferences as well?
And do I set the Hise projucer "HISE_MIDIFX_PLUGIN" enabled? -
@ulrik No, I did not mess with the ProJucer project file at all it's just settings in HISE.
I also did not compile the HISE Standalone editor again, if that is what you mean.