General
Correct midi on expression from menu
Started by tput73 on .
Sign in or create an account to join the conversation.
I have succeeded in getting a ctl
message out of a ranged menu
but I need 4 separate out messages
How does this work?
Thanks
T
message out of a ranged menu
but I need 4 separate out messages
How does this work?
Thanks
T
I assume you are talking about the "menu" object and that you want controller outs that are not subsequent so you cannot use the object's factory midi mapping.
If all these assumptions are correct......
add script in menu....
on expression selection, any
I hope this helps!
If all these assumptions are correct......
add script in menu....
on expression selection, any
if (selection==0) ctlout(insert your desired values here);
if (selection==1) ctlout(insert your desired values here);
........
if (selection==n) ctlout(insert your desired values here);
where n is the amount of menu object -1. (menu items index numbers)I hope this helps!
you rule softcore!
it worked however how I'm using it in Traktor causes the need for a
refresh of message(press) to set moodifiers correct, not sure why.
So i went back to custom buttons. Same issue?
T
it worked however how I'm using it in Traktor causes the need for a
refresh of message(press) to set moodifiers correct, not sure why.
So i went back to custom buttons. Same issue?
T
Hmmmmmm! What exactly are you trying to pull?
I read "modifiers" which, if I recall correctly is a way for Traktor to create something like your own "shift" functions - for example a button sending some Midi CC 0 - 127 values doing a different job in the software according to what a modifier's state is, from 1 to 8 if I recall.
If thats the case, make sure that you 've got all the momentary-toggle mumbo jumbo stuff for your modifiers mapping correct inside Traktor's options. It should work either with custom buttons or with menus Im not sure though if the above script will suffice for this case.
If you break it for me down to specific instructions ( i.e. what exactly you want the menu to send as midi messages) we will work it out!
I read "modifiers" which, if I recall correctly is a way for Traktor to create something like your own "shift" functions - for example a button sending some Midi CC 0 - 127 values doing a different job in the software according to what a modifier's state is, from 1 to 8 if I recall.
If thats the case, make sure that you 've got all the momentary-toggle mumbo jumbo stuff for your modifiers mapping correct inside Traktor's options. It should work either with custom buttons or with menus Im not sure though if the above script will suffice for this case.
If you break it for me down to specific instructions ( i.e. what exactly you want the menu to send as midi messages) we will work it out!
Yup you got the traktor modifiers correct.
Here's what i'm trying to do...
4 custom buttons,A,B,C,D
Upon expression A sets modifier to 0, B to 1, C to 2, D to 3
The mod sets which deck to apply looping,pitching etc all currently mapped.
I didn't have this issue when I was using just one custom button to go from mod = 0, to mod = 1. But now with four
Also have scripts in each button to set the rest
Of four to off.
i occasionally have to double tap?
T
Here's what i'm trying to do...
4 custom buttons,A,B,C,D
Upon expression A sets modifier to 0, B to 1, C to 2, D to 3
The mod sets which deck to apply looping,pitching etc all currently mapped.
I didn't have this issue when I was using just one custom button to go from mod = 0, to mod = 1. But now with four
Also have scripts in each button to set the rest
Of four to off.
i occasionally have to double tap?
T
I see......
I remember, in the mapping settings of traktor you can set a midi message to increment a value, decrement a value or set it to a specific value....
So, in the case of the modifiers, set the mappings so that for example CC 12 sets modifier explicitly to 0, CC 13 explicitly to 1, and so on and so on.....and not make it decrement or increment....I believe this way it will work either with custom buttons or with menu - and in fact if you use consecutive CC numbers you dont even need scripts in the menu object - just use the object's midi mapping from CC 13 to CC 16 (for the example given)
I remember, in the mapping settings of traktor you can set a midi message to increment a value, decrement a value or set it to a specific value....
So, in the case of the modifiers, set the mappings so that for example CC 12 sets modifier explicitly to 0, CC 13 explicitly to 1, and so on and so on.....and not make it decrement or increment....I believe this way it will work either with custom buttons or with menu - and in fact if you use consecutive CC numbers you dont even need scripts in the menu object - just use the object's midi mapping from CC 13 to CC 16 (for the example given)
Right on,
I had them set to direct.
I ended up going with the custom buttons as it involved less presses.
More important in my template is to get fx choices containers
pictured in 43 template onto my page.
there are four containers in 43 pictured in attachment.
when I try to copy each individual fx choice with container (3 per container except for last fx slot which is 1)
The fourth one copied ends up controlling the first.
Like they must stay in these containers?
I have looked at scripts but being such a nooob I cant get it?
Here is link to 43 on liines member library.
http://liine.net/en/community/user-library/view/333/
On my page I have all fx choices within one container i guess
T
Screen Shot 2013-03-22 at 6.36.19 AM.png
I had them set to direct.
I ended up going with the custom buttons as it involved less presses.
More important in my template is to get fx choices containers
pictured in 43 template onto my page.
there are four containers in 43 pictured in attachment.
when I try to copy each individual fx choice with container (3 per container except for last fx slot which is 1)
The fourth one copied ends up controlling the first.
Like they must stay in these containers?
I have looked at scripts but being such a nooob I cant get it?
Here is link to 43 on liines member library.
http://liine.net/en/community/user-library/view/333/
On my page I have all fx choices within one container i guess
T
Screen Shot 2013-03-22 at 6.36.19 AM.png
Post your template here and we can fix it - probably the scripts need some changes in the object references.....
A Knob inside 4 containers can be named Knob in all four of them because the path name changes from the containers' names....Once you pull the four Knobs ut of the containers though each one gets a different name (Knob, Knob2, Knob3, Knob4) breaking any scripts that previously were referencing only "Knob"....
Just to give you an idea what might be wrong!
A Knob inside 4 containers can be named Knob in all four of them because the path name changes from the containers' names....Once you pull the four Knobs ut of the containers though each one gets a different name (Knob, Knob2, Knob3, Knob4) breaking any scripts that previously were referencing only "Knob"....
Just to give you an idea what might be wrong!
Yup,
That makes sense. I tried going through
All the coding and my brain went to
mush.
So I just resized everything I could
and used the handy dandy smart container.
But that makes me think..
How would I go about getting a midi out
message from traktor to open a hidden container?
I guess this is similar to my other question
With midi thru, I just can barely 'express'
myself in lemur at this point.
T
That makes sense. I tried going through
All the coding and my brain went to
mush.
So I just resized everything I could
and used the handy dandy smart container.
But that makes me think..
How would I go about getting a midi out
message from traktor to open a hidden container?
I guess this is similar to my other question
With midi thru, I just can barely 'express'
myself in lemur at this point.
T
The truth is...MIDI_ARGS is not that well documented in the manual but whatever the case....heres what you CAN do (I did it the other day) to solve a lot of your questions.
Set up Lemur.....
Add a monitor object - delete its value.
Add a script, execution on MIDI, type of message you want to observe, desired target, 0 to 127, 1 to 16.
then in the script simply type:
)
Now add another script...lets name it showcontainer, execution on MIDI, type of message you observed, desired target, 0 to 127, 1 to 16.
and then type

