2018-08-13 02:30:33 +02:00
|
|
|
|
2018-08-14 10:52:34 +02:00
|
|
|
# Mackie emulation for the AKAI APCmini
|
2018-08-13 02:30:33 +02:00
|
|
|
|
2018-08-15 00:32:07 +02:00
|
|
|
# Copyright (c) 2018 Albert Graef <aggraef@gmail.com>
|
|
|
|
|
|
|
|
# Copying and distribution of this file, with or without modification, are
|
|
|
|
# permitted in any medium without royalty provided the copyright notice and
|
|
|
|
# this notice are preserved. This file is offered as-is, without any
|
|
|
|
# warranty.
|
|
|
|
|
2018-08-13 02:30:33 +02:00
|
|
|
JACK_NAME "midizap-APCmini"
|
|
|
|
JACK_PORTS 2
|
|
|
|
|
2018-08-14 10:52:34 +02:00
|
|
|
# This turns the APCmini into a Mackie-compatible controller, so that it can
|
2018-08-16 08:50:41 +02:00
|
|
|
# be used with Linux DAW programs like Ardour. The emulation is complicated by
|
|
|
|
# the APCmini having no encoders, no motorized faders, and not nearly as many
|
|
|
|
# dedicated buttons as a Mackie device. But it offers enough controls to be
|
|
|
|
# usable as a basic DAW controller.
|
2018-08-13 02:30:33 +02:00
|
|
|
|
2018-08-14 10:52:34 +02:00
|
|
|
# Tested with Ardour. Setup: In Ardour, enable the Mackie control surface,
|
|
|
|
# then connect Ardour's "mackie control" ports to midizap's midi_out and
|
|
|
|
# midi_in2 ports, and the APCmini to midizap's midi_in and midi_out2 ports.
|
2018-08-13 02:30:33 +02:00
|
|
|
|
2018-08-16 08:50:41 +02:00
|
|
|
# PROTOCOL DOCUMENTATION: If you want to see for yourself how all this works,
|
|
|
|
# comprehensive information about the Mackie MCU protocol can be found on
|
|
|
|
# https://mackie.com; search for the MCU Pro owner's manual in this file:
|
|
|
|
# MCU_Pro-XT_Pro_OM.pdf. Unfortunately, the APCmini is not nearly as well
|
|
|
|
# documented, but relevant information can be found in the Ableton forums
|
|
|
|
# here: https://forum.ableton.com/viewtopic.php?f=1&t=209604
|
|
|
|
|
2018-08-13 02:30:33 +02:00
|
|
|
[MIDI]
|
|
|
|
|
2018-08-14 10:52:34 +02:00
|
|
|
# The APCmini's dedicated shift key is used to provide alternative functions
|
|
|
|
# to some of the buttons and the faders.
|
|
|
|
?D8 SHIFT RELEASE SHIFT
|
|
|
|
|
|
|
|
# transport (assigned to the topmost 5 "scene launch" buttons on the right)
|
2018-08-13 10:03:12 +02:00
|
|
|
A#6 A7 # Stop
|
|
|
|
B6 A#7 # Play
|
|
|
|
C7 B7 # Rec
|
2018-08-14 10:52:34 +02:00
|
|
|
#C7 C#7 # Cycle
|
2018-08-13 10:03:12 +02:00
|
|
|
C#7 G7 # Rew
|
|
|
|
D7 G#7 # FFwd
|
2018-08-13 02:30:33 +02:00
|
|
|
|
2018-08-14 10:52:34 +02:00
|
|
|
# the next three buttons below are used for the MCU shift keys
|
|
|
|
# NOTE: The MCU actually has four shift keys, so one has to go. You may want
|
|
|
|
# to rearrange these as needed.
|
|
|
|
D#7 A#5 # Shift
|
|
|
|
E7 B5 # Control
|
|
|
|
F7 C6 # Option
|
|
|
|
#F7 C#6 # Alt/Cmd
|
|
|
|
|
|
|
|
# shifted "scene launch" buttons
|
|
|
|
# We assign these to the function keys F1..F8 here, but of course you can
|
|
|
|
# remap these as needed.
|
|
|
|
^A#6 F#4
|
|
|
|
^B6 G4
|
|
|
|
^C7 G#4
|
|
|
|
^C#7 A4
|
|
|
|
^D7 A#4
|
|
|
|
^D#7 B4
|
|
|
|
^E7 C5
|
|
|
|
^F7 C#5
|
|
|
|
|
|
|
|
# bottom 3x8 grid: mute/solo/rec
|
|
|
|
# NOTE: Incidentally, these happen to be identical to corresponding MCU input.
|
2018-08-13 02:30:33 +02:00
|
|
|
|
|
|
|
# rec (bottom row of the grid)
|
|
|
|
C0 C0
|
|
|
|
C#0 C#0
|
|
|
|
D0 D0
|
|
|
|
D#0 D#0
|
|
|
|
E0 E0
|
|
|
|
F0 F0
|
|
|
|
F#0 F#0
|
|
|
|
G0 G0
|
|
|
|
|
|
|
|
# solo (next row above)
|
|
|
|
G#0 G#0
|
|
|
|
A0 A0
|
|
|
|
A#0 A#0
|
|
|
|
B0 B0
|
|
|
|
C1 C1
|
|
|
|
C#1 C#1
|
|
|
|
D1 D1
|
|
|
|
D#1 D#1
|
|
|
|
|
|
|
|
# mute (next row above)
|
|
|
|
E1 E1
|
|
|
|
F1 F1
|
|
|
|
F#1 F#1
|
|
|
|
G1 G1
|
|
|
|
G#1 G#1
|
|
|
|
A1 A1
|
|
|
|
A#1 A#1
|
|
|
|
B1 B1
|
|
|
|
|
2018-08-14 10:52:34 +02:00
|
|
|
# track select (bottom row right above the faders)
|
2018-08-13 02:30:33 +02:00
|
|
|
E5 C2
|
|
|
|
F5 C#2
|
|
|
|
F#5 D2
|
|
|
|
G5 D#2
|
|
|
|
G#5 E2
|
|
|
|
A5 F2
|
|
|
|
A#5 F#2
|
|
|
|
B5 G2
|
|
|
|
|
2018-08-14 10:52:34 +02:00
|
|
|
# shifted bottom row
|
|
|
|
# We have these assigned to the bank/channel and track/pan/send/instr controls,
|
|
|
|
# but you may want to remap some or all of these as needed.
|
|
|
|
^E5 A#3 # Bank Left
|
|
|
|
^F5 B3 # Bank Right
|
|
|
|
^F#5 C4 # Channel Left
|
|
|
|
^G5 C#4 # Channel Right
|
|
|
|
# NOTE: Only Pan and Send appear to be supported in Ardour.
|
|
|
|
^G#5 E3 # Track (Volume)
|
|
|
|
^A5 F#3 # Pan
|
|
|
|
^A#5 F3 # Send
|
|
|
|
^B5 A3 # Instr (Device)
|
|
|
|
|
2018-08-15 00:32:07 +02:00
|
|
|
# faders (MCU uses pitch bends here, use 129 as step size to get full range)
|
2018-08-14 10:52:34 +02:00
|
|
|
CC48= PB[129]-1
|
|
|
|
CC49= PB[129]-2
|
|
|
|
CC50= PB[129]-3
|
|
|
|
CC51= PB[129]-4
|
|
|
|
CC52= PB[129]-5
|
|
|
|
CC53= PB[129]-6
|
|
|
|
CC54= PB[129]-7
|
|
|
|
CC55= PB[129]-8
|
|
|
|
# master fader
|
|
|
|
?CC56= PB[129]-9
|
|
|
|
|
|
|
|
# faders become encoders when shifted (CC16..CC23, incremental mode)
|
|
|
|
^CC48= CC16~
|
|
|
|
^CC49= CC17~
|
|
|
|
^CC50= CC18~
|
|
|
|
^CC51= CC19~
|
|
|
|
^CC52= CC20~
|
|
|
|
^CC53= CC21~
|
|
|
|
^CC54= CC22~
|
|
|
|
^CC55= CC23~
|
|
|
|
|
2018-08-13 02:30:33 +02:00
|
|
|
# feedback section ########################################################
|
|
|
|
|
|
|
|
[MIDI2]
|
|
|
|
|
2018-08-13 10:03:12 +02:00
|
|
|
# transport (will light up in green)
|
|
|
|
A7 A#6
|
|
|
|
A#7 B6
|
|
|
|
B7 C7[2] # Rec, blinks when engaged
|
2018-08-14 10:52:34 +02:00
|
|
|
#C#7 C7 # Cycle
|
2018-08-13 10:03:12 +02:00
|
|
|
G7 C#7
|
|
|
|
G#7 D7
|
|
|
|
|
2018-08-14 10:52:34 +02:00
|
|
|
# MCU shift keys
|
|
|
|
A#5 D#7
|
|
|
|
B5 E7
|
|
|
|
C6 F7
|
2018-08-13 02:30:33 +02:00
|
|
|
|
2018-08-13 10:03:12 +02:00
|
|
|
# no feedback for faders (faders aren't motorized)
|
|
|
|
|
2018-08-14 10:52:34 +02:00
|
|
|
# NOTE: Feedback for rec/solo/mute/select also needs to be recognized in shift
|
|
|
|
# mode, so that the (shifted) bank/channel left/right keys work as expected.
|
|
|
|
|
2018-08-13 02:30:33 +02:00
|
|
|
# rec: color = red (vel. 3)
|
2018-08-14 10:52:34 +02:00
|
|
|
?C0 C0[3]
|
|
|
|
?C#0 C#0[3]
|
|
|
|
?D0 D0[3]
|
|
|
|
?D#0 D#0[3]
|
|
|
|
?E0 E0[3]
|
|
|
|
?F0 F0[3]
|
|
|
|
?F#0 F#0[3]
|
|
|
|
?G0 G0[3]
|
2018-08-13 02:30:33 +02:00
|
|
|
|
|
|
|
# solo: color = green (vel. 1)
|
2018-08-14 10:52:34 +02:00
|
|
|
?G#0 G#0[1]
|
|
|
|
?A0 A0[1]
|
|
|
|
?A#0 A#0[1]
|
|
|
|
?B0 B0[1]
|
|
|
|
?C1 C1[1]
|
|
|
|
?C#1 C#1[1]
|
|
|
|
?D1 D1[1]
|
|
|
|
?D#1 D#1[1]
|
2018-08-13 02:30:33 +02:00
|
|
|
|
|
|
|
# mute: color = yellow (vel. 5)
|
2018-08-14 10:52:34 +02:00
|
|
|
?E1 E1[5]
|
|
|
|
?F1 F1[5]
|
|
|
|
?F#1 F#1[5]
|
|
|
|
?G1 G1[5]
|
|
|
|
?G#1 G#1[5]
|
|
|
|
?A1 A1[5]
|
|
|
|
?A#1 A#1[5]
|
|
|
|
?B1 B1[5]
|
2018-08-13 02:30:33 +02:00
|
|
|
|
|
|
|
# select (will light up in red)
|
2018-08-14 10:52:34 +02:00
|
|
|
# NOTE: Ardour apparently doesn't update these when changing banks.
|
|
|
|
?C2 E5
|
|
|
|
?C#2 F5
|
|
|
|
?D2 F#5
|
|
|
|
?D#2 G5
|
|
|
|
?E2 G#5
|
|
|
|
?F2 A5
|
|
|
|
?F#2 A#5
|
|
|
|
?G2 B5
|