-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
renaming files and repository locations #83
Comments
also, probably o.gui should be o.io.gui, and should replace the o.demo.maxcontrols in the main odot release... |
or o.io.gui should stay with the other o.io wrappers and we just remove the o.demo.maxcontrols since it's pretty old and not as developed |
I think the idea is to migrate wrappers out of the current o.io repo/project and into the release package one at a time, as there are aspects of the o.io that were researched or pending but never brought for use. ? |
ah right, I should review the original o.io repository -- but I was referring to the m158.o.io wrappers which were adapted from the old o.io materials. |
I'm not sure that Some thoughts:
|
Also worth mentioning that there is a fairly large problem with the naming of a lot of these things. For example, I'm not trying to be argumentative here, but I see a certain over-generalization in the attempts at making tools that are accessible and immediate for the course vs tools that are general and well-oiled enough to put into the odot release, no? I'm also concerned about compatibility. A lot of the stuff that was built in the course was built with the idea that these patchers would be put together to form "engines", and as such I'm curious if it's worth it to keep the relevant materials together. Again, just trying to evaluate which cases we should keep things here vs. moving per your original request (thanks for bringing this up, BTW; I think it's critical). There are certainly exceptions to this (lots of o.* stuff in the M&C package that I find generally useful), but then we have a couple of other problems:
|
I prefer |
hi @equilet, thanks for your many probing thoughts! ok... this is a long one, better get yourself a coffee and a comfortable chair! 1. patch location
Having just typed out lots of responses, I think now that o.io should be separate from the main odot release since many wrappers require third party objects. Possibly the mouse and keyboard wrappers could be moved (or even duplicated) into the odot release as examples of the o.io wrapper model which I think is super useful to understanding the power of odot.
The idea is that the Music/Computing package basically replaces the Depot, where there are teaching materials but also provides a highly flexible set of tools for producing new work. The courses teach how to use the materials, but the tools are independent from the course. The o.io.wrappers that we made for the class were cherry-picked from the original o.io repository, and used as the central tools for M158B, so in my mind o.io is now a core aspect of the instrument design tools. I'm not sure that Music & Computing or Composing & Coding are fully descriptive names for the package...
I don't think we need to worry about "computer music" vs "media programming". o.io.leap is an interesting example -- I think it should be released if you think it's ready! It requires some extra libraries and you need the Leap application to be installed, and a special developers contract if I remember correctly. So I'm hesitant about including it in the main odot release, but it would be a nice addition to our collection of o.io wrappers (there was a student last year who asked about it also). At the moment we are including the s2m.wacom objects and the cv.jit.contours object to support the m158.o.io wrappers, and we definitely should include the o.io.leap if you're up for it. I'll make a new issue about externals in the M&C repository. The s2m.wacom objects are getting old now, and I had thought about maybe making a o.io.wacom at some point also... 2. namingm158/cnmat.o.ioSo: specifically only in regard to the o.io m158B wrappers currently in the patches/io folder, are you in agreement that we can name them o.io instead of cnmat.o.io? o.
I'd call that a fairly normal sized problem : )
yes (pseudo random) It's an adaptation of the C library's rand() function: http://sourceware.org/git/?p=glibc.git;a=blob;f=stdlib/random_r.c;hb=glibc-2.15#l361 3. odot distribution
I know, but o.uniform is just the max random object scaled 0-1. o.random is an example of how to program the rand() algorithm in odot. Probably it should replace o.uniform. rand()/srand()
The time stamps are for seeding the rand() algorithm, like srand() does.
I agree that the name could be improved (even though it's the approximately the same as the C library and the max object "random"). generalized tools of high quality
I think the tools we give students (and non-students) should be well thought out and carefully designed so that they are encouraged to use them in their own way. Too many times have I seen patches that were made as pedagogical examples just get re-used thoughtlessly. I think not giving the best flexible, general tools we can is a dumbing down and creates limitations for everyone. The danger is rather in under-generalizing.
You seem to have a very high regard for the patches in the odot release! : ) As I mention above, I now think that we should not move the o.io wrappers into the main odot release. I also think things like the experimental aspect oriented research should probably be in a separate folder and presented in context with the ICMC paper, maybe moved to the research repository.
Here's a brief status of what's in the M&C io folder:
4. m158 doc and right outlet design
yes, agreed. Probably they should all stay together.
Ok, yes, so we seem to be moving towards not moving anything into odot except maybe the mouse and keyboard wrappers and maybe some of the o.random stuff?
no! we should not change all the objects. I think I have never once used the doc functionality -- the main interesting design point is that the m158 abstractions always pass the full bundle out.
no! that's pretty extreme! It might be interesting to make a list of abstractions that you actually use from odot. For example, I don't like o.was -- I prefer to use /prev.
definitely not in odot! it should stay where it is. The loadbang still has issues when initializing after copy pasting, but having it as an abstraction gives us the ability to try to fix it somehow. 3. gui wrapper discussionIn regards to the broader o.io collection, I agree that wrapping the max GUI is a unique case, since it's internal to the program it's not a hardware io -- but a wrapper for the screen-based UI within max.
I'm not sure what you mean by "generic enough to be in this categorization", what does the "io" categorization mean to you?
It uses pattr so de facto it works with all Max UI objects. But, what do you mean "with any o.io UI object"? ... ah, I think you mean bpatchers, like your BCF UI patch... I see... that seems like an easy thing to implement, are there non pattr-able GUI o.io objects?
While I agree that the o.gui system is young and could use more stress testing -- the main, central, focused core, of the o.gui idea is that the max GUI should be avoided as much as possible : ) -- and reserved for top level controls. After teaching M158 over the years, I grew wary of seeing students constantly using GUI objects in the inner mechanics of their patches, which as you know is a bad idea for reasons of threading and also tends to create hidden state problems. Working on the io wrappers made me realize how elegant the design is, and that we could try to use something like this to avoid the trappings of typical max spaghetti error prone patching. However, yes: it was designed primarily a pedagogical device. I use GUI objects very sparingly in my production patches -- for most cases I'd say o.gui is as production ready as pattrstorage is : ) let's schedule a meeting to discuss. |
@equilet @EdmundCampion
I think the 158B wrappers are ready to be o.io instead of cnmat.o.io now.
This also makes me wonder if we should move the o.io wrappers into the odot repository?
Or maybe it makes sense to keep it in the Music-and-Computing package?
There are also a few other o. abstractions in the Music-and-Computing that could be moved to odot, like o.random o.random.weighted, o.ntom, ... but on the other hand maybe keeping the abstractions mostly separated makes the odot package a little more refined.
The text was updated successfully, but these errors were encountered: