kria (max/m4l version)

Hi everyone, I built a max msp version of ansible kria as a learning exercise and I’m sharing its m4l version. I wasn’t planing on making a m4l version because of live’s midi channel limitations but then I found out about David Butler’s wonderful imp.midi externals (Max Externals — The Impersonal Stereo) that allow to bypass live’s routing. It’s been quite a challenging process but I think I’ve implemented almost all of the features with some minor adjustments.

parameters

From left to right of the bottom row: the first two buttons correspond to each voice page (basically I took whitewhale 2 voice with accents and octaves version and added most of the features of the 4 voice ansible one), then a group of 4 pages for each voice: notes, duration (with legato on the highest duration), ratcheting (this page differs from the ansible one because I honestly didn’t understand how it worked from the tutorial. It is much simpler: if you press a button you set the division with all steps on, if you hold the page button you can “carve” within the division or add additional steps and set them on or off, the only thing you can’t do is reducing the division number without resetting the steps set off) and transposition. The following two buttons correspond to loop and time modifiers, which work for all pages. You hold the loop modifier button and then you can set the start and end loop points in the row above. The time modifier offers an alternate page for each parameter where you can set clock division and multiplication as well as 5 modes: forwards, backwards, palindrome, drunk and random (as an alternative to the probability page which isn’t implemented). Then the last two buttons correspond to the scale and pattern pages. The scale page also differs from the original version in that it offers already loaded 28 slots that correspond to the 7 modes of major, harmonic major, harmonic minor and melodic minor scales and the scale editor has been enlarged in order to provide transposition over the 11 semitones. The pattern page offers 16 slots that you can recall by tapping the button number on the first row or store by holding the loop modifier button and doing the same (you will get a blinking light as confirmation). The second row is the pattern cue clock that will wait to play the selected pattern on next start of the clock. It also has its own time modifier alternate page. The pattern cue clock is off if you select the first step. To enter metapattern mode, you double tap very quickly the pattern button. It works as described in the tutorial video. It is limited to only 16 pattern steps. The rightmost unlit button is the reset for all sequences (the original max msp version worked with a high resolution main clock but due to live’s vector size I had to go back to working with just tempo objects. Strangely enough, I tried everything I know from ticks to phasors and the only object that allows you to make bar division, multiplication and number of steps changes on the fly without jumping values is the tempo object). Every parameter is tempo decoupled including note and trigger since it’s meant to be a phasing and experimental sequencer in which a single change can alter the whole pattern unexpectedly. Lastly, if you want your presets to be saved don’t forget to save the m4l device.

You can download the m4l device in the attached link. Thanks go to @tyleretters for sharing his conversion patch of led to bitmap messages which opened up a world of possibilities in thinking about the grid canvas, to all the helpful people from the cycling 74 forum who helped me with a lot of questions, to @Puscha and @n-So tutorial videos and of course to @tehn for such marvelous sequencing and interface ideas. Let me know what you think and I hope you enjoy it!

edit: replaced the former teaser with something more kria-like sounding

edit 2: I forgot to mention the following note from David Butler: “When using in Windows, imp.midi in cannot use any port that the host application (Max or Ableton Live) is also using. Any ports required to be used with imp.midi should be disabled in Max/Ableton MIDI preferences. This is due to Windows lacking a native multi-client MIDI driver”.

edit 3: The imp.midi external doesn’t work with arm chips natively, so you would need to run live through rosetta. As an alternative I have added a max msp version that doesn’t need the aforementioned external (this isn’t the original max msp version that works with a high resolution clock that I referred to).

m4l version
https://drive.google.com/file/d/1l1j7kzyzFViXFSOfmbKT7e0tMTNmU3yQ/view?usp=share_link

max version
https://drive.google.com/file/d/1ag1xvaBQWsr_u917K_03P9GEyGw_f-Ix/view?usp=share_link

39 Likes

Thanks for your work on this, I can’t wait to try it out!

4 Likes

