Quickly switching MIDI Mappings
Quickly switching MIDI Mappings
Hello,
I have a max for live device with 32 knobs.
I have a Midi controller with 16 physical knobs.
Is there a way to map the 16 physical knobs to the first 16 virtual ones, store that mapping, then map the 16 physical knobs to the last 16 virtual knobs, store that mapping, and then quickly switch between the first and second mapping.
This way, I have a physical control of all the parameter by switching between mappings.
If it's not possible natively, would you have any workaround?
Thanks for your help.
I have a max for live device with 32 knobs.
I have a Midi controller with 16 physical knobs.
Is there a way to map the 16 physical knobs to the first 16 virtual ones, store that mapping, then map the 16 physical knobs to the last 16 virtual knobs, store that mapping, and then quickly switch between the first and second mapping.
This way, I have a physical control of all the parameter by switching between mappings.
If it's not possible natively, would you have any workaround?
Thanks for your help.
Re: Quickly switching MIDI Mappings
ClyphX Pro has an add on product called Bindings that allows you to do this.
Https://isotonikstudios.com/clyphx-pro
https://isotonikstudios.com/product/cly ... -bindings/
Cheers
D
Https://isotonikstudios.com/clyphx-pro
https://isotonikstudios.com/product/cly ... -bindings/
Cheers
D
Re: Quickly switching MIDI Mappings
Thanks for your answer.
I'm looking for a free way to do it.
I'm a developer, but I just can't find the right documentation to build the python remote script.
Anyone could point me to the right direction?
I'm looking for a free way to do it.
I'm a developer, but I just can't find the right documentation to build the python remote script.
Anyone could point me to the right direction?
Re: Quickly switching MIDI Mappings
This is my max for live device :
hergeur d image
When I click en "One", I want my 16 physical knobs to be mapped on the 16 first knobs in the device.
When I click en "Two", I want my 16 physical knobs to be mapped on the 16 last knobs in the device.
hergeur d image
When I click en "One", I want my 16 physical knobs to be mapped on the 16 first knobs in the device.
When I click en "Two", I want my 16 physical knobs to be mapped on the 16 last knobs in the device.
Re: Quickly switching MIDI Mappings
As other people are likely to search for a solution similarly, this is the set up that I used at this weekends Synthfest show...
Took about 20 minuets to set top so it may save someone some time....
Bindings Code for 2 x MIDI Fighter Twister
MF_ENC_1 = 1, 0, ABSOLUTE, TRUE, SEL/DEV(SEL) P1
MF_ENC_2 = 1, 1, ABSOLUTE, TRUE, SEL/DEV(SEL) P2
MF_ENC_3 = 1, 2, ABSOLUTE, TRUE, SEL/DEV(SEL) P3
MF_ENC_4 = 1, 3, ABSOLUTE, TRUE, SEL/DEV(SEL) P4
MF_ENC_5 = 1, 4, ABSOLUTE, TRUE, SEL/DEV(SEL) P5
MF_ENC_6 = 1, 5, ABSOLUTE, TRUE, SEL/DEV(SEL) P6
MF_ENC_7 = 1, 6, ABSOLUTE, TRUE, SEL/DEV(SEL) P7
MF_ENC_8 = 1, 7, ABSOLUTE, TRUE, SEL/DEV(SEL) P8
MF_ENC_9 = 1, 8, ABSOLUTE, TRUE, SEL/DEV(SEL) B2 P1
MF_ENC_10 = 1, 9, ABSOLUTE, TRUE, SEL/DEV(SEL) B2 P2
MF_ENC_11 = 1, 10, ABSOLUTE, TRUE, SEL/DEV(SEL) B2 P3
MF_ENC_12 = 1, 11, ABSOLUTE, TRUE, SEL/DEV(SEL) B2 P4
MF_ENC_13 = 1, 12, ABSOLUTE, TRUE, SEL/DEV(SEL) B2 P5
MF_ENC_14 = 1, 13, ABSOLUTE, TRUE, SEL/DEV(SEL) B2 P6
MF_ENC_15 = 1, 14, ABSOLUTE, TRUE, SEL/DEV(SEL) B2 P7
MF_ENC_16 = 1, 15, ABSOLUTE, TRUE, SEL/DEV(SEL) B2 P8
MF_2_ENC_1 = 1, 0, ABSOLUTE, TRUE, SEL/DEV(SEL) B3 P1
MF_2_ENC_2 = 1, 1, ABSOLUTE, TRUE, SEL/DEV(SEL) B3 P2
MF_2_ENC_3 = 1, 2, ABSOLUTE, TRUE, SEL/DEV(SEL) B3 P3
MF_2_ENC_4 = 1, 3, ABSOLUTE, TRUE, SEL/DEV(SEL) B3 P4
MF_2_ENC_5 = 1, 4, ABSOLUTE, TRUE, SEL/DEV(SEL) B3 P5
MF_2_ENC_6 = 1, 5, ABSOLUTE, TRUE, SEL/DEV(SEL) B3 P6
MF_2_ENC_7 = 1, 6, ABSOLUTE, TRUE, SEL/DEV(SEL) B3 P7
MF_2_ENC_8 = 1, 7, ABSOLUTE, TRUE, SEL/DEV(SEL) B3 P8
MF_2_ENC_9 = 1, 8, ABSOLUTE, TRUE, SEL/DEV(SEL) B4 P1
MF_2_ENC_10 = 1, 9, ABSOLUTE, TRUE, SEL/DEV(SEL) B4 P2
MF_2_ENC_11 = 1, 10, ABSOLUTE, TRUE, SEL/DEV(SEL) B4 P3
MF_2_ENC_12 = 1, 11, ABSOLUTE, TRUE, SEL/DEV(SEL) B4 P4
MF_2_ENC_13 = 1, 12, ABSOLUTE, TRUE, SEL/DEV(SEL) B4 P5
MF_2_ENC_14 = 1, 13, ABSOLUTE, TRUE, SEL/DEV(SEL) B4 P6
MF_2_ENC_15 = 1, 14, ABSOLUTE, TRUE, SEL/DEV(SEL) B4 P7
MF_2_ENC_16 = 1, 15, ABSOLUTE, TRUE, SEL/DEV(SEL) B4 P8
MACRO for switching between first 32 parameters and the second 32 across both controllers...
$BANK1to4$ = BIND MF_ENC_1 SEL/DEV(SEL) P1 ; BIND MF_ENC_2 SEL/DEV(SEL) P2 ; BIND MF_ENC_3 SEL/DEV(SEL) P3 ; BIND MF_ENC_4 SEL/DEV(SEL) P4 ; BIND MF_ENC_5 SEL/DEV(SEL) P5 ; BIND MF_ENC_6 SEL/DEV(SEL) P6 ; BIND MF_ENC_7 SEL/DEV(SEL) P7 ; BIND MF_ENC_8 SEL/DEV(SEL) P8 ; BIND MF_ENC_9 SEL/DEV(SEL) B2 P1 ; BIND MF_ENC_10 SEL/DEV(SEL) B2 P2 ; BIND MF_ENC_11 SEL/DEV(SEL) B2 P3 ; BIND MF_ENC_12 SEL/DEV(SEL) B2 P4 ; BIND MF_ENC_13 SEL/DEV(SEL) B2 P5 ; BIND MF_ENC_14 SEL/DEV(SEL) B2 P6 ; BIND MF_ENC_15 SEL/DEV(SEL) B2 P7 ; BIND MF_ENC_16 SEL/DEV(SEL) B2 P8 ; BIND MF_2_ENC_1 SEL/DEV(SEL) B3 P1 ; BIND MF_2_ENC_2 SEL/DEV(SEL) B3 P2 ; BIND MF_2_ENC_3 SEL/DEV(SEL) B3 P3 ; BIND MF_2_ENC_4 SEL/DEV(SEL) B3 P4 ; BIND MF_2_ENC_5 SEL/DEV(SEL) B3 P5 ; BIND MF_2_ENC_6 SEL/DEV(SEL) B3 P6 ; BIND MF_2_ENC_7 SEL/DEV(SEL) B3 P7 ; BIND MF_2_ENC_8 SEL/DEV(SEL) B3 P8 ; BIND MF_2_ENC_9 SEL/DEV(SEL) B4 P1 ; BIND MF_2_ENC_10 SEL/DEV(SEL) B4 P2 ; BIND MF_2_ENC_11 SEL/DEV(SEL) B4 P3 ; BIND MF_2_ENC_12 SEL/DEV(SEL) B4 P4 ; BIND MF_2_ENC_13 SEL/DEV(SEL) B4 P5 ; BIND MF_2_ENC_14 SEL/DEV(SEL) B4 P6 ; BIND MF_2_ENC_15 SEL/DEV(SEL) B4 P7 ; BIND MF_2_ENC_16 SEL/DEV(SEL) B4 P8
$BANK5to8$ = BIND MF_ENC_1 SEL/DEV(SEL) B5 P1 ; BIND MF_ENC_2 SEL/DEV(SEL) B5 P2 ; BIND MF_ENC_3 SEL/DEV(SEL) B5 P3 ; BIND MF_ENC_4 SEL/DEV(SEL) B5 P4 ; BIND MF_ENC_5 SEL/DEV(SEL) B5 P5 ; BIND MF_ENC_6 SEL/DEV(SEL) B5 P6 ; BIND MF_ENC_7 SEL/DEV(SEL) B5 P7 ; BIND MF_ENC_8 SEL/DEV(SEL) B5 P8 ; BIND MF_ENC_9 SEL/DEV(SEL) B6 P1 ; BIND MF_ENC_10 SEL/DEV(SEL) B6 P2 ; BIND MF_ENC_11 SEL/DEV(SEL) B6 P3 ; BIND MF_ENC_12 SEL/DEV(SEL) B6 P4 ; BIND MF_ENC_13 SEL/DEV(SEL) B6 P5 ; BIND MF_ENC_14 SEL/DEV(SEL) B6 P6 ; BIND MF_ENC_15 SEL/DEV(SEL) B6 P7 ; BIND MF_ENC_16 SEL/DEV(SEL) B6 P8 ; BIND MF_2_ENC_1 SEL/DEV(SEL) B7 P1 ; BIND MF_2_ENC_2 SEL/DEV(SEL) B7 P2 ; BIND MF_2_ENC_3 SEL/DEV(SEL) B7 P3 ; BIND MF_2_ENC_4 SEL/DEV(SEL) B7 P4 ; BIND MF_2_ENC_5 SEL/DEV(SEL) B7 P5 ; BIND MF_2_ENC_6 TRUE, SEL/DEV(SEL) B7 P6 ; BIND MF_2_ENC_7 SEL/DEV(SEL) B7 P7 ; BIND MF_2_ENC_8 SEL/DEV(SEL) B7 P8 ; BIND MF_2_ENC_9 SEL/DEV(SEL) B8 P1 ; BIND MF_2_ENC_10 SEL/DEV(SEL) B8 P2 ; BIND MF_2_ENC_11 SEL/DEV(SEL) B8 P3 ; BIND MF_2_ENC_12 SEL/DEV(SEL) B8 P4 ; BIND MF_2_ENC_13 SEL/DEV(SEL) B8 P5 ; BIND MF_2_ENC_14 SEL/DEV(SEL) B8 P6 ; BIND MF_2_ENC_15 SEL/DEV(SEL) B8 P7 ; BIND MF_2_ENC_16 SEL/DEV(SEL) B8 P8
X-Control for switching between the two banks via the top two buttons of the first MIDI Fighter Twister
MF_BTN_1 = CC, 2, 0, 0, 127, $BANK1to4$
MF_BTN_2 = CC, 2, 1, 0, 127, $BANK5to8$
Cheers
D
Took about 20 minuets to set top so it may save someone some time....
Bindings Code for 2 x MIDI Fighter Twister
MF_ENC_1 = 1, 0, ABSOLUTE, TRUE, SEL/DEV(SEL) P1
MF_ENC_2 = 1, 1, ABSOLUTE, TRUE, SEL/DEV(SEL) P2
MF_ENC_3 = 1, 2, ABSOLUTE, TRUE, SEL/DEV(SEL) P3
MF_ENC_4 = 1, 3, ABSOLUTE, TRUE, SEL/DEV(SEL) P4
MF_ENC_5 = 1, 4, ABSOLUTE, TRUE, SEL/DEV(SEL) P5
MF_ENC_6 = 1, 5, ABSOLUTE, TRUE, SEL/DEV(SEL) P6
MF_ENC_7 = 1, 6, ABSOLUTE, TRUE, SEL/DEV(SEL) P7
MF_ENC_8 = 1, 7, ABSOLUTE, TRUE, SEL/DEV(SEL) P8
MF_ENC_9 = 1, 8, ABSOLUTE, TRUE, SEL/DEV(SEL) B2 P1
MF_ENC_10 = 1, 9, ABSOLUTE, TRUE, SEL/DEV(SEL) B2 P2
MF_ENC_11 = 1, 10, ABSOLUTE, TRUE, SEL/DEV(SEL) B2 P3
MF_ENC_12 = 1, 11, ABSOLUTE, TRUE, SEL/DEV(SEL) B2 P4
MF_ENC_13 = 1, 12, ABSOLUTE, TRUE, SEL/DEV(SEL) B2 P5
MF_ENC_14 = 1, 13, ABSOLUTE, TRUE, SEL/DEV(SEL) B2 P6
MF_ENC_15 = 1, 14, ABSOLUTE, TRUE, SEL/DEV(SEL) B2 P7
MF_ENC_16 = 1, 15, ABSOLUTE, TRUE, SEL/DEV(SEL) B2 P8
MF_2_ENC_1 = 1, 0, ABSOLUTE, TRUE, SEL/DEV(SEL) B3 P1
MF_2_ENC_2 = 1, 1, ABSOLUTE, TRUE, SEL/DEV(SEL) B3 P2
MF_2_ENC_3 = 1, 2, ABSOLUTE, TRUE, SEL/DEV(SEL) B3 P3
MF_2_ENC_4 = 1, 3, ABSOLUTE, TRUE, SEL/DEV(SEL) B3 P4
MF_2_ENC_5 = 1, 4, ABSOLUTE, TRUE, SEL/DEV(SEL) B3 P5
MF_2_ENC_6 = 1, 5, ABSOLUTE, TRUE, SEL/DEV(SEL) B3 P6
MF_2_ENC_7 = 1, 6, ABSOLUTE, TRUE, SEL/DEV(SEL) B3 P7
MF_2_ENC_8 = 1, 7, ABSOLUTE, TRUE, SEL/DEV(SEL) B3 P8
MF_2_ENC_9 = 1, 8, ABSOLUTE, TRUE, SEL/DEV(SEL) B4 P1
MF_2_ENC_10 = 1, 9, ABSOLUTE, TRUE, SEL/DEV(SEL) B4 P2
MF_2_ENC_11 = 1, 10, ABSOLUTE, TRUE, SEL/DEV(SEL) B4 P3
MF_2_ENC_12 = 1, 11, ABSOLUTE, TRUE, SEL/DEV(SEL) B4 P4
MF_2_ENC_13 = 1, 12, ABSOLUTE, TRUE, SEL/DEV(SEL) B4 P5
MF_2_ENC_14 = 1, 13, ABSOLUTE, TRUE, SEL/DEV(SEL) B4 P6
MF_2_ENC_15 = 1, 14, ABSOLUTE, TRUE, SEL/DEV(SEL) B4 P7
MF_2_ENC_16 = 1, 15, ABSOLUTE, TRUE, SEL/DEV(SEL) B4 P8
MACRO for switching between first 32 parameters and the second 32 across both controllers...
$BANK1to4$ = BIND MF_ENC_1 SEL/DEV(SEL) P1 ; BIND MF_ENC_2 SEL/DEV(SEL) P2 ; BIND MF_ENC_3 SEL/DEV(SEL) P3 ; BIND MF_ENC_4 SEL/DEV(SEL) P4 ; BIND MF_ENC_5 SEL/DEV(SEL) P5 ; BIND MF_ENC_6 SEL/DEV(SEL) P6 ; BIND MF_ENC_7 SEL/DEV(SEL) P7 ; BIND MF_ENC_8 SEL/DEV(SEL) P8 ; BIND MF_ENC_9 SEL/DEV(SEL) B2 P1 ; BIND MF_ENC_10 SEL/DEV(SEL) B2 P2 ; BIND MF_ENC_11 SEL/DEV(SEL) B2 P3 ; BIND MF_ENC_12 SEL/DEV(SEL) B2 P4 ; BIND MF_ENC_13 SEL/DEV(SEL) B2 P5 ; BIND MF_ENC_14 SEL/DEV(SEL) B2 P6 ; BIND MF_ENC_15 SEL/DEV(SEL) B2 P7 ; BIND MF_ENC_16 SEL/DEV(SEL) B2 P8 ; BIND MF_2_ENC_1 SEL/DEV(SEL) B3 P1 ; BIND MF_2_ENC_2 SEL/DEV(SEL) B3 P2 ; BIND MF_2_ENC_3 SEL/DEV(SEL) B3 P3 ; BIND MF_2_ENC_4 SEL/DEV(SEL) B3 P4 ; BIND MF_2_ENC_5 SEL/DEV(SEL) B3 P5 ; BIND MF_2_ENC_6 SEL/DEV(SEL) B3 P6 ; BIND MF_2_ENC_7 SEL/DEV(SEL) B3 P7 ; BIND MF_2_ENC_8 SEL/DEV(SEL) B3 P8 ; BIND MF_2_ENC_9 SEL/DEV(SEL) B4 P1 ; BIND MF_2_ENC_10 SEL/DEV(SEL) B4 P2 ; BIND MF_2_ENC_11 SEL/DEV(SEL) B4 P3 ; BIND MF_2_ENC_12 SEL/DEV(SEL) B4 P4 ; BIND MF_2_ENC_13 SEL/DEV(SEL) B4 P5 ; BIND MF_2_ENC_14 SEL/DEV(SEL) B4 P6 ; BIND MF_2_ENC_15 SEL/DEV(SEL) B4 P7 ; BIND MF_2_ENC_16 SEL/DEV(SEL) B4 P8
$BANK5to8$ = BIND MF_ENC_1 SEL/DEV(SEL) B5 P1 ; BIND MF_ENC_2 SEL/DEV(SEL) B5 P2 ; BIND MF_ENC_3 SEL/DEV(SEL) B5 P3 ; BIND MF_ENC_4 SEL/DEV(SEL) B5 P4 ; BIND MF_ENC_5 SEL/DEV(SEL) B5 P5 ; BIND MF_ENC_6 SEL/DEV(SEL) B5 P6 ; BIND MF_ENC_7 SEL/DEV(SEL) B5 P7 ; BIND MF_ENC_8 SEL/DEV(SEL) B5 P8 ; BIND MF_ENC_9 SEL/DEV(SEL) B6 P1 ; BIND MF_ENC_10 SEL/DEV(SEL) B6 P2 ; BIND MF_ENC_11 SEL/DEV(SEL) B6 P3 ; BIND MF_ENC_12 SEL/DEV(SEL) B6 P4 ; BIND MF_ENC_13 SEL/DEV(SEL) B6 P5 ; BIND MF_ENC_14 SEL/DEV(SEL) B6 P6 ; BIND MF_ENC_15 SEL/DEV(SEL) B6 P7 ; BIND MF_ENC_16 SEL/DEV(SEL) B6 P8 ; BIND MF_2_ENC_1 SEL/DEV(SEL) B7 P1 ; BIND MF_2_ENC_2 SEL/DEV(SEL) B7 P2 ; BIND MF_2_ENC_3 SEL/DEV(SEL) B7 P3 ; BIND MF_2_ENC_4 SEL/DEV(SEL) B7 P4 ; BIND MF_2_ENC_5 SEL/DEV(SEL) B7 P5 ; BIND MF_2_ENC_6 TRUE, SEL/DEV(SEL) B7 P6 ; BIND MF_2_ENC_7 SEL/DEV(SEL) B7 P7 ; BIND MF_2_ENC_8 SEL/DEV(SEL) B7 P8 ; BIND MF_2_ENC_9 SEL/DEV(SEL) B8 P1 ; BIND MF_2_ENC_10 SEL/DEV(SEL) B8 P2 ; BIND MF_2_ENC_11 SEL/DEV(SEL) B8 P3 ; BIND MF_2_ENC_12 SEL/DEV(SEL) B8 P4 ; BIND MF_2_ENC_13 SEL/DEV(SEL) B8 P5 ; BIND MF_2_ENC_14 SEL/DEV(SEL) B8 P6 ; BIND MF_2_ENC_15 SEL/DEV(SEL) B8 P7 ; BIND MF_2_ENC_16 SEL/DEV(SEL) B8 P8
X-Control for switching between the two banks via the top two buttons of the first MIDI Fighter Twister
MF_BTN_1 = CC, 2, 0, 0, 127, $BANK1to4$
MF_BTN_2 = CC, 2, 1, 0, 127, $BANK5to8$
Cheers
D
Re: Quickly switching MIDI Mappings
This is using ClyphX right?
Is there anyway to switch banks using the keyboard using ClyphX? Pressing 1 on the keyboard for bank 1 and etc?
Midi fighter side buttons are not as comfortable to use as a simple keyboard key.
Is there anyway to switch banks using the keyboard using ClyphX? Pressing 1 on the keyboard for bank 1 and etc?
Midi fighter side buttons are not as comfortable to use as a simple keyboard key.
-
- Posts: 6021
- Joined: Mon May 15, 2006 12:15 pm
Re: Quickly switching MIDI Mappings
You could make a “dummy” interface just to map your controller to 16 dials. Then make your patch route the dials to the correct “real” ones, with offsets set by your live.tab.
It looks quite easy to do.
It looks quite easy to do.
MacBook Pro 13" Retina i7 2.8 GHz OS 10.13, L10.0.1, M4L.
MacStudio M1Max 32Go OS 12.3.1
MacStudio M1Max 32Go OS 12.3.1
Re: Quickly switching MIDI Mappings
Yes it's using CLyphX Pro and the Bindings add on, I agree the side buttons are not the most comfortable option.
The simplest way would be to write the macro name into a clip and trigger that from the 1 key of the keyboard....
Cheers
D
Re: Quickly switching MIDI Mappings
Would it then still be possible to use the session view as usual? What's your suggested way of making sure it doesn't interfere with the session view? Maybe using a dummy track for that clip?
Re: Quickly switching MIDI Mappings
Would you elaborate how you would make such an interface?
Would you elaborate how you would "route dials"?chapelier fou wrote: ↑Thu Oct 10, 2019 7:33 pmmake your patch route the dials to the correct “real” ones
Re: Quickly switching MIDI Mappings
I think I got it.chapelier fou wrote: ↑Thu Oct 10, 2019 7:33 pmYou could make a “dummy” interface just to map your controller to 16 dials. Then make your patch route the dials to the correct “real” ones, with offsets set by your live.tab.
It looks quite easy to do.
The idea would be to add 16 knobs in my device, that correspond to the 16 physical knobs.
These first 16 knobs, depending on the offset, would update (using a conditional max msp connection I guess) the right virtual knobs.
Updating the virtual knobs (and loading presets), depending on the offset, would update the first 16 "physical" knobs.
Is this the idea? Sounds quite awesome.
Except, I'm guessing, that these 16 knobs need to be visible so they can be mapped.
-
- Posts: 6021
- Joined: Mon May 15, 2006 12:15 pm
Re: Quickly switching MIDI Mappings
That’s the idea. I’m away from home and replying from my phone. But check the ‘thispatcher’ object and the ‘front’ message going to it. It will allow to hide the dummy knobs.
MacBook Pro 13" Retina i7 2.8 GHz OS 10.13, L10.0.1, M4L.
MacStudio M1Max 32Go OS 12.3.1
MacStudio M1Max 32Go OS 12.3.1
-
- Posts: 6021
- Joined: Mon May 15, 2006 12:15 pm
Re: Quickly switching MIDI Mappings
The other thing to consider is to send the dials value to update the dummy ones when you select them.
MacBook Pro 13" Retina i7 2.8 GHz OS 10.13, L10.0.1, M4L.
MacStudio M1Max 32Go OS 12.3.1
MacStudio M1Max 32Go OS 12.3.1
Re: Quickly switching MIDI Mappings
Thanks for the idea, I'll try it this weekend.chapelier fou wrote: ↑Fri Oct 11, 2019 10:07 amThat’s the idea. I’m away from home and replying from my phone. But check the ‘thispatcher’ object and the ‘front’ message going to it. It will allow to hide the dummy knobs.
If the knobs are hidden, I wouldn't know how to map them in ableton since one need to click on it before mapping it with the hardware.
Did you have maybe an idea of a different way they could be mapped to the midi controller?
There's the UserConfiguration.txt but it's only possible to map 8 knobs.
-
- Posts: 6021
- Joined: Mon May 15, 2006 12:15 pm
Re: Quickly switching MIDI Mappings
Thispatcher allows you to make a floating window.
MacBook Pro 13" Retina i7 2.8 GHz OS 10.13, L10.0.1, M4L.
MacStudio M1Max 32Go OS 12.3.1
MacStudio M1Max 32Go OS 12.3.1