mixxx-launchpad icon indicating copy to clipboard operation
mixxx-launchpad copied to clipboard

Launchpad Pro MK3?

Open mxmilkiib opened this issue 1 year ago • 2 comments

Hi! I've a Launchpad Pro MK3 and I'm looking to use it with Mixxx, and I'm up for helping with the process of getting this working, debugging and making PRs, though I'm not a programmer, just a scripter ;) My dream would be somehow to get 16 hotcues, but I realise that's something for further down the road. I've seen #13 and I'll begin the process of grokking the project as a side project.

mxmilkiib avatar Feb 14 '24 20:02 mxmilkiib

SysEx header:

  • Hex Version: F0h 00h 20h 29h 02h 0Eh
  • Decimal Version: 240 0 32 41 2 14

Selecting layouts:

  • Hex Version: F0h 00h 20h 29h 02h 0Eh 00h <layout> <page> 00h F7h
  • Decimal Version: 240 0 32 41 2 14 0 <layout> <page> 0 247
  • Hex: 11h / Decimal: 17 --- Programmer Mode

Programmer Mode:

  • Hex Version: F0h 00h 20h 29h 02h 0Eh 00h <layout> <page> 00h F7h
  • Decimal Version: 240 0 32 41 2 14 0 <layout> <page> 0 247

Request the current layout:

  • Hex Version: F0h 00h 20h 29h 02h 0Eh 00h F7h
  • Decimal Version: 240 0 32 41 2 14 0 247

image

image image

LED change:

  • Ch. 1, Static Colour
    • Notes
      • Hex: 90h
      • Decimal: 144
    • CC
      • Hex: B0h
      • Decimal: 176
  • Ch. 2, Flashing Colour
    • Notes
      • Hex: 91h
      • Decimal: 145
    • CC
      • Hex: B1h
      • Decimal: 177
  • Ch. 3, Pulsing Colour
    • Notes
      • Hex: 92h
      • Decimal: 146
    • CC
      • Hex: B2h
      • Decimal: 178

Lighting the lower left pad static red:

  • Note On, Channel 1, Note number 0Bh (11), with Velocity 05h (5)
  • Hex: 90h 0Bh 05h
  • Dec: 144 11 5

Flashing the upper left pad green:

  • Note On, Channel 2, Note number 51h (81), with Velocity 13h (19)
  • Hex: 91h 51h 13h
  • Dec: 145 81 19

Pulsing the lower right pad blue:

  • Note On, Channel 3, Note number 12h (18), with Velocity 2Dh (45)
  • Hex: 92h 12h 2Dh
  • Dec: 146 18 45

Turning a colour off:

  • Note Off (Note On with Velocity of zero), Channel 1, Note number 12h (18), with Velocity 00h (0)
  • Hex: 90h 12h 00h
  • Dec: 144 18 0 or
  • Hex: 80h 12h 00h
  • Dec: 128 18 0

LED lighting SysEx message

  • Hex Version: F0h 00h 20h 29h 02h 0Eh 03h <Colour Spec> [ <Colour Spec> [_] ] F7h
  • Decimal Version: 240 0 32 41 2 14 3 <Colour Spec> [ <Colour Spec> [_] ] 247

<Colour Spec> is structured as follows:

  • Lighting type (1 byte)
  • LED index (1 byte)
  • Lighting data (1 – 3 bytes)
  • Hex: 00h / Decimal: 0 --- Static colour from palette, Lighting data is 1 byte specifying palette entry.
  • Hex: 01h / Decimal: 1 --- Flashing colour, Lighting data is 2 bytes specifying Colour B and Colour A.
  • Hex: 02h / Decimal: 2 --- Pulsing colour, Lighting data is 1 byte specifying palette entry.
  • Hex: 03h / Decimal: 3 --- RGB colour, Lighting data is 3 bytes for Red, Green and Blue (127: Max, 0: Min)

May contain up to 106 <Colour Spec> entries, e.g.;

  • Hex: F0h 00h 20h 29h 02h 0Eh 03h 00h 0Bh 0Dh 01h 0Ch 15h 17h 02h 0Dh 25h F7h
  • Dec: 240 0 32 41 2 14 3 0 11 13 1 12 21 23 2 13 37 247

mxmilkiib avatar Feb 16 '24 02:02 mxmilkiib

It looks similar to Launchpad Mini MK3, just with more buttons. I would start by adapting the mini mk3 code. I think the main chunk of work here is to figure out what to do with the additional buttons. One idea from the top of my head is to use some of them to lay out effect units on the grid. I'm opinionated to support only button controls, but these could be button parameters / effect selectors, etc. E.g. we could have an effectSelector similar that is similar to the current channelSelector. We could make this customizable, on a Pro, that has enough buttons for both, both channels and effects could be laid out on the main grid (e.g top row: channel selector, left column: effect selector). For smaller controller, the user could customize to use the top row to any of these. Just one idea. The bottom rows could be used for UI controls for example.

dszakallas avatar Feb 18 '24 18:02 dszakallas