Take back control of your electronic setup with our small, smart music tools: The RK002 Smart MIDI Processor cable, RK006 all-connecting music hub and RK008 Realtime MIDI Recorder!

Retrokits / RK-002 MIDI Processing? Just DUY it!

RKKeyBuf -generic keyboard buffer

The RKKeyBuf class can be used to create keyboard buffers. Example used in the ‘Realtime note transpose’ DUY

#include "RKKeyBuf.h"

// hold up to 16 notes
RKKeyBuf keybuffer(16);

// handle note on
boolean RK002_onNoteOn(byte channel, byte key, byte velocity)
{
  // set new note offset:
  note_offset = key - RK002_paramGet(BASEKEY);

  // retrigger @ transpose?
  if (RK002_paramGet(RETRIGGER))
  {
    for (int i=0; i<keybuffer.size(); i++)
    {
      RKKeyBufEntry *entry = keybuffer[i];

      // 'userval' contains transposed key:
      RK002_sendNoteOff(trans_chn, entry->userval, 64);

      // update 'userval' (=transposed key)
      entry->userval = clamp(entry->key + note_offset);

      // new 'userval' contains updated transposed key:
      RK002_sendNoteOn(trans_chn, entry->userval, entry->vel);
    }
  }

  // compute transposed_key:
  byte transposed_key = (key + note_offset);

  // (try to) store in keybuffer, store transposed_key as 'userval'
  if (keybuffer.insert(key,velocity,transposed_key))
  {
    RK002_sendNoteOn(trans_chn, transposed_key, velocity);
  }

  return false; // block original key
}

//
// handle note off
//
boolean RK002_onNoteOff(byte channel, byte key, byte velocity)
{
  // (try to) find inside keybuffer:
  RKKeyBufEntry *entry = keybuffer.findByKey(key);
  if (entry)
  {
    // 'userval' contains the transposed_key number
    RK002_sendNoteOff(trans_chn, entry->userval, 64);

    // remove from keybuffer
    keybuffer.remove(key);
  }

  return false; // block original key
}

Shopping cart0
There are no products in the cart!
Continue shopping
0