Jump to content
IGNORED

Max/MSP


Adieu

Recommended Posts

I'm digging it so far. I like to build my bpatcher user interfaces akin to a vertical rack-module so I can slide them in place like books and they used to take probably 20 seconds to load up. Now they take maybe 3-4 seconds. The new multichannel oscillators and filters are awesome as well. A single mc oscillator can have up to 1024 voices and you can change those parameters in various ways on the fly. I'm impressed with the performance, for sure.

Edited by Entorwellian
Link to comment
Share on other sites

Dammit I should have upgraded to 7 sooner, now I'll probably just have to buy 8 full price. Oh well, I probably need to upgrade my machine first anyway.

 

Node.js integration was a good move for the JS parts - there are so many modules available. Obviously they're mostly centered around web development, but there's plenty of things that would be really handy for Max too.

Link to comment
Share on other sites

The mc stuff looks incredibly useful and is probably worth the upgrade alone. Nice vid from your good buddy sam showing some simple applications that already give cool effects:

 

 

Also lol at the comments on the cycling 74 announcement video:

 

post-18632-0-44793900-1538061747_thumb.png

 

 

  • Like 1
  • Haha 1
Link to comment
Share on other sites

  • 4 weeks later...

MC makes it incredibly easy to make passable reverbs (which can morph into choruses or physical modelling, etc.)

 

Have you got any ideas/links for how to do this (specifically with MC)? been messing around with Max over the past few months but haven't tried making a reverb patch yet.

Link to comment
Share on other sites

 

MC makes it incredibly easy to make passable reverbs (which can morph into choruses or physical modelling, etc.)

 

Have you got any ideas/links for how to do this (specifically with MC)? been messing around with Max over the past few months but haven't tried making a reverb patch yet.

Sure!

 

- Make your standard echo with a tapout~ feeding back into its tapin~ but prepend all the signal objects with "mc."

- Give the mc.tapin~ a bunch of channels by adding a @chans attribute (I started with 32)

- Add a mc.mixdown~ at the end of that chain, followed by mc./~ 16 (half of chans)

- Plug an mc.line~ into the mc.tapout~ - this will control the delay time. Give it like 1000 ms of slew.

- Send the mc.line~ a list message of: 1) "deviate" 2) the deviation in ms 3) the "center" delay time in ms

 

To start, try 5 for the center and 2 for deviation.  Also make sure your feedback is cranked above 95%. The closer the deviation gets to 0 the more it becomes like a normal delay, so it's easy to "morph", and your slew can smooth out this transition. 

  • Like 1
Link to comment
Share on other sites

 

 

MC makes it incredibly easy to make passable reverbs (which can morph into choruses or physical modelling, etc.)

 

Have you got any ideas/links for how to do this (specifically with MC)? been messing around with Max over the past few months but haven't tried making a reverb patch yet.

Sure!

 

- Make your standard echo with a tapout~ feeding back into its tapin~ but prepend all the signal objects with "mc."

- Give the mc.tapin~ a bunch of channels by adding a @chans attribute (I started with 32)

- Add a mc.mixdown~ at the end of that chain, followed by mc./~ 16 (half of chans)

- Plug an mc.line~ into the mc.tapout~ - this will control the delay time. Give it like 1000 ms of slew.

- Send the mc.line~ a list message of: 1) "deviate" 2) the deviation in ms 3) the "center" delay time in ms

 

To start, try 5 for the center and 2 for deviation.  Also make sure your feedback is cranked above 95%. The closer the deviation gets to 0 the more it becomes like a normal delay, so it's easy to "morph", and your slew can smooth out this transition. 

 

 

Just gave this a go, and I'm not sure if I made it correctly but it still sounds wicked. thanks!

Link to comment
Share on other sites

Been using it for a month now. It's probably the most user-friendly and newbie-friendly version of Max that has ever existed. I skimmed through the tutorials and noticed that pretty much everything you need to learn Max is self-contained in the software, so long as you are paying attention to details and taking your time. Polyphony used to be a tricky thing to do and required a degree of complexity, but the MC objects make it so much easier. Just as sweepstakes mentioned, there are some novel uses for them that I'm still discovering.I had a big rant at sweepstakes about how I hated that you couldn't see data flow properly in Reaktor, and it was a huge weak point. Whereas now Max you can literally just hover a cursor over a patchcord and it'll show the data coming through it like a voltage reader. Genius. Debugging is a lot faster now too.

Edited by Entorwellian
Link to comment
Share on other sites

