Jump to content

Sending MIDI CC Messages through smart controls


silicongraphics
Go to solution Solved by ski,

Recommended Posts

Is there any way to map a smart control to output midi CC data? This would be nice to have so that i can easily automate midi CC for my hardware synths and have everything labeled, and not have to remember which CC number does what. It also would be helpful to be able to use that for when i use logic remote on my iPhone. I have looked online and through all the menus in logic, but cannot seem to find a way to do this. If anyone has any ideas, please let me know. Thanks!
Link to comment
Share on other sites

Is there any way to map a smart control to output midi CC data? This would be nice to have so that i can easily automate midi CC for my hardware synths and have everything labeled, and not have to remember which CC number does what. ...

Environment faders would do that...

How exactly woud i go about that? Sorry if that's a noob question, i'm still learning how to use logic.

Link to comment
Share on other sites

David is correct, it's not possible.   :(

 

But...  :shock:

 

It is actually possible to get Smart Controls to send everyday MIDI data! :D  

 

Well, OK, it's just not as straight-forward as simply assigning a Smart Control to a built-in parameter that generates MIDI events. For that, refer to what David said. But still, it's possible! I've attached a project that will let you do this (see below). First, some backstory...

 

A Smart Control is a remote control used to change channel strip parameters or plugin parameters. Channel strip parameters include mute, solo, volume, pan, etc. Plugin parameters include EQ band boost/cut, compressor threshold, software synth filter cutoff, and... MIDI FX parameters too. So... enter [with great fanfare] the MIDI FX Scripter plugin! It's a plugin. It can have parameters (sliders, menus, buttons). If you have a Script that generates MIDI messages when a Scripter slider is moved, you can then remote control that slider with a Smart Control and... Voila!

 

The last piece of the puzzle is to use the External MIDI plugin to send MIDI to your outboard synths or modules.

 

Continued in my next post...

 

skitronix.thumb.png.b44918962ebd97496c81edbd941fc650.png

 

Smart Control MIDI Faders.logicx.zip

Edited by ski
Link to comment
Share on other sites

  • Solution

In the project file attached in the previous post I've connected the first Smart Control knob to the first Scripter slider called CC1. Moving this knob remote controls the CC1 slider in the Script. The Script is what generates the CC1 messages and sends them to the External Instrument plugin. All you have to do is assign the Ext. Instrument's output to a MIDI destination. (You don't have to use that plugin to actually route audio into Logic if you don't want to).

 

As shown above and below, the process of assigning a Smart Control knob to a Scripter parameter is pretty straightforward.

 

1255965260_ScreenShot2017-10-28at6_52_54PM.png.accd24c1483773208c0d88ae882ce35d.png

 

After you're done making your assignments, click the "i" button in the Smart Controls pane to close the editor (it's called the SC Inspector).

 

The Script is designed to let you send CC's 1 - 8 on ch1. The value of the slider = the value sent for a particular CC. You can easily modify the Script in any number of ways to get the actual CC numbers to be different. You can also create fewer or greater numbers of sliders. I won't get into those programming details for now, but at least you can achieve SC-->MIDI Event generation. Yay!

Edited by ski
Link to comment
Share on other sites

Environment faders would do that...

How exactly woud i go about that? Sorry if that's a noob question, i'm still learning how to use logic.

This is most likely a superfluous reply since Ski's solution has already addressed your request.

However, if you wish more extended controls, the Environment was designed especially to recreate a virtual studio (from your outboard gears) inside Logic.

It however requires some knowledge acquisition, some virtual cabling, and adjustments to optimize same to your taste and gears responsiveness/limitation, etc... 

But no need to learn java coding... 

 

Explaining in detail here would be too lenghty. But some reading would be a good start, if you are still interested...

Link to comment
Share on other sites

There are a few noteworthy differences between using Environment objects (faders, knobs, etc.) to generate MIDI data as opposed to using Smart Controls in conjunction with a Scripter to do this.

 

Creating an Environment MIDI fader to generate CC#7, for example, is a piece of cake. Just create a new fader in the Environment window ("Vertical 1" is as good as any, as shown below).

 

fader.png.c6898183c61c32cf1581c0d0fb0ce4c3.png

It's default setting is to generate CC#7 events, so... Voila! Changing the CC is as easy as changing a value in the Inspector. Here I'm referring to the three Output parameters shown in the Inspector. To generate CC#1 messages, just change the Output value of 7 to 1. (You can ignore the Input parameters for now).

 

