Midi Effects Plugins in Ableton Live
-
I've started experimenting with building MidiFX Plugins with Hise.
In Logic I can get those plugins to work, in this one, it will redirect the played/recorded notes in to selected scale
I usually compile all my plugins to au and vst3 but I noticed that Ableton Live 11 doesn't see the au's and doesn't load the MidiFX plugins as vst3 so I compiled them as vst2 instead
So I can load them from the "Plugins/VST" library into Live but they don't do anything to the recorded/played track they are assigned to.
So does Ableton handle MidiFX Plugins differently than Logic?
-
@ulrik Did you ever figure this out , I am trying to get our CC modulator working as a MIDIFX plugin but it only seems to work as an AUv3.
When exported as AU it does not output any cc, the modulators are in scriptnode, not sure if they stop working in MIDIFX ? -
@lalalandsynth Yes I got it working, for Logic I had to compile as MidiFX au, but for other DAWs I compiled as Instruments vst3
Here you can see I send a slow LFO on cc 11, working nicely
I've tested it in Reaper, Live, Cubase and Studio One, and I can get cc out on all if I compile it as an Instrument VST3
-
@ulrik I had to set the extra definitions with this though
JucePlugin_ProducesMidiOutput=1
-
@ulrik So conclusion, to get it to work in those daws, except Logic, I had to compile them as instruments, not MidiFX plugins
So the main question (topic), if it works in Live, yes as Instrument and as FX plugin, (VST3), however Live doesn't recognize on which midi channel the cc is sent, it will automatically set it to channel 1, if that would be a problem for you project
-
@ulrik Very interesting, will try that , just normal AU exported as MIDIfx from HISE.
I think it did not work for us , we did have the extra definitions.
Although we are using Scriptnode modulators and Global cables . not sure if that changes anything.I think it opened as midifx but had no cc output.
So we ended up with the auv3 which is an hassle .
-
@ulrik So I built an AU MidiFX from HISE ,it opens in Logic but the modulator does not run , scriptnode Clockramp.
Also not getting any CC output from knobs that should send CC.I have the correct Extra definitions set.
I would love to get this working as there are no resize or ui issues with AU as opposed to AUv3.. although I might have to use that as the modulators work there.
Are you using a scriptnode modulator or any scriptnode nodes ?
Do you see anything wrong with my settings ?
-
@lalalandsynth said in Midi Effects Plugins in Ableton Live:
Are you using a scriptnode modulator or any scriptnode nodes ?
No scriptnode nodes or modulators, and no modulator modules either, I've scripted my LFO's triggered by a running MidiPlayer, if I remember right, I could not get the modulator modules to work inside an MidiFX so I took that scripting road instead.
I've done a similar project (MidiFX) using the the transport handler, creating a "onGridChange" function to trigger the scripted LFO's
Do you see anything wrong with my settings ?
No, it looks allright
-
@ulrik I see, that is probably it. Scriptnode does not work for MIDIFX.
AUV3 is exported as fx and therefore works, but it does show up in MIDI fx tab in logic , I guess it allows that for AUv3 if it detects midi output ? -
@ulrik I am assuming you are using a timer for sending out the CC ?
We just encountered a problem in our plugin.Now works as Vst2, Vst3,AU and AAX.
BUT...when buffer is set to 1024 or higher , it stops working, that is the plugin runs but stops sending out cc.
Not entirely sure if scriptnode or the timer stops working.Assuming that our projects both use the timer, have you tried setting buffer to 1024 or higher?
-
@lalalandsynth Actually I'm using this function, creating MessageHolder objects for each controller value, and it is triggered by the TransportHandlers" GridChange function" set to minimum note value = 18 ( 1/96)
So it will read the cc values on each 1/64T of current tempo
// SEND CC FUNCTION inline function sendCC(number, value, channel) { local cc; switch (number) { case 128: cc = 16384 * value; break; default: cc = 127 * value; } local m = Engine.createMessageHolder(); m.setType(m.Controller); m.setChannel(channel); m.setControllerNumber(number); m.setControllerValue(cc); Synth.addMessageFromHolder(m); rm.sendOSCMessage(subdomains[channel-1], ["cc", channel, number, cc]); };
I've set the Transport handler like this:
const TH = Engine.createTransportHandler(); TH.setEnableGrid(true, 18); // 18 = 1/96 TH.setSyncMode(TH.PreferExternal); TH.setOnGridChange(true, GridChange);
I have both some kind of Extra Low LFO curves running and a sliderpack for each channel (4 channels) and they can be configured for all cc's and pitch bend, and yes, it works nicely.
However I have not tried changing the buffer, I'll try it when I get homeCC lane / channel
Low LFO / channel
-
@ulrik very interesting to see! Thanks.
I am pretty sure that we have discovered that midi out stops working at 1024 buffer or higher.Rather than the timer or scriptnode.
-
@lalalandsynth Confirmed, something breaks at 1024 here, the clock seems to still triggers but... the Synth.addNoteOn & Synth.sendController stops working at 1024 (I've not tested over 1024)
@Christoph-Hart what do you think happens? Could it be fixed?
-
@lalalandsynth said in Midi Effects Plugins in Ableton Live:
@ulrik very interesting to see! Thanks.
I am pretty sure that we have discovered that midi out stops working at 1024 buffer or higher.Yeah, the midi out is out :)
-
@ulrik indeed, thanks for confirming.
Discovered by complete accident, completely puzzled for quite a while as I didnt notice that protools changed my buffer size.All of a sudden plugin stopped working :)
Should i make a bug report?
-
@lalalandsynth I think I have found away around it. Although there are some warnings in the code about memory usage etc.
But since we are just using the plugins for MIDI and the only audio we are processing is are 2 audio paths from ScriptNode I "hope" it will slide.Just add this the the
Extra Definitions
in the HISE settings will give you some extra breathing room for the plugin.HISE_MAX_PROCESSING_BLOCKSIZE=2048
-
@jonhallur awesome, maybe @Christoph-Hart can chime in on this.
-
@jonhallur Nice finding!
-
@Christoph-Hart Oh boy. this was probably the biggest HISE mystery for me in the past year.
Is there any way to work around this so we can have midi out working with all buffer sizes without affecting the performance of the plugin? -
Interesting. I've looked in the code and HISE will break down audio (and midi) buffers into smaller chunks if the buffer size exceeds the preprocessor value but it appears that it doesn't copy the temporary (smaller) midi buffers back to the original buffer, which would explain the behaviour.
I've just fixed that but please check if it solves the problem (you should not rely on the preprocessor flag to get it working).