I had no idea about this :exploding_head:

It’s very new to me! I saw the js painter file attribute and started digging. There’s not a lot of information out there. I got started from this: https://docs.cycling74.com/max8/vignettes/jspainter

Oh please do, I’d love to see what you do with the idea!

1 Like

My sequencer UI is pretty much complete now! I have a few things left to do to make it save properly and other polishing details and I’ll be able to release it :slight_smile: I learned a lot while doing it.

13 Likes

Just want to say that this is one of most visually pleasing interfaces I’ve ever seen. Beautiful. The way everything is laid out is very clear and looks like it just invites you to dive right in and make music with the system.

Oh thank you so much! I’m very flattered. I’d love to do more interface design — I enjoyed it a little more than the coding end of things, because, well, coding in Max is still a wild ride.

This is very encouraging; I should get back to Westie and finish it up so others can try it!

2 Likes

Second that applause at the ui design here. Really want to map a 16n to those sliders and pulse counts!

Previous applause was not targeted at my work but I’ll take it :smiley: You will be able to try it soon :slight_smile:

2 Likes

Super inspired by Ryan’s interfaces and ideas here:

Been thinking about the CLOCKALGO all day and still can’t really imagine what the difference between divide, subdivide, and modulo on a clock pulse might be… any guesses?

(clearly I’m too much of an analog guy)

5 Likes

I hope it’s OK to ask some really noobish questions?
I’m not a developer but I know a tiny little bit about dev best practices (dangerous! :joy:).

  1. How do I change the value of a message?
    I took a M4l amxd which was for 7 tracks and successfully managed to expand it to 12 tracks by copying and changing here and there. But I researched for at least 6hrs how to change the track number, which was hard coded in a message. In the end, I deleted those (copied) messages and replaced the them with new ones with the correct (default) numbers.
  2. Having kind of successfully managed to do the upper, I’m now thinking of doing a M4l device for my prophet 12.
    I wanna use nrpn instead of CCs and found a device doing the same for the ob6. However I believe since that device came out, max intruduced the nrpnin and nrpnout object. So no need to unpack and pack 4 CCs anymore, right?
    Also, instead of manually changing 150 parameters, it would be much more efficient to auto populate based on a list (i assume something array-ish?) or do a nrpn learn (by turning knobs on the synth) and just name the time and parameter.
    Has anybody any tips on how to achieve this?
  3. When I have managed to do that, I might look into sysex parsing so that I can store a patch within an ableton project. But let’s see :joy:

Can’t answer your other questions but I can answer this one. If you want a variable number in a message then use $1. If there are more than one variable then $1 $2 $3 etc… but if you don’t know this then it’s time for some basic tutorials and go read over the message help file a few times.

If you want to make a symbol in a message variable then you’ll have to either look at the [sprintf] object or start thinking about building up lists instead of using the message object.

Thank you for raising this here, these questions have been percolating in my mind, too.

Even if these aren’t what Treanor is doing, I love these kinds of prompts for the sake of trying something new. Here is a possible take on Divide vs. Subdivide:

Pulse:              1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 
Original:           1 - - - - - - - 1 - - - - - - -
Traditional Divide: 1 - - - 1 - - - 1 - - - 1 - - -
Subdivide:          1 1 1 - 1 - - - 1 1 1 - 1 - - -

Subdivide in this interpretation creates two new divisions by simply cutting in half and then repeats the process only to (in this example) the left side of the new division.

Still trying to think of what modulo is, but I keep ending up at Euclidean…

1 Like

That’s pretty much how I’d imagined subdivide, and you could have a parameter to keep on splitting the new division into smaller subdivisions.

The modulo is really confusing me cause I would use a modulo operator to do euclidean, yeah, but also just a traditional division of a count. hmm

one thing i can think of is maybe division is the simple division of the underlying pulse whereas modulo is the modulo’d count of incoming triggers… although if this were the case idk why he’d be using it as the first algorithm in the chain…

Is this what you are thinking?

Slider Value: 3
Counter:      0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
Original:     1 - - - - - - - 1 - - - - - - -
Modulo:       1 - - 1 - - 1 - 1 - - 1 - - 1 - 

The more I have reread the article, the more it seems a bit cagey on the level of detail that would really help understanding how these patches work. To be totally clear: I understand why they might do that and have no problem with the fact that they do not fully give away the secrets to replicating the music. Still glad to have the puzzle. So this is not a criticism or complaint, but I think I can only make sense of possible Modulo by filling in details that are not actually in the article.

So in this case, my hypothesis is simply that while the article refers to this as “clock,” I don’t think it is necessarily a stream Max (bang) pulses. Instead it is cycling stream of integers from a [counter]. That is, the input is not a clock pulse, but he output is a processed clock pulse?

Thanks for that! I know that about more than one variable (kind of), but my question wasn’t about doing something new. I want to change an existing message in an existing patch (without rewriting the whole thing). I attached the original device ClipLoopMonitor.amxd (176.8 KB) and my “changed” one ClipLoopMonitorMS12 v2.amxd (270.4 KB).
What I did was, copy all elements for track one 5 times, connect them, but I couldn’t change the “1” message which signals the default track to the number I wanted (8-12). In the end, after hours of researching, as I wrote above, I deleted the old “track 1” messages and replaced them with the "track 8-12) messages. As I said, noob and probably some very basic misunderstanding on my side (and I hate not knowing stuff/cannot finding it out myself and it took me a couple of days to ask here).
I did read the “message” help file more than a few times, but that unfortunately got me nowhere :wink:
Also, if there’s a better place to ask those questions, I’ll happily move over :slight_smile:

1 Like

Yep this is probably correct. That’s the only way the Tala makes sense, too, since that’s about emphasizing certain beats in a count and straight bangs would make it indistinguishable from a pulse. The whole thing is probably outputting velocity/note numbers (0 being a rest). He says he uses it for arpeggiators too, so makes total sense.

I think I prefer the analog way of having triggers and values separated into separate processes, but maybe that’s just what I’m used to. I don’t have much of a MIDI brain.

Anyway it’s fun to think this stuff through without seeing the guts of the patches.

1 Like

Sorry I totally misunderstood you… you just want to change the 1 in the message box to an 8?

Screen Shot 2020-11-13 at 11.16.31 AM ?

yes, because otherwise the track selector defaults back to 1 all the, leaving me with five times track one as pattern indicator. I only managed to do that by replacing the old messages with newly ones, but there has to be a better way.
BTW the tool is very cool for jamming and seeing where you are in (lengthy) patterns. Original one also found here: https://maxforlive.com/library/device/1680/clip-loop-monitor
edit: just found out that there are other modified versions as well! Will have a look at those (one mentions “code cleanup”, will probably learn from that (https://maxforlive.com/library/index.php?by=any&q=clip+loop+monitor) .
my question re changing existing messages still stands though

I am new to M4L and have a question. What is the best way to approach a “hold to clear” button to delete (or disable) notes while a seq~ is playing so you can partially delete a loop or add and delete at the same time? In addition to that, are there any existing devices that allow that same functionality for midi clips within Live?

1 Like