Ultimate NORD Stage MIDI Pedal Board

General Discussion of the Nord Stage (EX), Nord Stage 2 (EX), Nord Stage 3, and Nord Stage 4 Synths, FAQ, Troubleshooting etc.
guentergunter
Posts: 20
Joined: 19 Aug 2017, 20:32
7
Has thanked: 2 times
Been thanked: 12 times
Germany

Ultimate NORD Stage MIDI Pedal Board

Post by guentergunter »

I finally got my Nord Stage 3 compact 73 :keyboard2:
By far the best keyboard I ever have!

:arrow: Finally the time for the ultimate pedal board has come :thumbup:

First of all: It's MIDI based and compatible to any equipment.
Yet, it's optimised for the Stage 3.
The finished board
The finished board
board.jpg (372.92 KiB) Viewed 3976 times
(rotor speed control is done by Half Moon Switch)

- - - - - -

:arrow: I want it to be connected by one single cable only, to reduce the risk of false plugging and to be quickly prepared on stage. 8-)

So, there are two initial drawbacks:
  1. The Nord Stage 3 does NOT support the program up/down functionality via MIDI (altough it could be implemented easily). A separate
    TRS cable is needed.
  2. The pedal board needs power for the micro-controller.
The solution is to add a separate 8 pin connector to the Nord Stage 3 :thumbup:

- - - - - -

:arrow: An Arduino (Pro Micro) does the magic thing of translating pedal positions into MIDI messages.

After two days of heavy engineering, I finally found out how to add velocity dependent piano pedal noise :wave:
Until now only seen with the original Nord Triple Pedal! :!:
(thanks to DrNeurus and maxpiano for their initial work)
2 - circuit diagram.pdf
circuit diagram
(67.11 KiB) Downloaded 286 times
Here's the source code:

Code: Select all

// program code for an Arduino Micro to operate the pedal-board


#define MIDI_Channel 0


// PCB pin numbers

#define damper_           A0
#define expression_       A1
#define sostenuto_        3
#define swell_            A2
//#define up_             4    // Don't forget to remove comment in 'loop'
//#define down_           5    // Don't forget to remove comment in 'loop'


// the variables

uint8_t   i = 0;

int       damper = 1;                 // Roland DP-10
int       damper_last = 1;
int       damper_dist[7] = {0, 0, 0, 0, 0, 0, 0};        // may contain negative numbers
int       damper_speed = 0;
uint8_t   sostenuto = 1;              // Yamaha FC-5
uint8_t   sostenuto_last = 1;
int       expression = 1;             // Yamaha FC-7 
int       expression_last = 1;
uint8_t   swell = 1;                  // Korg EXP-2
uint8_t   swell_last = 1;
uint8_t   up = 1;                     // Iron foot button on the right
uint8_t   up_last = 1;
uint8_t   down = 1;                   // Iron foot button on the left
uint8_t   down_last = 1;

uint8_t   cmdByte;
uint8_t   Byte1;
uint8_t   Byte2;


void send_MIDI_message (byte cmd, byte byte1, byte byte2)
{
  Serial1.write(cmd + MIDI_Channel);
  Serial1.write(byte1);
  Serial1.write(byte2);
}



void setup()
{
  pinMode(sostenuto_, INPUT);
  pinMode(sostenuto_, INPUT_PULLUP);
/*
  pinMode(up_, INPUT);
  pinMode(up_, INPUT_PULLUP);
  pinMode(down_, INPUT);
  pinMode(down_, INPUT_PULLUP);
*/

  Serial1.begin(31250);     // UART-Serial for MIDI
//  Serial.begin(9600);       // USB Serial for memory monitoring
}



