Skip to content

Commit d4f4d74

Browse files
committed
Added support for OXI One Mk2.
1 parent 9691d49 commit d4f4d74

39 files changed

+2174
-332
lines changed

DrivenByMoss-Manual.pdf

639 Bytes
Binary file not shown.

dependency-reduced-pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<groupId>de.mossgrabers</groupId>
55
<artifactId>DrivenByMoss</artifactId>
66
<name>DrivenByMoss</name>
7-
<version>26.5.1</version>
7+
<version>26.6.0</version>
88
<licenses>
99
<license>
1010
<name>LGPL-2.1-or-later</name>
@@ -156,7 +156,7 @@
156156
<plugin>
157157
<groupId>org.codehaus.mojo</groupId>
158158
<artifactId>versions-maven-plugin</artifactId>
159-
<version>2.20.1</version>
159+
<version>2.21.0</version>
160160
<configuration>
161161
<ignoredVersions>.*-M.*,.*-alpha.*,.*-beta.*,.*-ea.*,.*-rc.*</ignoredVersions>
162162
<generateBackupPoms>false</generateBackupPoms>

pom.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<artifactId>DrivenByMoss</artifactId>
77
<packaging>jar</packaging>
88
<name>DrivenByMoss</name>
9-
<version>26.5.1</version>
9+
<version>26.6.0</version>
1010
<properties>
1111
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
1212
</properties>
@@ -65,7 +65,7 @@
6565
<dependency>
6666
<groupId>com.fasterxml.jackson.core</groupId>
6767
<artifactId>jackson-databind</artifactId>
68-
<version>2.20.1</version>
68+
<version>2.21.0</version>
6969
</dependency>
7070
<!-- Gamepad support. -->
7171
<dependency>
@@ -233,7 +233,7 @@
233233
<plugin>
234234
<groupId>org.codehaus.mojo</groupId>
235235
<artifactId>versions-maven-plugin</artifactId>
236-
<version>2.20.1</version>
236+
<version>2.21.0</version>
237237
<configuration>
238238
<ignoredVersions>.*-M.*,.*-alpha.*,.*-beta.*,.*-ea.*,.*-rc.*</ignoredVersions>
239239
<generateBackupPoms>false</generateBackupPoms>
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
// Written by Jürgen Moßgraber - mossgrabers.de
2+
// (c) 2017-2026
3+
// Licensed under LGPLv3 - http://www.gnu.org/licenses/lgpl-3.0.txt
4+
5+
package de.mossgrabers.bitwig.controller.oxi.one;
6+
7+
import com.bitwig.extension.controller.api.ControllerHost;
8+
9+
import de.mossgrabers.bitwig.framework.BitwigSetupFactory;
10+
import de.mossgrabers.bitwig.framework.configuration.SettingsUIImpl;
11+
import de.mossgrabers.bitwig.framework.daw.HostImpl;
12+
import de.mossgrabers.bitwig.framework.extension.AbstractControllerExtensionDefinition;
13+
import de.mossgrabers.controller.oxi.one.OxiOneConfiguration;
14+
import de.mossgrabers.controller.oxi.one.OxiOneMk1ControllerDefinition;
15+
import de.mossgrabers.controller.oxi.one.OxiOneControllerSetup;
16+
import de.mossgrabers.controller.oxi.one.controller.OxiOneControlSurface;
17+
import de.mossgrabers.framework.controller.IControllerSetup;
18+
19+
20+
/**
21+
* Definition class for the OXI One Mk1.
22+
*
23+
* @author Jürgen Moßgraber
24+
*/
25+
public class OxiOneMk1ControllerExtensionDefinition extends AbstractControllerExtensionDefinition<OxiOneControlSurface, OxiOneConfiguration>
26+
{
27+
/**
28+
* Constructor.
29+
*/
30+
public OxiOneMk1ControllerExtensionDefinition ()
31+
{
32+
super (new OxiOneMk1ControllerDefinition ());
33+
}
34+
35+
36+
/** {@inheritDoc} */
37+
@Override
38+
protected IControllerSetup<OxiOneControlSurface, OxiOneConfiguration> getControllerSetup (final ControllerHost host)
39+
{
40+
return new OxiOneControllerSetup (new HostImpl (host), new BitwigSetupFactory (host), new SettingsUIImpl (host, host.getPreferences ()), new SettingsUIImpl (host, host.getDocumentState ()), false);
41+
}
42+
43+
44+
/** {@inheritDoc} */
45+
@Override
46+
public boolean isUsingBetaAPI ()
47+
{
48+
return true;
49+
}
50+
}

