asked Jan 31 '15 at 12:05 by tp2750 (21)

I'm using an ESI Midimate II to connect my Technics SX-PX222 electrical piano as a midi device under Ubuntu 14.10. It works well and Bitwig can easily use it. However, the keys are quite heavy, and the velocity signal over midi is never more than about 70. This has the effect, that I'm only playing the lower 2 banks of a multisample instrument like Dr. Power's Wurlitzer. My question is how to most easily be able to play the full dynamic range of a multisample device in this setup.

One option is to edit the device as described in the manual from page 310. Then I can change the velocity setting under Range. However, it looks like I have to do this separately for every single sample in the instrument, which is quite tedious. Is there a way to select all samples in a "row" and adjust the velocity parameters for all of them at the same time?

Alternatively I expect I can write a control surface script and multiply the velocity value by 2 in that.

Or is there a "midi sensitivity" setting I have not yet found?

Replying to my own question.

I managed to write a controller script based on the example here:

I just copied Sean Canton's lines into the generic midi controller template in the installation. It can probably be done simpler, but this worked for me.


host.defineController("Technics", "SX-PX222", "1.0", "f2a8508c-a93e-11e4-9610-0090f5eb675b", "Thomas Poulsen"); host.defineMidiPorts(1, 0);

var LOWEST_CC = 1; var HIGHEST_CC = 119;

function init() { host.getMidiInPort(0).setMidiCallback(onMidi); generic = host.getMidiInPort(0).createNoteInput("", "??????"); generic.setShouldConsumeEvents(false);

// From

var noteInput = host.getMidiInPort(0).createNoteInput("Technics SX-PX222");

inputVel = [ 0, 1, 16, 25, 40, 90, 127 ]; // x
transVel = [ 0, 1, 48, 60, 80, 127, 127 ]; // y

var output = [];
for ( slope = 0, i = 0; i < 128; i++){
//Y = Y1 + ( ( Y2 - Y1) ( X - X1 ) / ( X2 - X1) )
y = transVel[0] +
    ( ((transVel[1] - transVel[0]) * ( i - inputVel[0] )) /
output[i] = Math.min(Math.round(y), 127);
if ( inputVel[1] < i ){


// Make CCs 1-119 freely mappable userControls = host.createUserControlsSection(HIGHEST_CC - LOWEST_CC + 1);

for(var i=LOWEST_CC; i<=HIGHEST_CC; i++) { userControls.getControl(i - LOWEST_CC).setLabel("CC" + i); } }

function onMidi(status, data1, data2) { if (isChannelController(status)) { if (data1 >= LOWEST_CC && data1 <= HIGHEST_CC) { var index = data1 - LOWEST_CC; userControls.getControl(index).set(data2, 128); } }

function exit() { }


answered Feb 07 '15 at 16:53 by tp2750 (21)

I know it's been 3 years since this question had been asked, however, maybe someone would find it useful. I work in BWS 2.4.3 now and it has a devicee called "Note Velocity". It's like a compressor/expander for MIDI notes, so it can solve your problem. I don't know when exactly this device was added to BWS, but I believe it's been around for some time. It's very handy when you don't want to mess with tediously prepared multisamples or when you don't want to change your MIDI keyboard's velocity curve. Simply add a "Note Velocity" device in front of your virtual instrument and voila, you have perfect control over dynamics.


answered Dec 18 '18 at 10:20 by paranoid_android (21)

How to use this script? Can you just get us some brief instructions? happy wheels free.


answered Apr 18 at 18:57 by angrycow (11)

I have it in a file called "Technics PX222.control.js" in the folder "Bitwig Studio/Controller Scripts". Then I can use it from the Controller settings.

  — (Apr 19 at 17:44) tp2750

This is one of the best and world famous online tiles based game no pay money and sign up required in this website,so just join and play.


answered Mar 07 at 08:15 by tyron099 (0)

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

Markdown Basics

  • *italic* or __italic__
  • **bold** or __bold__
  • link:[text]( "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported



Asked: Jan 31 '15 at 12:05

Seen: 2,909 times

Last updated: Apr 19 at 17:44