I’ve edited it a bit so I have two stereo feeds being packed into a 2 channel signal, seems to run out of the bpatcher without any problem; probe shows it as a 2 channel signal into the mc.livegain~ :slight_smile:

1 Like

Anyone have experience with putting together an MPE patch? I’m trying to get my QuNexus to do some vary basic polyphony stuff and the voices keep swapping messages. I’ve tested it with dummy messages and it seems like it should be working fine…
I thought I’d see if anyone has any tips or good strategies.

mpeparse & mc.noteallocator are the max 8 way of doing MPE now. didn’t think QuNexus/kboard sent mpe but I could be wrong there. mc.noteallocator is also used for midi

1 Like

I’m getting MPE data into mpeparse, I’ll futz with it and if I still have the same issue I’ll post again here – might also be a good time for me to get into mc. Thanks!

would definitely recommend mc over poly~, it is a whole other thing to learn tho

Last I checked, they sent each pad’s output on a different channel. Essentially, MPE but without global messages on channel 1. But neither has any global messages to send. so as long as you configure it to skip channel 1, that’s MPEnough.

(I haven’t downloaded any updates for mine, ever, so that may well have advanced since the launch of the product)

ok, can anyone show me a simple way to rotate grid led orientation by 90 degrees? my old gs64 seems to want to turn a patch by 90. i tried looking at apps allowing for this behavior, only one i could find was home and it is so complex that i couldn’t confidently nail down what was going on in orientation department. i also see the monome doc about osc messaging. but i am not exactly sure the formatting of the message necessary or where to put that message routing “/sys/rotation i degrees”. an added layer of complexity is this patch uses javascript for all grid messaging/control so i am wondering, within max4live, can grid control come from more usual max messages and js or does it all need to come from the js. i’ve no hope currently trying to write in js, but i am hoping to get this app with minor tweaks up and finally functional in the led department.

i did try to go in (very cavalier of me as i have no business mucking about in js atm) the open js file and add a line, pressed compile after i did that hoping for basically magic and the line of code i wrote just erased upon reload. i often find i have to reload m4l to update patch changes. then i tried to hook a message to serialosc patcher outlet sys/rotation 90. needless to say, no dice.

i know this stuff is beyond my learning level, just that i really want to see the led feedback work on this awesome anaphora64 patch!

i tried another way via an old tehn patch called rotate. it had no effect. i do wonder once js is involved if one cannot mix the two systems for grid control. i will try a restart but it seems messages have no effect, the js just keeps on rollin along.

I had a brief go with /sys/rotate shortly after filming this:

…because I thought orienting the app so things flowed from top to bottom rather than from left to right would be more intuitive, or at least read like Matrix Code.

Anyway, the optimized commands for drawing larger blocks of LEDs seemed noticeably slower with that in play, so I quickly switched it back.

(I meant to restructure and perform the rotation on my end, but never really got around to it.)

Really, the right answer is to use Jitter for your display code, but that’s more of a commitment.

1 Like

I should preface this by reiterating that there are better ways to draw LEDs to your grid, and some apps do use those. But probably anywhere that you’re specifically using a [matrixctrl] object, these simple formulas can be inserted.

https://pastebin.com/GTKdktbM

It looks complicated, because I wanted to show all the logic. I’d recommend right-clicking on any objects you’re not familiar with in there, and opening the help file.

When you’re comfortable with that, you can encapsulate the middle section to make a reusable object, like so:

(you probably have to click on that to see the menu item; the screen capture is cropped funny)

Hope that’s helpful!

6 Likes

@greaterthanzero thank you so much for taking the time to describe that info with such clarity! after having finally completed the grid study a few days ago i am able to see what you described without being completely flummoxed.

part of my confusion is the js aspect as that is where all grid control appears to happen. for instance, can there be matrxctrl object normal max stuff for grid control in addition to the js code?

i should have prefaced this earlier but i am having 2 led issues with anaphora64

  1. led orientation (not corresponding button presses but where led representation of those presses transmits)
  2. playhead for each of 4 channels does not appear nor scroll, so no visualization of buffer movement.

is it better to tackle via js?

http://compusition.com/writings/js-live-api-setup

1 Like

Brilliant example - thanks!

1 Like

One unusual thing about Max I’ve noticed (as a curiosity…) is that it’s possible to record at higher sample rates than the system is running.

Here is a sound recorded at 192k with quickrecord, but in audio settings Core Audio was running at 48k:

There is content up to 100khz, so something is there…

This seems impossible unless Max is always running at 192k and downsampling on output. Am I missing something simple?

1 Like

Had a question for the thread about best practices using mc vs poly~?

For making a polysynth, is this still your recommendation? I’m picking a project back up I guess since from before Max 8 was really on my radar. The bones of the project are based off another M4L synth (Poli), so I was going to mimic what they do there; namely wrap gen~, where the guts of each voice lives, with poly~. Would be curious to see if people thought using mc somehow would be a better solution.

After years of using poly~, and not getting into mc yet, my sense is that mc was specifically designed to abstract away all the common plumbing that you would be doing in many poly patches while adding a ton of flexibility and prototyping speed in re: not needing to build your entire processing networks within your poly~ abstraction. Makes it much easier to flexibly add nodes in your network etc.

I don’t know exactly what the project is, but if it is an excuse to learn mc, I would say go for it!

1 Like

honestly my recommendation is roll with whatever makes sense to you. It may very well save you time to just keep going the way you have been.

I’ve kinda picked up the broad generalization that every way to do things in max is ugly in it’s own way, so it’s better to just work quicker - for me that’s where a max workflow shines best

2 Likes

Is quickrecord a separate app?

From the look of it I’d say that the content you’re seeing above 48k is aliased (look at the mirrored pattern), so it could just be how quick record is interpolating (or not) its own recording.

You can, however, up/downsample in Max (inside a poly~), so it can process audio at rates other than whatever your sound card is set to.

In just about every possible way mc. > poly~. If for no other reason than you don’t have to create and manage subpatches or ‘plumbing’ as @voidstar puts it. I’ve not done too much with it, but I found the learning curve quite friendly and creating something like a synth is pretty smack-center in terms of the intended use case of the objects and documentation.

3 Likes

Thanks everyone! I’m diving in. Do non-MC inputs to, say mc.gen~ affect all channels by default? I’m guessing yes

can anyone explain whether it should be happily possible to use rotate grid led sort of functions within javascript and regular max implementation simultaneously?

Anyone dealing with LPC for Max/crow/norns?
I have a bunch of Max stuff but it’s only 32 bit and does not work in 7/8

not max related, but norns ships with josh parmenter’s supercollider extensions for LPC analysis and synthesis.
http://doc.sccode.org/Classes/LPCAnalyzer.html
http://doc.sccode.org/Classes/LPCSynth.html

crow is a very different thing, it’s not a fully general audio processor and runs on bare metal. its hard for me to imagine useful applications of LPC in that context. though i can certainly imagine lower-order predictive filters being useful for CV processing (e.g. kalman filters.)