void loop()
{

// CATCH SYSTEM STATE

  // ADCs have 10 Bit (0 ... 1023)

  damper =  analogRead(damper_);                  // first readout
  
  sostenuto = digitalRead(sostenuto_);
  
  expression =  analogRead(expression_);          // ! dead centre: 655 ... 690 !
  if (expression < 690)                           // hyteresis for dead centre
  { expression = constrain (expression, 0, 655); }
  else
  { expression = map (expression, 690, 1023, 656, 1023); }
  
  swell =  map ( constrain( (analogRead(swell_)) , 48, 1018), 48, 1018, 127, 0 ) ;

//  up = digitalRead(up_);
//  down = digitalRead(down_);

  i++;
  if (i >= 7) { i = 0; }
  damper_dist[i] = damper - analogRead(damper_);  // second readout
  damper =  map ( damper, 0, 1030, 0, 2 ) ;


// CHECK FOR MOVEMENTS, AND IN CASE: REACT

  if (damper != damper_last)
  {
    damper_speed = 0;
    for (uint8_t j = 0; j < 7; j++)
    {
      damper_speed += damper_dist[j];
    }
    damper_speed /= 7;
    damper_speed = map (constrain (damper_speed, -15, 15), -16, 16, -5, 5 );
    
    if (damper == 1)
    {                 // pedal noise when pressing the pedal
      damper_speed = 27 + (damper_speed*(-3) );     // values: 27 ... 42
      send_MIDI_message(0xB0, 64, damper_speed);
      send_MIDI_message(0xB0, 64, 127);
    } else {          // pedal noise when releasing the pedal
      damper_speed = 10 + (damper_speed*2) ;        // values: 10 ... 18
      send_MIDI_message(0xB0, 64, damper_speed);
      send_MIDI_message(0xB0, 64, 0);
    }
    damper_last = damper;
  }

  if (sostenuto != sostenuto_last)
  {
    send_MIDI_message(0xB0, 66, (sostenuto * 127));
    sostenuto_last = sostenuto;
  }

  if (expression != expression_last)
  {
    send_MIDI_message(0xB0, 11,  map ( expression, 0, 1023, 0, 127 ) );
    expression_last = expression;
  }

  if (swell != swell_last)
  {
    send_MIDI_message(0xB0, 4, swell);
    swell_last = swell;
  }


/*
  if (up != up_last)
  {
    up_last = up;

    send_MIDI_message(0xB0, 31, (127 * up));
  }

  if (down != down_last)
  {
    down_last = down;

    send_MIDI_message(0xB0, 32, (127 * down));
  }
*/

}
- - - - - -
Finally the complete setup :keyboard2:
Together with the Nord Stage 3 HP76
Together with the Nord Stage 3 HP76
WITH THE NORD.jpg (480.06 KiB) Viewed 5791 times
Hope you enjoyed and maybe gained some new information :thanx:
:keyboard:
Last edited by guentergunter on 18 Aug 2020, 03:16, edited 43 times in total.
These users thanked the author guentergunter for the post (total 5):
Mr_-G-, Berretje, Johannes, Bio Floyd, FZiegler
User avatar
Mr_-G-
Moderator
Posts: 4706
Joined: 18 Aug 2012, 16:48
12
Your Nord Gear #1: Nord Stage 2
Has thanked: 1451 times
Been thanked: 1255 times

Re: Custom, comprehensive "Nord Stage Pedal Board"

Post by Mr_-G- »

Thank you. Very nice project.
One observation: you have only 1 switch in the diagram, but the photos show 2.
guentergunter
Posts: 20
Joined: 19 Aug 2017, 20:32
7
Has thanked: 2 times
Been thanked: 12 times
Germany

Re: Custom, comprehensive "Nord Stage Pedal Board"

Post by guentergunter »

Mr_-G- wrote:Thank you. Very nice project.
One observation: you have only 1 switch in the diagram, but the photos show 2.
There are actually even 3 switches ;)
  • 1x Rotor control (Yamaha FC 5)
  • 2x metal foot button
Since there's no possibility to do the program up/down via midi (yet), I only connected the FC5 to the Arduino - and the foot buttons directly to a TRS-Plug.

The good thing: If ever Clavia decides to implement program up/down via MIDI, it’s easy to solder the foot buttons to the Arduino instead and update the Arduino program (10 mins work).


I updated the wiring diagram in the first post for clarity :thumbup:
These users thanked the author guentergunter for the post:
Mr_-G-
User avatar
Quai34
Posts: 1876
Joined: 01 Jan 2012, 23:02
12
Your Nord Gear #1: Nord Stage 2
Your Nord Gear #2: Nord Lead 1/2/2x
Location: CANADA WINNIPEG
Has thanked: 117 times
Been thanked: 309 times
Contact:
Canada

Re: Custom, comprehensive "Nord Stage Pedal Board"

Post by Quai34 »