woah! i just cracked open the .axmd really nice work! thank you for passing the open-source flame forward and around.

4 Likes

incredible. I was hoping this exact thing existed.

2 Likes

Wow! Amazing! Thank you!

2 Likes

This is a good example of how RNBO could be amazingly exciting.

3 Likes

Thank you for creating this!

Can it also be used with Novation Launchpads instead of Monome Grids?

This is fantastic… thank you so much for sharing! I got out of eurorack last year but couldn’t quite bring myself to sell Ansible, as I still have my grid and was hoping to find a way to work kria back into some future set up. This is it!

3 Likes

Thanks for this @angel

I’m struggling to understand the routings to use in Live.

Loaded the M4L Kria instance on a Midi track, selected my grid, am able to input notes and see the Grid follow the tempo and sequence, but not getting any Midi information being fed through on the Midi track.

Attached are my current settings, any thoughts on what I’m doing wrong?

Thanks in advance

1 Like

Thanks for you trying it out @mattallison. The m4l device uses the imp.midiout external which bypasses live’s normal routing, so it doesn’t work if you put a midi instrument in the same midi track. Try putting it on a different midi track and selecting the corresponding midi input and midi channel and let me know how it goes.

3 Likes

Thanks for your interest. I don’t know what modification would be necessary for it to be compatible with a novation launchpad. Do you know of any m4l devices that have this functionality? I could take a look if it isn’t complicated, but I don’t own a launchpad so it may be a stretch goal.

Thank you! I am at work now, but I have to assume that there are many M4L devices that are specifically designed for use with Launchpads - these have traditionally been tightly integrated with Ableton. I will try to find a few devices and send them along for you to take a look at.

I really appreciate it!

Edit: Here are a few (don’t know how useful these would be for you to figure out how to do this):

it appears this uses an external that makes it incompatible with m1 macs. any idea how to fix that?

2 Likes

Might be my problem as well, still no luck with your tips above @angel

Running an M1 Mac here on Big Sur (11.6.1) with Ableton Live Suite 11 and associated Max for Live.

Connection works great, and can sequence, but see no midi/data activity and was wondering if I’m missing an external?

Are you running Ableton with Rosetta?

Correct, both Live and Max are running Rosetta, I’ve not upgraded to the Native/Apple versions yet.

@anxietymachine @mattallison @oskilatah Thanks for your input. I just checked and yes, I must have forgotten that I enabled live with rosetta when working with the imp.midi external, so sorry to not have mentioned it. The problem is that without that external, there’s no way to bypass live’s midi routing. I can swap it for a normal midiout but it would become only a polyphonic instrument without the option of routing each voice to a specific channel.

@mattallison I took a look again at the capture you posted and I think I know what’s going on. Because of aesthetics, I used a live.menu object instead of the typical umenu one and I think it wasn’t populating correctly the midi ports. I have uploaded a new version at the same link. Please let me know if it works properly now. Sorry for the trouble, thanks!

1 Like

Hi @angel

Downloaded the updated device, it’s now showing the inputs and outputs in Live’s preference and showing from Max 1 and Max 2 etc.

Still unable to receive Midi though, image attached of the current settings, MIDI In from M4L is ticked in the Midi Input preferences.

Grid is running and I’m able to make changes, but nothing in the activity in Live.

I did open up the device and am getting errors in the max console that declare “error-1 writing kria.pattern.json” if that is at all helpful?

Confirming that I am running Live and M4L in Rosetta as above.

Cheers

Matt

Thanks for helping me to troubleshoot @mattallison. Great to know that now it’s correctly populating. The error message has nothing to do with the current issue. It is the file saving the current state of the pattern/meta pattern page. I see that you have set “from max1” and “from max2”. I think that is possible but the best would be to use apple’s IAC driver bus. In any case, in the midi track where your midi instrument is located, set midi from “IAC driver bus” and not “from max 1 or 2”. I have just checked and the imp.midi external doesn’t work that way. Best

1 Like