open-audiovisual
Search GitHub

Generic layout

Generic 16 pads

Generic 16 pads is a generic layout, not a product: 16 pads. Its messages are conventions rather than one maker's chart. Pick it for a controller that is not in the library, press Learn and move your controls in order.

  • Generic layout
Kind
generic layout
Controls
16 controls
Messages
Note
MIDI channels
10
LED feedback
none sent
Signals
midi/g16p/…
Port name matches
none: assign by hand, then learn
16 PADS

Play Generic 16 pads on screen Full screen ↗ Raw JSON ↗ All controllers

Drag knobs and faders · tap pads and keys · or plug the real one in and press Connect. Nothing is sent anywhere unless you add a MIDI out.

MIDI implementation

Every control of Generic 16 pads and the message it sends

Generated from the profile file, so it is the same table the on-screen controller plays. Channels are 1–16; numbers are real MIDI numbers.

MIDI implementation of Generic 16 pads
ControlTypeMessageChNumberSignalLED feedbackVerified
1 pad1 pad Note · velocity 10 36 · C2 midi/g16p/pad1 — yes
2 pad2 pad Note · velocity 10 37 · C#2 midi/g16p/pad2 — yes
3 pad3 pad Note · velocity 10 38 · D2 midi/g16p/pad3 — yes
4 pad4 pad Note · velocity 10 39 · D#2 midi/g16p/pad4 — yes
5 pad5 pad Note · velocity 10 40 · E2 midi/g16p/pad5 — yes
6 pad6 pad Note · velocity 10 41 · F2 midi/g16p/pad6 — yes
7 pad7 pad Note · velocity 10 42 · F#2 midi/g16p/pad7 — yes
8 pad8 pad Note · velocity 10 43 · G2 midi/g16p/pad8 — yes
9 pad9 pad Note · velocity 10 44 · G#2 midi/g16p/pad9 — yes
10 pad10 pad Note · velocity 10 45 · A2 midi/g16p/pad10 — yes
11 pad11 pad Note · velocity 10 46 · A#2 midi/g16p/pad11 — yes
12 pad12 pad Note · velocity 10 47 · B2 midi/g16p/pad12 — yes
13 pad13 pad Note · velocity 10 48 · C3 midi/g16p/pad13 — yes
14 pad14 pad Note · velocity 10 49 · C#3 midi/g16p/pad14 — yes
15 pad15 pad Note · velocity 10 50 · D3 midi/g16p/pad15 — yes
16 pad16 pad Note · velocity 10 51 · D#3 midi/g16p/pad16 — yes

LED feedback is not modeled for this one yet, so OAV does not light its LEDs. Every control still plays and sends its message.

Sources

  • convention open-audiovisual generic layoutNo device behind it: default messages are a convention (knobs CC 70–77 like many 8-knob pads, faders CC 20–27 in the undefined range, pads GM drum notes from 36 on channel 10). Plug an unknown controller in, pick this layout, and auto-learn binds its messages in the order you move the controls.

Port names it recognises

Generic layouts never match a port by themselves: assign one by hand, then learn.

Signals

Every control publishes midi/g16p/<control> (0..1), plus /raw; pads add /hit, encoders /delta, keys /on /off and n<note>; the last control touched is midi/g16p/last.

Use it

Use Generic 16 pads in your own work

  1. Embed it with one line

    No import map, no build step. Change layout, add hardware="ask" for a Connect button.

    html
    <script type="module" src="https://openaudiovisual.com/packages/midi/element.js"></script>
    <oav-controller profile="generic-16p" readout></oav-controller>
  2. Or as an iframe

    For places that only take an iframe. Every event arrives as a postMessage.

    html
    <iframe src="https://openaudiovisual.com/embed/controller/?profile=generic-16p&readout"
            width="720" height="742" style="border:0;max-width:100%" allow="midi"
            title="Generic 16 pads"></iframe>
    <script>
      // every control the visitor plays arrives here
      addEventListener('message', (e) => {
        if (e.data?.source !== 'openav' || e.data.type !== 'control') return;
        console.log(e.data.detail.signal, e.data.detail.value);
      });
    </script>
  3. Send it to Ableton, TouchDesigner or Resolume

    What you play on screen leaves as real MIDI on the IAC bus (macOS) or a loopMIDI port (Windows). The steps are on the catalog page.

    html
    <!-- what you play on this controller → the IAC bus (macOS) → Ableton, TouchDesigner, Resolume -->
    <script type="module" src="https://openaudiovisual.com/packages/midi/element.js"></script>
    <oav-controller profile="generic-16p" midi-out="IAC" readout></oav-controller>
    <!-- Windows: midi-out="loopMIDI" · let the visitor pick a port: midi-out="ask" -->

    macOS: Audio MIDI Setup → MIDI Studio → IAC Driver → “Device is online”. Windows 11: the built-in Windows MIDI Services have a loopback (not tested by us); older Windows: install loopMIDI, add a port and use midi-out="loopMIDI".

In p5.js, with one line

The one-line injection names knobs, faders and pads by their order in this layout, the order of the table above. Add ?profile=generic-16p to make the on-screen controller this one.

javascript
document.head.prepend(Object.assign(document.createElement('script'), { src: 'https://openaudiovisual.com/p5/oav-p5.js?profile=generic-16p' }));
In your sketchControlMessage
pad11 pad1Note 36 · C2 · Ch 10
pad22 pad2Note 37 · C#2 · Ch 10
pad33 pad3Note 38 · D2 · Ch 10
pad44 pad4Note 39 · D#2 · Ch 10
pad55 pad5Note 40 · E2 · Ch 10
pad66 pad6Note 41 · F2 · Ch 10
pad77 pad7Note 42 · F#2 · Ch 10
pad88 pad8Note 43 · G2 · Ch 10
pad99 pad9Note 44 · G#2 · Ch 10
pad1010 pad10Note 45 · A2 · Ch 10
pad1111 pad11Note 46 · A#2 · Ch 10
pad1212 pad12Note 47 · B2 · Ch 10
pad1313 pad13Note 48 · C3 · Ch 10
pad1414 pad14Note 49 · C#3 · Ch 10
pad1515 pad15Note 50 · D3 · Ch 10
pad1616 pad16Note 51 · D#3 · Ch 10
p5.js sketch
function draw() {
  background(20);
}

function padPressed(n, velocity) {      // n = 1…16, as in the table
  circle(random(width), random(height), velocity * 100);
}

This is a generic layout. Its numbering applies when you choose it as the on-screen controller; an unknown real controller numbers its knobs in the order you turn them.

The whole p5.js page →

Missing

Is your controller not here?

Open an issue with the brand and model, whether you have the unit and a link to the manual. Or write the profile yourself: it is one JSON file.

GitHub

Is something in this data wrong?

Every number on this page comes from one JSON file. If it disagrees with your unit or the manual, tell us which firmware you checked and we fix the file.