Device Details


Name | Version: Arp Control 1.3.1
Author: SimonR
Device Type: MIDI Effect
Description: *** Disclaimer notice ***

This device has been constructed upon the M4L Arp device designed by Maxforcats and available with the free Max for Live Essentials pack on Ableton’s website. My aim was to correct some malfunctions as well as to add a few new features for personal use, after which I ended up feeling like more people could benefit from it. I do not claim to have created most of what constitutes this device and will detail in the following lines what I have added and changed to the original Arp device.
To download the original Arp, follow this link:
Maxforcats :


Hi all, here is my first introduction to the Max programming world. I’ve been wanting to use an arp for improvising in a live context and found the arp in the Max for Live Essentials pack more useful than the native Live one, but still found a few limitations which left me a bit frustrated. And so I decided to dive right into the programming world and it’s been a fun ride since (although a very sleepless one). So here’s what I came up with :

Improvements / Fixes :

* On Hold mode, note patterns are now created as soon as the keys are pressed, rather than when they are released (the original arp would only trigger the first note and then play all of them when you would release them). Moreover, note sequences are not retriggered until all the keys have been released and a new key or chord is pressed, making it possible to change the set of notes without retriggering the sequence, just like when the Hold button is off.

* When toggling between Sync and Free mode, the step sequencer now comes back in phase with Live’s transport on Sync mode (the steps would randomly fall out of phase when going to Free mode and coming back to Sync mode, so you had to start Live’s transport again to resync).

* Removed unwanted text from the presentation when device is off

* Fixed an error in Chord mode where one of note from the chord would get triggered twice.

* Created 7 parameter banks for controllers, with control over pretty much every important parameter including the first 8 steps, the first 8 velocity values as well as note lengths. I omitted the Map mode parameters as I don’t plan on using it.


* Velocity and Note Length Activator buttons:
- Added toggle buttons like the Advanced mode button which toggles the velocity and note length being controlled by the steps. When off, note velocities are determined by the velocity of the last played note. As for Note lengths, when button is off, all notes are played legato.

* Velocity Sensitivity:
- When Velocity Activator is On, notes are played at the various velocities determined by each step. However, the Velocity Sensitivity slider scales the steps’ velocity towards the velocity of the last played note, according to the chosen value (at 0, all notes are played exactly as determined by each step).

* Velocity Random:
- Introduces randomness for each step’s velocity value, for a maximum range of +-64.

* Note Length Random:
- Introduces randomness for each note’s length value, for a maximum range of +-64.

* Min/Max Velocity and Note Length:
- The Minimum and maximum range set by the slider above the random trigger now also sets the output range for velocity and note length values. All values are scaled according to those 2 values (Velocity Sensitivity and Random processes come BEFORE the min/max scaling).

* Beat Retrigger:
- Inspired by the Retrigger section of the native Live arp, the Beat Retrigger section has multiple options that let you have more control over both your note patterns and step patterns.

* Note Count:
- Retrigger note sequence, step sequence or both after a specified amount of notes.

* *2 button:
- Multiplies the Note Count by 2

* Stop button:
- Instead of retriggering, stop the notes or steps after the specified amount of notes, until the next bar retrigger or until the next keys are pressed.

* Bar Count:
- Retrigger notes, steps or both after a specified amount of bars.

* Bar Quantization:
- Synchronize the retrigger with the 1st beat of Live’s transport after the specified amount of bars (if Off, the moment you press the keys is considered the 1st beat).

* Dry/Wet:
- Scales between the “dry” MIDI notes and the arpeggiated notes. At 50%, both are played at their full velocity value. However, when the percentage is < = than the specified Gate value, the dial turns pink and the arp input gate closes, letting the held notes arpeggiate indefinitely as you play on top of it.

* Gate:
- Sets the Dry/Wet percentage at which the arp input gate opens.

* Sustain Button:
- Determines whether or not the Sustain Pedal toggles the Hold button on and off.