inspector.png.cea63dc97024f0325149d1cb760dcb5f.png

So that part's super simple. Here are the questions that arise...

 

• You already have a track for this external synth. How do you reconcile getting data from the track (notes and whatever else) plus CC messages from this new fader to reach the same destination?

• How do you record the MIDI output of the fader? On the same track, or on a separate track?

• How do I make this fader accessible so I can move it on-screen just like a Smart Control?

 

I'm not going to go into all the details, but I will give you the answers:  you'll be able to easily record the actual CC messages generated by the fader directly into a track as normal, everyday MIDI events that show up in a MIDI region. 

 

1150719048_ccmidi.png.1c43ba099543ee856ab562b7cbc201d7.png

You have the option to record them on the same track as your instrument, or on a separate track. Just use the New Track with Same Channel Strip/Instrument function to create a new MIDI lane on which to record those events. You can always merge the CC regions with your note regions if you want at a later time. Finally, you can create a floating window in which to display the fader so that it's always accessible, just like a Smart Control.

 

Now to compare Smart Control + Scripter behavior...

 

When you move a Smart Control (SC), remember: it's a remote control for the Scripter slider that's actually generating the CC's. So when you record movements of an SC you won't be recording actual CC MIDI events in a track. Instead, movements of SC's generate "Fader" events (a Logic-specific, MIDI-like event type) that need to be recorded in Track Automation. So what you'll end up recording are SC movements, not actual MIDI CC events. But those SC movements translate directly into CC's because the Script is generating them for you.

 

1123148678_SCrecording.png.bb52cd6b77dd2a65f02cc247c0d3cc95.png

To view these events you'll need to open the Automation Event List as opposed to the usual Event List (there's a key command for this). And the reason you're seeing "CC1" appear alongside each of the F (fader) events in the list is not because Logic knows you're generating CC1 events. That's the name of the Scripter slider, "CC1" which the SC automatically adopts when you assign the SC to that slider.

 

Either way you approach this, the end result is the same:  you're generating CC events and sending them to your external synth.

Link to comment
Share on other sites

  • 7 months later...
The Script is designed to let you send CC's 1 - 8 on ch1. The value of the slider = the value sent for a particular CC. You can easily modify the Script in any number of ways to get the actual CC numbers to be different. You can also create fewer or greater numbers of sliders. I won't get into those programming details for now, but at least you can achieve SC-->MIDI Event generation. Yay!

 

This is a very helpful and interesting post. Could you now explain how to change the CCs to be specific numbers I require for certain sample libraries I use...?

Also explain how to add more faders?

Also Can I save these as presets so when I open for example "Solo Trombone by Sample Modeling" I can go to my "Solo Trombone by Sample Modeling PRESET" in the smart controls tab and everything is mapped out how I want??

Link to comment
Share on other sites

OK, I looked at the Script and modified it so that it's very easily customizable. New project attached. By editing the Script you can add or remove sliders very easily. You can also very easily determine what MIDI CC each slider generates.

 

I've included the code to this post in case anyone wants to see it or copy it right away (see below).

 

See the next post for instructions and answers to your questions. :mrgreen:

 

Smart Control MIDI Faders V2.logicx.zip

795885122_MIDIFadersV2.png.9250e466637b3a0777bcb4182f419f9a.png

var cc_table = [1,2,4,7,11,74,72];

var cc = new ControlChange();
cc.channel = 1;

var number_of_sliders = cc_table.length;

/* 

To create more sliders, add numbers to the cc_table array 
(numbers in brackets above). Be sure to separate each 
number with a comma. 

The code will automatically create (and name) as many 
sliders as there are numbers in the array.

You can reduce the number of sliders by removing 
numbers from the array.
 
*/

function HandleMIDI(e) {
e.send();
e.trace();
}

function ParameterChanged(param, value) {
cc.number = cc_table[param];
cc.value = value;
cc.send(), cc.trace();
}

var PluginParameters = [];

for (i = 0; i < number_of_sliders; i++) {
PluginParameters.push({
	name: ("CC " + cc_table[i].toString() + " "),
	type: "lin",
	defaultValue: 0,
	numberOfSteps: 127,
	minValue: 0,
	maxValue: 127
});

}

Edited by ski
Link to comment
Share on other sites

1) Installation

Open the Logic project attached to the previous post and save the Script to your system.

 

