SparkLE for Bitwig

Post Reply New Topic
RELATED
PRODUCTS

Post

I think SparkLE is a pretty fun controller and I'd like to integrate it with the Bitwig Drum Machine device.

I'm trying to wrap my head around the dev environment for Bitwig...so far I'm getting CC data from the controller but I haven't figured out:
  • * how to properly call the Transport to do record/stop/playpause.
    * how to capture note data for processing
I have the Beatstep4Bitwig controller script as reference but I'm not really sure what I'm doing yet. I read thru the Control Surface Scripting guide and have the API reference for 1.1.10 open.

I downloaded the Framework4Bitwig and have everything set up in IntellJ IDEA and code completion.

If someone can point me in the right direction I'd be grateful. I'm not sure what other code to look at for examples. I think SparkLE is a pretty fun controller and I'd like to integrate it with the Bitwig Drum Machine device.

If anyone has a SparkLE and wants to help, I added all the code to a repository at:
https://github.com/SoundGoddess/SparkLE4Bitwig

Code: Select all

/**
 * Created by SoundGoddess (http://HathorsLove.com) on 8/20/2015.
 * Licensed under LGPLv3 - http://www.gnu.org/licenses/lgpl-3.0.txt
 */

var SPARKLE_KNOB_BIG = 19;
var SPARKLE_KNOB_BIG_CLICK = 90;
var SPARKLE_KNOB_TEMPO = 10;
var SPARKLE_KNOB_VOLUME = 7;
var SPARKLE_KNOB_DIVIDE = 12;
var SPARKLE_KNOB_MOVE = 13;
var SPARKLE_KNOB_MOVE_CLICK = 80;
var SPARKLE_KNOB_P1 = 16;
var SPARKLE_KNOB_P2 = 17;
var SPARKLE_KNOB_P3 = 18;

var SPARKLE_TRANSPORT_REC = 48;
var SPARKLE_TRANSPORT_STOP = 49;
var SPARKLE_TRANSPORT_PLAY = 50;
var SPARKLE_TRANSPORT_REWIND = 52;
var SPARKLE_TRANSPORT_FF = 53;

var SPARKLE_PAD_SELECT = 121;
var SPARKLE_PAD_MUTE = 120;
var SPARKLE_PAD_SOLO = 122;
var SPARKLE_PAD_GLOBAL_FILTER = 66;
var SPARKLE_PAD_SLICER = 67;
var SPARKLE_PAD_ROLLER = 68;
var SPARKLE_PAD_INSTRUMENT_FILTER = 69;
var SPARKLE_PAD_SEND12 = 70;
var SPARKLE_PAD_PAN = 71;
var SPARKLE_PAD_PROJ = 78;
var SPARKLE_PAD_KIT = 77;
var SPARKLE_PAD_INSTR = 76;
var SPARKLE_PAD_COPY = 24;
var SPARKLE_PAD_ERASE = 25;
var SPARKLE_PAD_LOOP_ON = 26;

var SPARKLE_PADSHIFT = 123;
var SPARKLE_PAD_1 = 0;
var SPARKLE_PAD_2 = 0;
var SPARKLE_PAD_3 = 0;
var SPARKLE_PAD_4 = 0;
var SPARKLE_PAD_5 = 0;
var SPARKLE_PAD_6 = 0;
var SPARKLE_PAD_7 = 0;
var SPARKLE_PAD_8 = 0;


var SPARKLE_PAD_SEQ_1 = 0;
var SPARKLE_PAD_SEQ_2 = 0;
var SPARKLE_PAD_SEQ_3 = 0;
var SPARKLE_PAD_SEQ_4 = 0;
var SPARKLE_PAD_SEQ_5 = 0;
var SPARKLE_PAD_SEQ_6 = 0;
var SPARKLE_PAD_SEQ_7 = 0;
var SPARKLE_PAD_SEQ_8 = 0;
var SPARKLE_PAD_SEQ_9 = 0;
var SPARKLE_PAD_SEQ_10 = 0;
var SPARKLE_PAD_SEQ_11 = 0;
var SPARKLE_PAD_SEQ_12 = 0;
var SPARKLE_PAD_SEQ_13 = 0;
var SPARKLE_PAD_SEQ_14 = 0;
var SPARKLE_PAD_SEQ_15 = 0;
var SPARKLE_PAD_SEQ_16 = 0;

var SPARKLE_BUTTONS_ALL = [];

function Sparkle (output, input) {
    AbstractControlSurface.call(this, output, input, SPARKLE_BUTTONS_ALL);
}

Sparkle.prototype = new AbstractControlSurface ();


Sparkle.prototype.sendMidiEvent = function (status, data1, data2)
{
    this.noteInput.sendRawMidiEvent (status, data1, data2);

};


Sparkle.prototype.handleNotes = function (index,pressed,note,velocity){

    println("Note:" + index + ":" + pressed + ":" + note + ":" + velocity);

};


Sparkle.prototype.handleEvent = function (cc, value){

    switch(cc){

        case SPARKLE_TRANSPORT_REC:
            Transport.record();
//            this.surface.transport.record();
            println("record");
            break;

        case SPARKLE_TRANSPORT_STOP:
//            this.surface.transport.stop();
            println("stop");
            break;

        case SPARKLE_TRANSPORT_PLAY:
//            this.surface.transport.togglePlay();
            println("toggle play");
            break;

        case SPARKLE_TRANSPORT_REWIND:
 //           Transport.rewind();
            println("rewind");
            break;

        case SPARKLE_TRANSPORT_FF:
 //           Transport.fastForward();
            println("ffwd");
            break;

        default:

            println("CC:" + cc + ":" + value);
            break;

    }



};
Last edited by SoundGoddess on Fri Aug 21, 2015 8:44 am, edited 1 time in total.
~ good luck ~
~ re~member to do good in a spirit of love, unity, compassion, and kindness ~

Post

Keith McMillen has written some tutorials about controller scripts for Bitwig which you may find useful:

http://www.keithmcmillen.com/category/b ... ig-studio/

Post

thank you :tu:
~ good luck ~
~ re~member to do good in a spirit of love, unity, compassion, and kindness ~

Post

Ok, I got transport working, now just to figure out the note capture :)
~ good luck ~
~ re~member to do good in a spirit of love, unity, compassion, and kindness ~

Post

SoundGoddess wrote:Ok, I got transport working, now just to figure out the note capture :)
We're working on it. :)

Mike
Michael Schmalle
http://www.teotigraphix.com
Surfing on sine waves

Maschine4Bitwig - Studio, MK2, MikroMK2, MK1
http://www.teotigraphix.com/bitwig/maschine

Post

I figured out how to turn the LEDs on and off for everything, but the controller has to be in Spark mode, haven't figured out how to do it in MIDI mode. Which means that you'd have to delete the device to use Spark software and re-add it to use with Bitwig.
~ good luck ~
~ re~member to do good in a spirit of love, unity, compassion, and kindness ~

Post Reply

Return to “Controller Scripting”