Been using it for a month now. It's probably the most user-friendly and newbie-friendly version of Max that has ever existed. I skimmed through the tutorials and noticed that pretty much everything you need to learn Max is self-contained in the software, so long as you are paying attention to details and taking your time. Polyphony used to be a tricky thing to do and required a degree of complexity, but the MC objects make it so much easier. Just as sweepstakes mentioned, there are some novel uses for them that I'm still discovering.I had a big rant at sweepstakes about how I hated that you couldn't see data flow properly in Reaktor, and it was a huge weak point. Whereas now Max you can literally just hover a cursor over a patchcord and it'll show the data coming through it like a voltage reader. Genius. Debugging is a lot faster now too.

100% agree... it's funny, I was into Max off and on for a couple years, and then got out of it when I foolishly decided I wanted to use "real" code to accomplish the same type of stuff. Getting back into it now is really like riding a bike, and I'm not sure how much of that is just the fundamentals that Max has always had, and how much is the very welcome updates. Yes, MC in particular is a real game changer. 

 

The documentation is brilliant but it does have some gaps in it, and I do still find it difficult to keep track of things as I'm learning. I'll find 2 or 3 really handy, related objects at a time and I'll forget half of them and have no way to go back and find them. I guess it's just like learning any other "language" but it bears repeating that Max is very, VERY deep. To keep better track of things, I've started a wiki for my own benefit and I'm kind of half-assedly adding my notes to it. Anyone who's interested, PM me and I'll throw you a link.

Link to comment
Share on other sites

 

Been using it for a month now. It's probably the most user-friendly and newbie-friendly version of Max that has ever existed. I skimmed through the tutorials and noticed that pretty much everything you need to learn Max is self-contained in the software, so long as you are paying attention to details and taking your time. Polyphony used to be a tricky thing to do and required a degree of complexity, but the MC objects make it so much easier. Just as sweepstakes mentioned, there are some novel uses for them that I'm still discovering.I had a big rant at sweepstakes about how I hated that you couldn't see data flow properly in Reaktor, and it was a huge weak point. Whereas now Max you can literally just hover a cursor over a patchcord and it'll show the data coming through it like a voltage reader. Genius. Debugging is a lot faster now too.

100% agree... it's funny, I was into Max off and on for a couple years, and then got out of it when I foolishly decided I wanted to use "real" code to accomplish the same type of stuff. Getting back into it now is really like riding a bike, and I'm not sure how much of that is just the fundamentals that Max has always had, and how much is the very welcome updates. Yes, MC in particular is a real game changer. 

 

The documentation is brilliant but it does have some gaps in it, and I do still find it difficult to keep track of things as I'm learning. I'll find 2 or 3 really handy, related objects at a time and I'll forget half of them and have no way to go back and find them. I guess it's just like learning any other "language" but it bears repeating that Max is very, VERY deep. To keep better track of things, I've started a wiki for my own benefit and I'm kind of half-assedly adding my notes to it. Anyone who's interested, PM me and I'll throw you a link.

 

 

