Skip to content

Commit

Permalink
* Akai Fire
Browse files Browse the repository at this point in the history
  * New: When unselecting the last edit note in seqencers a notification is now shown that the note edit mode is off.
  * Fixed: In drum sequencers when the last edit note was unselected, it was deleted as well.
* HUI
  * New: Automation mode is shown in the display when a new mode is selected.
* Launchpad Pro
  * Fixed: Play mode restore did not work when combined with keeping Track Select button pressed.
* Native Instruments Kontrol Mk3
  * New: 'Metronome' can now also be selected to switch modes.
* Native Instruments Maschine Mk2/Studio
  * Fixed: Shift+Cursor left/right did not switch parameter pages.
  • Loading branch information
git-moss committed May 20, 2024
1 parent deb5417 commit d82d2be
Show file tree
Hide file tree
Showing 31 changed files with 153 additions and 64 deletions.
Binary file modified DrivenByMoss-Manual.pdf
Binary file not shown.
10 changes: 5 additions & 5 deletions dependency-reduced-pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<groupId>de.mossgrabers</groupId>
<artifactId>DrivenByMoss</artifactId>
<name>DrivenByMoss</name>
<version>23.2.1</version>
<version>23.2.2</version>
<licenses>
<license>
<name>LGPL-2.1-or-later</name>
Expand Down Expand Up @@ -57,7 +57,7 @@
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>3.3.0</version>
<version>3.4.1</version>
<configuration>
<archive>
<manifest>
Expand All @@ -68,7 +68,7 @@
</plugin>
<plugin>
<artifactId>maven-shade-plugin</artifactId>
<version>3.5.2</version>
<version>3.5.3</version>
<executions>
<execution>
<phase>package</phase>
Expand Down Expand Up @@ -192,11 +192,11 @@
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>3.1.1</version>
<version>3.1.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>3.1.1</version>
<version>3.1.2</version>
</plugin>
<plugin>
<artifactId>maven-site-plugin</artifactId>
Expand Down
12 changes: 6 additions & 6 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<artifactId>DrivenByMoss</artifactId>
<packaging>jar</packaging>
<name>DrivenByMoss</name>
<version>23.2.1</version>
<version>23.2.2</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
Expand Down Expand Up @@ -65,7 +65,7 @@
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.17.0</version>
<version>2.17.1</version>
</dependency>
<!-- Gamepad support. -->
<dependency>
Expand Down Expand Up @@ -128,7 +128,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.3.0</version>
<version>3.4.1</version>
<configuration>
<archive>
<manifest>
Expand All @@ -141,7 +141,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.5.2</version>
<version>3.5.3</version>
<executions>
<execution>
<phase>package</phase>
Expand Down Expand Up @@ -276,12 +276,12 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>3.1.1</version>
<version>3.1.2</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<version>3.1.1</version>
<version>3.1.2</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,13 @@
*/
public class TransportImpl implements ITransport
{
/** No preroll. */
/** No pre-roll. */
private static final String PREROLL_NONE = "none";
/** 1 bar preroll. */
/** 1 bar pre-roll. */
private static final String PREROLL_1_BAR = "one_bar";
/** 2 bar preroll. */
/** 2 bar pre-roll. */
private static final String PREROLL_2_BARS = "two_bars";
/** 4 bar preroll. */
/** 4 bar pre-Wroll. */
private static final String PREROLL_4_BARS = "four_bars";

private static final String ACTION_JUMP_TO_END = "jump_to_end_of_arrangement";
Expand Down Expand Up @@ -525,7 +525,7 @@ public void changePosition (final boolean increase, final boolean slow)

/**
* Get the fraction to use for time changes.
*
*
* @param slow Slow change if true otherwise fast
* @return The fraction to change
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@

package de.mossgrabers.controller.akai.fire.view;

import java.util.Optional;

import de.mossgrabers.controller.akai.fire.FireConfiguration;
import de.mossgrabers.controller.akai.fire.controller.FireControlSurface;
import de.mossgrabers.controller.akai.fire.mode.FireLayerMode;
Expand All @@ -17,13 +19,12 @@
import de.mossgrabers.framework.daw.data.bank.IDrumPadBank;
import de.mossgrabers.framework.featuregroup.IMode;
import de.mossgrabers.framework.featuregroup.ModeManager;
import de.mossgrabers.framework.mode.INoteEditorMode;
import de.mossgrabers.framework.mode.Modes;
import de.mossgrabers.framework.utils.ButtonEvent;
import de.mossgrabers.framework.utils.StringUtils;
import de.mossgrabers.framework.view.sequencer.AbstractDrum4View;

import java.util.Optional;


/**
* The 4 lane drum sequencer.
Expand Down Expand Up @@ -73,12 +74,20 @@ public void onGridNote (final int note, final int velocity)
final ModeManager modeManager = this.surface.getModeManager ();
if (velocity > 0)
{
if (modeManager.isActive (Modes.NOTE))
final IMode activeMode = modeManager.getActive ();
if (activeMode instanceof final INoteEditorMode noteMode)
{
// Store existing note for editing
final StepState state = clip.getStep (notePosition).getState ();
if (state == StepState.START)
{
this.editNote (clip, notePosition, true);
if (noteMode.getNoteEditor ().getNotes ().isEmpty ())
{
this.surface.getDisplay ().notify ("Edit Notes: Off");
this.isNoteEdited = false;
}
}
return;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,9 @@
import de.mossgrabers.framework.daw.data.IDrumPad;
import de.mossgrabers.framework.daw.data.ISlot;
import de.mossgrabers.framework.daw.data.bank.IDrumPadBank;
import de.mossgrabers.framework.featuregroup.IMode;
import de.mossgrabers.framework.featuregroup.ModeManager;
import de.mossgrabers.framework.mode.INoteEditorMode;
import de.mossgrabers.framework.mode.Modes;
import de.mossgrabers.framework.utils.ButtonEvent;
import de.mossgrabers.framework.view.Views;
Expand Down Expand Up @@ -262,7 +264,8 @@ protected boolean handleNoteEditorMode (final int x, final int y, final int offs
final ModeManager modeManager = this.surface.getModeManager ();
if (velocity > 0)
{
if (modeManager.isActive (Modes.NOTE))
final IMode activeMode = modeManager.getActive ();
if (activeMode instanceof final INoteEditorMode noteMode)
{
// Store existing note for editing
final int sound = offsetY + this.selectedPad;
Expand All @@ -271,7 +274,14 @@ protected boolean handleNoteEditorMode (final int x, final int y, final int offs
final INoteClip clip = this.getClip ();
final StepState state = clip.getStep (notePosition).getState ();
if (state == StepState.START)
{
this.editNote (clip, notePosition, true);
if (noteMode.getNoteEditor ().getNotes ().isEmpty ())
{
this.surface.getDisplay ().notify ("Edit Notes: Off");
this.isNoteEdited = false;
}
}
return true;
}
return false;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@
import de.mossgrabers.framework.daw.clip.NotePosition;
import de.mossgrabers.framework.daw.clip.StepState;
import de.mossgrabers.framework.daw.data.ITrack;
import de.mossgrabers.framework.mode.Modes;
import de.mossgrabers.framework.featuregroup.IMode;
import de.mossgrabers.framework.featuregroup.ModeManager;
import de.mossgrabers.framework.mode.INoteEditorMode;
import de.mossgrabers.framework.utils.ButtonEvent;
import de.mossgrabers.framework.view.sequencer.AbstractPolySequencerView;

Expand Down Expand Up @@ -150,7 +152,9 @@ public void onSelectKnobValue (final int value)
@Override
protected boolean handleSequencerAreaButtonCombinations (final INoteClip clip, final int channel, final int step)
{
if (this.surface.getModeManager ().isActive (Modes.NOTE))
final ModeManager modeManager = this.surface.getModeManager ();
final IMode activeMode = modeManager.getActive ();
if (activeMode instanceof final INoteEditorMode noteMode)
{
final NotePosition notePosition = new NotePosition (channel, step, 0);
for (int row = 0; row < 128; row++)
Expand All @@ -159,6 +163,8 @@ protected boolean handleSequencerAreaButtonCombinations (final INoteClip clip, f
if (clip.getStep (notePosition).getState () == StepState.START)
this.editNote (clip, notePosition, true);
}
if (noteMode.getNoteEditor ().getNotes ().isEmpty ())
this.surface.getDisplay ().notify ("Edit Notes: Off");
return true;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@
import de.mossgrabers.framework.daw.clip.NotePosition;
import de.mossgrabers.framework.daw.clip.StepState;
import de.mossgrabers.framework.daw.data.ITrack;
import de.mossgrabers.framework.featuregroup.IMode;
import de.mossgrabers.framework.featuregroup.ModeManager;
import de.mossgrabers.framework.mode.INoteEditorMode;
import de.mossgrabers.framework.mode.Modes;
import de.mossgrabers.framework.scale.Scales;
import de.mossgrabers.framework.utils.ButtonEvent;
Expand Down Expand Up @@ -49,15 +51,23 @@ protected void handleSequencerArea (final int index, final int x, final int y, f
final ModeManager modeManager = this.surface.getModeManager ();
if (velocity > 0)
{
if (modeManager.isActive (Modes.NOTE))
final IMode activeMode = modeManager.getActive ();
if (activeMode instanceof final INoteEditorMode noteMode)
{
// Store existing note for editing
final INoteClip clip = this.getClip ();
final int mappedY = this.keyManager.map (y);
final NotePosition notePosition = new NotePosition (this.configuration.getMidiEditChannel (), x, mappedY);
final StepState state = clip.getStep (notePosition).getState ();
if (state == StepState.START)
{
this.editNote (clip, notePosition, true);
if (noteMode.getNoteEditor ().getNotes ().isEmpty ())
{
this.surface.getDisplay ().notify ("Edit Notes: Off");
this.isNoteEdited = false;
}
}
return;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,16 @@

package de.mossgrabers.controller.mackie.hui;

import java.util.Arrays;
import java.util.List;

import de.mossgrabers.framework.configuration.AbstractConfiguration;
import de.mossgrabers.framework.configuration.IEnumSetting;
import de.mossgrabers.framework.configuration.ISettingsUI;
import de.mossgrabers.framework.controller.valuechanger.IValueChanger;
import de.mossgrabers.framework.daw.IHost;
import de.mossgrabers.framework.daw.midi.ArpeggiatorMode;

import java.util.Arrays;
import java.util.List;


/**
* The configuration settings for MCU.
Expand Down Expand Up @@ -46,13 +46,15 @@ public class HUIConfiguration extends AbstractConfiguration
private static final String DEVICE_ICON_QCON_PRO_X = "icon QConPro X";
private static final String DEVICE_MACKIE_HUI = "Mackie HUI";
private static final String DEVICE_NOVATION_SLMKIII = "Novation MkIII";
private static final String DEVICE_YAMAHA_DM3 = "Yamaha DM3";

private static final String [] DEVICE_OPTIONS =
{
DEVICE_SELECT,
DEVICE_ICON_QCON_PRO_X,
DEVICE_MACKIE_HUI,
DEVICE_NOVATION_SLMKIII
DEVICE_NOVATION_SLMKIII,
DEVICE_YAMAHA_DM3
};

private static final String [] ASSIGNABLE_BUTTON_NAMES =
Expand Down Expand Up @@ -138,6 +140,7 @@ private void activateHardwareSettings (final ISettingsUI settingsUI)
{
case DEVICE_MACKIE_HUI:
case DEVICE_ICON_QCON_PRO_X:
case DEVICE_YAMAHA_DM3:
this.hasDisplay1Setting.set (ON_OFF_OPTIONS[1]);
this.hasSegmentDisplaySetting.set (ON_OFF_OPTIONS[1]);
this.hasMotorFadersSetting.set (ON_OFF_OPTIONS[1]);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@

package de.mossgrabers.controller.mackie.hui;

import java.util.function.BooleanSupplier;
import java.util.function.IntSupplier;

import de.mossgrabers.controller.mackie.hui.command.trigger.AssignableCommand;
import de.mossgrabers.controller.mackie.hui.command.trigger.FaderTouchCommand;
import de.mossgrabers.controller.mackie.hui.command.trigger.WorkaroundFader;
Expand Down Expand Up @@ -77,9 +80,6 @@
import de.mossgrabers.framework.view.ControlOnlyView;
import de.mossgrabers.framework.view.Views;

import java.util.function.BooleanSupplier;
import java.util.function.IntSupplier;


/**
* Support for the Mackie HUI protocol.
Expand Down Expand Up @@ -403,12 +403,12 @@ protected void registerTriggerCommands ()
// HUI_AUTO_ENABLE_MUTE, not supported

// Automation modes
this.addButtonHUI (surface, ButtonID.AUTOMATION_OFF, "Off", new AutomationModeCommand<> (AutomationMode.TRIM_READ, this.model, surface), HUIControlSurface.HUI_AUTO_MODE_OFF, () -> false);
this.addButtonHUI (surface, ButtonID.AUTOMATION_TRIM, "Trim", new AutomationModeCommand<> (AutomationMode.TRIM_READ, this.model, surface), HUIControlSurface.HUI_AUTO_MODE_TRIM, () -> t.getAutomationWriteMode () == AutomationMode.TRIM_READ);
this.addButtonHUI (surface, ButtonID.AUTOMATION_READ, "Read", new AutomationModeCommand<> (AutomationMode.READ, this.model, surface), HUIControlSurface.HUI_AUTO_MODE_READ, () -> t.getAutomationWriteMode () == AutomationMode.READ);
this.addButtonHUI (surface, ButtonID.AUTOMATION_LATCH, "Latch", new AutomationModeCommand<> (AutomationMode.LATCH, this.model, surface), HUIControlSurface.HUI_AUTO_MODE_LATCH, () -> t.getAutomationWriteMode () == AutomationMode.LATCH);
this.addButtonHUI (surface, ButtonID.AUTOMATION_WRITE, "Write", new AutomationModeCommand<> (AutomationMode.WRITE, this.model, surface), HUIControlSurface.HUI_AUTO_MODE_WRITE, () -> t.getAutomationWriteMode () == AutomationMode.WRITE);
this.addButtonHUI (surface, ButtonID.AUTOMATION_TOUCH, "Touch", new AutomationModeCommand<> (AutomationMode.TOUCH, this.model, surface), HUIControlSurface.HUI_AUTO_MODE_TOUCH, () -> t.getAutomationWriteMode () == AutomationMode.TOUCH);
this.addButtonHUI (surface, ButtonID.AUTOMATION_OFF, "Off", new AutomationModeCommand<> (AutomationMode.TRIM_READ, this.model, surface, true), HUIControlSurface.HUI_AUTO_MODE_OFF, () -> false);
this.addButtonHUI (surface, ButtonID.AUTOMATION_TRIM, "Trim", new AutomationModeCommand<> (AutomationMode.TRIM_READ, this.model, surface, true), HUIControlSurface.HUI_AUTO_MODE_TRIM, () -> t.getAutomationWriteMode () == AutomationMode.TRIM_READ);
this.addButtonHUI (surface, ButtonID.AUTOMATION_READ, "Read", new AutomationModeCommand<> (AutomationMode.READ, this.model, surface, true), HUIControlSurface.HUI_AUTO_MODE_READ, () -> t.getAutomationWriteMode () == AutomationMode.READ);
this.addButtonHUI (surface, ButtonID.AUTOMATION_LATCH, "Latch", new AutomationModeCommand<> (AutomationMode.LATCH, this.model, surface, true), HUIControlSurface.HUI_AUTO_MODE_LATCH, () -> t.getAutomationWriteMode () == AutomationMode.LATCH);
this.addButtonHUI (surface, ButtonID.AUTOMATION_WRITE, "Write", new AutomationModeCommand<> (AutomationMode.WRITE, this.model, surface, true), HUIControlSurface.HUI_AUTO_MODE_WRITE, () -> t.getAutomationWriteMode () == AutomationMode.WRITE);
this.addButtonHUI (surface, ButtonID.AUTOMATION_TOUCH, "Touch", new AutomationModeCommand<> (AutomationMode.TOUCH, this.model, surface, true), HUIControlSurface.HUI_AUTO_MODE_TOUCH, () -> t.getAutomationWriteMode () == AutomationMode.TOUCH);

// Status
// HUI_STATUS_PHASE, not supported
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@ public class HUIDisplay extends AbstractTextDisplay
public HUIDisplay (final IHost host, final IMidiOutput output)
{
super (host, output, 1 /* No of rows */, 9 /* No of cells */, 36);

