|
Post by xPsycHoWasPx on Aug 28, 2019 11:53:58 GMT
Okay been looking more into how to dynamic insert new "Functions" into an already active running script(Project Tiger) and calling them with text strings seems easy 2. So I can use exec( "function code" ) to load function into the main script and globals()["function"](input) to run it. and if I wrap those lines into: try: globals()["function"](input)
except: print("Script Failed")
then that should work fine as a fail safe for now.. so for those who want to try help "beta" test this thing very soon(only editor for Windows/Mac for now, but turning it into touch mode its just a flick of a switch),so I suggest if u don't know how to do python yet, to start read some tutorials now because the script lang inside app will be running 100% python lang. www.w3schools.com/python/Why Python? Python has a simple syntax similar to the English language. Python has syntax that allows developers to write programs with fewer lines than some other programming languages. Python can be treated in a procedural way, an object-orientated way or a functional way.
|
|
|
Post by xPsycHoWasPx on Aug 28, 2019 19:55:37 GMT
Ahh now basic container like in lemur works. there will be other container types 2, but those already exist in the main library. Right now I just need to get a container like lemurs for easy moving objects. The other containers are grid based and can't be moved by mouse and will auto setup size and pos.
|
|
kirkwoodwest
Junior Member
Building Lemur Templates for Live and Studio
Posts: 47
|
Post by kirkwoodwest on Aug 30, 2019 19:29:04 GMT
Might want to change the name of the board. Considering it is a 'knockoff'... love the progress man!
|
|
kirkwoodwest
Junior Member
Building Lemur Templates for Live and Studio
Posts: 47
|
Post by kirkwoodwest on Aug 30, 2019 19:35:23 GMT
I have some feature ideas for you... when you press a knob it could do a popup on that finger and show you the value right next to your finger. Also while building lemur apps for different plugins they have a bit of cc requirements. Some knobs are stepped and require specific CC values to reach those points. They seem to be different for every plugin. For lemur I had to write my own midi handlers and used different data sets for each type. Would be nice if something like this was native to the app. I can explain more if needed. As for displaying the value of each fader. So many systems just show 0-127. barf. But on each VST there is sometimes an actual value that you'd want to display. I wrote custom scripts to update a monitor or text object so it would display the correct value. Sometimes the scripts were a bit complicated and required some linear algebra/logic to get it displayed properly. Would be great to be able to insert this code directly or whatever the scripting system is makes it easy to do so. Would love to get involved somehow and be part of this project.
|
|
|
Post by xPsycHoWasPx on Aug 30, 2019 22:01:10 GMT
In other words, mix a “Label” with popup object. Open it when doin on_press and close it when touch is released.. I could easy make it both a static pos or the label follows touch pos. I will make text and monitors the same thing in my version. I never understood why they hat to be seperate things. Also ppl can also use own custom fonts in labels.
Nah i think i get it, and i 100% agree. That was i ment with i believe i could cut 40-60% of scripting needs away with a custom “sysex” library. I just call it sysex for now. Then you can define all your parameters for each device you wanna control, like The whole sysex code incl check values ect. And also define real value of the parameter in either min / max, or how much each step is or whatever.. Then lets say you have your normal send_midi() command. Then i could make a lookup command like:
sysex_lib.<factory name>.<device>.<parameter>.midi(float value 0.0 - 1.0)
sysex_lib.roland.vsynth_xt.osc1pitch.midi(0.5) And it returns F0,00,53,12,00,12,(par val 64),(checksum),F7 and if u wrap the send_midi around that it will send the returned value. send_midi( sysex_lib.roland.vsynth_xt.osc1pitch.midi(0.5) ) and for value label:
...<parameter>.value_text(float value 0.0 - 1.0) (note this is how ableton does it with there midi remote script core, you just insert the parameter float value into a .value_to_text(float) and it returns ”223 Hz” if it was an EQ parameter. I don't need to do much on the receiver part just tell a label to show string of the value.) But ableton midi remote scripting in general is freaking awesome to fool with it(as I said earlier currently also working on a Ableton Live Control App, but that's another story).
Also the whole deal with storing the values that just got received or changed could be done by using the sysex_lib core to store them and just recall them from there. So users don't need to waste time on setting up, expression and variable to store all the info.
Scripting should be about doing fancy stuff like controlling multi parameters with one knob or intelligent switching between what target the knob controls or whatever standard midi controllers don't offer.
Not doing scripts where 30% is how sysex string is defined and 30% how monitor value should look like, and finally the last 40% of the code that does all the fancy shit that was the reason you needed to make a custom script in the first place.
That's how most of my lemur adventures been like so far 😎.
|
|
|
Post by xPsycHoWasPx on Aug 30, 2019 22:25:09 GMT
Might want to change the name of the board. Considering it is a 'knockoff'... love the progress man! I think I will just leave this forum as it is and create a new for this project. Just did a check and hardly any logs on this forum anymore, so almost more work to clean this one up vs making a new. But I suggest you join me on Discord if you are interested in helping out on this. Any kind of help would be cool: bug testing, GUI work, fooling with the knobman tool to create some custom knobs and faders. Or parts of a knob or fader that users can combine with canvas drawing. Coding of course 2, python is really easy to get into. But i could properly manage ”most” of the coding on my own, if others could tip in on the design work etc. Even though python is slower than c++ ect, then most of Kivy core Library that i am using to build this, is already compiled in c++ so you really just using python to stitch it all together. Speed-wise it should run with the speed of c++(like normal apps does). And all GUI stuff runs off the GPU so in the current state when running it on my iPad from 2016, turning a knob that scrolls thru a knobman strip (high res) just uses 10% of CPU/GPU while refreshing with 60 fps (still gonna be a limit), and that's just a short burst. So right now looks like Kivy can do this job more than fine for this kind of need.
|
|
|
Post by xPsycHoWasPx on Aug 31, 2019 17:03:07 GMT
I was wondering what to use the other containers(Layouts) types in kivy for. and if I modded the boxlayout abit, then it would be awesome to build channels strips for mixer controllers
its just designed to even out the space between boxes based on how many rows. but u can also make a box in it get a fixed size and each time u add one the window get expanded by the box size.
so if you then added a Fader and 4-6 EQ knobs in one row, then make a function that Duplicate It based on how many rows u picked in menu. so once u pass lets say 8 channel strips then when next is added it will be added outside the screen but now scroll mode will trigger..
so users only have to focus on making 1 strip when building Midi Mixers. and the amount of strips can dynamic change or set as fixed, if user only want total 24 channels.
|
|
|
Post by xPsycHoWasPx on Sept 6, 2019 7:57:06 GMT
Now its starting too look like something :-)
More Inspecter update and Tree View Bugs fixed(Load bug fix not showed in this, but its fixed now):
Now I just need container ect. working in tree view 2.
|
|
|
Post by xPsycHoWasPx on Sept 7, 2019 18:21:16 GMT
|
|
|
Post by xPsycHoWasPx on Sept 10, 2019 22:06:53 GMT
Looks like I got a basic scripting window to work.
in this demo, I just binded 2 test_knobs to the same script window, and its triggered once value in each is changed.
its the same way as when you tell your script in lemur to trigger on an expression change, but..
in this system you can tie different objects to the same script, so no more need to have sub scripts for each object to trigger a main script :-) Also in python you can tie objects to values and make them act as short cuts (only objects, not a value inside inside it, but you can make short for the object and then call value inside the shortcut, like you see in the demo). so its gives a lot of new options lemur never was possible to do.
there is still some stuff to do, to tie all custom added objects to expressions, that can easy be called by user scripts, but just a matter of time :-)
|
|
|
Post by ericzang on Sept 13, 2019 17:19:42 GMT
Cool!!
|
|
|
Post by xPsycHoWasPx on Sept 23, 2019 17:36:45 GMT
Basic concept for Patch Manager Module working. Its automatic collect all objects values, and store / loads them. The saving and loading of values is based on objects special uuid(unique id for each object), this means its doesn't care if you rename the object name or move it to other containers, after saving a preset. This also means that users can have a preset manager without the need to code any
|
|
kirkwoodwest
Junior Member
Building Lemur Templates for Live and Studio
Posts: 47
|
Post by kirkwoodwest on Sept 30, 2019 3:52:06 GMT
love the sets. that is cool!
|
|
|
Post by xPsycHoWasPx on Oct 11, 2019 22:24:14 GMT
Still some buggy stuff with the resizing stuff but atleast its works (forgot to tell the resize markers to enlarge when screen is zoomed out, else they get too small to touch )
|
|
|
Post by xPsycHoWasPx on Oct 18, 2019 21:58:59 GMT
Project Tiger - Editor 2 iOS Client Transfer Test
Man... I been waiting over 1 month too finally see this in action. Atm its just knobs thats works but it WORKS!!!!!
|
|