catanya-like pattern based polyphonic arpeggiator

Questions and discussion about building and using Max for Live devices
Thomasch
Posts: 47
Joined: Thu Oct 06, 2011 1:32 am

catanya-like pattern based polyphonic arpeggiator

Post by Thomasch » Mon Apr 29, 2013 1:43 am

does anyone knows the pattern based arpreggiator catanya?

http://www.7aliens.com/product-catanya.php

unfortunatily its a windows only vst, elsewhere i would buy it instantly, because i'm on mac os-x.
is there any max device that would do the job the same way catanya does?
my max skills are not good, maybe its enough hacking some existing devices together, but building such a device from scratch, i'm unable to.

the basic structure is not that complicated.
you need a chord splitter something like this would do the job
http://www.maxforlive.com/library/devic ... d-splitter
http://www.maxforlive.com/library/devic ... d-splitter

but the step seq part drives me crazy, because there is absolutely no ready to use (and hack) device that fits my needs.
all i'm searching for is a step sequencer that works the same simple way like in catanya.
simple steps with a latch in between to bound the single notesteps.

have a look at this video and you know what i mean.
http://www.youtube.com/watch?v=B_btZGUC5is

there are 9 rows
the middle 3 rows represent a 3 note chord ordered from lowest played note to highest.
the upper 3 rows works the same but shiftet 1 octave.
the lower 3 rows is one octave below.
any idea how to build in max the stepseq part with latch mode with a user interface similar to this one?

best regards
thomasch

UCAudio
Posts: 116
Joined: Tue Feb 28, 2012 6:11 pm

Re: catanya-like pattern based polyphonic arpeggiator

Post by UCAudio » Mon Apr 29, 2013 8:56 pm

I'm a massive catanya fan as well but haven't been able to use it since moving to OSX. They were supposed to be developing version 2 which included an OSX version and the ability to save your own presets but they no longer respond to emails... looks like it may have been abandoned. Would LOVE a max device that did something similar.

gjgj
Posts: 6
Joined: Mon Feb 12, 2007 5:22 pm

Re: catanya-like pattern based polyphonic arpeggiator

Post by gjgj » Tue Apr 30, 2013 8:52 am

There are other alternatives now to Catanya
You can check Cthulu arp and KirnuCream arp - both are similar and far more superior to Catanya although Catanya has one great feature - it can generate very long notes together with short notes. Also you can check M4L Arpege 2.0.1 device. However sill it would be nice if someone could code Catanya like logic device in Max For Live.

Machinate
Posts: 11646
Joined: Thu Jun 24, 2004 2:15 pm
Location: Denmark
Contact:

Re: catanya-like pattern based polyphonic arpeggiator

Post by Machinate » Tue Apr 30, 2013 9:56 am

you don't need a "chord splitter" - in midi, chords don't really... exist, anyway - it's serial data, right? :)

The core of an arpeggiator is relatively simple in max, it was practically built for that type of thing. The biggest programming challenge in this would be the UI, I guess - handling the duration aspect of it is a fun challenge, it can't be done gracefully with live.step, as far as I can tell.

and yes, it totally needs to handle quads, not just triads.
mbp 2.66, osx 10.6.8, 8GB ram.

Thomasch
Posts: 47
Joined: Thu Oct 06, 2011 1:32 am

Re: catanya-like pattern based polyphonic arpeggiator

Post by Thomasch » Tue May 07, 2013 5:08 am

Machinate wrote: you don't need a "chord splitter" - in midi, chords don't really... exist, anyway - it's serial data, right? :)
in my understanding you have to split.
its because, every single held note in a chord drives its own stepsequencer.

Machinate wrote: The core of an arpeggiator is relatively simple in max, it was practically built for that type of thing. The biggest programming challenge in this would be the UI, I guess - handling the duration aspect of it is a fun challenge, it can't be done gracefully with live.step, as far as I can tell.
the tricky part is to build a sequencer, with an UI that works the same way like catanya.
the way live.grid handles note length settings does not work the way i like to.
Machinate wrote: and yes, it totally needs to handle quads, not just triads.
if you solve the note latching problem for the stepsequencer units, this is the simplest part to do.
copy & past another seq-line -> wiring to the 4th otput of the splitter which corresponds to note #4 of your held chord -> ready.

is there anyone out there with proper max skills who is willing to help us?


