Jump to content

Sending MIDI CC Messages through smart controls


silicongraphics
Go to solution Solved by ski,

Recommended Posts

More on the scanning thing... some older models of Korg keyboards were notorious for having low res controls. Even the joysticks wouldn't output enough data points when moved even relatively slowly.

 

On the flip side, and as you probably know, Dewdman, the MIDI spec provides for CC control positions to be communicated as 14-bit "high resolution" data (16,384 values as opposed to 128). But no MIDI manufacturer that I'm aware of has ever implemented this, because it generates too much data! (And it's impossible to edit). About the only place this is implemented is in pitchbend, which would be useless if it didn't output 14-bit data. But many many many of the intermediate positions of a bend control are routinely skipped by MIDI hardware devices. Usually, only 2, 3, or 4 LSB points are provided between MSB points. All this is to say that there's a lot of junky controls out there! Hopefully the Arturia isn't one of them. But if it proves to be, well, all this stuff I'm writing is to suggest that no one be too shocked. But there are no holds barred on being disappointed.

Edited by ski
Link to comment
Share on other sites

Well anyway I'm curious the results with CC filtering. If he is using CC1, for example, on his hardware controller to drive the smart control and the smart control/script is also sending CC1 messages...then its not clear to me that those CC messages aren't also going into the instrument along with the ones generated by the script..which could result in some weirdness. I think honestly you'd want to be careful to block that. If you need the option to also send in the desired resulting CC1 messages in addition to what the smart control generates...then I think you'd need to make sure the hardware control being used is not the same CC# and probably a checkbox on the GUI or something...

 

Even though the script is after the region record, its not at all clear to me what Logic does under the covers for the smart control handling....so that's why I say its worth a try to do some tests from the arturia without any script or smart control involved, just to be sure the arturia is culprit with lousy CC resolution.

Link to comment
Share on other sites

The only way to get a modwheel to drive a Smart Control is to learn the modwheel to the control. At that point, the modwheel messages will be hijacked by the system and never reach the Sequencer Input (thus they cannot be recorded as MIDI events). They will be routed directly to control the Smart Control, after which they'll die on the vine. That's why it's not necessary to filter them in the Script.

 