Hope you enjoy!



- Added a Random parameter for random rhythmic variations. Inspired by the "Humanizer" M4L device, it adds random delay to all notes, ranging from a subtle and more humanized feel to a total randomized chaotic mess.

- Velocity Random is now effective on individual chord notes.

- Sustain Pedal button now behaves as toggle between Hold on and off, rather than momentary. It also filters CC64 messages.

- Added knobs for being able to map to Min and Max Velocity as well as Note Lengths outputs. All of them are linked with their respective slider (which didn't allow for mapping).

- Changed the interface for a more compact layout.



- Fixed the Sync issue

- Added Follow button for linking the Note Count knob with the number of keys pressed. Useful for arpeggiating chords when combined with "Stop", or for linking the number of steps with the number of arpeggiated notes.

- Octave button for multiplying the note count by the number of octaves selected. Replaces the *2 button.



- Fixed a bug when original Arp was loaded in same Live Set which reversed the Division values.

- Added a Learn function which enables to enter individual notes or chords in each step. More of a personal use, where I wanted to be able to create chord tremolos on the fly. Unfortunately, the notes entered with this function can't be modulated by the usual arp functions, they're just played as-is.

- Reorganized and simplified the Parameter Banks


UPDATE 1.3.1

- Fixed the off-sync rendering issue


Live Version Used: 10.1.2
Max Version Used: 8.5.0
Date Added: Feb 19 2019 21:56:02
Date Last Updated: May 10 2024 17:41:19
Downloads: 7071
License: None
Average Rating (11)

Log in to rate this device



Device File: Arp Control.amxd


Wow, awesome job!
You should definitely send it to Christian Kleine (maxforcats).
Great job!

So many arp/seq devices (even those from Ableton) are buggy.. Thanks for fixing this one and making it better!
Spending more time with it, many great ideas in it! But have a small issue with Swing (at 1/16). At value 25% tt sounds great realtime but sounds broken when rendered or frozen. Maybe an issue on the Max side.
Thanks you two! I did send it to Christian Kleine. :)

@iloyd : thanks, will check this out, although I doubt that's something I could correct inside the patch...
I'm embarrassed to admit this, but after all these years I still can't figure out how to get a m4l device to associate to its bundled presets when installing into the finder. Whenever I put a folder into my user library with the device and the presets alike, I get "Could not access the Max device file ["Arp Control.amxd"]"

Could you help me solve this mystery once and for all?
@braduro : Can't you manage the device file so that you reference the preset to the device? Or do you have to that everytime?

Does this happen to everyone? I've never downloaded any M4L device with presets so I can't see for myself.
@iloyd : sorry for the slow response. My guess is that your Record Quantization is set to 1/16. When I set it to None, Rendering sounds perfect and frozen as well. Let me know if that worked ok for you!
Thanks for the Device. But your new Version is out of Sync on Ableton 10.1
Version 1.0 works is there a way to download this old version again?
Yes, sorry about that. It had to do with the Random Delay implemented. I'll work on a better solution for it to trigger randomness before and after the beat, rather than acting simply as a delay.
Thank you for your work. 1.2 works again and in sync :)
really good!
I would love you to add on stuff like this into your arp: Arpology has been my go to arp for ages now.. nothing is as flex-able. But sadly it’s trapped inside kontakt!!!! grrrrrrrr!

See this screenshot:
There isn’t a way to edit so.. here - The main product page - This should inspire you - i love what you started here but adding in the options here would be totally amazing!
Such a great Arp!!! I really love how you extended the functionality and still kept it simple.

Unfortunately I got a strange glitch recently.
When i reopened a project after a couple of days your arp was replaced by the Arp from the Essentials Bundle. Funny thing is on the UI it was written 1/16 but it played 1/4 (and 1/4 where 1/16) It looks like your "Arp Control" kinda still was there.

