Launchpad Pro Mk3 Controller Script for Bitwig (Tested on 4+, should work on 3.2.5+)

Overview

Launchpad Pro Mk3 for Bitwig (Bitwig Controller Script)

A Bitwig controller script that matches (and expands) the functionality that Novation and Ableton provide for Live. It was implemented based on the Launchpad Pro Mk3 manual feature descriptions, so the Launchpad will do what it says on the buttons.

The standalone features of the Launchpad, Notes/Chord/Custom modes and the Sequencer will all work seamlessly in Bitwig.

Bitwig is different from Ableton Live, so there are a few differences. Specific to Bitwig, this script supports a rotated view for Arrange view, Multiple Devices and remote pages, 8 Sends per channel and more.

Enjoy!

PS—If you want something that goes beyond what the Launchpad says on the buttons, check out DrivenByMoss.

Setup

  1. Download the latest release (not source) from the releases section on the right of this page.

  2. Unzip and copy the Launchpad-Pro-Mk3-for-Bitwig_1.x folder to your Bitwig My Controller Scripts location.

  3. Restart Bitwig and open Settings > Controllers.

  4. Add the Controller (Novation > Launchpad Pro Mk3).

    • Note: Depending on your OS or configuration, your device names may differ.

    • macOS: Select "Launchpad Pro MK3 LPProMK3 DAW" device in the first slot of input and output, and "Launchpad Pro MK3 LPProMK3 MIDI" device in the 2nd slot of each pair.

    • Windows: Select "MIDIIN3 (LPProMK3 MIDI)" device in the first slot as input, "MIDIOUT3 (LPProMK3 MIDI)" as output, and "LPProMK3 MIDI" device in the 2nd slot of each pair.

      Screenshot of Bitwig Controllers Settings

  5. Go to Bitwig > Settings > Synchronization.

    • Note: Depending on your OS or configuration, your device names may differ.

    • Send Clock and Start/Stop to the Launchpad Pro Mk3 devices.

      Screenshot of Bitwig Synchronization Settings

  6. When the Launchpad connects, you will be presented with the controller options.

    • Grid > Orientation: Allows a Rotated view on the Grid to match the clip layout of Bitwig.
      • Mix view matches the standard Launchpad orientation. Most of this documentation will refer to Mix orientation.
      • Arrange will be rotated to match the clip launcher in the Arrange View of Bitwig. The navigation arrows will adjust automatically. Note that this will also swap the Track Selection Buttons with the Scene Launch buttons on the Launchpad UI. This is mostly a non issue, except in the standalone Launchpad modes, the scene buttons are disabled.
      • Follow Bitwig Will swap between Arrange and Mix orientations as you change the view in Ableton or with the Launchpad (Shift + • and Shift + ••).
    • Grid > Pan Fader: Control the orientation of the Pan Faders
      • Follow Orientation will match the Grid Orientation option above; this will make the fader match the orientation of the Volume Faders, depending on Mix or Arrange view. When they are vertical, Fader Up = Pan Right and Fader Down = Pan Left.
      • Horizontal Only, left is left, right is right.
    • Indicators > Scene / Slots: Will show you, in Bitwig, which scenes and slots are reflected on the LaunchPad.

How to Use

You can follow along with section 5. Session Mode of the Novation Launchpad Mk3 Manual. I will only cover the differences here, keeping the same headings, any missing section are already covered, and work the same here.

5.1 Ableton Live’s Session View

The shift function Capture MIDI is not a feature currently offered in Bitwig.

5.2 Session Overview

There is no "Session Overview" implemented but...

  • Shift + Up/Down/Left/Right will scroll the grid 1 page (8 tracks/scenes) at a time.

5.3 Clip Functions

5.3.7 Fixed Length

  • Fixed Length will toggle your Post recording Action / delay option between your configured setting, and Off. There is no controls on the Launchpad adjust the length, you can do that in the Play menu in Bitwig. White for disabled, orange for enabled. Setting to Post recording Action / delay to Play Recorded and setting a length will match Ableton Live's functionality.

5.4.4 Volume

Orientation changes will rotate these faders.

  • The Track Select Buttons will reset your track to the default volume.