That's awesome and I agree with you with the low-level language programming aspect of it: it made learning max way more of a cakewalk and gave a a much greater awareness of how to plan and design things. Also good idea on the wiki part. I switched from flashcards to the Cornell method of notetaking for learning it, ending up making it into a paper version of a Wiki manual. I'm finally going through the Javascript, Jitter and Gen~ components of it after ditching them for the longest time. Jitter gets complex :(

 

I wouldn't mind a link at all to that wiki

Edited by Entorwellian
Link to comment
Share on other sites

 

 

Been using it for a month now. It's probably the most user-friendly and newbie-friendly version of Max that has ever existed. I skimmed through the tutorials and noticed that pretty much everything you need to learn Max is self-contained in the software, so long as you are paying attention to details and taking your time. Polyphony used to be a tricky thing to do and required a degree of complexity, but the MC objects make it so much easier. Just as sweepstakes mentioned, there are some novel uses for them that I'm still discovering.I had a big rant at sweepstakes about how I hated that you couldn't see data flow properly in Reaktor, and it was a huge weak point. Whereas now Max you can literally just hover a cursor over a patchcord and it'll show the data coming through it like a voltage reader. Genius. Debugging is a lot faster now too.

100% agree... it's funny, I was into Max off and on for a couple years, and then got out of it when I foolishly decided I wanted to use "real" code to accomplish the same type of stuff. Getting back into it now is really like riding a bike, and I'm not sure how much of that is just the fundamentals that Max has always had, and how much is the very welcome updates. Yes, MC in particular is a real game changer. 

 

The documentation is brilliant but it does have some gaps in it, and I do still find it difficult to keep track of things as I'm learning. I'll find 2 or 3 really handy, related objects at a time and I'll forget half of them and have no way to go back and find them. I guess it's just like learning any other "language" but it bears repeating that Max is very, VERY deep. To keep better track of things, I've started a wiki for my own benefit and I'm kind of half-assedly adding my notes to it. Anyone who's interested, PM me and I'll throw you a link.

 

 

That's awesome and I agree with you with the low-level language programming aspect of it: it made learning max way more of a cakewalk and gave a a much greater awareness of how to plan and design things. Also good idea on the wiki part. I switched from flashcards to the Cornell method of notetaking for learning it, ending up making it into a paper version of a Wiki manual. I'm finally going through the Javascript, Jitter and Gen~ components of it after ditching them for the longest time. Jitter gets complex :(

 

I wouldn't mind a link at all to that wiki

PM'd!

 

I haven't even begun to mess with the Jitter stuff (other than random utilities like jit.cellblock), and I've only used Gen~ for little feedback tricks and delay/history/math-y stuff that seemed easier to implement there. I bet some mindblowing stuff can be done with MC and Gen~...

 

When I started playing with JS in Max I was already a hungry, avid JS student, so that turned into a rabbithole and made my Max experience very lopsided lol. 

I'll have to check out that Cornell method too. I'm probably too lazy to implement it but maybe I can cherry pick it aspects of it to integrate into my process.

Link to comment
Share on other sites

Thanks and yeah Cornell method is better for retaining lots of information I find. I have a video link about it on my webpage but the just of it is that you jot down notes in the middle part, write key concepts or words on the left margin, and then summarize those key words and concepts at the bottom into one paragraph. If you can't summarize everything in a single paragraph in your own words, there is something that you probably don't understand and have to go get more information on it. It's also recursive, so you can do another Cornell notetaking on your summaries and truncate it down even more. You end up having to go through everything 3 times and 2 of those you have to put things in your own words so it becomes not only a better tool for memorization but also to test your understanding. And instead of having to go through hundreds of flashcards, you just read the summaries of each note and is way more faster.

 

I REALLY wish I learned about it during university.

Link to comment
Share on other sites

Ahh that's interesting. That definitely has some similarities to how I took notes in high school and uni - I'd always try to rephrase what the instructor was saying into my own words. It was fine if the words were nonsensical or slang as long as they made sense to me after the fact. I still do this. I think it helps you drill down into the essence of things when you keep having to look at it from a slightly different angle, or at least express it differently.

 

The recursive part sounds great, as does reducing down into one final summary.

Link to comment
Share on other sites

  • 2 weeks later...

Anyone able to help me with a super boring max issue? Might be a little difficult to describe but I'll try my best.

 

So after way too long of putting it off, I'm trying to set up a half-decent storage system that's adaptable to whatever abstractions I've got in the patch. I've got a master pattrstorage in my main patch, and then another pattrstorage in a sequencer abstraction, named so that it's recognised as a unique object for each instance of the abstraction that's loaded in (i.e with #1_seq). The pattrstorage in the abstraction is linked up to a preset object, so I can quickly save and change states, with the master pattrstorage then saving the states of multiple different instances of the abstraction. Hope this makes sense so far.

 

So what I want is in the sequencer abstraction to have an internal sequencer that can cycle through a set of the saved presets. Issue is, this obviously can't be linked to the abstraction's pattrstorage because then each preset includes the state of the internal sequencer, resulting in a loop where the internal seq changes the main seq state which in turn changes the state of the internal seq. So is there a way to have the internal seq settings be ignored by the abstraction's pattrstorage, but recognised by the master pattrstorage?

 

I've been messing around with subscribe messages and a few other approaches but nothing seems to work. Would really appreciate any suggestions.

Link to comment
Share on other sites

simplest way is to open the clientwindow in pattrstorage and uncheck the x on any patchers you dont want to be modified. you can also use the active message with a path to an object. another thing you can do is use scoped recall messages. I've been doing that recently to have a kind of 'meta sequencer' thats sequencing my sequences. Instead of changing the entire patch at once, I use scoped recall messages to just change the preset for a particular subpatch or even just one object. throw in some interpolation and you can get crazy mutating patches. check out the scope tab on the pattrstorage help file. 

Link to comment
Share on other sites

simplest way is to open the clientwindow in pattrstorage and uncheck the x on any patchers you dont want to be modified. you can also use the active message with a path to an object. another thing you can do is use scoped recall messages. I've been doing that recently to have a kind of 'meta sequencer' thats sequencing my sequences. Instead of changing the entire patch at once, I use scoped recall messages to just change the preset for a particular subpatch or even just one object. throw in some interpolation and you can get crazy mutating patches. check out the scope tab on the pattrstorage help file. 

 

Cheers for the suggestion. Unchecking the box works for getting the abstraction's pattrstorage to ignore the objects, but how do I then get the master pattrstorage, that's one level up, to recognise them?

Link to comment
Share on other sites

Ah, not sure that’s possible. I tend to just use a single pattrstorage per patch. You could try playing with greedy modes in pattrstorage but that would expose everything to the top level one so you would be back to enabling specific patches, removing the need for the extra pattrstorages

Link to comment
Share on other sites

Ah, not sure that’s possible. I tend to just use a single pattrstorage per patch. You could try playing with greedy modes in pattrstorage but that would expose everything to the top level one so you would be back to enabling specific patches, removing the need for the extra pattrstorages

 

Yeah I've been messing around with all different combinations of greedy and subscribemode but can't get anything working. So would you say the only way to save the state of the internal sequencer in the master pattrstorage would be to have it as a separate module and connect it to the main sequencer? That's not a huge problem but I've been trying to minimise the amount of objects that need to be loaded in to do simple stuff, so would've liked to have it included in the main sequencer.

Link to comment
Share on other sites

Anyone able to help me with a super boring max issue? Might be a little difficult to describe but I'll try my best.

 

So after way too long of putting it off, I'm trying to set up a half-decent storage system that's adaptable to whatever abstractions I've got in the patch. I've got a master pattrstorage in my main patch, and then another pattrstorage in a sequencer abstraction, named so that it's recognised as a unique object for each instance of the abstraction that's loaded in (i.e with #1_seq). The pattrstorage in the abstraction is linked up to a preset object, so I can quickly save and change states, with the master pattrstorage then saving the states of multiple different instances of the abstraction. Hope this makes sense so far.

 

So what I want is in the sequencer abstraction to have an internal sequencer that can cycle through a set of the saved presets. Issue is, this obviously can't be linked to the abstraction's pattrstorage because then each preset includes the state of the internal sequencer, resulting in a loop where the internal seq changes the main seq state which in turn changes the state of the internal seq. So is there a way to have the internal seq settings be ignored by the abstraction's pattrstorage, but recognised by the master pattrstorage?

 

I've been messing around with subscribe messages and a few other approaches but nothing seems to work. Would really appreciate any suggestions.

I tried working on this but I could not come up with a solution either. I tried experimenting using the pattrhub object and with the subscribe mode arguments for pattrstorange but I can't find anything that will work with that level of abstraction you want. Though I have never worked with multiple pattrstorages either. 

Link to comment
Share on other sites

 

Anyone able to help me with a super boring max issue? Might be a little difficult to describe but I'll try my best.

 

So after way too long of putting it off, I'm trying to set up a half-decent storage system that's adaptable to whatever abstractions I've got in the patch. I've got a master pattrstorage in my main patch, and then another pattrstorage in a sequencer abstraction, named so that it's recognised as a unique object for each instance of the abstraction that's loaded in (i.e with #1_seq). The pattrstorage in the abstraction is linked up to a preset object, so I can quickly save and change states, with the master pattrstorage then saving the states of multiple different instances of the abstraction. Hope this makes sense so far.

 

So what I want is in the sequencer abstraction to have an internal sequencer that can cycle through a set of the saved presets. Issue is, this obviously can't be linked to the abstraction's pattrstorage because then each preset includes the state of the internal sequencer, resulting in a loop where the internal seq changes the main seq state which in turn changes the state of the internal seq. So is there a way to have the internal seq settings be ignored by the abstraction's pattrstorage, but recognised by the master pattrstorage?

 

I've been messing around with subscribe messages and a few other approaches but nothing seems to work. Would really appreciate any suggestions.

I tried working on this but I could not come up with a solution either. I tried experimenting using the pattrhub object and with the subscribe mode arguments for pattrstorange but I can't find anything that will work with that level of abstraction you want. Though I have never worked with multiple pattrstorages either. 

 

 

Ah well cheers so much for having a look anyway. I ended up going with a workaround where I have both the main sequencer and the internal sequencer as presentation mode abstractions in a new patch and then load that, so they're both contained together but have separate pattrstorage routes. Can't believe I didn't think of doing that earlier to be honest, because I've been puzzling over this one for a while now.

 

Thanks again to both of you for having a look!

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.