I'd love to talk about Max
lol. I've had the 30 day trial of Version 5 for 2 weeks now, and when it runs out I'm buying it (I get 50% student discount!!)
Max/MSP looks a bit more scary, but really it's not. Once you get past the lack of a shiny interface (although Max 5 is a lot better looking than Max 4) you start to realise the possibilities. One of the things that was opened up to me last week was the 'list' processing capabilities Max has. When I say 'list' I'm talking about arrays. This is one of the things you're going to have to get used to if you use Max - the naming of the modules is a little bit too literal - triggers are called 'bangs', arrays are called 'lists', and dogs are called 'woofs' (OK I made that last one up).
Max uses a generic object box for all objects. You can add a blank object box to the schematic, then type in the name of the object you want to use (or choose it from a list). Any list processing object starts with 'zl' then you can follow it with a function of some kind. For example, 'zl filter' will filter out any number you set at its right inlet, then the array (list) of numbers is given in its left input (this is the common protocol for max objects - streams of numbers, audio, whatever go in the left input, and modulators, variables, etc go in the right inlets. a trigger in the left inlet will update all inputs and outputs). There are 32 functions for the zl (list) object, which gives a heck of a lot of (CPU efficient) options at your fingertips without actually having to program them from scratch, although if you ever needed to you could - all of the very low level modules are there too.
I've been building a hexagonal button keyboard (based on the harmonic table used by c-thru-music's 'axis' http://www.c-thru-music.com/cgi/?page=layout_octaves
). Max/MSP does present some problems here, but you would have the same problems with Synthmaker. That is mainly the mouse-over on the tiles. According to my lecturer this would more easily (and efficiently) by accomplished using jitter, but we're not learning that until next year, and I don't have time to learn it myself this year either. I realised that I could still solve this problem with Max though - I went about designing a module that would compare the mouse coordinates and then calculate the hypotenuse from the centre of each hexagon and see which was the smallest. I had an awful lot of components - hundreds of them! After the discovery of the 'zl' list processing objects I managed to totally redesign it, keeping all of the calculations in array form without having to split them at any point. There are lots of other modules like 'funnel' which will tag data with a number identifying it's input. I even found a module where you can type in an equation and max will apply that equation to the whole list of numbers. The equation I used was vexpr sqrt (pow ($i1\,2) + pow ($i2\,2))
. The 'vexpr' part just means 'carry out this expression on a list of numbers'. It took me a while to understand the syntax but Max is great - if you have a question about a module, you just right click and go to 'help' and it gives a full reference with different scenarios.
Anyway, I get the feeling I'm being boring now. Check out the demo and get addicted to it like you did with SM. If you have the money, the patience, and the time I guarantee you will be impressed!
P.S. One MAJOR downside is the lack of vst export facility in Max 5 (Max 4 has one although I haven't used it yet). I think they will soon address this after the release of Ableton Live + Max.