5.4.5 Pan

Orientation changes will rotate these faders.

  • The Track Select Buttons will reset your track to center pan.
  • Orientation of these faders is as you configured (or didn't) in the Controller Settings.

5.4.6 Send

Orientation changes will rotate these faders.

  • The Track Select Buttons will reset your track the send to zero.
  • Use the Up/Down arrows* and Scene (1-8) buttons to select the send. (*Arrange orientation will rotate these)

5.4.7 Device

Orientation changes will NOT affect these faders. They are always vertical.

  • These 8 faders represent the 8 remote controls on the currently selected Device in Bitwig.
    • The Track Select Buttons will reset the control to the default.
  • Use the Up/Down arrows and Scene (1-8) buttons to select the Remote Control Page.
  • Use the Left/Right arrows move through the devices in the track.

5.4.9 Fader orientation

  • Covered above. We allow for matching the Bitwig Arrange view. This is one of the Bitwig specific upgrades here.

5.5 Record Arm & Recording

The Record button is more of an Overdub button.

  • It is not connected to the Arrange view Record button in Bitwig.
  • This button works similarly to the Ableton version, in that it toggle Clip Overdub (aka Session Record in Ableton Live) on for the Clip Launcher. White for disabled, orange for enabled.
  • Your track will need to be armed in order for any overdubbing to take place.
  • If you record a clip from the grid, you can also use the Record button to finish recording (so you don't need to hunt for the grid button you pressed).
  • If your selected track is Armed, pressing Shift + Record will record a new clip in the first available slot on that track. Pressing it a 2nd time will finish recording (as described above). When holding shift, your Record button will be red (not orange/white) when this function is available.

5.6 Production Controls

Along with the features covered in the Novation manual, we have a few others.

  • Shift + • (Volume) and Shift + •• (Pan) will change your Bitwig view to Arrange and Mix respectively.
    • When Bitwig is in Arrange view, the Novation logo will pulse orange.
    • You can have the Launchpad UI rotate automatically if you set your Grid > Orientation to Follow Bitwig.
    • Depending on your Display Profile, these options may or may not be available, you may want to fix your Grid > Orientation in that case.
  • Shift + Swing will toggle Groove in Bitwig. White for disabled, orange for enabled.
  • Shift + Play will reset your play head to the start of the arrange timeline. If you manually set the start point, then the Play button on it's own will start and stop from that point, very handy if you want to work on a section of your track.

5.7 Momentary View Switching

This feature actually works much better here than when connected to Ableton Live.

6.6 Drum Mode

  • Notes mode will change to Drum mode when a track has a Drum Machine in it. You will be able to access 4 Pages of the Drum Machine from the LaunchPad. Starting from the Page 1 on the bottom-left quadrant, to Page 2 on the top-left, Page 3 on the bottom-right, and Page 4 on the top-right.
  • The Arrows will not affect the Grid placement, unlike the Ableton Live integration, the Grid notes are fixed here.

9. Sequencer

9.11 Print to Clip

The shift function Print to Clip is not a feature currently offered in Bitwig.

Errata / Tips

  • You may notice that Flashing and Pulsing LEDs will stop flashing or pulsing, Toggle Play on and off to send a clock signal to the LaunchPad so it can set the flash/pulse rate. Ableton always sends a clock, so this is not noticeable when using ableton. Bitwig only sends a clock when the transport is running.
  • If you change Display Profiles, you will need to disconnect and reconnect the controller for all of it's function to work properly.

Developer Notes

Features / Pull Requests / Forks

  • I'm likely to fix bugs or improve behaviour, but less likely to add anything else. FAFO— Make an issue or pull request and we'll see where it goes.
  • Fork away, this has the functionality I was looking to implement, you want to launch point for your own project, have at it!
  • Released under GPL.

Build yourself (thanks Fannon)

  • Install Node.js
  • Check out this repository via Git
  • npm install
  • npm run build
  • Symlink or copy the contents from the ./dist folder into your Bitwig "My Controller Scripts" location
    • Consider creating a subfolder for this, e.g. Launchpad-Pro-Mk3-for-Bitwig

Additional Resources

Hat tips

First and foremost, I want to thank Fannon for the inspiration to make this script. I started with their project, but it quickly grew into something else. There is some shreds of the original still in there.

Also Jürgen Mossgraber and DrivenByMoss are a great reference for any Bitwig controller script programming.

Comments
  • What is left for a 1.0 Release?

    What is left for a 1.0 Release?

    Do we need anything else? Does anything else need to be tested or cleaned up?

    For me it's working rock solid, just a bit of clean up to do. See the Milestone for details.

    question 
    opened by weskoop 10
  • Track arming with bottom track buttons breaks if

    Track arming with bottom track buttons breaks if "record to arrangement" is on

    Finally I've managed to find a way to make this bug reproducible (I think), here are the steps

    1. turn this button on: image
    2. have two instrument tracks (or more, but 2 should be enough for the test): e.g. one drum, one synth, don't know if the type is relevant but one being a drum machine and one not helps to see whether the instrument-specific layout changed
    3. record something to the first one, either via shift+record, or by tapping the empty clip in session view and being fast enough
    4. confirm the recording by pressing the record button again
    5. switch to the second instrument by pressing the button above the "mute/redo"

    expected behavior: you switch to the second instrument's layout, the second track is armed and you can play it actual behavior: the layout changes (usually), but the track is not armed, so if you want to play a synth, you get a faceful of kick instead

    if i disable the record to arrangement button, everything seems to work as expected

    bug wontfix 
    opened by mwozniczak 9
  • TypeScript Typing Issues

    TypeScript Typing Issues

    Hi, I just wanted to let you know that I've just bought a Launchpad pro mk3 and search a script controller for bitwig. I've quickly test Jürgen but I was lost because I expect to have same native feature but have custom layouts for each node, chord, sequencer. I think you've started this controller script with that idea in mind to not change the native feature of the controller to have consistent behaviour with the button and the official documentation that I've started to read yesterday.

    I've not tested yet your script, I think I have time this week-end to test it. I've started to read also your README, great to have such a documentation :-).

    I am also a typescript developer, I've look at your code to start understand how it work and may be help you if needed. I'm not familiar with bitwig programming but I have some experiences with web development (and more) on frontend (javascript/typescript) and backend (java server).

    I've started a new branch : https://github.com/llgcode/Launchpad-Pro-Mk3-for-Bitwig/tree/fix-typing-issue

    I could open a pull request on it if you are interested to disccuss on it and may be merge it if it make sense.

    Thanks for your work.

    opened by llgcode 8
  • 💡 Idea: Use of colors in some layers

    💡 Idea: Use of colors in some layers

    Hi,

    just an idea / minor suggestion to throw into the room. Feel free to ignore / disagree.

    When switching into different layers than Session, the track buttons get all the same color as the functionality chosen. If they keep the color of the tracks, there is a bit more context. What track is then enabled / active could also be indicated by keeping the same color but making it pulsing. When choosing Volume, Pan or Sends it the track color could also be used as a fader color?

    For the Device page, I wonder if it is possible to use the colors from the bitwig device remote controls? To me it looks like it's always the same 8 colors in the same order. Here both track colors and fader colors could be adjusted.

    enhancement 
    opened by Fannon 6
  • Script not recognised

    Script not recognised

    Hi, I tried to install your script following the instructions but it seems not to be recognised. Nothing new for the launchpad pro mk3 on the controller menu... :(

    I'm on win10 and bitwig 4.0.8 by the way...

    bug 
    opened by ElVicente 5
  • Record Button Behaviour

    Record Button Behaviour

    Background: Novation designed and dedicated LaunchPad Pro to the Clip Launcher in Ableton, Session View. It's integration is even under a button of the same name.

    So far this script has followed that thinking, but Bitwig moves beyond this idea, integrating the Clip Launcher with the Arranger Timeline.

    Until the last ~20% of development on this script, I had the Record Button attached to the transport Record button in the top bar of Bitwig; it did not toggle Clip Overdub, and honestly it was useless is most situations.

    When finalizing the scripts behaviour, i tweaked the record button to bring back focus to the Clip Launcher.

    I'm used to thinking of these things in my own head, but now that the script is live, I figured I would think out loud.

    I think there may be some potential to bring back the connection to record button in transports, and maybe arranger overdub, though I'm doubtful.

    When I think about performance oriented features, Clip Record and Clip Overdub in the Launcher fall into that bucket, capturing multiple clips, variations, building scenes, and it can all be dont without touching the computer, no context switching. Record and overdub in Arranger timeline feels less like a performance/jam tool and more like a deliberate action to capture longer pieces of audio/midi, which would later then be processed in the Bitwig interface, features like Count-in and the general UI lend itself to moving between interfaces, switching from the computer to the instrument and back.

    Do we bother with changing this at all? More code/options means more bugs.

    How would it work? Would it support Arranger Overdub? Only toggle the record button? Is this a Preference Toggle? Shift Mode? Attached to the Arrange/Mix orientation? (probably bad)

    question 
    opened by weskoop 5
  • Remove unnecessary

    Remove unnecessary "any" type and add missing typing info

    Just some quick review on typing, this adds some more completion.

    Just a question on the "global" object ext, why is not included in launchpad itself?
    Sorry I'm new to midi programming, there's 2 init functions the global init and launchpad init that access ext to initialize things that are part of launchpad, it seems to be the same thing.

    thanks

    opened by llgcode 5
  • Midi channels in tracks

    Midi channels in tracks

    This PR adds 16 midi input channels to tracks see issue #7. I've created other channels in Bitwig like this by filtering the expected channel with expected mask:

    ...
    ext.midiNotesIn.createNoteInput(`Note 1`, `?0????`);
    ext.midiNotesIn.createNoteInput(`Note 2`, `?1????`);
    ...
    

    It's working pretty well with the 16 channels, tested with the launchpad sequencer, note mode and chord mode. When sending notes from note mode, it will send on both in 'Notes' channel and for example 'Note 1' if channel 1 is selected in notes mode (lots of notes :-). It reveals somethings, when selected a drum track in session mode and come back to note mode, the drum rack send midi note only in the drum channel.

    Is there other channels that comes from the drum rack? I investigate.

    ext.midiDawIn.createNoteInput("Drum", "98????");
    

    Here a screenshot of what it looks like, what do you think of the naming: image

    opened by llgcode 3
  • Orange and red track colours all have the same redish colour as clips and as track colours

    Orange and red track colours all have the same redish colour as clips and as track colours

    No matter what orange or red colour you give to a track they all appear in the same red colour it seems there is no slight contrast between them, and difficult to distinguish between them. The same for the green colours.

    Is there somehow a way to add some more contrast?

    wontfix 
    opened by questionaires 2
  • Restart Script When Layout changes.

    Restart Script When Layout changes.

    The Handler for the Arrange/Mix toggle gets disconnected, so we'll need to restart the script when the Display Layout changes.

    Also disable (LEDs=Off) the Arrange/Mix Toggle for any Display Layout that doesn't support it.

    bug 
    opened by weskoop 2
  • Hide Unused Faders

    Hide Unused Faders

    Most important for when Tracks is less than 8 Total.

    • [x] Volume
    • [x] Pan
    • [x] Sends
    • [x] Devices?

    All of these will need to update if they are on the display at the time the tracks, sends or devices change.

    Devices, we will need to see if the Remote control slot is empty, I haven't looked at this yet, should be doable tho.

    bug 
    opened by weskoop 2
  • Scale and key not preserved when Launchpad's reconnected, or Bitwig restarts

    Scale and key not preserved when Launchpad's reconnected, or Bitwig restarts

    I noticed that if you set anything in the shift+note mode (scale, key and layout changer), what you've input there is not preserved. Which is super tedious to have to remember, and set, every time you launch your project.

    I actually asked Novation people if Launchpad provides any functionality that would help out with that, and this is what they gave me (regrettably, i have to post a screenshot, because the original table is formatted in some weird way which github's markdown parser absolutely despises):

    image

    Hopefully this is helpful and/or useful!

    opened by mwozniczak 0
  • Drum mode doesn't enable if the drum instrument has any note FX devices in front of it

    Drum mode doesn't enable if the drum instrument has any note FX devices in front of it

    I suspect this is because enabling the drum mode takes into consideration the first device on a track, rather than first actual instrument

    Also quick aside, is there any way of having the drum mode be toggleable regardless of whether something's a bitwig drum machine? Would be real useful e.g. with Kontakt setups

    opened by mwozniczak 0
  • Patterns knob lights up green in Session mode

    Patterns knob lights up green in Session mode

    When booting up Bitwig with launchpad connected , adding an instrument and pressing device knob to modify its parameters will lights up the patterns knob in green in session mode. Pressing the sends button will make the patterns knob light in white in session mode.

    It will happen from within session mode and note mode and chord mode and sequencer mode. But the patterns button lighten in green or white is only shown when returning to session mode then.

    Hopefully it can be corrected,

    Thanks,

    Great script by the way really loving it.

    question 
    opened by questionaires 4
  • Momentary Clip Launching

    Momentary Clip Launching

    New control surface API to launch clips with specific options. In the APC40mkII and Launchpad Pro scripts, you can:

    • Hold shift to immediately launch a clip or a scene
    • Release the clip or scene button while holding shift, to return immediately to last playing clip(s)

    Momentary clips would be awesome, but updating the API version will exclude old versions of Bitwig. At a minimum we'll push one more release without this, but then we make make future versions require 4.2, or we maintain 2 versions, less into that.

    We also use Shift + Grid for Selecting a slot, so this may need to be an optional thing, or Select only works on empty slots.

    We'll look into all of this later when 4.2 is out of beta.

    enhancement 
    opened by weskoop 5
  • Create In-Bitwig Documentation

    Create In-Bitwig Documentation

    There are some format examples in the other Bitwig factory controller scripts. Maybe just a trimmed up version of the README to provide a supplement to the Novation Manual.

    documentation good first issue 
    opened by weskoop 0
  • Print to Clip

    Print to Clip

    Pure Sysex, then the Script would need to handle translation into an actual clip.

    Not a small undertaking.

    To get start this toggles the Print to MIDI button on the launchpad:

    Enable (Midi Clip slot selected) 08:29:14.696 To Launchpad Pro MK3 LPProMK3 DAW SysEx Focusrite / Novation 9 bytes F0 00 20 29 02 0E 18 01 F7 08:29:14.697 To Launchpad Pro MK3 LPProMK3 DAW Control 1 105 1 08:29:14.697 To Launchpad Pro MK3 LPProMK3 DAW Control 1 106 16

    Disable (Midi Clip Slot de-selected): 08:29:00.691 To Launchpad Pro MK3 LPProMK3 DAW SysEx Focusrite / Novation 9 bytes F0 00 20 29 02 0E 18 00 F7 08:29:00.696 To Launchpad Pro MK3 LPProMK3 DAW Control 1 105 76 08:29:00.696 To Launchpad Pro MK3 LPProMK3 DAW Control 1 106 1

    enhancement 
    opened by weskoop 4
Releases(v1.1)
Owner
wes koop
slow wild, a punk
wes koop
Grupprojekt för kurserna 'Javascript med Ramverk' och 'Agil Utveckling'

JavaScript-med-Ramverk-Laboration-3 Grupprojektet för kurserna Javascript med Ramverk och Agil Utveckling. Utvecklingsguide För information om hur utv

Svante Jonsson IT-Högskolan 3 May 18, 2022
Sample code of UI projects for SAP BTP Launchpad Service.

SAP BTP Launchpad Service Samples This repository contains the sample projects which are discussed in blog Designing UI5 Apps for SAP Launchpad Servic

SAP Samples 14 Dec 15, 2022
PL Compass project (Launchpad)

There are so many cool ideas and project happening at PL, but it is hard to navigate and understand what is happening where and what was already done/being in progress

Russell Dempsey 2 Mar 10, 2022
Hemsida för personer i Sverige som kan och vill erbjuda boende till människor på flykt

Getting Started with Create React App This project was bootstrapped with Create React App. Available Scripts In the project directory, you can run: np

null 4 May 3, 2022
Kurs-repo för kursen Webbserver och Databaser

Webbserver och databaser This repository is meant for CME students to access exercises and codealongs that happen throughout the course. I hope you wi

null 14 Jan 3, 2023
100% web real-time audio experiment using smartphones as effect controller. (tech: Android Chrome + WebRTC + Web Audio API)

beez 100% web real-time audio experiment using smartphones as effect controller. (tech: Android Chrome + WebRTC + Web Audio API) The concept An Hive i

Gaëtan Renaudeau 34 Dec 16, 2022
Lottie / Bodymovin Controller for Remotion

Remotion Lottie Lottie / Bodymovin Controller for Remotion. Installation npm install remotion-lottie or yarn add remotion-lottie Usage Load your ani

null 18 Jul 6, 2022
Este projeto acelara o desenvolvimento com express, gerando uma estrutura completa e opções de gerar controller mode e view pelo cmd.

fast-developer-express Este projeto acelara o desenvolvimento com express, gerando uma estrutura completa e opções de gerar controller mode e view pel

Rodrino Adolfo Kupessala 1 Dec 21, 2021
Using a Leap Motion Controller from Ultraleap for finger tracking in VRChat without mods

Leap Motion Controller finger tracking for VRChat OSC Using a Leap Motion Controller from Ultraleap for finger tracking in VRChat without mods. Descri

adeleine 28 Dec 31, 2022
A first person character controller for the Three.js graphics library

charactercontroller A first person character controller for the Three.js graphics library Demo Installation npm install charactercontroller Usage impo

Malted 10 Aug 17, 2022
View component and controller of YouTube Player API, for fresh framework.

fresh-youtube View component and controller of YouTube Player API, for fresh framework. Try it now! git clone [email protected]:otiai10/fresh-youtube.git

Hiromu OCHIAI 10 Nov 2, 2022
A collection of (mostly) technical things every software developer should know about

Join our community for professional Software Developers and get more control over your life and career! Every Programmer Should Know ?? A collection o

MTDV 66.6k Jan 4, 2023
📜 33 concepts every JavaScript developer should know.

33 Concepts Every JavaScript Developer Should Know Introduction This repository was created with the intention of helping developers master their conc

Leonardo Maldonado 53.9k Dec 31, 2022
A slack bot that tell's if you and your team should deploy today

Deploy-bot-slack A slack bot developed with node.js that tell's if you and your team should deploy today in your #general slack channel. Setup Install

Eusébio Silva 1 Jul 5, 2022
You should focus the logics of your app, not DnD.

Welcome to @thaddeusjiang/react-sortable-list ?? You should focus the logics of your app, not DnD. ?? Homepage ✨ Demo Features Easy Drag & Drop sort i

蒋继发 13 Dec 7, 2022
This repository contains an Advanced Zoom Apps Sample. It should serve as a starting point for you to build and test your own Zoom App in development.

Advanced Zoom Apps Sample Advanced Sample covers most complex scenarios that you might be needed in apps. App has reference implementation for: Authen

Zoom 11 Dec 17, 2022
How often do you get asked about the gadgets or software that you use? If the answer is quite often, you should be trying show off out. Curate the list of gadgets and software and share it with your fans and followers.

Show Off - Showcase your setup! How often do you get asked about the gadgets or software that you use? If the answer is quite often, you should be try

Adithya Sreyaj 15 Nov 24, 2022
⛑️ JSON serialization should never fail

⛑️ JSON serialization should never fail. Features Prevent JSON.serialize() from: Throwing Changing types Filtering or transforming values unexpectedly

ehmicky 191 Dec 15, 2022
A JavaScript Library To Make Your Work Work Easier/Faster

Functionalty.js (beta) About ✍️ This Is A JavaScript Library To Make Your Work Easier/Faster, You Can See Functionalty.js Website From Here Project Cr

Ali-Eldeba 16 Aug 30, 2022
A JavaScript Library To Make Your Work Work Easier/Faster

Functionality.js (beta) About ✍️ This Is A JavaScript Library To Make Your Work Easier/Faster, You Can See Functionalty.js Website From Here Project C

Ali-Eldeba 9 May 25, 2022