Skip to content

About

Universal Launchpad Sampler is a browser-based audio performance tool designed for Novation Launchpad hardware.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 

Repository files navigation

Universal Launchpad Sampler V1.2.0

A browser-based sampler for Novation Launchpad controllers. Load up to 64 audio samples, trim and shape them, and play them live from the Launchpad grid with LED feedback. Everything runs locally in the browser: no installation, no server-side processing, and no audio leaves your computer.

▶ Live demo: bmpydev.github.io/universal-launchpad-sampler. It is served over HTTPS, so Web MIDI works there without a local server.


Contents

  1. Quick Start
  2. Supported Hardware
  3. Screen Layout
  4. Pad Controls
  5. Playing from the Launchpad
  6. Master Section
  7. Saving, Loading & Relinking
  8. LED Feedback
  9. Requirements & Running a Local Server
  10. Troubleshooting

1. Quick Start

  1. Connect the Launchpad before opening the page.
  2. Open the live demo, or run it locally: start a web server in the folder containing index.html (see section 9):
    python3 -m http.server 8000
    
  3. If running locally, open http://localhost:8000 in your browser.
  4. Select your Launchpad model and click INITIALIZE.
  5. Allow MIDI access when the browser asks. Newer models also need SysEx permission.
  6. MK1 / S / Mini only: press the lit SESSION button once. The log shows Pads active. (see section 10 for why).
  7. Drag audio files onto the pads, or click a pad's file name to open a file dialog.

2. Supported Hardware

At startup, choose the group that matches your device:

Setup option Devices Grid notes Right-hand arrow buttons
MK1 / S / Mini (MK1, MK2) Launchpad (original), Launchpad S, Launchpad Mini MK1/MK2 row × 16 + column (0–119) Notes 8, 24, 40 … 120
MK2 / Pro / X / Mini MK3 / Pro MK3 Launchpad MK2, Pro, X, Mini MK3, Pro MK3 11–88 (bottom row 11–18, top row 81–88) Notes (MK2) or CCs (programmer mode) 19–89
  • MK1 group: on connect, the device is reset and set to the X-Y layout. No special permissions are needed.
  • MK2 / Pro / X / MK3 group: on connect, the app sends SysEx messages that switch the device into Session layout (MK2) or Programmer mode (Pro, X, MK3). This requires SysEx permission in the browser. If you deny it, the app still runs, but you must switch the device into the correct mode by hand.
  • You can plug in or reconnect the Launchpad after initialization. It is detected automatically.
  • Pad numbers on screen (1–64) run left to right, top to bottom, matching the physical grid.

3. Screen Layout

From top to bottom:

  1. Toolbar: SAVE CONFIG, LOAD CONFIG, RELINK, STOP ALL.
  2. Log line: the green line starting with >. It always shows the latest status message, such as connection state, errors, incoming MIDI, or which row was launched.
  3. Master bar: master volume, level meter, and limiter (section 6).
  4. Pad grid: 8 × 8 pads, one per Launchpad button.

4. Pad Controls

Each pad is an independent sampler.

