Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,9 @@ public ClipSceneCursor(final ControllerHost host, final NavigationState navigati
sceneBank = singleTrackBank.sceneBank();
sceneBank.cursorIndex().markInterested();
sceneBank.setIndication(false);
singleTrackBank.canScrollChannelsUp().addValueObserver(v -> navigationState.setCanGoTrackLeft(v));
singleTrackBank.canScrollChannelsDown().addValueObserver(v -> navigationState.setCanGoTrackRight(v));
sceneBank.canScrollBackwards().addValueObserver(v -> navigationState.setCanScrollSceneUp(v));
sceneBank.canScrollForwards().addValueObserver(v -> navigationState.setCanScrollSceneDown(v));
singleTrackBank.canScrollChannelsDown().addValueObserver(navigationState::setCanGoTrackRight);
sceneBank.canScrollBackwards().addValueObserver(navigationState::setCanScrollSceneUp);
sceneBank.canScrollForwards().addValueObserver(navigationState::setCanScrollSceneDown);
}

public CursorTrack getCursorTrack() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

public class DataStringUtil {

Expand All @@ -13,7 +12,7 @@ public static String toString(final byte[] data) {
for (final byte d : data) {
values.add("%02x".formatted(d));
}
return values.stream().collect(Collectors.joining());
return String.join("", values);
}

public static byte[] toTempo10nsData(final double tempo) {
Expand All @@ -31,7 +30,6 @@ public static double toTempo(final int[] data) {
for (int i = 0; i < 5; i++) {
nsPerMinute |= (long) data[i] << (i * 7);
}
final double bpm = TEN_NS_PER_MINUTE / nsPerMinute;
return bpm;
return TEN_NS_PER_MINUTE / nsPerMinute;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,8 @@ public void init() {
final MidiIn midiIn2 = host.getMidiInPort(1);
final NoteInput noteInput =
midiIn2.createNoteInput(
"MIDI", "80????", "90????", "D0????", "E0????", "B001??", "B040??", "B042??", "B1????");
"MIDI", "80????", "90????", "D0????", "E0????", "B001??", "B040??", "B042??",
"B1????");
noteInput.setShouldConsumeEvents(true);

initTrackBank();
Expand Down Expand Up @@ -115,7 +116,7 @@ protected void initNavigation() {

final ModeButton knobPressed = controlElements.getKnobPressed();
final ModeButton knobShiftPressed = controlElements.getKnobShiftPressed();
mainLayer.bindPressed(knobPressed.getHwButton(), () -> clipSceneCursor.launch());
mainLayer.bindPressed(knobPressed.getHwButton(), clipSceneCursor::launch);
mainLayer.bindPressed(knobShiftPressed.getHwButton(), () -> handle4DShiftPressed(rootTrack, cursorTrack));
}

Expand All @@ -125,11 +126,6 @@ protected void initJogWheel() {
mainLayer.bind(fourKnob, midiProcessor.createIncAction(this::handleTransportScroll));
}

@Override
public void exit() {
midiProcessor.exit();
}

@Override
public void flush() {
midiProcessor.doFlush();
Expand All @@ -148,9 +144,7 @@ protected void setUpChannelControl(final int index, final Track channel) {
});
channel.exists().markInterested();

channel.addIsSelectedInMixerObserver(v -> {
midiProcessor.sendValueCommand(ValueCommand.SELECT, index, v);
});
channel.addIsSelectedInMixerObserver(v -> midiProcessor.sendValueCommand(ValueCommand.SELECT, index, v));
channel.mute().addValueObserver(v -> midiProcessor.sendValueCommand(ValueCommand.MUTE, index, v));
channel.solo().addValueObserver(v -> midiProcessor.sendValueCommand(ValueCommand.SOLO, index, v));
channel.arm().addValueObserver(v -> midiProcessor.sendValueCommand(ValueCommand.ARM, index, v));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,6 @@ public abstract class KompleteKontrolExtension extends ControllerExtension {
static final String KONTAKT_8_VST3_ID = "5653544E694B386B6F6E74616B742038";
static final String MASCHINE_3_VST3_ID = "5653544E694D336D61736368696E6520";

private static final DateTimeFormatter DF = DateTimeFormatter.ofPattern("hh:mm:ss SSS");

protected HardwareSurface surface;
private final List<RelativeHardwareControlBinding> knobBindings = new ArrayList<>();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,6 @@ public void setUpChannelDisplayFeedback(final int index, final Track channel) {

@Override
protected void initNavigation() {
KompleteKontrolExtension.println(" INIT NAVIGATION");
final Clip cursorClip = getHost().createLauncherCursorClip(8, 128);
final Clip arrangerClip = getHost().createArrangerCursorClip(8, 128);

Expand Down Expand Up @@ -127,20 +126,13 @@ protected void initNavigation() {
.setValueSupplier(() -> cursorTrack.canHoldNoteData().get() && cursorClip.exists().get());
final ModeButton knobPressed = controlElements.getKnobPressed();
final ModeButton knobShiftPressed = controlElements.getKnobShiftPressed();
mainLayer.bindPressed(knobPressed.getHwButton(), () -> clipSceneCursor.launch());
mainLayer.bindPressed(knobPressed.getHwButton(), clipSceneCursor::launch);
mainLayer.bindPressed(knobShiftPressed.getHwButton(), () -> handle4DShiftPressed(rootTrack, cursorTrack));
}


@Override
public void exit() {
midiProcessor.exit();
}

@Override
public void flush() {
midiProcessor.doFlush();
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import com.bitwig.extension.controller.api.ScrollbarModel;
import com.bitwig.extension.controller.api.SettableBeatTimeValue;
import com.bitwig.extension.controller.api.Track;
import com.bitwig.extensions.controllers.nativeinstruments.komplete.binding.EncoderParameterBinding;
import com.bitwig.extensions.controllers.nativeinstruments.komplete.control.ModeButton;
import com.bitwig.extensions.controllers.nativeinstruments.komplete.definition.AbstractKompleteKontrolExtensionDefinition;
import com.bitwig.extensions.controllers.nativeinstruments.komplete.device.DeviceControl;
Expand Down Expand Up @@ -69,10 +70,16 @@ public void init() {
}

protected void initScrubZoomControl() {
final RelativeHardwareKnob fourDKnob = controlElements.getFourDKnobMixer();
final RelativeHardwareKnob fourDKnob = controlElements.getFourDKnob();
final RelativeHardwarControlBindable binding = midiProcessor.createIncAction(this::handleFourDInc);
mainLayer.bind(fourDKnob, binding);

final CursorTrack cursorTrack = viewControl.getCursorTrack();
final RelativeHardwareKnob daw4dKnob = controlElements.getFourDKnobMixer();
mainLayer.addBinding(new EncoderParameterBinding(daw4dKnob, cursorTrack.volume()));
final RelativeHardwareKnob daw4dPan = controlElements.getFourDKnobPan();
mainLayer.addBinding(new EncoderParameterBinding(daw4dPan, cursorTrack.pan()));

final RelativeHardwareKnob loopKnob = controlElements.getLoopModKnob();
mainLayer.bind(loopKnob, midiProcessor.createIncAction(this::handleLoop));
}
Expand Down Expand Up @@ -218,15 +225,9 @@ private void handleLayoutChange(final String v) {
midiProcessor.sendLayoutCommand(currentLayoutType);
}

@Override
public void exit() {
midiProcessor.exit();
}

@Override
public void flush() {
midiProcessor.doFlush();
}


}
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
package com.bitwig.extensions.controllers.nativeinstruments.komplete;

public enum LayoutType {
LAUNCHER("MIX"), //
ARRANGER("ARRANGE");

private String name;

LayoutType(final String name) {
this.name = name;
}

public static LayoutType toType(final String layoutName) {
for (final LayoutType layoutType : LayoutType.values()) {
if (layoutType.name.equals(layoutName)) {
return layoutType;
}
}
return LAUNCHER;
}

LAUNCHER("MIX"), //
ARRANGER("ARRANGE");
private final String name;
LayoutType(final String name) {
this.name = name;
}
public static LayoutType toType(final String layoutName) {
for (final LayoutType layoutType : LayoutType.values()) {
if (layoutType.name.equals(layoutName)) {
return layoutType;
}
}
return LAUNCHER;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,49 +3,31 @@
public class NavigationState {
private boolean canScrollSceneDown = false;
private boolean canScrollSceneUp = false;
private boolean canGoTrackLeft = false;
private boolean canGoTrackRight = false;
protected boolean sceneNavMode = false;
private Runnable stateChangeHandler;

public void setStateChangeListener(final Runnable stateChange) {
this.stateChangeHandler = stateChange;
fireStateChange();
}

public void setCanScrollSceneDown(final boolean canScrollSceneDown) {
this.canScrollSceneDown = canScrollSceneDown;
fireStateChange();
}

public void setCanScrollSceneUp(final boolean canScrollSceneUp) {
this.canScrollSceneUp = canScrollSceneUp;
fireStateChange();
}

public void setCanGoTrackLeft(final boolean canGoTrackLeft) {
this.canGoTrackLeft = canGoTrackLeft;
fireStateChange();
}

public void setCanGoTrackRight(final boolean canGoTrackRight) {
this.canGoTrackRight = canGoTrackRight;
fireStateChange();
}

public void setSceneNavMode(final boolean sceneNavMode) {
this.sceneNavMode = sceneNavMode;
fireStateChange();
}

public boolean isSceneNavMode() {
return sceneNavMode;
}

public boolean canGoTrackLeft() {
return canGoTrackLeft;
}

public boolean canGoTrackRight() {
return canGoTrackRight;
}
Expand All @@ -58,18 +40,4 @@ public boolean canScrollSceneUp() {
return canScrollSceneUp;
}

public int getSceneValue() {
return (canScrollSceneDown ? 0x2 : 0x0) | (canScrollSceneUp ? 0x1 : 0x0);
}

public int getTrackValue() {
return (!sceneNavMode ? 0x1 : 0x0) | (canGoTrackRight ? 0x2 : 0x0);
}

private void fireStateChange() {
if (stateChangeHandler == null) {
return;
}
stateChangeHandler.run();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,32 +4,32 @@
* The track types as recognized by KK.
*/
public enum TrackType {
NONE(0, ""), //
UNSPECIFIED(1, "Unspec"), //
INSTRUMENT(2, "Instrument"), //
AUDIO(3, "Audio"), //
GROUP(4, "Group"), //
RETURN_BUS(5, "Effect"), //
MASTER(6, "Master"); //

private int id;
private String type;

private TrackType(final int id, final String type) {
this.id = id;
this.type = type;
}

public int getId() {
return id;
}

public static TrackType toType(final String type) {
for (final TrackType trackType : TrackType.values()) {
if (trackType.type.equals(type)) {
return trackType;
}
}
return UNSPECIFIED;
}
NONE(0, ""), //
UNSPECIFIED(1, "Unspec"), //
INSTRUMENT(2, "Instrument"), //
AUDIO(3, "Audio"), //
GROUP(4, "Group"), //
RETURN_BUS(5, "Effect"), //
MASTER(6, "Master"); //
private final int id;
private final String type;
TrackType(final int id, final String type) {
this.id = id;
this.type = type;
}
public int getId() {
return id;
}
public static TrackType toType(final String type) {
for (final TrackType trackType : TrackType.values()) {
if (trackType.type.equals(type)) {
return trackType;
}
}
return UNSPECIFIED;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package com.bitwig.extensions.controllers.nativeinstruments.komplete.binding;

import com.bitwig.extension.controller.api.HardwareBinding;
import com.bitwig.extension.controller.api.Parameter;
import com.bitwig.extension.controller.api.RelativeHardwareControlBinding;
import com.bitwig.extension.controller.api.RelativeHardwareKnob;
import com.bitwig.extension.controller.api.SettableRangedValue;
import com.bitwig.extensions.framework.Binding;

public class EncoderParameterBinding extends Binding<RelativeHardwareKnob, SettableRangedValue> {
public static final double BASE_SENSITIVITY = 1;

private HardwareBinding hwBinding;

public EncoderParameterBinding(final RelativeHardwareKnob encoder, final Parameter parameter) {
super(encoder, encoder, parameter);
}

protected RelativeHardwareControlBinding getHardwareBinding(final double sensitivity) {
return getTarget().addBindingWithSensitivity(getSource(), sensitivity);
}

@Override
protected void deactivate() {
if (hwBinding != null && isActive()) {
hwBinding.removeBinding();
}
}

@Override
protected void activate() {
if (hwBinding != null) {
hwBinding.removeBinding();
}
hwBinding = getHardwareBinding(BASE_SENSITIVITY);
}
}
Loading
Loading