This proecedure is pretty much generic - after you get the hang of it, you will realize you dont have to "listen" to all midi values (0 to 127) or all channels (1 to 16) to "catch" the desired message, but the above should get you going!
Set up Lemur.....
Add a monitor object - delete its value.
Add a script, execution on MIDI, type of message you want to observe, desired target, 0 to 127, 1 to 16.
then in the script simply type:
Monitor.value=MIDI_ARGS;
Now, send from your software to Lemur the midi message which you'd like to observe. For example send from your software to Lemur the midi message that you want, whenever sent, a hidden container will be opened. Now all you have to do is to observe the arguments. Lets say for example your monitor shows the values {144,60,127} (I think this is some sort of note message, consider it just an example Now add another script...lets name it showcontainer, execution on MIDI, type of message you observed, desired target, 0 to 127, 1 to 16.
and then type
If (MIDI_ARGS={144,60,127}) show(Container,1);
Actually, you just type whatever midi arguments you observed in the first script - I just used what I used in my example above! This proecedure is pretty much generic - after you get the hang of it, you will realize you dont have to "listen" to all midi values (0 to 127) or all channels (1 to 16) to "catch" the desired message, but the above should get you going!
Hi
There is a bit of info to be gleaned from the User Guide and the Appendix MIDI section that I added in the last update.
Basically they mirror the standard MIDI message format so checking any MIDI standards document should help as well . . .
Yes that 144,60,127 is a Note On message on Channel 1, note 60, velocity 127 -
If you look at the MIDI mapping panel, or OnMIDI scripting you see a '90' before NoteOn, B0 before Control Change these are the Hex values - 0x90 ==144 meaning NoteOn Channel1 - 0x91 (145) would be Midi Channel 2 etc . . .up to 0x9F for ch 16.
Thought something was a bit odd there -re the 144,60,127 - whilst that is the way a MIDI message gets done at low level and as a MIDI message for midiout() the OnMIDI function actually packages it a bit more human readable . .
so executing OnMIDI -NoteOn 0-127(notes) 1-16(Midi channel) and receiving a note on 60, velocity 127, channel 1 will return {60,127,0} being Note,Velocity, Channel(0-15) - at machine level its 0-15 but for human consumption it is usually 1-16 . . .
So re the Open a Container maybe pick a low Note number to use then a script execute OnMIDI NoteOn, over a limited note range, as many notes as things you want controlled and then go from there with the scripting if(MIDI_ARGS[0]==24) show(Container,1) etc
It really comes down to representations of essentially the same data - you get the hang of it all through a bit of research and experience - mind you I was hacking MIDI way back in the day on Yamaha FB01, and in the late 80's it was an awful lot harder . . .
Hope that makes some sense, and doesn't confuse too much . . . .
MM
There is a bit of info to be gleaned from the User Guide and the Appendix MIDI section that I added in the last update.
Basically they mirror the standard MIDI message format so checking any MIDI standards document should help as well . . .
Yes that 144,60,127 is a Note On message on Channel 1, note 60, velocity 127 -
If you look at the MIDI mapping panel, or OnMIDI scripting you see a '90' before NoteOn, B0 before Control Change these are the Hex values - 0x90 ==144 meaning NoteOn Channel1 - 0x91 (145) would be Midi Channel 2 etc . . .up to 0x9F for ch 16.
Thought something was a bit odd there -re the 144,60,127 - whilst that is the way a MIDI message gets done at low level and as a MIDI message for midiout() the OnMIDI function actually packages it a bit more human readable . .
so executing OnMIDI -NoteOn 0-127(notes) 1-16(Midi channel) and receiving a note on 60, velocity 127, channel 1 will return {60,127,0} being Note,Velocity, Channel(0-15) - at machine level its 0-15 but for human consumption it is usually 1-16 . . .
So re the Open a Container maybe pick a low Note number to use then a script execute OnMIDI NoteOn, over a limited note range, as many notes as things you want controlled and then go from there with the scripting if(MIDI_ARGS[0]==24) show(Container,1) etc
It really comes down to representations of essentially the same data - you get the hang of it all through a bit of research and experience - mind you I was hacking MIDI way back in the day on Yamaha FB01, and in the late 80's it was an awful lot harder . . .
Hope that makes some sense, and doesn't confuse too much . . . .
MM
Yup I understand perfectly...its just that Im not very familiar with converting hexademical values to decimal values so I find it easier to just observe and use the decimal ones. (just to adress to one of your other replies on a similar topic
)
In any case, I believe the "monitor" method I described above will always return the data array in the desired form (representation) and with the correct order of data inside the array thats why I didnt trouble explaining it further....
In any case, I believe the "monitor" method I described above will always return the data array in the desired form (representation) and with the correct order of data inside the array thats why I didnt trouble explaining it further....
This is really useful information, I've been meaning to set-up a way to listen to incoming messages. Thanks