2) Customization

You can modify the Script for specific instrument use. First, load a Scripter plugin and then load the Script. Instructions for modifying the Script are included in the Scripter code itself (and also in the transcript of that code in the above post).

 

If you modify the Scripts for various individual instrument usage, you can save each modified Script individually from the Scripter's settings menu. You can also save entire channel strips or Patches to save and recall entire instruments you've set up with the Scripter. More on this below...

 

3) Assigning Smart Controls

You will have to do this manually for each instrument. It's as easy as opening the Smart Controls pane, picking a layout, and then manually assigning each Scripter slider to a control, as shown below.

 

After you modify the Script and set up the Smart Controls, I'd suggest saving the channel strip as a Patch. When you recall a Patch you will recall everything you've done all in one go: the Scripter, the modified Script, the instrument plugin and patch, and the Smart Control setup as well.

 

1176466973_SmartControlsAssignments.png.061a24dc42c7261b2232ce92956b1fa0.png

Edited by ski
Link to comment
Share on other sites

Thank you so much Ski! You clearly know what you are talking about, this is truly a life saver. Just a few snags I ran into that I wanted to ask you about...

 

When I move sliders logic does not seem to record that CC info?

I see in your previous post I can record it as TRACK automation via the touch feature. But I find the CCs are a bit more easier to deal with since they are locked into the MIDI region. Just thought maybe I’d ask if there is a way to do that now with updates and what not?…If not no big deal for this one

 

This question though is much more important to me…Can I rename, for example, CC21 & CC23 so that they show up on the smart controls or the script window as “Growl” and "Flutter Tongue” That would be so much easier instead of remember every single libraries specific different CC numbers?

 

And this last question is very important as well. When I maps CC11 (expression) or CC7 (Volume) to my Arturia Keylab61 it sounds way less smooth that when I drag the knob with the mouse on the smart controls or when I drag the fader in the scripter. With ‘flutter tongue’ and ‘growl’ CCs you don’t really notice it. But with expression and volume its basically dynamics of the instrument and it like jumps in such an unnatural way when I try to use fader on my controller it lags so bad and becomes so not smooth that it is impossible to work with from external fader?? Has anyone run into this issue? I’m using my Solo Trombone library from Sample Modeling right now CC and the standard volume CC for my Spitfire Strings as well. SO I’d imagine its a problem across the board.

 

The lag/jumpy-ness creates this kinda really shitty fake vibrato effect. And makes quick dynamics very hard to do naturally.

 

Very annoying since one of the main reasons for setting this whole thing up was so I could have the Main CCs at my finger tips and enter that data in based off of feel and not drawing it in. Even better using physical faders in real time but this lag/un-smoothness makes it impossible for two of the most crucial CC controls.

 

What can I do to fix this?

Is it my Arturia Keylab61 or what?

Link to comment
Share on other sites

P.S. It seems with external assignments you can not save those per track right?

 

For example if I set my mod wheel to control the 1st fader/knob on my trombone track's smart control

 

And then click on my strings track and set the 4th knob/fader to be controlled by the modwheel

 

When I go back to my Trombone track it seems the mod wheel is now controlling the 4th fade/knob on that as well...Am I correct that this is the only way or is there away around this default?

Link to comment
Share on other sites

When I move sliders logic does not seem to record that CC info?...

 

Record it as Region automation instead of Track automation. Just select Region in the track header.

 

Can I rename, for example, CC21 & CC23 so that they show up on the smart controls or the script window as “Growl” and "Flutter Tongue” That would be so much easier instead of remember every single libraries specific different CC numbers?

 

Yes, it's possible. If I have time today I'll re-work the Script again so you can enter names. You'll still have to enter numbers so the Script knows what CC's to generate, but the Smart Controls will show names.

 

 

When I maps CC11 (expression) or CC7 (Volume) to my Arturia Keylab61 it sounds way less smooth that when I drag the knob with the mouse on the smart controls or when I drag the fader in the scripter....

 

This sounds like a resolution issue. I can't be 100% sure since I don't have that keyboard, but here's what I mean by this...

 

MIDI CC messages can communicate 128 different values, ranging from 0 (off) to 127 (fully on). That's 128 values, but it results in having 127 steps between them. 0 to 1 is one step, 1 to 2 is another step, and so on. Anyway...

 