src/main/java/de/mossgrabers/bitwig/controller/oxi/one/OxiOneControllerExtensionDefinition.java renamed to src/main/java/de/mossgrabers/bitwig/controller/oxi/one/OxiOneMk2ControllerExtensionDefinition.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,33 +11,33 @@
1111
import de.mossgrabers.bitwig.framework.daw.HostImpl;
1212
import de.mossgrabers.bitwig.framework.extension.AbstractControllerExtensionDefinition;
1313
import de.mossgrabers.controller.oxi.one.OxiOneConfiguration;
14-
import de.mossgrabers.controller.oxi.one.OxiOneControllerDefinition;
1514
import de.mossgrabers.controller.oxi.one.OxiOneControllerSetup;
15+
import de.mossgrabers.controller.oxi.one.OxiOneMk2ControllerDefinition;
1616
import de.mossgrabers.controller.oxi.one.controller.OxiOneControlSurface;
1717
import de.mossgrabers.framework.controller.IControllerSetup;
1818

1919

2020
/**
21-
* Definition class for the OXI One.
21+
* Definition class for the OXI One Mk2.
2222
*
2323
* @author Jürgen Moßgraber
2424
*/
25-
public class OxiOneControllerExtensionDefinition extends AbstractControllerExtensionDefinition<OxiOneControlSurface, OxiOneConfiguration>
25+
public class OxiOneMk2ControllerExtensionDefinition extends AbstractControllerExtensionDefinition<OxiOneControlSurface, OxiOneConfiguration>
2626
{
2727
/**
2828
* Constructor.
2929
*/
30-
public OxiOneControllerExtensionDefinition ()
30+
public OxiOneMk2ControllerExtensionDefinition ()
3131
{
32-
super (new OxiOneControllerDefinition ());
32+
super (new OxiOneMk2ControllerDefinition ());
3333
}
3434

3535

3636
/** {@inheritDoc} */
3737
@Override
3838
protected IControllerSetup<OxiOneControlSurface, OxiOneConfiguration> getControllerSetup (final ControllerHost host)
3939
{
40-
return new OxiOneControllerSetup (new HostImpl (host), new BitwigSetupFactory (host), new SettingsUIImpl (host, host.getPreferences ()), new SettingsUIImpl (host, host.getDocumentState ()));
40+
return new OxiOneControllerSetup (new HostImpl (host), new BitwigSetupFactory (host), new SettingsUIImpl (host, host.getPreferences ()), new SettingsUIImpl (host, host.getDocumentState ()), true);
4141
}
4242

4343

src/main/java/de/mossgrabers/bitwig/framework/midi/MidiOutputImpl.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@
44

55
package de.mossgrabers.bitwig.framework.midi;
66

7-
import de.mossgrabers.framework.daw.midi.AbstractMidiOutput;
8-
97
import com.bitwig.extension.controller.api.ControllerHost;
108
import com.bitwig.extension.controller.api.MidiOut;
119

10+
import de.mossgrabers.framework.daw.midi.AbstractMidiOutput;
11+
1212

1313
/**
1414
* A MIDI output
@@ -45,9 +45,9 @@ public MidiOutputImpl (final ControllerHost host, final int portNumber)
4545

4646
/** {@inheritDoc} */
4747
@Override
48-
public void sendSysex (final byte [] data)
48+
public void sendSysex (final byte []... data)
4949
{
50-
this.port.sendSysex (data);
50+
this.port.sendSysex (concatArrays (data));
5151
}
5252

5353

src/main/java/de/mossgrabers/controller/akai/acvs/controller/ACVSMidiOutput.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,7 @@ public void sendProgramChange (final int channel, final int bankMSB, final int b
270270

271271
/** {@inheritDoc} */
272272
@Override
273-
public void sendSysex (final byte [] data)
273+
public void sendSysex (final byte []... data)
274274
{
275275
this.output.sendSysex (data);
276276
}

src/main/java/de/mossgrabers/controller/oxi/one/OxiOneConfiguration.java

Lines changed: 58 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import java.util.List;
88

99
import de.mossgrabers.framework.configuration.AbstractConfiguration;
10+
import de.mossgrabers.framework.configuration.IEnumSetting;
1011
import de.mossgrabers.framework.configuration.ISettingsUI;
1112
import de.mossgrabers.framework.controller.valuechanger.IValueChanger;
1213
import de.mossgrabers.framework.daw.IHost;
@@ -22,8 +23,36 @@
2223
*/
2324
public class OxiOneConfiguration extends AbstractConfiguration
2425
{
25-
private static final Views [] PREFERRED_NOTE_VIEWS =
26+
/** The pad brightness. */
27+
public static final Integer PAD_BRIGHTNESS = Integer.valueOf (NEXT_SETTING_ID);
28+
29+
private static final List<String> BRIGHTNESS_OPTIONS = List.of ("10%", "25%", "50%", "65%", "75%", "90%", "100%");
30+
private static final double [] BRIGHTNESS_VALUES = new double []
31+
{
32+
0.1,
33+
0.25,
34+
0.5,
35+
0.65,
36+
0.75,
37+
0.9,
38+
1
39+
};
40+
41+
private static final Views [] PREFERRED_NOTE_VIEWS_MK1 =
42+
{
43+
Views.MIX,
44+
Views.DRUM_XOX,
45+
Views.PLAY,
46+
Views.DRUM64,
47+
Views.DRUM8,
48+
Views.SEQUENCER,
49+
Views.POLY_SEQUENCER,
50+
Views.RAINDROPS
51+
};
52+
53+
private static final Views [] PREFERRED_NOTE_VIEWS_MK2 =
2654
{
55+
Views.MIX,
2756
Views.SESSION,
2857
Views.DRUM_XOX,
2958
Views.PLAY,
@@ -34,18 +63,24 @@ public class OxiOneConfiguration extends AbstractConfiguration
3463
Views.RAINDROPS
3564
};
3665

66+
private double padBrightness = 0.5;
67+
private final boolean isMk2;
68+
3769

3870
/**
3971
* Constructor.
4072
*
4173
* @param host The DAW host
4274
* @param valueChanger The value changer
4375
* @param arpeggiatorModes The available arpeggiator modes
76+
* @param isMk2 True if it is the Mk2 otherwise the Mk1
4477
*/
45-
public OxiOneConfiguration (final IHost host, final IValueChanger valueChanger, final List<ArpeggiatorMode> arpeggiatorModes)
78+
public OxiOneConfiguration (final IHost host, final IValueChanger valueChanger, final List<ArpeggiatorMode> arpeggiatorModes, final boolean isMk2)
4679
{
4780
super (host, valueChanger, arpeggiatorModes);
4881

82+
this.isMk2 = isMk2;
83+
4984
Views.setViewName (Views.DRUM64, "Drum 128");
5085

5186
// Force note on velocity to 127 since the pads only send 1
@@ -70,6 +105,15 @@ public void init (final ISettingsUI globalSettings, final ISettingsUI documentSe
70105

71106
this.activateNoteRepeatSetting (documentSettings);
72107

108+
///////////////////////////
109+
// Hardware
110+
111+
final IEnumSetting padBrightnessSetting = globalSettings.getEnumSetting ("Grid Pad Brightness", CATEGORY_HARDWARE_SETUP, BRIGHTNESS_OPTIONS, BRIGHTNESS_OPTIONS.get (2));
112+
padBrightnessSetting.addValueObserver (value -> {
113+
this.padBrightness = BRIGHTNESS_VALUES[lookupIndex (BRIGHTNESS_OPTIONS, value)];
114+
this.notifyObservers (PAD_BRIGHTNESS);
115+
});
116+
73117
///////////////////////////
74118
// Session
75119

@@ -92,7 +136,7 @@ public void init (final ISettingsUI globalSettings, final ISettingsUI documentSe
92136
this.activateMidiEditChannelSetting (documentSettings);
93137
this.activateTurnOffScalePadsSetting (globalSettings);
94138
this.activateShowPlayedChordsSetting (globalSettings);
95-
this.activateStartupViewSetting (globalSettings, PREFERRED_NOTE_VIEWS);
139+
this.activateStartupViewSetting (globalSettings, this.isMk2 ? PREFERRED_NOTE_VIEWS_MK2 : PREFERRED_NOTE_VIEWS_MK1);
96140

97141
///////////////////////////
98142
// Drum Sequencer
@@ -108,4 +152,15 @@ public void init (final ISettingsUI globalSettings, final ISettingsUI documentSe
108152
this.activateKnobSpeedSetting (globalSettings);
109153
this.activateColorTrackStates (globalSettings);
110154
}
155+
156+
157+
/**
158+
* Get the pad brightness.
159+
*
160+
* @return The pad brightness in the range of [0..1]
161+
*/
162+
public double getPadBrightness ()
163+
{
164+
return this.padBrightness;
165+
}
111166
}

0 commit comments

Comments
 (0)