Thoughts about workflow, feature requests

Again I’d really like to thank you for this software, it’s been working really well and has simplified and expanded my work now for close to two months. That being said, I’d like to mention a few desires for future releases:

I work with pixel strips of various lengths and dimensions, and so I spend a lot of time ‘creating fixtures’ of the “Generic RGB” type/profile, ‘amounts’ 25, or 37, etc. I give it the proper tag, which is the most important. Then I repeat this process ad nauseum, spanning multiple universes.

The result is that everything works, which is super awesome, and objects like beam.catch~ and beam.matrix~ really open up great options and possibilities.

That being said, here’s stuff I’d absolutely love in the future:

  1. a way to select multiple fixtures in the editor at once and delete them, or to re-name their tag all at once.
  2. when I’m at the end of a universe, rather than cutting it off at 512, have a way for it to wrap into the next universe (from 510 to ch 1 of the next universe).
  3. a way to be able to renumber an entire fixture, rather than going from one line to the next to the next.
  4. maybe this last thought is already possible, but could i create a custom profile, one that’s exactly 30 pixels long, or 25 or 37, etc.? At least that way I could immediately select the one I need that corresponds to the physical pixel strip i’m using in one setup vs another.

As always, not urgent, but very curious to get your thoughts. I’m not sure how ridiculously niche this is, TBH.

2 Likes

Hi David,

Thank you for sharing your experience and thoughts!

  1. a way to select multiple fixtures in the editor at once and delete them, or to re-name their tag all at once.
  2. when I’m at the end of a universe, rather than cutting it off at 512, have a way for it to wrap into the next universe (from 510 to ch 1 of the next universe).

We agree, these are already on our wishlist.

  1. a way to be able to renumber an entire fixture, rather than going from one line to the next to the next.
  2. maybe this last thought is already possible, but could i create a custom profile, one that’s exactly 30 pixels long, or 25 or 37, etc.? At least that way I could immediately select the one I need that corresponds to the physical pixel strip i’m using in one setup vs another.

This is currently already more or less possible if you create an aggregate fixture profile that combines e.g. 37x Generic RGB fixture profile:

{
  "schemaVersion": 2,
  "attributes": {},
  "modulation": {},
  "transforms": {},
  "aggregate": [
    {"address": 1, "name": "Pixel 1", "profile": "Generic RGB"},
    {"address": 4, "name": "Pixel 2", "profile": "Generic RGB"},
    {"address": 7, "name": "Pixel 3", "profile": "Generic RGB"},
    {"address": 10, "name": "Pixel 4", "profile": "Generic RGB"},
    {"address": 13, "name": "Pixel 5", "profile": "Generic RGB"},
    {"address": 16, "name": "Pixel 6", "profile": "Generic RGB"},
    {"address": 19, "name": "Pixel 7", "profile": "Generic RGB"},
    {"address": 22, "name": "Pixel 8", "profile": "Generic RGB"},
    {"address": 25, "name": "Pixel 9", "profile": "Generic RGB"},
    {"address": 28, "name": "Pixel 10", "profile": "Generic RGB"},
    {"address": 31, "name": "Pixel 11", "profile": "Generic RGB"},
    {"address": 34, "name": "Pixel 12", "profile": "Generic RGB"},
    {"address": 37, "name": "Pixel 13", "profile": "Generic RGB"},
    {"address": 40, "name": "Pixel 14", "profile": "Generic RGB"},
    {"address": 43, "name": "Pixel 15", "profile": "Generic RGB"},
    {"address": 46, "name": "Pixel 16", "profile": "Generic RGB"},
    {"address": 49, "name": "Pixel 17", "profile": "Generic RGB"},
    {"address": 52, "name": "Pixel 18", "profile": "Generic RGB"},
    {"address": 55, "name": "Pixel 19", "profile": "Generic RGB"},
    {"address": 58, "name": "Pixel 20", "profile": "Generic RGB"},
    {"address": 61, "name": "Pixel 21", "profile": "Generic RGB"},
    {"address": 64, "name": "Pixel 22", "profile": "Generic RGB"},
    {"address": 67, "name": "Pixel 23", "profile": "Generic RGB"},
    {"address": 70, "name": "Pixel 24", "profile": "Generic RGB"},
    {"address": 73, "name": "Pixel 25", "profile": "Generic RGB"},
    {"address": 76, "name": "Pixel 26", "profile": "Generic RGB"},
    {"address": 79, "name": "Pixel 27", "profile": "Generic RGB"},
    {"address": 82, "name": "Pixel 28", "profile": "Generic RGB"},
    {"address": 85, "name": "Pixel 29", "profile": "Generic RGB"},
    {"address": 88, "name": "Pixel 30", "profile": "Generic RGB"},
    {"address": 91, "name": "Pixel 31", "profile": "Generic RGB"},
    {"address": 94, "name": "Pixel 32", "profile": "Generic RGB"},
    {"address": 97, "name": "Pixel 33", "profile": "Generic RGB"},
    {"address": 100, "name": "Pixel 34", "profile": "Generic RGB"},
    {"address": 103, "name": "Pixel 35", "profile": "Generic RGB"},
    {"address": 106, "name": "Pixel 36", "profile": "Generic RGB"},
    {"address": 109, "name": "Pixel 37", "profile": "Generic RGB"}
  ]
}

Please let us know if you have more feedback.

Thank you, belatedly, for your reply. After a big overhaul, I have my custom fixtures working, and it’s helped a lot. Two small questions:

  1. I made a big fixture json that spans around ten universes, conforming to the dmxking ledmx4pro devices. I’m not using them all at once, but I have noticed the patch lagging at least when i’m loading the json. After that point, is there a difference in speed overall if I’ve got this ‘master json’ vs something focused just for a given piece (e.g. only the port i’m using and not all that could potentially talk)? How might I benchmark this?

  2. My custom fixture profiles live with the rest of them in the proper folder. I should back these files up, yeah? They would get overwritten/deleted if I updated the package?

I made a big fixture json that spans around ten universes, conforming to the dmxking ledmx4pro devices. I’m not using them all at once, but I have noticed the patch lagging at least when i’m loading the json. After that point, is there a difference in speed overall if I’ve got this ‘master json’ vs something focused just for a given piece (e.g. only the port i’m using and not all that could potentially talk)? How might I benchmark this?

At what point exactly do you experience lagging? Is it just when using the Patch Editor GUI or also in your Max patch in general? What happens if you don’t have the Patch Editor windows open & no beam.patcheditor instances in your patch? The Patch Editor GUI abstraction is made up of many bpatchers component patches and is not optimized for large numbers of fixtures, so it is not surprising you are experiencing lagging with 10 universes of fixtures there. It will eventually be replaced with another solution.
You can avoid using the Patch Editor altogether by saving the fixture patch as JSON (if creating large fixture patches using Beam for Max’s Patch Editor is too slow, you can at the moment also use Beam for Live’s Patch Editor), then read that into a dict and setting it directly to beam.core using the set_patch message, like so:

image

On the other hand, when it comes to Beam for Max itself, the processing done by the externals to output DMX, 10 universes should not really be an issue for any newer machine (e.g. Apple M1+).
Every additional universe does mean additional CPU load - how notable that is depends on your hardware - you can benchmark it by looking at the CPU load % of Max in the Activity Monitor / Task Manager.

You are also welcome to share your patch.

My custom fixture profiles live with the rest of them in the proper folder. I should back these files up, yeah? They would get overwritten/deleted if I updated the package?

Fixture profiles can be placed anywhere within the Max Search Path. I would indeed recommend storing your own profiles in a folder outside of the package.