itayburg Posted November 16, 2013 Share Posted November 16, 2013 Hi all' I'm trying to write a script for scripter should be very simple. I want to be able to split midi channels and to decide which channels are entering the software instrument's input. I also want to be able to transpose a particular channel or specific key range. I use a fishman triple play midi pickup for my guitar and would like to control the tuning or to transpose an oct down the 3 upper strings ext.. I can do it in the environment easily but would like to use it in MainStage as well. thanks a lot Itay Quote Link to comment Share on other sites More sharing options...
itayburg Posted November 16, 2013 Author Share Posted November 16, 2013 this script might do it but it doesn't fit logic scripture: // KeyBoard_Deploy_v1.0, Xackley 5-10-2008 //Updated with better Midi Channel In descriptions 5-18-2008 desc:MIDI Keyboard Splitter, with Xackley Zero Tricks slider1:0<0,15,1{0 All,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}>MIDI Channel In slider2:1<0,15,1{Block Input Channel - Just Notes to New Channels,Pass Input Channel - Just Notes to New Channels,Pass Input - Send Notes & CC to New Channels,Block Input - Send Notes & CC to New Channels}>Original slider3:2<0,15,1{0 Set Range,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}>Ouput MIDI Channel A slider4:1 <1,127,1>Minimum Note A slider5:127<1,127,1>Maximum Note A slider6:0<-36,36,1>Transpose A slider8:0<0,15,1{0 Set Range,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}>Ouput MIDI Channel B slider9:1<1,127,1>Minimum Note B slider10:127<1,127,1>Maximum Note B slider11:0<-36,36,1>Transpose B slider13:0<0,15,1{0 Set Range,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}>Ouput MIDI Channel C slider14:1<1,127,1>Minimum Note C slider15:127<1,127,1>Maximum Note C slider16:0<-36,36,1>Transpose C //slider2:0<-1000,+1000,.00000001>test //////////////////////////////////////////////////////////////////// @slider chanA= slider3 -1; chanB= slider8 -1; chanC= slider13 -1; slidermove = 1 ; PassC = slider2==2 || slider2==3; PassN = slider2==1 || slider2==2; ///////////////////////////////////////////////////////////////////// @init ext_noinit = 1 ; slider4 =1; slider5 =127; slider9 =127; slider10=1; slider14=127; slider15=1; chanA= slider3 -1; chanB= slider8 -1; chanC= slider13 -1; //////////////////////////////////////////////////////////////////// @sample while ( midirecv(ts,msg1,msg23) ? ( m = msg1 & 240; channel = msg1 & 15; vel = (msg23/256)|0; note = msg23 & 127; passN ? midisend(ts,msg1,msg23); slidermove ? ( slidermove = 0; // all sounds off midisend(ts,176 + 0,120); midisend(ts,176 + 1,120); midisend(ts,176 + 2,120); midisend(ts,176 + 3,120); midisend(ts,176 + 4,120); midisend(ts,176 + 5,120); midisend(ts,176 + 6,120); midisend(ts,176 + 7,120); midisend(ts,176 + 8,120); midisend(ts,176 + 9,120); midisend(ts,176 + 10,120); midisend(ts,176 + 11,120); midisend(ts,176 + 12,120); midisend(ts,176 + 13,120); midisend(ts,176 + 14,120); midisend(ts,176 + 15,120); ); OKchannel = channel==(slider1-1) || slider1==0; slider3 && OKChannel ? ( //1 m == 144 || m == 128 ? ( //2 note >= slider4 && note <= slider5 ? ( //3 noteA = note + slider6; noteA|=0; noteA > 1 && noteA < 128 ? ( //4 midisend(ts,m + chanA,noteA|(vel*256)); ); //4 ); //3 ) //or on 2 passC ? midisend(ts,m + chanA,msg23); x=1; ); //2 ); //1 slider8 && OKChannel ? ( m == 144 || m == 128 ? ( note >= slider9 && note <= slider10 ? ( noteB = note + slider11; noteB|=0; noteB > 1 && noteB < 128 ? ( midisend(ts,m + chanB,noteB|(vel*256)); ); ); ) passC ? midisend(ts,m + chanB,msg23); x=1; ); ); slider13 && OKChannel ? ( m == 144 || m == 128 ? ( note >= slider14 && note <= slider15 ? ( noteC = note + slider16; noteC|=0; noteC > 1 && noteC < 128 ? ( midisend(ts,m + chanC,noteC|(vel*256)); ); ); ) passC ? midisend(ts,m + chanC,msg23); x=1; ); ); /////////////////////////////////////////////////////// slider3 == 0 && m == 144 ? ( slider4 = min(slider4,note); slider5 = max(slider5,note); ); slider8 == 0 && m == 144 ? ( slider9 = min(slider9,note); slider10 = max(slider10,note); ); slider13 == 0 && m == 144 ? ( slider14 = min(slider14,note); slider15 = max(slider15,note); ); ); ); Quote Link to comment Share on other sites More sharing options...
itayburg Posted November 17, 2013 Author Share Posted November 17, 2013 Anybody? Please Quote Link to comment Share on other sites More sharing options...
drb Posted November 17, 2013 Share Posted November 17, 2013 itayburg, I have done a little Scripter programming. I am not at all clear on what you are asking for. As I understand it, the input to a script is a stream of MIDI events plus (maybe) settings on the interface. The output is a single stream of MIDI events going to one destination (another MIDI effect or a software instrument). You say you want to split MIDI channels. Do you mean assign MIDI channels based on note number? Or what? drb Quote Link to comment Share on other sites More sharing options...
itayburg Posted November 19, 2013 Author Share Posted November 19, 2013 Hi man Thanks for you reply Basically I need 2 functions: 1. Control which midi channels are entering the software instrument (like channel splitter in logic's environment. 2. Split the keyboard in a specific note and Transpose one half. Do you have any IDE how can I do it in one or two scripter scripts? Thanks again Itay Quote Link to comment Share on other sites More sharing options...
drb Posted November 24, 2013 Share Posted November 24, 2013 itayburg, Put these files in YourHomeDirecrtory/Music/Audio Music Apps/Plug-In Settings/Scripter. I am still not sure what you are doing with these. Let me know one way or the other if they work. I can try again if not. Please post a note explaining what you are doing with them. drb FilterChannel.pst TransposeSomeNotes.pst Quote Link to comment Share on other sites More sharing options...
itayburg Posted November 24, 2013 Author Share Posted November 24, 2013 thank you so much drp. i really appreciate your efforts. i'm working on a live set using MainStage for sound (synth, guitars, vox ext) and Ableton Live to control loops playback and automations. my only instrument is a guitar with midi pickup (fishman triple play). i play guitars, synth and bass simultaneously. i can split the pickup output to different channels at different split points (strings and or frets). i use the TransposeSomeNotes.pst you wrote to transpose the high notes down for playing the bass line (with arpiggiator) and it seems to work perfectly. the FilterChannel.pst you wrote is used for splitting the guitar to different zones. the problem is it's only one channel output and i'm trying to filter a group of channels - for example channels 11-16 will be the specific instrument input. i will appreciate if you can change this script. anyway, the setup is working really good and thanthank you so much drp. i really appreciate your efforts. i'm working on a live set using MainStage for sound (synth, guitars, vox ext) and Ableton Live to control loops playback and automations. my only instrument is a guitar with midi pickup (fishman triple play). i play guitars, synth and bass simultaneously. i can split the pickup output to different channels at different split points (strings and or frets). i use the TransposeSomeNotes.pst you wrote to transpose the high notes down for playing the bass line (with arpiggiator) and it seems to work perfectly. the FilterChannel.pst you wrote is used for splitting the guitar to different zones. the problem is it's only one channel output and i'm trying to filter a group of channels - for example channels 11-16 will be the specific instrument input. i will appreciate if you can change this script.ks again drp for your help Quote Link to comment Share on other sites More sharing options...
drb Posted November 24, 2013 Share Posted November 24, 2013 itayburg, Do you mean 1) Select a contiguous range of channels to allow through, or 2) Select a contiguous range of channels to not allow through, or 3) Select random channels to allow through? drb (not drp) Quote Link to comment Share on other sites More sharing options...
itayburg Posted November 25, 2013 Author Share Posted November 25, 2013 Hi I meant to control which channels to allow through. Not nesecerly range it can be channels 1 and 2-6 and 11-13 for example. Quote Link to comment Share on other sites More sharing options...
drb Posted November 25, 2013 Share Posted November 25, 2013 itayburg, Here is another version of the filter channel script with a parameter per channel. drb FilterChannel.pst Quote Link to comment Share on other sites More sharing options...
itayburg Posted November 26, 2013 Author Share Posted November 26, 2013 you are the man!! it works like magic, perfect. thank you so much, i really appreciate your help. i'm gonna use these two script on every channel strip in my live setup. Quote Link to comment Share on other sites More sharing options...
drb Posted November 26, 2013 Share Posted November 26, 2013 itayburg, I am glad you like it. Warning though, you did read the next thread on this page "Limit on # of Scripts that can Run"?. I do not know whether or not this problem exists in Mainstage. drb Quote Link to comment Share on other sites More sharing options...
FredBegin Posted November 26, 2013 Share Posted November 26, 2013 Hi, This is a nice one. But I'm wondering if it's possible to merge midi channels. Or it may be called multiply channel outputs instead... Exemple: I have a multi-instrument with 4 instruments on channel 1 to 4. I want to be able to route the instrument input channel 1 to instruments 1,2,3 and 4 simultaneously. Sure I could simply put all the instruments on channel 1 or use the environment but I wish I could do this with scripter for some reason. If someone know it's possible I will try to do it but I'm not sure if scripter can do that. Thanks Quote Link to comment Share on other sites More sharing options...
drb Posted November 26, 2013 Share Posted November 26, 2013 nanook, Maybe possible. Please start a new thread for this. drb Quote Link to comment Share on other sites More sharing options...
itayburg Posted November 26, 2013 Author Share Posted November 26, 2013 Actually there is a little problem with the filterchannel script. From a time to time the instrument is entering to some kind of loop. It repeats a specific pattern until the software is stoped and play again. Any ideas why? Quote Link to comment Share on other sites More sharing options...
drb Posted November 26, 2013 Share Posted November 26, 2013 itayburg, Sorry to hear that. I do not see easily where the "loop" would be. I would need far more info than you are providing to figure this out, if I can figure it out (that is if it is not an Apple bug). drb Quote Link to comment Share on other sites More sharing options...
itayburg Posted November 27, 2013 Author Share Posted November 27, 2013 Hi I'm playing the instrument with the script on top and suddenly it freezes and playing a random not or notes in a non stop loop. The instrument no longer react to the midi notes I'm playing. The issue stops when I stop the sequencer and pressing play again Quote Link to comment Share on other sites More sharing options...
drb Posted December 19, 2013 Share Posted December 19, 2013 itayburg, Apple claims to have fixed the major bug in the Logic sequencer with multiple Scripter scripts. I am still downloading additional content at this point, so I have not been able to check it yet. I see that Mainstage has also been updated. You may wish to try the scripts again if you update. drb Quote Link to comment Share on other sites More sharing options...
cyril Posted December 23, 2013 Share Posted December 23, 2013 Hello Did you manage to use Meta in Scripter ? Best Cyril Quote Link to comment Share on other sites More sharing options...
vturner Posted December 8, 2014 Share Posted December 8, 2014 I have added drb's FX script for splitting midi channels to an instrument track in Pro Logic X but am unable to get it to function. Very frustrating as I am fairly desperate to split my incoming midi data in real time. My set up is a Korg i5M which outputs an arrangement on 8 channels, one channel for each instrument. I want to record each channel on its own track and at this stage just want the midi data recorded. I'm new to Logic and so my setup may not be correct. I open Logic, select one software instrument track, don't assign it to any patch, insert the drb MIDI FX and select Filter Channel. I block all channels but they appear on that one track. What is wrong here? Any advice including RTFM (but which one?, I've read lots), greatly appreciated. Quote Link to comment Share on other sites More sharing options...
virag0 Posted December 18, 2014 Share Posted December 18, 2014 itayburg, Apple claims to have fixed the major bug in the Logic sequencer with multiple Scripter scripts. I am still downloading additional content at this point, so I have not been able to check it yet. I see that Mainstage has also been updated. You may wish to try the scripts again if you update. drb Hi, do you know if a similar bug fiix is coming for Mainstage? All I need scripter to do is Program Changes which clearly does not work with mainstage & scripter at all. Latest Mainstage is 3.0.4 rachel 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.