this.centerNotification = false;
}


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -465,12 +465,12 @@ protected void registerTriggerCommands ()
this.addButton (surface, ButtonID.MOVE_TRACK_RIGHT, TAG_RIGHT, new MCUMoveTrackBankCommand (this.model, surface, true, false), 0, MCUControlSurface.MCU_TRACK_RIGHT);

// Automation
this.addButton (surface, ButtonID.AUTOMATION_TRIM, "Trim", new AutomationModeCommand<> (AutomationMode.TRIM_READ, this.model, surface), 0, MCUControlSurface.MCU_TRIM, () -> t.getAutomationWriteMode () == AutomationMode.TRIM_READ);
this.addButton (surface, ButtonID.AUTOMATION_READ, "Read", new AutomationModeCommand<> (AutomationMode.READ, this.model, surface), 0, MCUControlSurface.MCU_READ, () -> t.getAutomationWriteMode () == AutomationMode.READ);
this.addButton (surface, ButtonID.AUTOMATION_WRITE, "Write", new AutomationModeCommand<> (AutomationMode.WRITE, this.model, surface), 0, MCUControlSurface.MCU_WRITE, () -> t.getAutomationWriteMode () == AutomationMode.WRITE);
this.addButton (surface, ButtonID.AUTOMATION_GROUP, "Group/Write", new AutomationModeCommand<> (AutomationMode.LATCH_PREVIEW, this.model, surface), 0, MCUControlSurface.MCU_GROUP, () -> t.getAutomationWriteMode () == AutomationMode.LATCH_PREVIEW);
this.addButton (surface, ButtonID.AUTOMATION_TOUCH, "Touch", new AutomationModeCommand<> (AutomationMode.TOUCH, this.model, surface), 0, MCUControlSurface.MCU_TOUCH, () -> t.getAutomationWriteMode () == AutomationMode.TOUCH);
this.addButton (surface, ButtonID.AUTOMATION_LATCH, "Latch", new AutomationModeCommand<> (AutomationMode.LATCH, this.model, surface), 0, MCUControlSurface.MCU_LATCH, () -> t.getAutomationWriteMode () == AutomationMode.LATCH);
this.addButton (surface, ButtonID.AUTOMATION_TRIM, "Trim", new AutomationModeCommand<> (AutomationMode.TRIM_READ, this.model, surface, false), 0, MCUControlSurface.MCU_TRIM, () -> t.getAutomationWriteMode () == AutomationMode.TRIM_READ);
this.addButton (surface, ButtonID.AUTOMATION_READ, "Read", new AutomationModeCommand<> (AutomationMode.READ, this.model, surface, false), 0, MCUControlSurface.MCU_READ, () -> t.getAutomationWriteMode () == AutomationMode.READ);
this.addButton (surface, ButtonID.AUTOMATION_WRITE, "Write", new AutomationModeCommand<> (AutomationMode.WRITE, this.model, surface, false), 0, MCUControlSurface.MCU_WRITE, () -> t.getAutomationWriteMode () == AutomationMode.WRITE);
this.addButton (surface, ButtonID.AUTOMATION_GROUP, "Group/Write", new AutomationModeCommand<> (AutomationMode.LATCH_PREVIEW, this.model, surface, false), 0, MCUControlSurface.MCU_GROUP, () -> t.getAutomationWriteMode () == AutomationMode.LATCH_PREVIEW);
this.addButton (surface, ButtonID.AUTOMATION_TOUCH, "Touch", new AutomationModeCommand<> (AutomationMode.TOUCH, this.model, surface, false), 0, MCUControlSurface.MCU_TOUCH, () -> t.getAutomationWriteMode () == AutomationMode.TOUCH);
this.addButton (surface, ButtonID.AUTOMATION_LATCH, "Latch", new AutomationModeCommand<> (AutomationMode.LATCH, this.model, surface, false), 0, MCUControlSurface.MCU_LATCH, () -> t.getAutomationWriteMode () == AutomationMode.LATCH);
this.addButton (surface, ButtonID.UNDO, "Undo", new UndoCommand<> (this.model, surface), MCUControlSurface.MCU_UNDO);

// Panes
Expand Down
Loading

0 comments on commit d82d2be

Please sign in to comment.