ikeaboy
Posts: 1679
Joined: Sat Jun 05, 2004 9:38 pm
Location: Ireland

Re: catanya-like pattern based polyphonic arpeggiator

Post by ikeaboy » Sat May 11, 2013 8:57 am

Cool and thanks! Seeing as it sorts the notes by playing order rather than pitch, how does it sort notes playing exactly the same time coming off a midi clip grid?

greaterthanzero
Posts: 103
Joined: Tue Apr 09, 2013 5:48 pm

Re: catanya-like pattern based polyphonic arpeggiator

Post by greaterthanzero » Sat May 11, 2013 10:48 am

ikeaboy wrote:
Cool and thanks! Seeing as it sorts the notes by playing order rather than pitch, how does it sort notes playing exactly the same time coming off a midi clip grid?
Arbitrarily, of course.

As Thomasch points out, MIDI's a serial protocol, so "exactly the same time" is an illusion. Ableton passes the notes into the device in a certain order, whether it was defined in the MIDI clip or not. (I get the impression they're using lowest-to-highest, but I haven't tested it all that extensively.)

The bigger problem is that, when you're using a live MIDI input (keyboard, push, etc), any kind of legato overlap between one note and the next is going to switch you into another voice allocation number, so if you're not very clean about picking up your finger before laying the next one down, it may not land on the row you're expecting. I happen to like the indeterminancy of it all, but I can understand why that might be considered more "bug" than "feature".

I might add more row sorting options later, but a lot of that depends on me figuring out how to accomplish this.

I'm leveraging the playing order max's [borax] object provides, because it handles a lot of the housekeeping tasks which pitch order would require. Specifically, I think I'd have to write my own note-stealing algorithm. Which my "when an active step changes notes, switch to the new note" mechanism would totally interfere with.

Example:
Play E3 and G3, wait a bit, then add C3 below them.

As things stand now, E3 and G3 will remain where they are, on voices 1 and 2. C3 will arrive on voice 3. They're in the wrong order, but the rhythms are where they belong.

With pitch order, E3 is on line 1 as the bottom note, and G3 is on line 2 as the second lowest. If line 1 was playing when you add C3, E3 ends and is C3 is attacked. Then if line 2 was playing, G3 ends and E3 is attacked. And if line 3 was on an active step (I can't remember, but I don't think it actually matters if there was a note playing), G3 will sound. So, where you're expecting two notes to continue fading while a third note is attacked, you actually get three notes attacked.

Perhaps you could live with that. But remember, this would also happen in the other direction. So if you lift C3 off again, G3 and E3 are going to sound for a third time. And that's much more disconcerting, to make the chord louder when you meant to soften it. (lift all three fingers, two of them will re-attack and one of those will re-attack a second time)


Having this kind of low-level control over MIDI is amazing, but it's also sort of a nightmare sometimes. Hence the cheating.


I've also got a third mode in mind, which will take even more getting used to than what's there now, and may in fact prove utterly useless. But I'd like it to not really matter how many notes are pressed. Top row is the highest note, bottom row is the lowest, and the other two are whichever is closest to the 25% or 50% mark, respectively.

What this would add...

Right now, the first note you play is on the bottom row, and the others ignore it.

With pitch order, the first note you play is also on the bottom row, at least temporarily. The other rows ignore it for now.

With percentage-based pitch order, if only one note is playing, all four rows could conceivably trigger it.

Now, I don't want to play multiples of the exact same note together (and it wouldn't be possible if I did), but the "two notes next to each other become a longer note rather than two short ones" mechanism could totally solve that. Except, maybe you're looking at a complex arpeggio on the grid but only hearing one long note. That's counterintuitive, to say the least.

It's one of those things which either makes things play better or worse, and we can't know which until it's built.

I hate those so much.


Anyway... sort order isn't my highest priority on the next version.

greaterthanzero
Posts: 103
Joined: Tue Apr 09, 2013 5:48 pm

Re: catanya-like pattern based polyphonic arpeggiator

Post by greaterthanzero » Sat May 11, 2013 11:24 am

What is already done (but not posted):

I've added the option of letting aftertouch override velocity. This works great on Push.

Per-key pressure is a bit harder.

First, the data has to arrive in a manner that Live doesn't mangle. (it's got to be all on one channel, using CCs instead of poly aftertouch)

Second, I have to filter out all the notes that aren't part of the grid, which means a different thing on every controller, or with every configuration of the same controller.


