Peter Project Posted March 28, 2016 Share Posted March 28, 2016 Hey gang. So, all my hardware synths are set to receive filter on cc 44, however it seems that the Logic MIDI FX plugins wont allow you to modulate parameters 32-63. Anyone know why? What is the "learn" option about. I can't seem to get that to do anything for me either. -P Quote Link to comment Share on other sites More sharing options...
Eric Cardenas Posted March 28, 2016 Share Posted March 28, 2016 I think they have reserved the range 32-63 because it is the LSB of CC 0-31 in the general MIDI spec. Learn should work with any CC message that is supported. Quote Link to comment Share on other sites More sharing options...
Jordi Torres Posted March 29, 2016 Share Posted March 29, 2016 Hi, What is the "learn" option about. I can't seem to get that to do anything for me either. It lets you set the parameter using an incoming MIDI message. The catch is that the message must match something that already exists in the drop-down menu. If you send it C44, nothing will happen as CC44 is not part of the list. So, all my hardware synths are set to receive filter on cc 44, however it seems that the Logic MIDI FX plugins wont allow you to modulate parameters 32-63. You can work around this with a little JavaScript. Paste this in the the Scripter plug-ins Script Editor and save it as a plug-in setting. You can use it to remap any CC number to any other CC number you want. // Declare an empty array. var ccNum = []; // Populate the array with 128 elements to be used as CC numbers. for (i = 0; i < 128; i++) { ccNum[i] = i; } // Remap CC numbers. // Use these to remap CC's 12 through 19. These can be edited and/or extended // as needed. ccNum[12] = 44; ccNum[13] = 45; ccNum[14] = 46; ccNum[15] = 47; ccNum[16] = 48; ccNum[17] = 49; ccNum[18] = 50; ccNum[19] = 51; // Output remapped CC numbers while letting all other events pass unaltered. function HandleMIDI(e) { if (e instanceof ControlChange) { var cc = new ControlChange(); cc.number = ccNum[e.number]; cc.value = e.value; cc.send(); cc.trace(); } else { e.send(); e.trace(); } } J. Quote Link to comment Share on other sites More sharing options...
funkfly Posted October 2, 2018 Share Posted October 2, 2018 Hi, Jordi - thanks so much for this script! I might be missing something here, but when I run the script I get an empty plugin window: Not sure where to enter the CC numbers, source and destination Quote Link to comment Share on other sites More sharing options...
Dewdman42 Posted October 2, 2018 Share Posted October 2, 2018 you have to update the script to have the CC to CC mappings you want. The script has no GUI programmed in, which would be a much more elaborate script, but possible to do yes. change these lines of the script to get what you want: ccNum[12] = 44; ccNum[13] = 45; ccNum[14] = 46; ccNum[15] = 47; ccNum[16] = 48; ccNum[17] = 49; ccNum[18] = 50; ccNum[19] = 51; Quote Link to comment Share on other sites More sharing options...
Dewdman42 Posted October 2, 2018 Share Posted October 2, 2018 if it were me I'd also update the script to avoid creating a new CC message each time, just resend the original one... So I'd modify these lines: . . // Output remapped CC numbers while letting all other events pass unaltered. function HandleMIDI(e) { if (e instanceof ControlChange) { e.number = ccNum[e.number]; e.send(); e.trace(); . . Quote Link to comment Share on other sites More sharing options...
Dewdman42 Posted October 2, 2018 Share Posted October 2, 2018 it should also be noted that you could handle this in the environment also, some pros and cons either way...but just for completeness to the question: For example, create an instrument object in the environment, and a transformer and cable it up to the channel hosting external instrument plugin, like this for example which would map cc30 to cc45: Then you have to reassign the sequencer track to feed to the (instrument) object rather then directly to the channel strip. What are the pros and cons? One could argue that environment is more efficient, but I would not expect the Scripter script to be cpu heavy, especially if you remove the cc creation I mentioned above. Not having to put scripter into the channel strip is a little cleaner, I suppose. Scripts can be saved and easily reused across projects, while environment stuff like this is not easy to import into other projects, so you tend to have to save it in a template that you always start out with or something. So Scripter is probably how I would handle it also, but i just wanted to mention this as the old-school alternative. Quote Link to comment Share on other sites More sharing options...
funkfly Posted October 2, 2018 Share Posted October 2, 2018 Thank you so much for this much elaborated response. Hats off Quote Link to comment Share on other sites More sharing options...
cnse Posted October 2, 2018 Share Posted October 2, 2018 Great tips! Relatedly-I used to have transform objects in my environment template that would take incoming notes or CCs from a step sequencer (Roland EF-303) and transform them into other CCs for synths. I would use a cable switcher to switch between them, or to switch them out of the path of incoming MIDI data when I didn't want to use this them. The cable switcher allowed me to quickly change routing or functionality without recabling anything. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.