Push 4 Bitwig

Dieses Thema im Forum "Controller & MIDI, CV…" wurde erstellt von monoklinke, 22. April 2015.

  1. monoklinke

    monoklinke nie angekommen

    Falls nicht bekannt:
    Ableton's Push funktioniert auch prima mit Bitwig.

    Jürgen Moßgraber hat dafür ein Script geschrieben.
    Hier alle Infos.

    Ein Video-Tutorial mit sechs Folgen gibt es hier.


    Ich persönlich habe den Push gerade erst bekommen und kann noch nicht viel berichten.
    Alles funktioniert, wie in den Videos beschrieben. :supi:

    Hat sonst noch jemand Erfahrungen gemacht?
     
  2. monoklinke

    monoklinke nie angekommen

    Damit ich Jürgen nicht immer per PN nerven muss, direkt eine erste Frage in die Runde:

    Ist es auch einem Laien möglich, der null Ahnung von Javascript hat, so ein Script anzupassen?

    Im Speziellen möchte ich folgendes tun:
    Die Funktionen von "rec" und "shift+rec" würde ich gern austauschen. (Den Override Mode für Clips benötige ich wesentlich häufiger als die globale Aufnahme.)
    Gleiches für "pfeil rechts/links" und "shift+pfeil rechts/links" (Ich würde gern mit nur einem Tastendruck in die nächsten acht Spuren wechseln)

    Jürgen darf natürlich auch antworten ;-)
     
  3. moss

    moss Tach

    Na, so einfach bin ich jetzt nicht genervt :)

    Äh, nein. Du kannst es aber ja trotzdem versuchen ;-)

    In view\AbstractViewExtensions.js Zeile 59 und 61 tauschen.

    In der gleichen Datei in Zeile 628 und 728 ein "!" vor "this.surface.isShiftPressed ()" einfügen.

    Hat er doch glatt gemacht.
     
  4. monoklinke

    monoklinke nie angekommen

    Also so?:

    59 <> 61
    Code:
    AbstractView.prototype.onRecord = function (event)
    {
        if (!event.isDown ())
            return;
        if (this.surface.isShiftPressed ())
            this.model.getTransport ().record ();
        else
            this.model.getTransport ().toggleLauncherOverdub ();
    };
    682 (nicht 62:cool:
    Code:
    AbstractView.prototype.scrollLeft = function (event)
    {
        var cd = this.model.getCursorDevice ();
        switch (this.surface.getCurrentMode ())
        {
            case MODE_DEVICE_PARAMS:
            case MODE_DEVICE_DIRECT:
            case MODE_DEVICE_COMMON:
            case MODE_DEVICE_ENVELOPE: 
            case MODE_DEVICE_MODULATE:
            case MODE_DEVICE_MACRO:
            case MODE_DEVICE_USER:
                if (this.surface.isShiftPressed ())
                    this.surface.getActiveMode ().selectPreviousPageBank ();
                else
                    this.surface.getActiveMode ().selectPreviousPage ();
                break;
            
            case MODE_DEVICE_PRESETS:
                break;
        
            case MODE_DEVICE_LAYER:
                if (this.surface.isShiftPressed ())
                    cd.previousLayerOrDrumPadBank ();
                else
                    cd.previousLayerOrDrumPad ();
                break;
                
            default:
                var tb = this.model.getCurrentTrackBank ();
                var sel = tb.getSelectedTrack ();
                var index = sel == null ? 0 : sel.index - 1;
                if (index == -1 || !this.surface.isShiftPressed ())
                {
                    if (!tb.canScrollTracksUp ())
                        return;
                    tb.scrollTracksPageUp ();
                    var newSel = index == -1 || sel == null ? 7 : sel.index;
                    scheduleTask (doObject (this, this.selectTrack), [ newSel ], 75);
                    return;
                }
                this.selectTrack (index);
                break;
        }
    };
    728
    Code:
    AbstractView.prototype.scrollRight = function (event)
    {
        var cd = this.model.getCursorDevice ();
        switch (this.surface.getCurrentMode ())
        {
            case MODE_DEVICE_PARAMS:
            case MODE_DEVICE_DIRECT:
            case MODE_DEVICE_COMMON:
            case MODE_DEVICE_ENVELOPE: 
            case MODE_DEVICE_MODULATE:
            case MODE_DEVICE_MACRO:
            case MODE_DEVICE_USER:
                if (this.surface.isShiftPressed ())
                    this.surface.getActiveMode ().selectNextPageBank ();
                else
                    this.surface.getActiveMode ().selectNextPage ();
                break;
            
            case MODE_DEVICE_PRESETS:
                break;
                
            case MODE_DEVICE_LAYER:
                if (this.surface.isShiftPressed ())
                    cd.nextLayerOrDrumPadBank ();
                else
                    cd.nextLayerOrDrumPad ();
                break;
                
            default:
                var tb = this.model.getCurrentTrackBank ();
                var sel = tb.getSelectedTrack ();
                var index = sel == null ? 0 : sel.index + 1;
                if (index == 8 || !this.surface.isShiftPressed ())
                {
                    if (!tb.canScrollTracksDown ())
                        return;
                    tb.scrollTracksPageDown ();
                    var newSel = index == 8 || sel == null ? 0 : sel.index;
                    scheduleTask (doObject (this, this.selectTrack), [ newSel ], 75);
                    return;
                }
                this.selectTrack (index);
                break;
        }
    };
    
    Oder mit Leerzeichen? "! this"
     
  5. moss

    moss Tach

    Sollte passen (Leerzeichen egal).
     
  6. monoklinke

    monoklinke nie angekommen

    Probiere ich morgen aus.
    Danke.
     
  7. monoklinke

    monoklinke nie angekommen

    :supi: :supi: :supi:

    Für mich ist der Workflow so besser. Insbesondere der Bankwechsel in 8er Schritten.

    Jetzt muss Bitwig noch das "External Instrument" pimpen, dann bin ich glücklich.
    (Effectslot und CC > Makro)
     

Diese Seite empfehlen