Will let you know if it happens again...
This is amazing! Thanks for making a wonderful device 'wonderfuller' (o;
I would love to be able to have 24 steps for jazz runs; Any chance you could either give me some help in Max to customize it myself, or include that in your next update? Thanks so much!!!
cheers n' blessings,
ps, I did try editing various parameters for the slider and bpatchers on my own, but am a novice and hopelessly lost.
Oooo, and a button to randomize which steps are activated? (o:
@GarrettNorvell : pm me at if you want help to customize it. My music has taken a different direction and probably won't be working on the arp for quite some time, but I can help you if you have specific questions. Keep learning to use Max, it's going to give you great freedom!

arp control would be my go to arp in every set.

sadly it keeps changing the time division when reopening a project. 16th becoming 4th for example. It is still written 16th though, just playing 4th. Like, behind the UI, it would play the original arp device where the values are flipped compared to the arp control.

Would be so great if there was a fix cause the arp has all I need. no more no less :)
@Ginza : did you have an instance of the original Arp device loaded in the same set? I did some tests and this issue only happened when I loaded the original Arp. I changed the name of some objects which seemed to resolve the conflict on my end. Let me know if that worked out well for you.
The sync seems to be off broken. It seems to go out of sync randomly, but I can easily replicate it by just repeatedly hitting the play button in live.

I'm a max developer but I cannot easily look at the code and fix it myself, because there seems to be a lot of code to make it sync properly, even though it should be able to be accomplished easily via plugsync~ and some mod math
@NickHydeViolin : I can't seem to replicate your bug. If you open an empty Live Set and load a default instance of Arp Control (no preset), is it still happening? Make sure the Random Variations is at 0 and you're in Sync mode.
That's a great device, I only wish it had a step-based traspose options.
Ive just spent about 3 hours looking for an arp device, free or paid, that would make sense to use alongside the very powerful Live's stock arp. Ive tested about 5 devices and the only one that impressed me was this one. Great job!
did want to answer on you debug since ages...

time division bug is gone. I guess the renaming fixed the problem. by far the best arp I know. thnx so much!!!!!
Wow this is improvement over the original in every way!!!

Nice work!!!!!!!!!!
I may doing something wrong but in Live 11 every time I set loop length to 16, save and reopen project, loop length goes to 1. I need to readjust loop length to 16 every time I reopen session. Settings and patterns are recalled correctly, it's just that loop length is set to 1. Any clue?
such a great tool bro i just need one or two more 'map' maping parrameters if thats possible would be amazing if u can show how to patch it for more mapping destination cs i tried and seem its only. mapping to one destination. thank u so much

Hi SimonR! THanks so much for upgrading this device! It has been a very useful tool. I find it more useful in my applications to have the Sustain Pedal behave in Momentary mode instead of Toggle mode. Is there a way to change this? Thanks again!
Is it tested on Live 11 ?
Looks cool, I'll try and give some feedback but if someone knows about some bugs on Live 11 please let us know here...
please help :) experienced ableton user here ....

this is such a great device - but no matter what (when I freeze the track or bounce out the audio):

- playback of sync or just behaving randomly even just on a single track with simpler

- Same issue with the live essentials version

What am I missing here?
Unfortunately, there doesn't seem to be an easy fix for this. I have no idea why it would go off-sync only when freezing the track. I'm not really using the device any longer and don't have the time to look into it.

If someone wanted to try to fix this, I would say the best way to go at it would be to find an arpeggiator that doesn't have that problem and compare the patching related to the synchronization with Live's transport.
Thank you Simon! It's a problem forsure as it's also the native ableton essentials version too. Live 11.3 beta same issue. Confused how such basic functionality could be overlooked. It's deffo a sync issue - appreciate your efforts - hope this post serves the group interest :)
thank you @SimonR for your time and awesome coding effort !
Off-sync rendering issue should be fixed now!
Everything an arpeggiator should be. Well done!

Login to comment on this device.

Browse the full library