Max 6/gen~ tutorials

    Jun 25 2012 | 12:53 am
    This is my first forum post and I apologize if I'm off-base in any way. anyone else disappointed by the tutorial files in Max 6? Or more accurately, the lack of updates on them? As far as I can tell from having gone through several of them, it's exactly the same as the v. 5 tutorials, so at the least the look has not been updated. I was never a fan of the v. 5 tutorials, preferring those of pre-5.
    This is compounded by having paid extra for the new gen~ object, which lacks any serious cycling74 tutorial materials that I can locate. I find this to be discouraging; I'm not a coder by trade and the learning curve is probably higher for me than for some of you. I have started to look over the Help, Query, and Reference files but I could use more in the way of instructional materials.
    I know these things might turn up in the future, but I'm dismayed that tutorial updates apparently haven't been made yet. (Or am I totally wrong?)

    • Jun 25 2012 | 1:34 am
      Hmm, as for Gen, I think they are still working on tutorials. I'm not a fan of the help function on gen objects. There are lots of gen objects I have no idea what they do such as jit.gen [dot] says "take the dot product of two vectors". It's a bit like if a dictionary used the word your looking up to describe itself, not too helpful.
      I'm hoping for a full tutorial section in the help section on Gen someday.
    • Jun 25 2012 | 4:14 am
      It's not clear to me that Max tutorials should be teaching anything other than how to use Max. I don't think it's Cycling74's responsibility to ensure that one has the right amount of math knowledge to use Max. If you need to use vector operators like dot (and I bet cross product operator is there too) then best thing to do is find an introductory book that covers vector analysis. This stuff would also be covered in books that teach 2D and 3D graphics.
    • Jun 25 2012 | 4:50 pm
      i disagree with @dhjdhjdhj here. i think it is the responsibility of cycling74 to educate their users as much as possible. they make software for creative people, not for coders. an artist (like me) MIGHT not care what dot is, but may be able to achieve amazing things with it if they just had a little nudge. that is surely one of the founding principles of Max, period.
      usually cycling74 are brilliant at this, but it just so happens that with the max6 release they have not been (too busy creating amazing powerful additions to the software i guess). they have however acknowledged that documentation/tutorials are "a work in progress" (they say this in the documentation that comes with your copy of max6) and are working on it. i am certain that eventually we will see very cool tutorials on all new jitter elements and all new gen things and all new mgraphics things etc etc. it is a bit lame to have to wait though, i agree.
      with regards gen and genexpr, in the meantime, there have been numerous examples posted on this forum, as well as an entire "patch a day" series devoted to gen that you can access from the front page of this website. also, there are folders of examples in your distro here: /Max6/examples/gen and here: /Max6/examples/jitter-examples/gen play around with and learn from. i have managed to get pretty gen-far using these resources, and you will find that after the examples, the gen sections of the documentation ("Gen Overview" and "Gen Expr") make a lot more sense. and the 4 helpfiles are sort of useful, too.
      good luck.
    • Jun 25 2012 | 5:19 pm
      Define "as much as possible".
      Where would you draw the line? Personally, I would rather the cycling74 people invest as much of their resources as possible in product development and enhancements. It's not their job to teach me digital signal processing just because the MSP part of Max has lots of DSP goodies in it.
      Should Cycling74 be teaching everyone imaginary numbers? Calculus so they can then explain FFTs? In their reference documentation regarding the fftin~ object, they mention such things as hanning and blackman window envelopes? Are they supposed to teach us all about those things as well?
      At some point they have to make assumptions about what people know (and/or are willing to learn) from other resources.
      There are plenty of books and tutorials out there to teach this stuff. There are lots of books, some specifically targeting MaxMSP that go into all the details of this stuff. They're going to be able to do a much better job.
      I just don't see how it makes sense for C74 to have this role.
    • Jun 25 2012 | 5:58 pm
      I hope this discussion develops; I found myself in pid's camp, being an artist first and programmer (of sorts) second. I can't however, disagree with any of dhjdhjdhj's points. I think an important factor is that, like so many creative tools, Max attracts complete beginners (lazy or fastidious), hackers, hard-core coders, engineers, VJs, interaction designers and musicians alike. It does appear that the documentation/tutorials have been updated for 6, rather than completely overhauled. But did the docs EVER provide beginner tutorial examples for EVERY object and concept?
      As a late 6-adopter, the lazy learner in me would appreciate some gen~ -concepts guidance; but only really due to time-constraints; looking forward to going through to gen~ docs on my own though when I get the time.... Brendan
    • Jun 25 2012 | 7:15 pm
      One thing to note is that the general help files actually lost a lot of information, so it's kind of gone in the other direction. Granted some of that might be 'streamlining' type stuff, but a lot of the help files I would use don't have useful information anymore. (ie the counter one. I go to that one alot as I never remember the order that the arguments are in, and the new version of the help file is very ambiguous in that regard).
      I think if people wanted to be serious and hardcore they wouldn't be working in Max and would write in a lower level language. As pid mentioned, people who use max are artists first and programmers second (generally).
      If you just want the tools and no support, you can just use PD, for free. So what you pay for is the support/tutorials/documentation/etc...
      And either way, what we're talking about is the fact that there are no gen tutorials at all (I can't imagine a good argument for that), and that the help files are not as helpful as they used to be (much less more helpful).
    • Jun 25 2012 | 8:18 pm
      pid, Rodrigo, you couldn't put it better...
    • Jun 25 2012 | 9:33 pm
      I could not disagree more strongly. Any smart AND experienced software developer will pick the right tool for the job at hand and will not automatically use a "lower level" language. Many DSLs (domain specific languages) have been developed over the years PRECISELY so that people don't have to use lower level languages unnecessarily. Max also has the appropriate escape hatches (JavaScript, Max Externals and interfaces to all sorts of other languages) so you can leverage the strengths and if necessary add on stuff that Max can't do, either at all or not sufficiently efficient.
      I consider myself to be very serious and extremely hardcore (Comp Sci Ph.D. with 35 years experience) but the closest I have come to using "lower level" languages in this domain is a single Max external writtin in C++ to implement a REST interface to control the lights of an Eigenharp (no, don't ask me why they decided to use REST, it made no sense to me either!)
      For a large class of problems in MIDI, DSP, and video processing, the Max environment is a perfectly fine (indeed quite excellent) DSL and it would be downright stupid to use lower level languages instead (never mind the work needed to implement the runtime support and event scheduler as well) no matter how serious/hardcore one is. It is both a terrific prototyping environment as well as having the tools (encapsulation, abstraction and so forth) to build high-quality maintainable solutions.
      Max makes it very easy to implement solutions in the domain and it's appropriate for the totorials to use appropriate domain specific examples but I think the user is still responsible for having (or aquiring) the appropriate base knowledge.
      ----------------------- I think if people wanted to be serious and hardcore they wouldn't be working in Max and would write in a lower level language. As pid mentioned, people who use max are artists first and programmers second (generally).
    • Jun 25 2012 | 9:44 pm
      I don't know if this describes most Max users:
      "Any smart AND experienced software developer............I consider myself to be very serious and extremely hardcore (Comp Sci Ph.D. with 35 years experience)"
      (not in an insulting way, but we're artists before software developers)
      I understand where you are coming from, but then why not just use PD and save yourself the $/£? What is that you want from c74, and what are you paying them for?
    • Jun 25 2012 | 10:19 pm
      No insult taken (I'm an artist too, it's just that I don't get paid very much for that part of my life :-).
      The reason I mentioned my own background was to show that I am an existence proof that contradicts your claim ("I think if people wanted to be serious and hardcore they wouldn't be working in Max and would write in a lower level language.")
      I don't know the demographics of the Max userbase but from some of the stuff I've seen, there are some pretty sophisticated developers around. But even if everyone was (not in an insulting way) just an artist, that still doesn't argue for C74 to be responsible for your education.
      Adobe is not going to teach you graphic arts or photography just because you bought Photoshop. Audio editors and DAWs (Pro Tools, Digital Performer, Logic Pro, etc) don't come with books to teach you synthesis or mixing techniques, never mind teaching you how to use compressors, limiters, EQ and other such things). I'm looking at the almost 1,000 page printed manual that comes with Digital Performer and the term "Compressor" doesn't even show up in the index. There's a chapter that explains how to insert plugins but it's up to you to understand how they work. Final Cut Pro freely uses video jargon all over the place and they just assume you are familiar with the terms.
      These programs are designed to support your workflow and let you do your art better. They're not there to teach you your art.
      I have no idea why you think I should be using PD instead of Max. I find Max to be far superior in many ways, not least including reliability and quality of support.
    • Jun 25 2012 | 11:21 pm
      Do you think max shouldn't have any tutorials at all? Like in your initial argument, 'where do you draw the line?'. Should there be no help files? No debugging tools? No tech support or forum?
      I think we just disagree on what 'support' means. For me it includes tutorials/education (in addition to general stuff).
    • Jun 26 2012 | 12:36 am
      "Where do you draw the line" is not an argument, it is a question.
      Of course Max should have tutorials --- but the primary purpose of the tutorials should be teach how to use Max, not to teach the art. That would be my initial line. I've never really looked at anything outside of MIDI processing and some basic MSP to move audio data around.
      But if I wanted to do graphics programming, and I wanted to be able to apply transformations like translation, scaling and/or rotation, I could reasonable expect C74 to include an example of how to do that in Max. But I don't expect them to teach me about homogenious matrices. You either use the operators treating them as blackboxes (which is absolutely fine by the way for most purposes), or you get a book/video/tutorial on the topic if you need to know it more deeply.
      Anything extra is nice if it doesn't get in the way of improving the product functionality itself. Assuming there's a limited supply of dollars to spend (so you can have more functionality or you can have more tutorials but not much of both), then I would be arguing to prioritise functionality. Otherwise the cost goes up and everyone has to pay more for stuff that many won't need.
      Some companies certainly provide educational support but they do it separately (and often for a fee).
    • Jun 26 2012 | 12:39 am
      By the way, given that you mentioned debugging support, I'd like much more of that --- that's fundamental product functionality.
      Tech support is already there (and one of the reasons to use Max rather than PD) and the user help on the forums is wonderful.
    • Jun 26 2012 | 7:15 pm
      Leaving aside the more general discussion going on I think it's still clear that in order for Max to remain consistent within itself it really needs a set of Gen tutorials comparable to those of the Max, MSP, and Jitter domains. The need is even more stark when you consider that Gen is a separate product with its own fee (much like MSP and Jitter used to be).
      I would really like a bit more of a guiding hand when it comes to learning Gen, but I'm not going to get all up in arms about it. These guys are a small company but they work hard and I have faith that they'll remedy it as soon as they can.
    • Jun 26 2012 | 7:22 pm
      expanding the horizons of users is invaluable. and that does not mean explaining matrix operations. building showcases... gen~ for the love of god had nothing going for it (to me) before a did you know video popped up. so application examples can sell/i.e. become revenue streams for the company. and more and more artists will become interested. those already there will just not want to leave this place.
    • Jun 26 2012 | 9:18 pm
      We all totally agree that Gen needs more documentation. Unfortunately all I can tell you is, it's coming. There's a lot in the works for Gen, and you've only seen the beginning. I know that's not a satisfying response when you are looking for answers right now. For those of you who are already in it, let's get more conversations going on the forums, where we are happy to lend a hand, and make sure you have checked out the online resources in addition to the in-app docs. For example content, there are the Gen Patch-a-day examples mentioned above as well as many of the new Jitter Recipes which feature Jitter Gen stuff.
      FWIW, 'dot' takes 2 vector inputs RGBA1 and RGBA2 and does the following calculation R1*R2+G1*G2+B1*B2+A1*A2 and passes out a float value. It's really useful for doing rgb2luma type calculations.
    • Jun 27 2012 | 1:44 am
      More integrated tutorials would be good. I appreciate such great effort from a small team of people but once the major bugs get taken care of I hope to see more integrated use of the new objects in the tutorials. There have been some fundamental changes that really need to be explained/developed.
    • Jun 27 2012 | 2:37 am
      Thanks for the reply Andrew. I think I get what dot is for now. I can't wait to see what you guys have in store.
    • Jun 29 2012 | 7:04 am
      A bit more insight on the dot operator (dot product, AKA scalar product): it is super useful for finding out how much two sets of numbers are similar to each other. There is a geometric way of understanding this: think of the sets of numbers as vectors, and the dot product tells you how much they point in the same direction.
      dot (XYZ1, XYZ2) = X1*X2 + Y1*Y2 + Z1*Z2
      To get more fancy, the angle between two vectors A and B is:
      acos( dot(A, B) / length(A)*length(B) )
      A simple result: if the vectors point away from each other, i.e. the angle between them is bigger than 90 degrees (pi/2 radians), then the dot product is a negative number. If they are exactly orthogonal (perpendicular), the dot product is zero. E.g. dot ( (1, 0, 0), (0, 0, 1) ) == 1*0 + 0*0 + 0*1 == 0.
      This kind of stuff can be useful for particle simulations, vertex geometry transformations, etc etc.
    • Jun 29 2012 | 10:58 am
      Graham and Andrew's kinds of explanations are all that are really needed in max documentation for these kind of more abstract operators. To be sure the kind of explanations about fairly difficult dsp concepts in the msp tutorials are generally very well written, clear, concise and relevant to the usage of the object.
      That's all that's needed in my opinion, but it _is_ needed.