I've got a preliminary version running on Livid Base, but my setup's off-standard and I need to reconfigure some things before you could use it. I think there's enough of a standard w/ the Live Remote Scripts, I could optimize around that. But I haven't yet.

I'll probably add support for per-key pressure on QuNexus as well once mine shows up (assuming the incoming data is usable within Live). That's a simple enough controller, I'm hoping no one will even open the editor. The default configuration might be standard enough to build around.

For other devices, we probably have to abandon Max For Live, and break out to the Max Runtime. (QuNeo's a good example -- there's a "raw data" mode which standardizes everything, but requires a SysEx command to activate. Live discards SysEx, so we can't trigger it there.)

Challenge there being, I'm not sure how to sync the runtime's transport with Live.

But more than that, I don't see a lot of users preferring this app over whatever the Live integration their remote scripts already gave them, so I sort of feel like those would be a waste of time to build support for.


But, global aftertouch works great. I could upload that much tomorrow. (I suspect "abandon per-key aftertouch" is the right answer for this. But I won't make that call until QuNexus arrives)

bootykowski
Posts: 53
Joined: Thu Mar 25, 2010 3:12 pm

Re: catanya-like pattern based polyphonic arpeggiator

Post by bootykowski » Sun May 12, 2013 10:01 pm

yesterday I checked at 7aliens for a version 2 with osx-support ... haha. this is an amazing device. thanks for sharing. as i already wrote in the maxforlive.com-forum, i missed the possibillity to save my patterns. i already figured out, how to store patterns with the preset-object. but i don´t know, how to save presets in an .adv-file. If I figure this out (the cycling74-forum is offline at the moment and i am new to m4l), then I´m really happy with it so far :mrgreen: . Later i will try out to expand it to more than 4 notes per row and 64 steps, so @greaterthanzero, if you don´t have time, to work on next versions, i will support this in any part, if you like....

Awesome! Thanks!

greaterthanzero
Posts: 103
Joined: Tue Apr 09, 2013 5:48 pm

Re: catanya-like pattern based polyphonic arpeggiator

Post by greaterthanzero » Sun May 12, 2013 10:27 pm

Additional steps = remarkably easy. Widen the grids, and edit the int boxes to support higher numbers. How many do you want?

Additional rows per grid... that's a little more complex, but ultimately doable. But Catanya only has 3, and the request in this thread only asked for 4. How many are you after?

Honestly, I think the "three grids with octave transposition" approach becomes a little silly when you start giving the grids different lengths -- it's no longer important or terribly useful to see them visually line up. It'd be more versatile to have one grid per device, w/ multiple devices. Want more octaves? Add more instances. What this to span several instruments? Put them on different tracks. I think that makes more sense, in the long run.

But that gets further and further from what was requested.

I'm not opposed to tweaking what's there, but I do want to honor the original design. There's a difference between "support and maintenance" vs "branching the code into a new app".

...and I'm not opposed to that either. But we should be clear about your goals are.

greaterthanzero
Posts: 103
Joined: Tue Apr 09, 2013 5:48 pm

Re: catanya-like pattern based polyphonic arpeggiator

Post by greaterthanzero » Sun May 12, 2013 10:51 pm

Actually, part of that was only half true.

Adding more steps than 32 is remarkably easy in the version you have access to. Not so much in the version I'm experimenting with offline. ;)

bootykowski
Posts: 53
Joined: Thu Mar 25, 2010 3:12 pm

Re: catanya-like pattern based polyphonic arpeggiator

Post by bootykowski » Sun May 12, 2013 11:01 pm

greaterthanzero wrote:Additional steps = remarkably easy. Widen the grids, and edit the int boxes to support higher numbers. How many do you want?

Additional rows per grid... that's a little more complex, but ultimately doable. But Catanya only has 3, and the request in this thread only asked for 4. How many are you after?

Honestly, I think the "three grids with octave transposition" approach becomes a little silly when you start giving the grids different lengths -- it's no longer important or terribly useful to see them visually line up. It'd be more versatile to have one grid per device, w/ multiple devices. Want more octaves? Add more instances. What this to span several instruments? Put them on different tracks. I think that makes more sense, in the long run.

But that gets further and further from what was requested.

I'm not opposed to tweaking what's there, but I do want to honor the original design. There's a difference between "support and maintenance" vs "branching the code into a new app".

...and I'm not opposed to that either. But we should be clear about your goals are.
Thanks for the quick reply. To implement additional steps I already figured out. My main goal is to store AND SAVE presets :!: The other things were just ideas, which i had,while looking inside the device, because the structure is really clear thanks to you - and I thought, implementing a 5th row would make it complete, because of existing 5 note chords, such as 9ths 11ths and 13ths ... that. To have already 4 rows for 5th & 7th chords is really amazing!!! Catanya was really interesting, but at the end useless for me, because I´m using 4 note chords a lot

I don´t remember to catanya anymore, but i thought there was the ability to set velocity to the steps. is this possible and hard to program in your device? That´s what it would let it be the same device and no new app.

Anyway, thank you so much!

greaterthanzero
Posts: 103
Joined: Tue Apr 09, 2013 5:48 pm

Re: catanya-like pattern based polyphonic arpeggiator

Post by greaterthanzero » Mon May 13, 2013 1:08 am

bootykowski wrote:Thanks for the quick reply. To implement additional steps I already figured out. My main goal is to store AND SAVE presets
Definitely.

Here's the challenge:

When you change the number of beats in a pattern, the matrixctrl object doesn't know what to do with what you've given it, and I think they're squashing and stretching the pattern rather than adding and removing steps from the end. It mangles your previous input unpredictably. So to fight that, I'm mangling things pre-emptively. The moment you touch one of those length controls, it clears the matrixctrl object. Hacky, but predictable.

Why is that a problem?

Because saving and restoring a pattern means saving and restoring the loop lengths as well. So, restoring a pattern will immediately clear the pattern.

So, that wasn't a good fix on my part. It was very short-sighted, and I have to correct it.

But once that's done, it shouldn't be a huge deal, I don't think.

The other things were just ideas, which i had,while looking inside the device, because the structure is really clear thanks to you - and I thought, implementing a 5th row would make it complete, because of existing 5 note chords, such as 9ths 11ths and 13ths ... that. To have already 4 rows for 5th & 7th chords is really amazing!!! Catanya was really interesting, but at the end useless for me, because I´m using 4 note chords a lot
Ironically enough, my reluctance to do that was mostly because I'm already branching it. (I want a monome-controlled version, and the number of rows won't be nearly as flexible there) But this one can have that, no problem.

Only trick is that everything's taller, and I'm already using the full height available. So, we'll have to move the pattern editor to a pop-up window.

I don´t remember to catanya anymore, but i thought there was the ability to set velocity to the steps. is this possible and hard to program in your device?
Is it important that the velocity be stored as part of the looping patterns? (does it have to be a loop of velocity values?)

I really enjoy controlling the velocity with Push's aftertouch. I'd also been thinking adding a velocity knob to each patten, so you could map it for realtime control or build automation clips to control it. 'cause, that's fun. But does it adequately replace specifying your own velocities in the loops? Probably not.

Okay. So, options...

* Put the grids in dial mode, so the user drags each step to their desired velocity rather than them simply being "on" and "off". That's slower to input and not as clean visually, but it'd work, and it'd give you per-note control.

* Put a one-row grid underneath each of the current grids, in dial mode. User has to adjust velocities one step at a time, but not one note at a time.

* Put a multislider underneath each of the current grids, and make sure it resizes correctly when the pattern changes length. This would also be per-step, but you could set the whole pattern's velocity in one mouse drag.

* Put the grids on a tab system, so you're either looking at steps or velocity but never both simultaneously.

Let me think about that, try to figure out what makes the most sense...

bootykowski
Posts: 53
Joined: Thu Mar 25, 2010 3:12 pm

Re: catanya-like pattern based polyphonic arpeggiator

Post by bootykowski » Mon May 13, 2013 12:05 pm

that was e detailed reply, thanks a lot.

do you mean, that you can "draw" the pattern via monome? Wow, a monome(or push) controlled device like that would be the killer app.
For the rest, everything you say makes absolutely sense to me.
but one thing: yesterday, i stored 4 test presets with different grid lengths successfully, the grid length did not recall? (or do I misunderstand you? I have to translate a lot, my english is not the best :roll: ) the only thing i did not get work, is to save it in a .adv - in the original patch, it worked.

I did not try to control velocity via aftertouch on push, i definitely will try that.

I´m really curious about your next steps.

Post Reply