|
Post by joebataz on Oct 19, 2019 16:57:02 GMT
I'm in. Sign me up. Haven't worked with Lemur in a couple of years because I didn't feel it was going anywhere and the app I wrote was doing the job, not ALL of the job but enough to remain useful. Co-incidently the lighting software I've been using has Python scripting in it so I could help out some. Tell me what I need to look at to get on this train.
thx
joebataz
|
|
|
Post by rs2000 on Oct 19, 2019 20:15:45 GMT
Looks great! Being a long-time Lemur user, I'm really looking forward to an even more advanced controller app. Still using Lemur today simply for lack of a better alternative. I'm also a fan of the Python language btw
|
|
|
Post by xPsycHoWasPx on Oct 19, 2019 20:49:42 GMT
Something I wish Lemur hat when i using it..
This object you can stuff hundreds of item options into a short area and just scroll to select.
Im also experimenting in this video with a grid positioning system, so objects can be placed after a grid, like every 16 pixels, for faster building in the start up phase. I will also fool with alignment system later on but that requires I make the a high-light function of multi objects first.
Right now I'm just happy I finally gotten far enough to see the editor 2 client transfer in action, that phase was ofc easy but hat to build to whole editor part before it made sense and that was another story :-) ....
Theres gonna be different other layout containers that will automatic resize objects inside it based on size on the layout container, and how the % size is divided between the objects. Already abit in the "Box Container" demo, but it will be renamed to Grid Container. But what can make it really powerful is if I design it as a Duplicator meaning that if u set up a grid of 4x4 and place one button or a knob , it will duplicate it too all other 15 grid slots and of course even the space between them, so you basically only have to setup scripts etc for 1 item and the 15 others will follow.
So if a user combine a Grid Container with 1x4 spots and place a fader and 3 knobs then put that in the duplicator container and set it to 1x8 then presto a 8 channel Mixer (1 fader 3 knobs each channel) is now made, by just using 1 set of 1 x fader 3 x knob. Most of this is already build in the core lib im using it just need to be repacked abit for purposes like this.
Scripting part is still in development, and don't worry its already working but the problem is its right now its working 2 good, meaning users can access everything. So have to sit down and reconsider what I should be accessible and what should not. How much of the core lib code should be as original code and how much should be repacked in other functions for easier usage.
Also need to build up a class that users can access all objects in same matter lemur did, some that properly will result in abit longer strings that lemur, but since python can relink everything to variables, then I don't think users will see this as a big drawback in the end..
properly something like
root.interface0.knob1.value to access the knob in a root window of the first interface window. but can be shorten to knob1 = root.interface0.knob1
and now it will just be knob1.value
The Canvas engine will 100% be out the this world compared to lemur I promise that 100%. Already now I can tell that the knobs and faders in the video are actually not directly image viewers but really canvas, that draw the result based on what pos it looks at a big image_strip file. So you can combine canvas draw instructions with images without having to load different objects.
But... This app will also have quite higher demands than lemur used to do, when it comes to ram, and gpu. + it uses the full resolution of the retina displays but result is really crispy images... for the knobs ect.. almost wish I hat a real retina monitor for my computer 2 when using the editor :-)
|
|
|
Post by xPsycHoWasPx on Oct 20, 2019 8:23:11 GMT
Duplicator Container Test:
|
|
|
Post by rs2000 on Oct 20, 2019 10:58:24 GMT
Cool! For long value lists I'd rather prefer a labelled button that opens a large grid/table with all values visible at a glance, like I did it in Lemur. Say, you wanna build an editor for the Waldorf blofeld and let the user choose from 127 possible waveforms. Seeing them all in a popup overlay is so much more convenient and immediate. But for smaller lists they're good to have!
Grid snapping is priceless. It really helps. As you've put some thought already, maybe you can get inspired e.g. by Apple's Keynote app in which you can not only position by a static grid but also by object references like snapping buttons or centered text labels to center points of existing widgets on the canvas.
Dot-separated paths to object values seem perfectly fine to me. Like you say, one can build shortcuts but this way the heritage of an object is always clear.
For photorealistic UIs, I tried to use TBMidiStuff (also with 3rd-party knobs support) in the past but the long announced new version seems to never see the light. And Python should give us the power to do more advanced stuff.
One more thing (probably worth considering at a later stage but I'd like to mention it already): iPad musicians more and more use MIDI clock master, slave and Ableton LINK for syncing, AUv3 plugin versions to integrate MIDI control apps into DAWs and modular hosts, Audiobus compatibility (including IAA sync and audioo and MIDI routing) and that's what has been really missing in Lemur from the functionality view. Also, such functionality would allow for building custom MIDI processors which is very often needed in a more complex setup, maybe even a mix of iOS synths, FX and external MIDI hardware.
|
|
|
Post by xPsycHoWasPx on Oct 20, 2019 16:54:41 GMT
Pull down containers / Popup containers menus will be part of the lib 2. Dont worry.
But midi Clocking is not what i have in mind for now. AUv3 ect is not something the lib core supports right now, maybe the day when version 1 of this product made enouth money, and I can affort hire C++ programmers i will move everything to the JUCE platform. That allows even more platforms than my current python/kivy setup Midi clocking needs 2 be 10000% tight if i ever wanna bother selling that 2 ppl. Maybe really down the rabbit hole.
But It will feature physics / frame scripting as lemur.
As much as i think ableton link is dope as hell , and i just wish all daw was using it... then i wouldnt have any idea where to begin n end with building that.
My next step once this is final and a few updates in, then i, would properly start fooling with a 8-16 knob hardware controller, that will speak same lang as my app, so the app can function as a brain/automapper For the knobs on the hardware. + being able to assign the same scripts to the knobs as the app. But that is all future thinking.
I alrdy fooled with this concept in lemur and my bcr2000 (just frankensteined the 8 upper knob panel to fit under my ipad ) and the bcr2000 would be 100% preset-less, and my bcr2000 editor script would reprogram sysex controls for each knob. So knob 1 was controlling daw fader while knob 2 was controlling my roland v-synth filer cut ect..
Also before i started on building this tiger project , i was alrdy deep with a ableton live controller app(same core as this project, that features step sequencer and note editor Automation control and able to browse the browser and load samples and devices. Also ability to load samples /devices directly to drumrack pads.
Im planning on integrating that into this app as a buildin interface users can load besides there own interface. But it will be part of main app code, so please don't expect to be able to modify any of it. Same goes with the osc/midi protocol between ableton and the app when it comes 2 step note msgs, if you want to fool with that your welcome to sniff the msgs on your own but thing is the way I designed my midi remote script doesn't make it super flexible for changes, it's designed for the way I made my app nothing else. But it will be a lot better than what they released for lemur.
But I decided that all device parameter controls(incl labels and value strings) will be accessible so users can design there own panels for that. And will be part of the ”sysex” engine I will work later on to make future sysex programming Into child's play. So instead of having to write special script parts to emulate those sysex commands they will be executed by single line commands that does rest of the magic, it will also handle the storage of the sysex parameter values. So no need to have own variables to store and load parameters on the hardware you are controlling.
Also planning on repacking 2-3 Mackie controls into one unit that will be accessible by sysex engine by commands like Sysex.mackie.ch1.volume
So users don't have worry about what type midi the faders / pans and buttons uses and what mode u have to be in to control what, and yes that part I have fooled with before 2 in lemur xD.
|
|
|
Post by xPsycHoWasPx on Oct 20, 2019 20:11:49 GMT
(Sorry for the Demo Mode Water Mark, I was testing Screenflow demo for much easier capture of both screen and iPad vs the Quicktime player method.)
Speaking of Ableton Live..
This is the progress of my other little Baby Im going to integrate into Project Tiger..
Im just fooling around so nothing is script and can be weird pauses ect.. but I hope some Ableton users will find this add-on useful I know I will once im finish xD This really beats all other midi sequence stuff I fooled with..
Ableton Live + Python Midi Remote Scripting is just the King... it will also feature Automation Sequecing ect..
and after fooling with this concept I really don't feel I can make something better on my own Ableton Midi engine is just tight and OSC between Ableton n my App is just fast as hell (OSC for Ableton output and Midi for input(midi just faster for the input part than the way you have to implement the osc server vs how the script runs in Ableton vs normal python)
|
|
|
Post by rs2000 on Oct 21, 2019 9:56:39 GMT
You're right, MIDI clock needs high accuracy and the code running in a sufficiently prioritized thread, just like with Ableton LINK. For both, developer libraries are available for free (the LINK SDK for iOS comes from Ableton themselves). Man, what a great idea to Frankenstein a BCR! I'm thinking about doing the same with mine, 8 knobs above and 24 knobs below the iPad. Mackie Control Extenders could be even more sexy for the task Easier handling and support for longer sysex messages (hello MPX1?) are very welcome. Indeed, the flexibility of Ableton Live and the Python API is insane. Currently I'm only using the LK app to launch clips and edit notes in the piano roll but of course, so much more is possible. Q: Why did you choose OSC+MIDI instead of MIDI only?
|
|
|
Post by xPsycHoWasPx on Oct 21, 2019 11:42:10 GMT
Q: Why did you choose OSC+MIDI instead of MIDI only?
A:
1. OSC allows me to send all data in raw string format, while midi you have to do string to ascii then ascii to string again on the client part, And in general i just felt having to do that where limiting the options i have vs directly strings..
2. THE SPEED. When i orginal designed it in lemur, it was all midi both in and out.. but when it came to updating large array like 16 notes of 256 steps it hat a big delay, before the final script msg that would tell it all ok data is transfered now load the shit.. Then i started read about how to hack osc into the script and i tried it, and now it all happened instantly.. was like night and day..
The downside of OSC as input into it is you must Tell a loop to keep check for new msgs, and u cant do loop in ableton without making it all stuck, and threads doesnt work either it will just slow down everything. So dont think it allows more threads because the script it self is already a thread of a mainthread..
So you can only add the “check for msgs” in the display part, that only refresh at 60fps and only when playing.. so good old midi 1.0 still perfect for that since no limits on fps.
But i dont send midi from ios client, it only uses OSC then i have an small daemon app that converts osc to midi.
This way i can also easy stream outputs from multi clients to the same midi input on the 1 midi remote script without users having to use many midi remote scripts.
Hope that makes sense why ? My goal was to get the fastest refresh rates between Client app and ableton live possible and that was the best way, even the guy behind ”Touchable” uses same method, because of the limit.
The daemon app also serves others purposes like running python stuff that ableton won't allow me(python is Still v2.7 inside live....) So daemon runs in 3.7 and one of the features I added is a database that can interact between the client and live, so you can sort all your samples and sounds like you would with native instruments and others app that uses database features.
The database will also be available for the tiger project, but it will come both with the option of using a integrated DB inside the app, or install a mongoDB server on your DaW or another PC, that will allow even more complex storage. It can also be used to store ableton device presets or used to transfer preset from software device to a hardware device. ..
|
|
|
Post by xPsycHoWasPx on Oct 21, 2019 12:08:27 GMT
That should be easy too, you just need to replace 2 flat cables with some longer ones, between the BCR top panel and the lower part. My plan was just to put the 8 Top knobs inside my table and then have a custom stand for my ipad just over it soo my hand can rest of the table when using ipad like i normaly would but same time i have these 8 knobs + 16 buttons right infront Then hide everything else away under the table.. (just didn't get any further Project Tiger stole my time xD ) (Not my main ipad, but should buy new screen soon so i have 2 ipads again) I just want those 8 knobs because they have diffrent LED modes while the others always just 1 dot. But it was funny was really close to throw out the BCR2000, but i wanted to do a test of how smooth automation looks inside Cubase vs the automation from lemur(it didnt look smooth at all) and bcr2000 was just smooth as hell... but i found out why and its will propperly always be the issue with Software based Midi controllers, those 60 fps.. Its doesnt otffer enouth points vs the +200 bcr created on 1 turn within that 1 sec.. Also why i wanna look into build my own hardware one with same engine as tiger.. so users can benefit from the smooth automation but still have the scripting like the app.. But the other reason why i didnt throw the bcr2000 was.. some weird reason i ended up reading an unofficial guide how the programming engine works in it, Its really weird but also way ahead of its time, and i swear if i knew about this back then BCR2000 would still been part of my main setup.. But its like You write to it Set Encoder 01 midi cc parameter 1 ect But you must write it in Ascii code.. So 0 is not 0 but Ascii 0 Cant remember if its 64 or where 0 starts.. But python will ofcourse make it really easy with the ORD function With lemur i hat to use String to ascii convert homepage and just add the values to the ascii numbers i wanted to change.. Now i can just write the full string and do ord xD.
|
|
|
Post by rs2000 on Oct 21, 2019 15:02:41 GMT
Good to know, thank you! BTW, you're not the only one going into the depths of the BCR: zaqaudio.com/I even thought about adding a second 32pin DIL flash chip to be aboe to switch between the different firmwares, but time...
|
|
|
Post by xPsycHoWasPx on Oct 21, 2019 15:39:27 GMT
Good to know, thank you! BTW, you're not the only one going into the depths of the BCR: zaqaudio.com/I even thought about adding a second 32pin DIL flash chip to be aboe to switch between the different firmwares, but time... Its funny after I started fool with the programming engine, I said to an old friend who used to own them 2.. Man These BCR2000 was fucking ahead of its time... ( if I say this Name to ppl now and days they start Laughing.. if only they knew...) then few days later I see that post about a guy making new firmware, turning it into a full-blown midi sequencer.. man stuff like that is still way beyond me how to build.. but awesome :-) I wouldn't know what I would hat done if python/kivy didn't exist :-) Lemur was my first programming lang.. but I finished 2/3 of electronic school then dropped out because it was just tooooo much for my small brain xD. But I learned most basic of digital logic ect, and math never been a problem for me so.. so lemur wasn't that hard to learn besides the awefull script support.. it gotten me this far.. but for the hardware controller experiment I think I will start fool with a Raspberry Pi Zero since it has this gadget mode, that allow the usb to become like a normal usb, when plugged into a computer.. and since the os runs mainly on python and the gpio ports is easy to program with python, then a basic prototype with a few knobs ect should be manageable. To begin with just make it into a Diy project others can do them self.. Make a linux build with a special cython(python to c++) compiled lib, that talks with my app.. (just easier to compile and lock it, than ppl start to ask how to mod this n this...+ it will just be alooot faster), that still has python roots.. whatever.. again future thinking.. The app is still the main idea, and everything else like freebies diy projects will just be extra goodies as a thank for the support.. Also a nice way to PR my App.. xD
|
|
|
Post by xPsycHoWasPx on Oct 21, 2019 22:02:57 GMT
Some more progress on the duplicator. Spacing and padding options inserted. Rows and Cols options.
The duplicator are going to serve a lot of cool purposes, example it will be the main object for creating any kind of object arrays, like a drum pad, or whatever you wish to make a grid of. Next step will be to add ability to load a another grid container that example has a label using 10% of top and 90% for a knob. And now it will add fill all the duplicator slots with that config..
It will also eliminate the need for having a script for each object, and instead all objects will bind to the same main script. Because of the way python scripting works it would also makes more sense to setup the scripting like that. There will be option to define a personal script for each item if that is needed. and so on..
but this is only the first take on this lovely gadget.
This will be the last the last update about Project-Tiger on this forum. and all future updates and news will be on the new forum. Users have been informed about this by email.
If you havnt received the email but followed this thread, you can send me a PM on the forum and I will link you to the new forum.
The new forum will be split up in 2 parts. Any accessible for all users for updates and feature requests ect. and a private one for those who wish to try help out getting the job done. (only need a few ppl when time is right).
in a later state the forum will be become public and I will create a homepage ect.
|
|