Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add DAW Controller support for various Arturia controllers #743

Closed
wants to merge 9 commits into from
Closed
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
3 changes: 2 additions & 1 deletion src/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@ CMSIS_DIR = ../CMSIS_5/CMSIS
OBJS = main.o kernel.o minidexed.o config.o userinterface.o uimenu.o \
mididevice.o midikeyboard.o serialmididevice.o pckeyboard.o \
sysexfileloader.o performanceconfig.o perftimer.o \
effect_compressor.o effect_platervbstereo.o uibuttons.o midipin.o
effect_compressor.o effect_platervbstereo.o uibuttons.o midipin.o \
dawcontroller.o

OPTIMIZE = -O3

Expand Down
8 changes: 8 additions & 0 deletions src/common.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
#ifndef _common_h
#define _common_h

#define ARRAY_LENGTH(x) (sizeof(x) / sizeof((x)[0]))

inline long maplong(long x, long in_min, long in_max, long out_min, long out_max) {
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}
Expand All @@ -16,6 +18,12 @@ inline float32_t mapfloat(int val, int in_min, int in_max, float32_t out_min, fl
return (val - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}

inline long mapfloatr(int val, int in_min, int in_max, float32_t out_min, float32_t out_max)
{
return lround((val - in_min) * (out_max - out_min) / (in_max - in_min) + out_min);
}


#define constrain(amt, low, high) ({ \
__typeof__(amt) _amt = (amt); \
__typeof__(low) _low = (low); \
Expand Down
78 changes: 77 additions & 1 deletion src/config.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -178,19 +178,35 @@ void CConfig::Load (void)

m_nMIDIButtonCh = m_Properties.GetNumber ("MIDIButtonCh", 0);
m_nMIDIButtonNotes = m_Properties.GetNumber ("MIDIButtonNotes", 0);

m_nMIDIButtonPrev = m_Properties.GetNumber ("MIDIButtonPrev", 0);
m_nMIDIButtonNext = m_Properties.GetNumber ("MIDIButtonNext", 0);
m_nMIDIButtonBack = m_Properties.GetNumber ("MIDIButtonBack", 0);
m_nMIDIButtonSelect = m_Properties.GetNumber ("MIDIButtonSelect", 0);
m_nMIDIButtonHome = m_Properties.GetNumber ("MIDIButtonHome", 0);

m_MIDIButtonActionPrev = m_Properties.GetString ("MIDIButtonActionPrev", "");
m_MIDIButtonActionNext = m_Properties.GetString ("MIDIButtonActionNext", "");
m_MIDIButtonActionBack = m_Properties.GetString ("MIDIButtonActionBack", "");
m_MIDIButtonActionSelect = m_Properties.GetString ("MIDIButtonActionSelect", "");
m_MIDIButtonActionHome = m_Properties.GetString ("MIDIButtonActionHome", "");

m_nMIDIButtonPgmUp = m_Properties.GetNumber ("MIDIButtonPgmUp", 0);
m_nMIDIButtonPgmDown = m_Properties.GetNumber ("MIDIButtonPgmDown", 0);
m_nMIDIButtonBankUp = m_Properties.GetNumber ("MIDIButtonBankUp", 0);
m_nMIDIButtonBankDown = m_Properties.GetNumber ("MIDIButtonBankDown", 0);
m_nMIDIButtonTGUp = m_Properties.GetNumber ("MIDIButtonTGUp", 0);
m_nMIDIButtonTGDown = m_Properties.GetNumber ("MIDIButtonTGDown", 0);


m_MIDIButtonActionPgmUp = m_Properties.GetString ("MIDIButtonActionPgmUp", "");
m_MIDIButtonActionPgmDown = m_Properties.GetString ("MIDIButtonActionPgmDown", "");
m_MIDIButtonActionBankUp = m_Properties.GetString ("MIDIButtonActionBankUp", "");
m_MIDIButtonActionBankDown = m_Properties.GetString ("MIDIButtonActionBankDown", "");
m_MIDIButtonActionTGUp = m_Properties.GetString ("MIDIButtonActionTGUp", "");
m_MIDIButtonActionTGDown = m_Properties.GetString ("MIDIButtonActionTGDown", "");

m_bDAWControllerEnabled = m_Properties.GetNumber ("DAWControllerEnabled", 0) != 0;

m_bEncoderEnabled = m_Properties.GetNumber ("EncoderEnabled", 0) != 0;
m_nEncoderPinClock = m_Properties.GetNumber ("EncoderPinClock", 10);
m_nEncoderPinData = m_Properties.GetNumber ("EncoderPinData", 9);
Expand Down Expand Up @@ -652,6 +668,31 @@ unsigned CConfig::GetMIDIButtonHome (void) const
return m_nMIDIButtonHome;
}

const char *CConfig::GetMIDIButtonActionPrev (void) const
{
return m_MIDIButtonActionPrev.c_str();
}

const char *CConfig::GetMIDIButtonActionNext (void) const
{
return m_MIDIButtonActionNext.c_str();
}

