theory to "BANG" out a preset setting/bi-directional control
theory to "BANG" out a preset setting/bi-directional control
Hi,
I'm a Logic Pro user… After many hours making Lemur templates and setting things up in Logic's Environment, I am not far off from living in what I would consider a perfect Lemur world.
I have enabled "bi-directional control" for all of my templates through some simple cabling in Logic's environment, making the CCs for each Lemur object correspond to the CC that the plug-in outputs for the mapped parameter, and using a simple transformer to transform the output message from "F 2" (or "Fader 2" - what is sent by default) to a Control Change on whatever MIDI channel necessary.
This bi-directional control is great if you're flipping back and forth during sound design, making changes to the plug-in settings using both the GUI and also its corresponding Lemur template. This, however, is useless when it comes to quickly going through your presets and making minor adjustments to the setting since loading a preset does not lead to every parameter outputting its newly set CC value, therefore it doesn't update the position of the objects within your template to reflect the new preset settings loaded and makes any sort of preset-based workflow not Lemur friendly, or at least not in what I would consider an ideal way.
From research I've done, there is no way to technically "bang" a preset out from a soft-synth, there are only certain workarounds that I've been able to come up with...
Since the issue at hand is that loading a preset doesn't output the CC values of the parameters that are changed upon loading the preset, you somehow need to manually engage each of the plug-in parameters that you have objects in your Lemur template assigned to in order for the values of the parameters in the plug-in's preset to be outputted (and essentially "updated) to your template.
Simply clicking on a knob on the plug-in GUI will output its CC value without changing it, but doing this for an entire plug-in (or at least the majority of the parameters in it) requires multiple clicks and is a waste of time to manually do. I considered making a "clicking" macro using a 3rd party program but this would require the GUI being open and in a specific location on the screen and is not ideal to me.
Since clicking the knobs on the GUI seemed to be the only "ghost" way (that I could figure out) of getting the CC values to output without actually changing their value, I turned to the idea of relative messages…. Before proceeding with a Lemur based version of this, I first tested it with my Livid Code which has endless knobs set to send relative messages. I mapped a single knob on the Code to ALL of the parameters of the plug-in that I had my Lemur objects mapped to, having as many as 100 parameters mapped to a single relative-message sending knob…
With this setup, in order to do a faux "bang" of a preset back out to my template, all I have to do is use this "all-controlling" single knob to send a +1 relative message followed by a -1 message. This will increase the CC values of all the plug-in parameters by 1 and then decrease them by 1, leaving all of the parameters at their original location within the preset and get them to bang out to the Lemur. I know this isn't foolproof, any parameters set to 127 within the plug-in preset BEFORE executing this +1/-1 action will ultimately end up being at 126, one CC value less than what they originally were within the plug-in, but I'd rather put up with that than not be able to bang out my settings at all. This has worked without fail for me thus far with this relative message coming from the Code.
That being said, I am wondering if it is a possibility to write a script for a Lemur object (a pad/button, ideally) to send this same relative +1 followed by a relative -1 message. I have seen the Relative Midi Objects/Templates here on the site but what I specifically am looking to do is have this type of message triggered by a pad/button so I don't have to worry about making sure I increase/decrease the knob the correct amount. Instead, simply pressing a button to trigger the messages (even if I have to press two buttons, one for relative +1 and one for relative -1) is a much more "defined" action and introduces less variables.
Any feedback/suggestions on this "relative +1/relative-1" concept of banging out presets, guidance on how to create a script for a button to send this relative message, or insight into how to trigger a "ghost" or essentially "relative 0" message to map to my parameters, would be much appreciated!
Cheers
I'm a Logic Pro user… After many hours making Lemur templates and setting things up in Logic's Environment, I am not far off from living in what I would consider a perfect Lemur world.
I have enabled "bi-directional control" for all of my templates through some simple cabling in Logic's environment, making the CCs for each Lemur object correspond to the CC that the plug-in outputs for the mapped parameter, and using a simple transformer to transform the output message from "F 2" (or "Fader 2" - what is sent by default) to a Control Change on whatever MIDI channel necessary.
This bi-directional control is great if you're flipping back and forth during sound design, making changes to the plug-in settings using both the GUI and also its corresponding Lemur template. This, however, is useless when it comes to quickly going through your presets and making minor adjustments to the setting since loading a preset does not lead to every parameter outputting its newly set CC value, therefore it doesn't update the position of the objects within your template to reflect the new preset settings loaded and makes any sort of preset-based workflow not Lemur friendly, or at least not in what I would consider an ideal way.
From research I've done, there is no way to technically "bang" a preset out from a soft-synth, there are only certain workarounds that I've been able to come up with...
Since the issue at hand is that loading a preset doesn't output the CC values of the parameters that are changed upon loading the preset, you somehow need to manually engage each of the plug-in parameters that you have objects in your Lemur template assigned to in order for the values of the parameters in the plug-in's preset to be outputted (and essentially "updated) to your template.
Simply clicking on a knob on the plug-in GUI will output its CC value without changing it, but doing this for an entire plug-in (or at least the majority of the parameters in it) requires multiple clicks and is a waste of time to manually do. I considered making a "clicking" macro using a 3rd party program but this would require the GUI being open and in a specific location on the screen and is not ideal to me.
Since clicking the knobs on the GUI seemed to be the only "ghost" way (that I could figure out) of getting the CC values to output without actually changing their value, I turned to the idea of relative messages…. Before proceeding with a Lemur based version of this, I first tested it with my Livid Code which has endless knobs set to send relative messages. I mapped a single knob on the Code to ALL of the parameters of the plug-in that I had my Lemur objects mapped to, having as many as 100 parameters mapped to a single relative-message sending knob…
With this setup, in order to do a faux "bang" of a preset back out to my template, all I have to do is use this "all-controlling" single knob to send a +1 relative message followed by a -1 message. This will increase the CC values of all the plug-in parameters by 1 and then decrease them by 1, leaving all of the parameters at their original location within the preset and get them to bang out to the Lemur. I know this isn't foolproof, any parameters set to 127 within the plug-in preset BEFORE executing this +1/-1 action will ultimately end up being at 126, one CC value less than what they originally were within the plug-in, but I'd rather put up with that than not be able to bang out my settings at all. This has worked without fail for me thus far with this relative message coming from the Code.
That being said, I am wondering if it is a possibility to write a script for a Lemur object (a pad/button, ideally) to send this same relative +1 followed by a relative -1 message. I have seen the Relative Midi Objects/Templates here on the site but what I specifically am looking to do is have this type of message triggered by a pad/button so I don't have to worry about making sure I increase/decrease the knob the correct amount. Instead, simply pressing a button to trigger the messages (even if I have to press two buttons, one for relative +1 and one for relative -1) is a much more "defined" action and introduces less variables.
Any feedback/suggestions on this "relative +1/relative-1" concept of banging out presets, guidance on how to create a script for a button to send this relative message, or insight into how to trigger a "ghost" or essentially "relative 0" message to map to my parameters, would be much appreciated!
Cheers
Re: theory to "BANG" out a preset setting/bi-directional con
a different approach would be to use OSC. Not only parameter feedback, but also parameter names and timecode in Lemur.
Formant+Eurorack, PPG wave 2.2, Korg MS-20, etc., EWI 4000s, QuNeo, etc., Mixbus32c, u-he, MadronaLabs, Samplemodeling, NI, etc., iPad2/4/Pro
Re: theory to "BANG" out a preset setting/bi-directional con
I already have templates made with all my parameters already labeled, have already enabled parameter feedback through my environment setup.. That being said, is there still some sort of advantage if I were to use OSC instead? From what I'm aware, I would still need to have all the cabling in Logic's Environment in order for the messages to get sent back to the Lemur.. And are you suggesting using OSC rather than MIDI in regards to my main question of sending a +1/-1 relative message with a button? Other than the +1/-1 message, I am very pleased with how things are working out with MIDI, unless there is something about OSC that I don't know...
Re: theory to "BANG" out a preset setting/bi-directional con
I recommend to buy TouchOSC if you haven't already, load the LogicPad template, and try it out. Or simply watch some videos on the net. It works out of the box, no configuration needed. I'm sure you'll be pleased to see what advantages OSC has to offer. Logic is one of the very few DAWs that understand OSC, so why not use it? The only reason could be that you had to rewrite your template, search for the proper OSC commands (you can look after them in the TouchOSC editor/LogicPad template), etc. Maybe there's a list somewhere.
About this +1/-1 thing, I admit I didn't understand the purpose of it. But with Lemur this shouldn't be a problem. Maybe you want to further explain what you want to do with that, or maybe it won't be necessary after you've seen what is possible with OSC.
EDIT: ah, I seem to understand. You want to have the plugin values displayed in Lemur. Sending +1 to each CC, and then -1, to get the actual state. No, these things are no more necessary with OSC. You may need to select another channel and then back, but you will have all current parameters correctly displayed, and as I said, also the parameter names, plugin name, timecode...
About this +1/-1 thing, I admit I didn't understand the purpose of it. But with Lemur this shouldn't be a problem. Maybe you want to further explain what you want to do with that, or maybe it won't be necessary after you've seen what is possible with OSC.
EDIT: ah, I seem to understand. You want to have the plugin values displayed in Lemur. Sending +1 to each CC, and then -1, to get the actual state. No, these things are no more necessary with OSC. You may need to select another channel and then back, but you will have all current parameters correctly displayed, and as I said, also the parameter names, plugin name, timecode...
Formant+Eurorack, PPG wave 2.2, Korg MS-20, etc., EWI 4000s, QuNeo, etc., Mixbus32c, u-he, MadronaLabs, Samplemodeling, NI, etc., iPad2/4/Pro
Re: theory to "BANG" out a preset setting/bi-directional con
I've already looked into TouchOSC, as well as OSCulator, while researching all my possible ways of doing this. The way Logic seems to work (from my research) is that "true" bi-directional communication (where Logic has written code for a "control surface plug-in" of sorts for a specific piece of hardware/software) is available only for "supported" control surfaces (which TouchOSC recently became), but only when loaded with the template designated for Logic. I do not want to use a "general control" type of template as it is not workflow conducive, I want to have full control of my template's contents and design as they are all based around personal preference for sound design/live automation during the production process. I have no issues as far as getting Logic to talk to my Lemur is concerned, the environment makes doing so a piece of cake and actually, in my case, preferable as I have multiple templates open on various tabs, all pertaining to particular instances of softsynths (often multiple instances of the same type of softsynth) all on unique MIDI channels. This (along with toggling my control surface mode) allows me to switch between my tabs in my template, and have an almost "hardware"-esque setup, where I have all my desired synth parameters accessible for each individual instance of every synth in my session, each one located within a different tab in my template and communicating on a unique MIDI channel.
Unless I am mistaken in regards to what I said about TouchOSC and the bi-directional communication (which I did a lot of research on, and am pretty sure it's the case...), I am otherwise very happy with the way my Lemur and Logic marriage has developed and am simply looking for some guidance on how to script this +1/-1 relative message, which from what I surmise would be something related to the message that the Relative MIDI Fader object in the User Library sends, except I would prefer to use a button/pad object to send the message rather than a fader. The button is preferable because if I were to use a fader, I would have to manually execute a +1/-1 by moving the fader up and down, if I can script a button to send this same message it will introduce no manual execution variables.
Unless I am mistaken in regards to what I said about TouchOSC and the bi-directional communication (which I did a lot of research on, and am pretty sure it's the case...), I am otherwise very happy with the way my Lemur and Logic marriage has developed and am simply looking for some guidance on how to script this +1/-1 relative message, which from what I surmise would be something related to the message that the Relative MIDI Fader object in the User Library sends, except I would prefer to use a button/pad object to send the message rather than a fader. The button is preferable because if I were to use a fader, I would have to manually execute a +1/-1 by moving the fader up and down, if I can script a button to send this same message it will introduce no manual execution variables.
- Attachments
-
- Relative-knob-and-fader.jzlib
- (14.45 KiB) Downloaded 139 times
Re: theory to "BANG" out a preset setting/bi-directional con
I understand, I do it the same way with Cubase. One interface for the DAW/plugins, and a couple for softsynths, all in one template. And also with MIDI only. I would like to do everything with OSC and profit from its advantages, but Cubase does not allow it.
I'm quite sure that Logic's OSC interface is open to any controller. It just has to use the correct OSC addresses. You could keep your template untouched in its design and add the custom OSC commands to each object.
There's one thing I'm not sure about. In the TouchOSC template as well as in the Mackie Control and also in the Mackie C4 Pro, plugin/softsynth parameters are arranged in the way the plugin developer has defined. Not exactly how we want them. There might be some work involved to get each parameter to its desired place in your softsynth interfaces. In OSC language for Logic, they are named /par1, /par2, etc. Should be not too difficult, but I've never done it.
I'm quite sure that Logic's OSC interface is open to any controller. It just has to use the correct OSC addresses. You could keep your template untouched in its design and add the custom OSC commands to each object.
There's one thing I'm not sure about. In the TouchOSC template as well as in the Mackie Control and also in the Mackie C4 Pro, plugin/softsynth parameters are arranged in the way the plugin developer has defined. Not exactly how we want them. There might be some work involved to get each parameter to its desired place in your softsynth interfaces. In OSC language for Logic, they are named /par1, /par2, etc. Should be not too difficult, but I've never done it.
Formant+Eurorack, PPG wave 2.2, Korg MS-20, etc., EWI 4000s, QuNeo, etc., Mixbus32c, u-he, MadronaLabs, Samplemodeling, NI, etc., iPad2/4/Pro
Re: theory to "BANG" out a preset setting/bi-directional con
Are you saying that the control surface plugin written for the TouchOSC General Logic Template outputs a message that if I setup a TouchOSC template in a particular way, I could create my own custom template (with objects formatted and arranged by personal choice) that still utilizes the bidirectional communication benefits of the control surface plugin... I would just need to find which messages (/par1, /par2, etc) were outputted for the parameters I wanted to map within my template? I would imagine that it outputs the parameters on a selected channel strip basis? So I would have to have that channel selected in my DAW in order to get the template to work? I don't remember thinking that reformatting the messages sent from the control surface plugin was really a possibility when I was doing research but maybe my information was wrong or my mind is just fuzzy, I'll have to reinvestigate.... Could be an interesting alternative.
However, I am still very content with Lemur and how I currently have things set, I am not eager to redo all the work that I've done in the recent past, simply find a solution for this relative +1/-1 script to be sent from a button...
If anybody has any ideas, it would be much appreciated!
Cheers
However, I am still very content with Lemur and how I currently have things set, I am not eager to redo all the work that I've done in the recent past, simply find a solution for this relative +1/-1 script to be sent from a button...
If anybody has any ideas, it would be much appreciated!
Cheers
Re: theory to "BANG" out a preset setting/bi-directional con
just made a little test and can confirm that you can control Logic with Lemur and OSC. But only from Lemur to Logic, not the other way round. Why I don't know. I set it up so that Logic sends feedback to port 8000, the Lemur receiving port.
That was really not to be expected. Actually it never occurred to me. Any software control with OSC is bi-directional, as long as the ports are correctly set. Logic is the only exception.
Please accept my apology for the waste of time. I'm deeply sorry about that.
That was really not to be expected. Actually it never occurred to me. Any software control with OSC is bi-directional, as long as the ports are correctly set. Logic is the only exception.
Please accept my apology for the waste of time. I'm deeply sorry about that.
Formant+Eurorack, PPG wave 2.2, Korg MS-20, etc., EWI 4000s, QuNeo, etc., Mixbus32c, u-he, MadronaLabs, Samplemodeling, NI, etc., iPad2/4/Pro
Re: theory to "BANG" out a preset setting/bi-directional con
No worries, I appreciate you taking the time to explore the OSC potential with Logic.
If anyone else has any ideas in regards to sending a relative message to Logic with Lemur with this button type of execution, it would be much appreciated!
If anyone else has any ideas in regards to sending a relative message to Logic with Lemur with this button type of execution, it would be much appreciated!
Re: theory to "BANG" out a preset setting/bi-directional con
+1 to that. As a long time Logic/Mackie Control user, I personally get frustrated with the emulations since they never fully implement all the features of the protocol. While they can aid a particular workflow, they can't replace the mouse and keyboard entirely.SBPBK wrote: I do not want to use a "general control" type of template as it is not workflow conducive,
But, on to your issue. Assuming you have fader objects in Logic providing the conversion from cc to fader messages, as opposed to transformers, you can bang those faders with a button loaded with meta message 99 set up for increment without rollover. Another button to decrement without rollover.
Create something in Lemur that hits those buttons sequentially on template load.
You may be able to do it with one environment button however. Not sure it will work but you can try. Create a button and set its properties to Sysex. In the dialog that opens, enter the 2 meta events, for increment then decrement. I'll try this out later when I'm at the studio today, but I think it will work. If you're using multiple environment layers, best to place the button(s) on each layer. Then control all of them from a fanout on the clicks and ports layer. I've found that routing to be more reliable for some reason.
fader8