Sending MIDI to an Audio channel

    Oct 20 2013 | 4:48 pm
    I'm really pulling my hair out here - very grateful for any help! I think it's a (somewhat crazy) limitation in Max4Live, but just in case I'm missing something..
    Basically I'm trying to use a Max for Live plugin to control a parameter on a vst plugin on another plugin. The only way I can think to do that is to use a midi controller message, but I can't find any way to send MIDI into an audio channel - in the io view, only midi channels appear as possible outlets.
    I don't really understand how you select devices with midiout in Max4Live - I wondered if I could use an IAC bus or something and route it back in that way. But it's not immediately evident that would be done.
    The other option might be to use API messages, but I'm not sure vst plugins can be controlled using these, and if so I certainly don't know how. Any ideas anyone?
    Any help super gratefully received..

    • Oct 20 2013 | 6:42 pm
      I can remember I stumbled upon this also some time ago. I'm not a m4l expert, but I think the most flexible and straight forward way would really be to go out IAC and back in. (which is a shame if that's true, of course)
    • Oct 20 2013 | 7:09 pm
      In Live you can automate the parameters of VST plugins and thus also control them with API messages. For details see Live manual, chapter 'Using Plug-Ins'.
    • Oct 20 2013 | 8:39 pm
      @woyteg - yes, that would seem the easiest (if annoyingly convoluted) way to make it work, but I've not got it to do so yet.
      @broc - I kind of assumed plugins couldn't be controlled through the API, and I can't find any documentation of how to do so, although again I might be missing something.
      I assume I need a live.remote object with a live.path object connected to the right inlet.
      The live.path object would read something like:
      live.path live_set tracks 2 mixer_device? ??????
      I run out there - I don't know if it would be a mixer_device or not, and how one would know how to identify the automated parameter.
      Any further pointers?
    • Oct 20 2013 | 10:51 pm
      IIRC I used to send data out to an empty midi track in Live, and then from that track into the vst.
    • Oct 21 2013 | 1:00 pm
      I think the OP wants sending midi to an audio track which is not possible with standard routing.
      Re API: for accessing device parameters you could look into factory devices (Max Audio Effect > Tools > API) to see how it's done and copy the relevant code.
    • Oct 21 2013 | 1:52 pm
      @broc - yes, that's exactly right. I would've thought the out/in via IAC would work, but it didn't seem to.
      I did exactly what you suggested - I could only find out codes for standard Live elements (volume, panning etc.). When you use the Live.path object these always resolve down to a single ID number. So I just sort of got the feel for those, then for my vst plugin I just had to guess and do a bunch of trial and error. Got there in the end!
      If anyone has a more efficient way of doing this, I'd love to know for next time..
    • Oct 22 2013 | 11:30 pm
      If I understand correctly - - you wish to control VST parameters via a m4l device on another channel.
      Here is my solution (not at home to test, but I am 99% sure this will work like a charm)-
      -Macro the relevant parameters in the VST in an instrument/effect rack. -Steal the code from the included LFO (or any other device that includes the API navigation scheme), use that to find the id of the macro tied to the vst parameter. -use that id to tie a live.remote~ to the intended parameter. -Send your midi values into previously discussed live.remote~ (with proper scaling, and control -> audio conversion). -Rejoice.
    • Oct 23 2013 | 10:34 am
      @evan - yes, that's pretty much what I did (although I didn't think of stealing the code from the LFO device - I'll do that next time!). Once you find the ID it does seem to be 'stable' - I was worried it might change as changes are made to the session, but that doesn't seem to have happened. Yet!
    • Oct 23 2013 | 10:27 pm
      It's my understanding that once an object in live has an id, it doesn't change (Could be wrong about tracks, if you start deleting them etc.). But as far as parameters go, they should stay put. A while back they also made them persistent, so when you load the session again all objects retain their ids. You might want to implement a failsafe though with some integer storage or something similar.
      Best of luck!
    • Oct 24 2013 | 10:51 am
      @evan - yes, I can confirm that they do seem to be consistent. Luckily! THanks for your help on this..
    • Oct 30 2013 | 8:50 am
      Here's a device doing just that. It allows you to send and receive midi data from everywhere to anywhere. hope it helps Ronen
    • Oct 30 2013 | 9:29 am
      Thanks Ronen, I've haven't had a chance to try it yet, but that device looks like just the ticket, very useful. I'm pretty sure Max for Live ought to have this functionality built in, but it's nice that you've come up with a nice easily-usable workaround!