(As for those methods I mentioned, those are string methods which I tried to use, but alas the compiler didn't like them). :?

183800818_ScreenShot2018-06-16at4_32_19PM.thumb.png.304ee90b746d218cd57836123bf6b453.png

 

(BTW, I dig your approach for doing event filtering). :mrgreen:

Edited by ski
Link to comment
Share on other sites

Try this... go into the Project Settings and see if MIDI Data Reduction is enabled. If so, uncheck that box and see if it makes a difference to the degree of resolution you get when you record movements of the Arturia's controls.

 

Wow that did make a BIG differences with the Arturia! Still The Ultranova is smoother and I think in the longrun I would like to find a MIDI controller with all the faders and knobs of the Arturia but has a "higher resolution output of MIDI events relative to the speed you move a control." (as you put it)

 

Is there a downside to having that box unchecked though? Will it use up more CPU/RAM?

Link to comment
Share on other sites

The only way to get a modwheel to drive a Smart Control is to learn the modwheel to the control. At that point, the modwheel messages will be hijacked by the system and never reach the Sequencer Input (thus they cannot be recorded as MIDI events). They will be routed directly to control the Smart Control, after which they'll die on the vine. That's why it's not necessary to filter them in the Script.

Thanks for that clarification, makes sense....and agree, no filter needed then.

 

(As for those methods I mentioned, those are string methods which I tried to use, but alas the compiler didn't like them). :?

 

which ones exactly?

Link to comment
Share on other sites

The downside is that the more data you record, theoretically (I have to stress "theoretically") this will eat up more CPU. And more RAM. But the real question is, "how much CPU?" and "how much RAM?" It might be negligible. But even if it eats up 5% more, I don't think you should be concerned in the least. I think it's far more important for you to get your controls recording smoothly and at the highest resolution and not worry in the least about CPU or RAM. You'll find out through experience whether your computer is taking a hit or not. So for now, I'd suggest working with that box unchecked.

 

Be aware that that setting is a per-project Project Setting, and not a global setting as are Logic's Preferences. So you'll have to examine that setting for each new project you create.

 

@Dewdman, see my previous post (which I edited to add a reply about the methods).

Link to comment
Share on other sites

 

Be aware that that setting is a per-project Project Setting, and not a global setting as are Logic's Preferences. So you'll have to examine that setting for each new project you create.

 

I was going to save as a project template. So that should maintain the unchecked MIDI box, correct?

_________________________________________________________________________________________________________

 

But SKI!!! your 3rd script is AMAZING! i'm labeling out everything and loving it! you are a genius!

 

But just for the sake of picking your brain a bit more. I was proceeding to make my Solo Trombone patch as streamlined as possible.

-I picked a nice layout aesthetically representing Brass Instrumentation

 

-I noticed the layout divided certain of my smart controls to "Sound" Category and "Effects" I thought this was very cool. But was wondering if there was a way I could increase the size of the sound or effect sections within this layout? To my knowledge it seems this layout out allows ONLY 6 knobs in total (with no way to expand total number) and limits the user to have 4 under Sound and 2 under Effects Is this true or can I add to the total number and specify how many knobs go into groups (Sound or Effects)?

 

-Also noticed these 'Unmapped' scrolldown tabs (circled in green) and 'Unmapped' buttons (circled in red) within several different smart controls layouts....In general what are they used for?

1719734427_brasssmartcontrols.thumb.png.91cb9fd5009f4dcf4d1845f42b5ca2e8.png

 

- But more specifically, I noticed this layout has a 'Keyswitches" button (see top part of the pic above) where as the default smart controls layout does not.

---When clicking on it I get this display. This seems intriguing to me because my Solo Trombone library has a lot of keyswitching elements I can use in conjunction with the CCs (ex: A#0 triggers plunger mute, F#0 triggers a vibrato ending , G#0 triggers a long release, B0 triggers a fall, etc.)

669824957_keyswitcheslayout.thumb.png.47df6f0412e79152ddba3709e4d4f9b7.png

^^KEY SWITCHES LAYOUT (referenced in above text)

Link to comment
Share on other sites

So... there is (quite unfortunately) no way to modify the preset Smart Control layouts. They're all preset/fixed. There are some other behaviors you may want to be aware of...

 

1) Let's say you select a certain layout and assign some of the Scripter sliders to them. Then you decide to change the layout. Well, unfortunately, your assignments ("mappings") won't necessarily carry over. In fact, you'll probably find that most of them won't carry over, or, they'll end up in different locations. So unfortunately you can't really set up one layout and then switch to a different layout without losing your work.

 

You'll probably also find that the instrument-themed layouts which sport rotary controls/knobs won't necessarily provide enough knobs for all the CC's you might want to implement.

 

2) As for using the keyswitching layouts to either perform or indicate changes of articulation, well, that's a much more complicated affair that can't be covered by the Slider Script without extensive modification that would very closely resemble my commercial product, ARTz•ID (and that's about as far as I'll venture towards a plug for it :mrgreen: ).

 

3) Each layout will auto-abbreviate the control names differently. For example, the various "keyswitch" layouts provide the greatest amount of character space to display names before they begin to abbreviate, but I don't believe that any of them sport rotary controls. But none of the other layouts provide as much character space as the keyswitch layouts; so if your control names are long, they might end up auto-abbreviating to the point of becoming rather cryptic.

Edited by ski
Link to comment
Share on other sites

So I was able to assign the button and drop down menu to do things like solo or mute. But when I tried to assign them to the physical buttons on my MIDI controller, It only seemed to work if I pushed the external button to turn solo or mute OFF. If I pushed the button it could not enable to solo or mute. Only turn it off once I clicked to the S or M on the screen. What's up with that??

 

The only other way I could use the virtual control button was if I assigned them to a Beat Pad on My MIDI controller. And in that instance the Solo or Mute would enable when my finger was on the beat pad and turn off when my finger let go. Kinda cool approach but would like to also be able to just make regular buttons on my MIDI controller work in typical push for on, push for off type.

 

OR!!! It would be much cooler is instead of Solo or Mute I could assign the buttons on my MIDI controller or even the Beatpads to take over for triggering the articulations A#0 plunger mute, F#0 vibrato ending , G#0 long release, B0 fall etc. instead of using the actual piano keys A40,F#0,G#0, etc.! But that would prob have to be something entered into the script like the CCs...not sure...that why i am here LOL

 

2) As for using the keyswitching layouts to either perform or indicate changes of articulation, well, that's a much more complicated affair that can't be covered by the Slider Script without extensive modification that would very closely resemble my commercial product, ARTz•ID (and that's about as far as I'll venture towards a plug for it :mrgreen: ).

While your ARTzID does look very cool I'd still like to know what these keyswitch smart control layouts were originally meant to be used for in a general sense. To get a better understanding of their original purpose. Then decide if I need ARTzID to accomplish what I am thinking.

 

Like I said before on my Sample Modeling Solo Trombone I already have keyswitchs like A#0 triggers plunger mute, F#0 triggers a vibrato ending , G#0 triggers a long release, B0 triggers a fall, and more! Is the purpose of this key switching smart control to potentially be able to control those keyswitches without entering them as notes in the MIDI piano roll?? Becase that would be amazing. You have no idea how annoying it is looking at my scores in logic just to see logic trying to notate an A0 or C#0 in the score tab.