const char *CConfig::GetMIDIButtonActionBack (void) const
{
return m_MIDIButtonActionBack.c_str();
}

const char *CConfig::GetMIDIButtonActionSelect (void) const
{
return m_MIDIButtonActionSelect.c_str();
}

const char *CConfig::GetMIDIButtonActionHome (void) const
{
return m_MIDIButtonActionHome.c_str();
}

unsigned CConfig::GetMIDIButtonPgmUp (void) const
{
return m_nMIDIButtonPgmUp;
Expand Down Expand Up @@ -682,6 +723,41 @@ unsigned CConfig::GetMIDIButtonTGDown (void) const
return m_nMIDIButtonTGDown;
}

const char *CConfig::GetMIDIButtonActionPgmUp (void) const
{
return m_MIDIButtonActionPgmUp.c_str();
}

const char *CConfig::GetMIDIButtonActionPgmDown (void) const
{
return m_MIDIButtonActionPgmDown.c_str();
}

const char *CConfig::GetMIDIButtonActionBankUp (void) const
{
return m_MIDIButtonActionBankUp.c_str();
}

const char *CConfig::GetMIDIButtonActionBankDown (void) const
{
return m_MIDIButtonActionBankDown.c_str();
}

const char *CConfig::GetMIDIButtonActionTGUp (void) const
{
return m_MIDIButtonActionTGUp.c_str();
}

const char *CConfig::GetMIDIButtonActionTGDown (void) const
{
return m_MIDIButtonActionTGDown.c_str();
}

bool CConfig::GetDAWControllerEnabled (void) const
{
return m_bDAWControllerEnabled;
}

bool CConfig::GetEncoderEnabled (void) const
{
return m_bEncoderEnabled;
Expand Down
32 changes: 32 additions & 0 deletions src/config.h
Original file line number Diff line number Diff line change
Expand Up @@ -210,12 +210,20 @@ class CConfig // Configuration for MiniDexed
// MIDI Button Navigation
unsigned GetMIDIButtonCh (void) const;
unsigned GetMIDIButtonNotes (void) const;

unsigned GetMIDIButtonPrev (void) const;
unsigned GetMIDIButtonNext (void) const;
unsigned GetMIDIButtonBack (void) const;
unsigned GetMIDIButtonSelect (void) const;
unsigned GetMIDIButtonHome (void) const;

// Action type for Midi buttons: "click", "doubleclick", "longpress", "dec", "inc", ""
const char *GetMIDIButtonActionPrev (void) const;
const char *GetMIDIButtonActionNext (void) const;
const char *GetMIDIButtonActionBack (void) const;
const char *GetMIDIButtonActionSelect (void) const;
const char *GetMIDIButtonActionHome (void) const;

// MIDI Button Program and TG Selection
unsigned GetMIDIButtonPgmUp (void) const;
unsigned GetMIDIButtonPgmDown (void) const;
Expand All @@ -224,6 +232,16 @@ class CConfig // Configuration for MiniDexed
unsigned GetMIDIButtonTGUp (void) const;
unsigned GetMIDIButtonTGDown (void) const;

// Action type for buttons: "click", "doubleclick", "longpress", "dec", "inc", ""
const char *GetMIDIButtonActionPgmUp (void) const;
const char *GetMIDIButtonActionPgmDown (void) const;
const char *GetMIDIButtonActionBankUp (void) const;
const char *GetMIDIButtonActionBankDown (void) const;
const char *GetMIDIButtonActionTGUp (void) const;
const char *GetMIDIButtonActionTGDown (void) const;

bool GetDAWControllerEnabled (void) const;

// KY-040 Rotary Encoder
// GPIO pin numbers are chip numbers, not header positions
bool GetEncoderEnabled (void) const;
Expand Down Expand Up @@ -326,6 +344,18 @@ class CConfig // Configuration for MiniDexed
std::string m_ButtonActionTGUp;
std::string m_ButtonActionTGDown;

std::string m_MIDIButtonActionPrev;
std::string m_MIDIButtonActionNext;
std::string m_MIDIButtonActionBack;
std::string m_MIDIButtonActionSelect;
std::string m_MIDIButtonActionHome;
std::string m_MIDIButtonActionPgmUp;
std::string m_MIDIButtonActionPgmDown;
std::string m_MIDIButtonActionBankUp;
std::string m_MIDIButtonActionBankDown;
std::string m_MIDIButtonActionTGUp;
std::string m_MIDIButtonActionTGDown;

unsigned m_nDoubleClickTimeout;
unsigned m_nLongPressTimeout;

Expand All @@ -343,6 +373,8 @@ class CConfig // Configuration for MiniDexed
unsigned m_nMIDIButtonTGUp;
unsigned m_nMIDIButtonTGDown;

bool m_bDAWControllerEnabled;

bool m_bEncoderEnabled;
unsigned m_nEncoderPinClock;
unsigned m_nEncoderPinData;
Expand Down
Loading