When you move a slider or knob or modwheel, you can (theoretically) set any of them to an infinite number of physical positions. But MIDI messages can't convey an infinite number of values. They can only convey 128. So each control is electronically "quantized" by the MIDI controller and only 128 positions are detected.

 

If you move a control very quickly, say, from zero to center, the device will most likely skip some of those values and you'll get a "low resolution" output like this:

 

CC 1, 0

CC1, 27

CC1, 39

CC1, 43

CC1, 64

 

This might actually result in a good-sounding result even though many of the intermediate values are "missing". It's not really necessary for every increment in-between to be generated by a quickly-moved control.

 

On the other hand, if you move a control relatively slowly, every "increment" will be detected and the device will generate CC messages with consecutive values:

 

CC1, 0

CC1, 1

CC1, 2

...etc...

 

Whether values get skipped (or not) based on the speed at which you move a control will vary with each hardware MIDI device. Some devices are better than others at offering a higher resolution output of MIDI events relative to the speed you move a control.

 

When you move Logic's Smart Controls quickly, they aren't prone to skipping values as much as a hardware slider or knob might be. So...

 

It could be that your Arturia doesn't output enough incremental values when you move controls even relatively slowly. And if that's the case, it could result in a less than smooth-sounding result. Again, I don't know the Arturia so I can't say for sure. But if this is the case, the above would explain why you're hearing what you're hearing.

 

Anyway, that's one possible cause.

Edited by ski
Link to comment
Share on other sites

P.S. It seems with external assignments you can not save those per track right?

 

Correct. They are "global". So if you learn CC1 to a particular Smart Control, per your example, you have essentially dedicated that message to remote-controlling that particular control.

Link to comment
Share on other sites

I rather suspect the unsmoothness you're getting when you use the arturia might be related to the fact that you're sending the same CC from the controller that you are generating with the script, and both are getting passed on to the instrument. Try using a different CC# from your controller. Or the script could be modified to block incoming CC's that match the ones being generated by the slider/automation.

 

In general I prefer Peter's suggestion to just record region automation. Alternatively you can use the free MIDIFxFreeze plugin to capture the generated CC events and save as region midi data, if for whatever the reason you prefer to work directly with midi data rather then region automation data.

Link to comment
Share on other sites

OK, here ya go, V3 of the Script. This one lets you enter names as well as CC numbers and have them displayed in the Scripter GUI as well as the Smart Controls.

 

Naming instructions are included in the Script's code. But basically, you'll enter the info for each slider/Smart Control into an array as before. Each one will consist of a CC number, followed by a dash, followed by the name. See the code transcript below.

 

Assigning Smart Controls is the same as previously described. As you can see in the screenshot below, they will sport both the CC number and the name.

 

Smart Control MIDI Faders V3.logicx.zip

faderz.png.991febd5359a8ef2f0d6d6afee0a972b.png

1122157843_smartcontrols.png.442d33214be8b29d9f5491c537d3c1a8.png

 

var cc_names_and_numbers = ["15-Growl","2-Vibrato","3-Something Else"];

var q = cc_names_and_numbers.length;
var cc_numbers = new Array(q);
var cc_names = new Array(q);
var cc = new ControlChange();
cc.channel = 1;

var n,r;

for (i=0;i<q;i++) {
n = cc_names_and_numbers[i].toString();
r = n.indexOf("-");
cc_numbers[i] = n.slice(0,r);
cc_names[i] = n.slice(r+1);
}

/* 

To create more sliders, add entries into the cc_names_and_numbers
array above. Be sure entry is contained within double quotes. Be
sure to use this format too:

###-name

The CC number can be 1, 2, or 3 characters
This is followed by a dash and then the name, with no spaces.

The code will automatically create (and name) as many sliders as 
there are numbers in the array.

You can reduce the number of sliders by removing entries from 
the array.
 
*/

function HandleMIDI(e) {
e.send();
e.trace();
}

function ParameterChanged(param, value) {
cc.number = cc_numbers[param];
cc.value = value;
cc.send(), cc.trace();
}

var PluginParameters = [];

for (i = 0; i < q; i++) {
PluginParameters.push({
	name: cc_names[i].toString() + " (CC"+ cc_numbers[i] + ") ",
	type: "lin",
	defaultValue: 0,
	numberOfSteps: 127,
	minValue: 0,
	maxValue: 127
});

}

Link to comment
Share on other sites

Record it as Region automation instead of Track automation. Just select Region in the track header.

 

