Hi dear Zynthian people,
After about a year of on and off development I finally took the plunge and submitted a PR with my
SooperLooper extension to @oscaracena’s AKAI APC KEY25 MK2 driver.
The PR is available at Add SooperLooper Mode to AKAI APC KEY25 MK2 driver by pft · Pull Request #532 · zynthian/zynthian-ui · GitHub
It adds an extra mode to support SooperLooper, without breaking the original
nor diverging from it.
Some features:
- unlimited number of loops, of which 4 adjacent ones are be displayed/interacted with at a time.
- loop grouping of up to 5 groups (think verse/chorus etc.)
- quick access to discrete loop functions (rec/overdub/multiply/insert/replace/subst/trig/pan/volume)
- quick access to global and per-loop sync/quantize settings
- quick saving and loading of 40 sooperlooper sessions
The driver is listed as ‘AKAI APC Key25 MK2 + SL’, next to the original ‘AKAI APC Key25 MK2’.
Everything works the same, except that [Shift+BottomRightPad(note 7)]
enters SooperLooper mode.
Documentation is currently available at
GitHub - pft/sl-apckey25mk2 (a standalone JS version of just
part of this).
If this gets to be a part of Zynthian proper, I will move the docs to the wiki of course.
Some technical notes
Since Oscar’s driver leaves no pad unused I had to make this a
separate driver, sacrificing the function of Shift+the bottom right
pad, which likely to be the last one used in some of his (sub) modes
(Pattern Editor and Pad Matrix).
For me, this is worth it, but of course not for all. In order to keep
up-to-date with any changes in the original driver, and to keep them
mostly available, I made a few changes to the original driver.
These changes allow a subclass of the driver to dynamically load more
‘handlers’ from files in the subdirectory akai_apc_key25
. A simple
dictionary extraHandlerClasses
lists the notes that are bound to
switch to that handler. A handler class should be identical to the
module name (filename without ‘.py’) to load, analogous to how ctrldev
drivers themselves are loaded.
If the dictionary is empty no extra handlers are invoked, keeping all
the original functionality.
Please let me know what you think of it.
PS: I just ordered a second-hand mk1 version of this hardware from France, so chances are high that I will try and port the driver in a few weeks.