Link to comment
Share on other sites

If you like, you can write to me directly via my website and we can discuss my articulation-switching system offline. That aside...

 

To get an external MIDI control (knob, wheel, slider, etc.) to drive a Smart Control, you have to use the Learn function found in the Smart Controls editor pane. By "drive a Smart Control" I mean "remote control a Smart Control with an external MIDI message". So no, you won't see a list of MIDI messages in any of the Smart Control menus. You'll have to use the Learn function. Itworks like this:

 

When you Learn a Smart Control to an external MIDI CC, the only thing you accomplish is to remotely control that Smart Control with those MIDI messages. But then... if the Smart Control is assigned to a plugin parameter (like a Scripter parameter), the net result is that you end up remote controlling whatever parameter that Smart Control is assigned to. Like this:

 

External MIDI messages (such as a CC) ---> Smart Control ---> Plugin Parameter

 

Ultimately, whatever that plugin parameter would normally do if you moved it on its own will now be remote-controlled by the MIDI CC messages.

Edited by ski
Link to comment
Share on other sites

If you like, you can write to me directly via my website and we can discuss my articulation-switching system offline. That aside...

 

To get an external MIDI control (knob, wheel, slider, etc.) to drive a Smart Control, you have to use the Learn function (found in the Smart Controls editor pane). By "drive a Smart Control" I mean "remote control a Smart Control with external MIDI messages". So no, you won't see a list of MIDI messages in any of the Smart Control menus. You'll have to use the Learn function. In short, it works like this:

 

When you Learn a Smart Control to an external MIDI CC, the only thing you really accomplish is to remotely operate that Smart Control from those MIDI messages. But if the Smart Control is assigned to a plugin parameter (like a Scripter parameter), you'll end up remote controlling whatever parameter that Smart Control is assigned to. Like this:

 

External MIDI messages (such as a CC) ---> Smart Control ---> Plugin Parameter

 

Ultimately, whatever that plugin parameter would normally do if you moved it on its own will now be remote-controlled by the MIDI CC messages.

 

I know the basics of how to assign a parameters to a smart control and was actually using that method to do so while I was making these Patches (If I wasn't making that clear I apologize for leaving that detail) Sorry for the late reply working on a few projects at the moment that have me very busy I will definitely contact you via your website to chat more about articulations sets and all that jazz after this week. thanks again for everything!

Link to comment
Share on other sites

  • 1 month later...
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. Yay!

 

 

SKi - you are a god!!

Link to comment
Share on other sites

I saved a patch using your scripter. Works great but I noticed if I drag MIDI region onto the track it does not play it. I can play notes on the track and everything works fine but if it is a midi region I already played it won't play those notes... What is happening?
Link to comment
Share on other sites

OK, I just looked at the code (it's on the previous page). The very first two lines of the working code say (in effect) get MIDI, then send MIDI. So there's nothing about the Script itself that would prevent any kind of MIDI data from passing straight through the Scripter. The CC stuff the Script generates is entirely separate from incoming MIDI.

 

About the only thing I can think of is this... Maybe the notes 'n' stuff in your MIDI region are on a different MIDI channel than your plugin. For example, if your notes are on ch1 and the plugin is set to receive on ch2, you won't get any sound. So that's the first thing I'd check.

Link to comment
Share on other sites

Thank you very much for your PlugIn ski!

 

I would like to try it but unfortunately, I can't open the project with my computer... Do you know what can be happening?

 

I think I'm using the latest version of Logic Pro X (v10.4.1) and I've tried to open the 3 versions of your project (v1, v2, v3) but none of the 3 opens. Logic Pro X shows the message "This operation could not be completed. There's no more info about this problem".

 

Thanks in advance!

Link to comment
Share on other sites

Hi ChoPraTs,

 

I just downloaded the V3 file from the link on the previous page and it opens fine. So I don't know what to advise regarding that error message. Maybe try rebooting?

 

(BTW, you should only use V3. The earlier versions are not as good or as complete).

 

250856040_ScreenShot2018-08-27at11_43_27AM.png.7de95454bee89a38b29a84e3259e11b9.png

Link to comment
Share on other sites

Finally I could!

 

I don't know why, but when I decompress the zip file, it creates a .logicx file that didn't work. But Then, I thought to use the right mouse button and select the option "Show content of the package" and magically inside what I thought was the project file, appeared a second .logicx file! It seems that "The Unarchiver" creates a .logicx file inside another .logicx file. I don't understand why...

 

Any case, I could open this second file without problems with Logic Pro X. So problem solved and plugin installed! Nice job!

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...