Does the TRS program up and down works when two programs are consecutive? If program 1 is verse and program two chorus, you use it back and forth to switch from verse to chorus right? This is the goal....?
Stage 2/C2/NL2X+TC Pedals, 2XMatrix, EMU P2K, TX802, DSI P8/Tetra+H9, P12+TC HoF, D50+PG1000, XV5080,AX keytar, Streichfett, Drumbrute.Ibanez SR1200 & 2605 basses, Artstar AS153,G&L L2000,Legacy HSS,Asat Blueboys,Asat Deluxe Savanna.genelec 8040A.
User avatar
Quai34
Posts: 1876
Joined: 01 Jan 2012, 23:02
12
Your Nord Gear #1: Nord Stage 2
Your Nord Gear #2: Nord Lead 1/2/2x
Location: CANADA WINNIPEG
Has thanked: 117 times
Been thanked: 309 times
Contact:
Canada

Re: Custom, comprehensive "Nord Stage Pedal Board"

Post by Quai34 »

Also, where did you find your carbon plate?
Stage 2/C2/NL2X+TC Pedals, 2XMatrix, EMU P2K, TX802, DSI P8/Tetra+H9, P12+TC HoF, D50+PG1000, XV5080,AX keytar, Streichfett, Drumbrute.Ibanez SR1200 & 2605 basses, Artstar AS153,G&L L2000,Legacy HSS,Asat Blueboys,Asat Deluxe Savanna.genelec 8040A.
infi99
Patch Creator
Posts: 7
Joined: 21 Jun 2015, 08:17
9
Your Nord Gear #1: Nord Stage 2 EX
Has thanked: 12 times
Been thanked: 3 times
Germany

Re: Custom, comprehensive "Nord Stage Pedal Board"

Post by infi99 »

Very cool Arduino project!
If i had unlimited money I would buy Clavia ;)
guentergunter
Posts: 20
Joined: 19 Aug 2017, 20:32
7
Has thanked: 2 times
Been thanked: 12 times
Germany

Re: Custom, comprehensive "Nord Stage Pedal Board"

Post by guentergunter »

Quai34 wrote:Does the TRS program up and down works when two programs are consecutive? If program 1 is verse and program two chorus, you use it back and forth to switch from verse to chorus right? This is the goal....?
Honestly I don’t know.

But that should be found in the Nord’s manual.
My board delivers the pure function of a connected dual foot pedal board like the BOSS FS-6.
User avatar
Quai34
Posts: 1876
Joined: 01 Jan 2012, 23:02
12
Your Nord Gear #1: Nord Stage 2
Your Nord Gear #2: Nord Lead 1/2/2x
Location: CANADA WINNIPEG
Has thanked: 117 times
Been thanked: 309 times
Contact:
Canada

Re: Custom, comprehensive "Nord Stage Pedal Board"

Post by Quai34 »

Ok, yes, that was my question, the bossFS-6 is the one I think I would buy when I will have my Stage 3.
Also, did you see my question about where you bought your carbon plate to put all the pedals on it?
Last edited by Quai34 on 04 Nov 2017, 16:42, edited 1 time in total.
Stage 2/C2/NL2X+TC Pedals, 2XMatrix, EMU P2K, TX802, DSI P8/Tetra+H9, P12+TC HoF, D50+PG1000, XV5080,AX keytar, Streichfett, Drumbrute.Ibanez SR1200 & 2605 basses, Artstar AS153,G&L L2000,Legacy HSS,Asat Blueboys,Asat Deluxe Savanna.genelec 8040A.
guentergunter
Posts: 20
Joined: 19 Aug 2017, 20:32
7
Has thanked: 2 times
Been thanked: 12 times
Germany

Re: Custom, comprehensive "Nord Stage Pedal Board"

Post by guentergunter »

Quai34 wrote:Also, where did you find your carbon plate?
:arrow: eBay (Carbon plate)
guentergunter
Posts: 20
Joined: 19 Aug 2017, 20:32
7
Has thanked: 2 times
Been thanked: 12 times
Germany

Re: Custom, comprehensive "Nord Stage Pedal Board"

Post by guentergunter »

infi99 wrote:Very cool Arduino project!
If i had unlimited money I would buy Clavia ;)
I suppose the development to be much more expensive :D
Post Reply