Percect this wroks great! Thanks!

 

Yes, it's possible. If I have time today I'll re-work the Script again so you can enter names. You'll still have to enter numbers so the Script knows what CC's to generate, but the Smart Controls will show names.

 

Great that would be AMAZING! Thank you so much!

 

This sounds like a resolution issue. I can't be 100% sure since I don't have that keyboard, but here's what I mean by this..

 

Yes, I believe you are right I did a little experimentation of my own and I will share the results for that in the post immediately following this (just for organizations' sake)

Link to comment
Share on other sites

In regards to the 3rd/last question in my previous post. While doing a bit more experimentation I found when using my MIDI Controller (Arturia KeyLab61) to control parameters on the smart controls the automation would look like this

1639394249_ScreenShot2018-06-16at3_45_20AM.png.623585e2eda87537687e736a9fa83da2.png

 

 

Where as if I clicked on the knob of the exact same Smart Control with my mouse and controlled it that way, the automation came up like this (much more fine and many more automations dot made per second)

68947654_ScreenShot2018-06-16at3_46_14AM.thumb.png.76860cf9fc5c8551e5c9ddcc9b141cd2.png

 

So I now know exactly why this laggy sound is happening, its reading.creating less changes per second.. The question though is WHY?!

 

However I just tried my Novation Ultranova which is not necessarily a MIDI controller (it's a synth) there are two knobs that seems to register when I am in "Learn" mode for control surfaces in logic. One of them is useless and is just as laggy if not more so than my arturia faders. But the other knob. (this one circled in pic below)

IMG_0352.thumb.jpg.7d3175db680513317b63e4c818bf9e1d.jpg

^^^I tried the Mod Wheel on my UltraNova and it also works in this fashion (Ver smoother like in the screenshot two pictures up above). My Arturia Keylab modwheel however... Sorta of works this smooth but I noticed if you try to use the ModWheel on Artutia AFTER you already have automation on another parameter it starts to lag very hard like the faders of the keylab always do. Where as the Ultranova seems to not have that problem.

 

This is the modwheel of the Arturia in green (on top is what happen while another automation was on the track, Very blocky/laggy. On the bottom track is the modwheel of the Arturia again BUT on a track with no other previous automation laid down)...Crazy :shock:

401184313_ScreenShot2018-06-16at4_13_59AM.thumb.png.610fb65e8f1d8a127cece0be85651978.png

Link to comment
Share on other sites

If you just start a project with no scripts or anything at all and record CC messages from your arturia onto a track...are they spaced out like that?

 

Agree about the data reduction suggestion also, but I can't see why one keyboard would have the problem and not the other one.

Link to comment
Share on other sites

Having Scripts in place wouldn't have any effect on incoming MIDI.

 

The reason one keyboard would have a problem and not another is something I outlined in one of my previous posts in this thread. To get a little more technical about it, it has to do with differences in how the controls are quantized. In most cases, all controls are "scanned" (it's a multiplexing operation) as opposed their positions being detected individually by discreet encoding circuitry. So imagine having 16 controls (wheels, knobs, etc.) The position of each control is read one by one by a single scanning "sweep" which repeats at a certain rate. If the scan rate isn't fast enough, and you move controls even relatively slowly, the scan will miss intermediate positions of various controls.

 

Scanning rates can differ tremendously from one device to another. And while no one wants to think that their keyboard might be sub-standard in this regard, it's just a fact of MIDI life that such differences are to be had.

 

There is also (potentially) an issue with Logic, something I've seen happen innumerable times over many many years... You'll have a project in which everything seems to record smoothly. Then, for no apparent reason, Logic seems to get bogged down and laggy, after which recorded movements of hardware CC controls as well as on-screen controls appear as blocky, low-resolution curves. Previously recorded data will not be affected, but newly recorded data will.

Edited by ski
Link to comment
Share on other sites

One suggestion for the script...to avoid all the array splicing and stuff, use an array like this:

 

var cc_list = [
  {num:15, name:"Growl"},
  {num:2,  name:"Vibrato"},
  {num:3,  name:"Something Else"}
];

 

Then reference the num or name elements of each array element directly... full thing would look something like this:

 

var cc_list = [
  {num:15, name:"Growl"},
  {num:2,  name:"Vibrato"},
  {num:3,  name:"Something Else"}
];

function HandleMIDI(e) {   
  e.send();
  e.trace();
}

var cc = new ControlChange();
cc.channel = 1;

function ParameterChanged(param, value) {
  cc.number = cc_list[param].num;
  cc.value = value;
  cc.send(), cc.trace();
}

var PluginParameters = [];

for (var i = 0; i < cc_list.length; i++) {
  PluginParameters.push({
     name: cc_list[i].name + " (CC"+ cc_list[i].num + ") ",
     type: "lin",
     defaultValue: 0,
     numberOfSteps: 127,
     minValue: 0,
     maxValue: 127
  });
}

 

Just to humor me, try this following version of the script which filters out incoming CC's matching the list of CC faders

 

var cc_list = [
  {num:15, name:"Growl"},
  {num:2,  name:"Vibrato"},
  {num:3,  name:"Something Else"}
];

function HandleMIDI(e) {

  if(e instanceof ControlChange) {
    for(var i=0;i<cc_list.length;i++) {
      if(e.number == cc_list[i].num) {
        return;
      }
    }
  }
  
  e.send();
  e.trace();
}

var cc = new ControlChange();
cc.channel = 1;

function ParameterChanged(param, value) {
  cc.number = cc_list[param].num;
  cc.value = value;
  cc.send(), cc.trace();
}

var PluginParameters = [];

for (var i = 0; i < cc_list.length; i++) {
  PluginParameters.push({
     name: cc_list[i].name + " (CC"+ cc_list[i].num + ") ",
     type: "lin",
     defaultValue: 0,
     numberOfSteps: 127,
     minValue: 0,
     maxValue: 127
  });
}
Edited by Dewdman42
Link to comment
Share on other sites

Having Scripts in place wouldn't have any effect on incoming MIDI.

wasn't meaning to point blame at your script just trying to help troubleshoot. eliminate variables to figure out what is generating unsmooth CC.

 

The reason one keyboard would have a problem and not another is something I outlined in one of my previous posts in this thread. To get a little more technical about it, it has to do with differences in how the controls are quantized. In most cases, all controls are "scanned" (it's a multiplexing operation) as opposed their positions being detected individually by discreet encoding circuitry. So imagine having 16 controls (wheels, knobs, etc.) The position of each control is read one by one by a single scanning "sweep". If the scan rate isn't fast enough, and you move controls even relatively slowly, the system will miss intermediate positions of various controls. Scanning rates can differ tremendously from one to another. No one wants to think that their keyboard might be sub-standard in this regard, but it's just a fact of MIDI life that differences are to be had.

no doubt. Let's eliminate all variables and see if the arturia is junky this way. Hard to believe arturia's keyboard would be that bad, but never know.

 

There is also (potentially) an issue with Logic, something I've seen happen innumerable times over many many years... You'll have a project in which everything seems to record smoothly. Then, for no apparent reason, Logic seems to get bogged down and laggy, after which recorded movements of hardware CC controls as well as on-screen controls appear as blocky, low-resolution curves. Previously recorded data will not be affected, but newly recorded data will.

 

Logic does some automagic stuff to reduce the CC's to vectors rather then discrete messages...and I agree, not always desirable. Or maybe its just a bug as you say it seems to just start happening after a while. I hate bugs like that, if that's the case.

Link to comment
Share on other sites

Thanks for the tips, much appreciated! FWIW, though, I deliberately used the approach of having a single array element for each combination of number and name because I thought it would keep things very simple for people not too fluent in javascript. (BTW, it seems that Logic doesn't recognize substr and substring methods).

 

Regarding filtering... The Script doesn't block incoming CC's in order to offer the user a choice of performing movements on MIDI controls normally, using Scripter-based controls to do so, or using Smart Controls. That said, I would definitely not recommend recording any combination of the three, as each one generates a different kind of message. Even though they all end up producing the same result (CC messages), conflicts between them are inevitable.

 

So...

 

If you're going to use your modwheel to introduce (say) growl, just use the modwheel. But if you find the modwheel gets "laggy" or produces a stepped result, you can resume growl control using either the Scripter slider or the Smart Control, but do not try to use both. It will only create conflicts.

Link to comment
Share on other sites

Hey Dewdman, just to be clear, I didn't take anything you've written as a criticism. My response was just to say that incoming MIDI wouldn't be affected by the presence of active Scripts. But I agree, troubleshooting is best done with a tabula rasa. It will leave no room for doubt, especially when investigating the resolution of MIDI controls.

 

Cheers!

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...