Header

  • Pad number and the MIDI note it listens to, for example Pad 1 (#0).
  • [L] / [R] light up when Loop or Reverse is active.
  • ⏏ Eject: stops the pad, removes the sample, and resets all pad settings. It is greyed out when the pad is empty.

Waveform

  • Trim handles: drag the green (start) and red (end) lines to set the playback region. Times are shown below the waveform.
  • Seek: click anywhere inside the region to set the playback position. This also works while the sample is playing.
  • Changing trim, loop, or reverse during playback keeps the current position.

File name

  • Click it to load a file, or drag and drop an audio file anywhere on the pad. Supported formats depend on the browser. WAV, MP3, OGG, and FLAC usually work.
  • An orange file name means the config knows this sample but the audio is not loaded yet. Use RELINK.

Sliders & buttons

Control Function
VOL Pad volume, 0.00–1.50
PIT Playback speed / pitch, 0.20×–3.00×. Changes apply live while playing.
LOOP Repeats the trimmed region endlessly
REV Plays the sample backwards
Mode (TRIG / GATE / TGL) How the pad reacts to Launchpad presses, see below
▶ / ❚❚ Play / pause with the mouse. Pause keeps the position.
STOP Stops the pad and returns to the start point

Playback modes

The mode button cycles through three modes. They apply to presses on the Launchpad; the on-screen buttons always work as play/pause and stop.

Mode Colour Behaviour
TRIG violet Every press restarts the sample from the start point (finger drumming)
GATE yellow Plays only while the button is held, and stops on release
TGL green The first press starts the sample, the second press stops it

5. Playing from the Launchpad

  • Loaded pad: plays according to its mode (TRIG / GATE / TGL).
  • Empty pad: stops all pads in its column, like a clip-stop slot in Ableton Live.
  • Right-hand arrow buttons (row launch): start a whole row, like launching a scene in Ableton Live.
    • Every loaded pad in that row restarts.
    • An empty slot in the row stops its column.
    • GATE pads play only while the arrow is held.
  • STOP ALL (on screen) stops every pad immediately.

Volume tip for row launches: eight pads at VOL 1.0 add up to far more than full scale. The limiter catches this but has to reduce the level heavily, which can sound like "pumping". For rows with many pads, lower the pad volumes (around 0.5–0.7) or the master volume.


6. Master Section

The bar between the log line and the pads controls the summed output of all pads.

  • VOL: master volume, 0.00–1.50.
  • Meter: output level. Green is normal, yellow is loud (from about 70 %), red is close to clipping.
  • LIMITER: on by default. It prevents distortion when many pads play at once. Click to switch it off.
  • GR (gain reduction): lights red while the limiter is actively reducing the level. Short flashes are fine. If it stays lit constantly, turn the volumes down.

The limiter catches most overloads but is not a perfect brickwall limiter. Extreme peaks can still distort slightly.


7. Saving, Loading & Relinking

For security reasons, browsers cannot store file paths or read files from your disk on their own. A config therefore stores the settings only, never the audio itself.

  • 💾 SAVE CONFIG: downloads a .json file (sampler_config_YYYY-MM-DD_HH-MM.json) with all pad settings (file name, volume, pitch, trim, loop, reverse, mode) plus master volume and limiter state.
  • 📂 LOAD CONFIG: restores all pads from a config file.
    • Pads that are not in the config are cleared.
    • Pads whose sample is already loaded under the same file name keep their audio.
    • The log tells you how many pads still need audio.
  • 🔗 RELINK: opens a file dialog. Select all files in your sample folder at once (Ctrl+A / Cmd+A). Each file is assigned to every pad that uses that file name. The log reports how many files were connected and how many pads are still missing audio.

Notes:

  • Files are matched by file name only. Two different files with the same name (for example kick.wav from two folders) are treated as the same sample. Rename one of them before saving the config.
  • Configs are pad-position based (1–64). A config saved with one Launchpad model also works with another.
  • Configs from V1.0.0 still load and are converted automatically.
  • Config files are validated on load. Invalid or manipulated values are replaced with safe defaults.
  • Because the audio is not stored, the browser asks for confirmation before you close or reload the page while samples are loaded.

8. LED Feedback

State MK1 / S / Mini MK2 / Pro / X / MK3
Empty off off
Loaded amber red
Playing green green
Paused yellow yellow
  • Right-hand arrow buttons show the state of their row: off when the row is empty, the "loaded" colour when something is loaded, and the "playing" colour when at least one pad in the row is playing.
  • SESSION button (MK1 group only): lights amber after connecting until it is pressed once (see section 10).
  • When the page is closed, the Launchpad LEDs are switched off.

9. Requirements & Running a Local Server

Browser

  • Chrome, Edge, Opera, or Firefox with Web MIDI and Web Audio support.
  • Safari does not support Web MIDI. The sampler works there with the mouse only.
  • Firefox asks for MIDI permission the first time.

Why a local server?

Browsers only enable Web MIDI on secure pages. Depending on the browser and system, especially Firefox on Linux, opening index.html by double-click (file://…) is not enough. The log then shows Web MIDI unavailable: ….

The live demo on GitHub Pages runs over HTTPS and does not need any of this. A local server is only needed when you run your own copy.

Start a local server in the folder containing index.html:

python3 -m http.server 8000

On Windows, the command may be py -m http.server 8000 or python -m http.server 8000.

Then open http://localhost:8000.

Use localhost or 127.0.0.1, not your network IP such as http://192.168.x.x:8000. Pages opened via a network IP are not considered secure, and Web MIDI is disabled.

Audio

Audio starts only after a user action (the INITIALIZE click). This is a browser rule.


10. Troubleshooting

Pads do nothing until a top button is pressed (MK1 / S / Mini) This is expected and comes from the hardware. The MK1 sends the "this is a note" status byte only once and omits it for following notes ("MIDI running status"). After the page connects, the browser or operating system has not seen that status byte and discards the incoming notes. A message of a different type, such as pressing any top-row button, makes the Launchpad send a full message again, and from then on everything works. The app lights the SESSION button as a reminder. Press it once after every initialization.

Log shows Web MIDI unavailable The page was opened as a file or via a network IP, or the browser has no Web MIDI. Use a local server and http://localhost:8000 (section 9).

Log shows No Launchpad found

  • Check the USB connection. You can plug the Launchpad in while the page is open.
  • Close other software that may be using the device, such as a DAW or another browser tab.
  • Make sure you allowed MIDI access in the browser.

Pressing a pad shows no pad mapped to this note The wrong device group was selected at startup, or the device is in a different layout. Reload the page and choose the other option. For the newer models, allow SysEx so the app can set the correct mode.

SysEx was denied (newer models) The log mentions it. Either reload the page and allow SysEx, or switch the device into Session (MK2) or Programmer mode (Pro / X / MK3) manually.

No sound

  • Check that the browser tab is not muted and that INITIALIZE was clicked.
  • Check that the master volume is not at 0.

Distortion when many pads play Make sure LIMITER is on, and lower the pad or master volumes until GR only flashes occasionally.

Relink did not find a file The file name on disk must match the name stored in the config exactly, including upper/lower case and extension. Select all files of the sample folder in one go.

A file could not be loaded The log shows … is not a readable audio file. The format is not supported by your browser. Convert it to WAV or MP3.


See CHANGELOG.md for the version history.

About

Universal Launchpad Sampler is a browser-based audio performance tool designed for Novation Launchpad hardware.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Contributors

Languages