Back to main page...


User Manual --- Standard Control Surface

The optional Standard Control Surface (SCS) allows to edit some (but not all) configuration values without the need of a computer.

Hardware: the original SCS

Actually we've two ways how to access the SCS menu system. First let's describe the original SCS:

A detented rotary encoder and 6 buttons are directly connected to J10 of the MBHP_CORE_LPC17 module to control the menu system:
Schematic of the Standard Control Surface
In addition a LCD is required. The recommended size is at least 2x20! Graphical LCDs (GLCDs) are supported as well.

The MIDIO128 project uses the same control surface, which means that users who built a MIDIO128 can upload the MIDIbox NG firmware and control it with their existing hardware, and vice versa!

Meanwhile also a PCB is available which has been created by Ilmentator - see this Wiki page.

In the main page (which is active after power-on) it's possible to emulate BUTTON and ENC functions, which means that a very basic MIDI controller with a rotary encoder + 6 buttons could be created without the need to attach a MBHP_DIN module to the core!

A premade PCB layout for the SCS doesn't exist yet, but if you are interested to create one: step forward! :-)

Hardware: the emulated SCS

Alternatively, it's possible to access the SCS menu system from buttons/encoder which are connected to a MBHP_DIN module.

In this case, Meta events have to be used to trigger the SCS functions. The events could be assigned to dedicated buttons/encoder, but also to controllers which are part of a bank (means: access the SCS by pressing your self-defined shift button which switches to a different bank).

Example configuration:

EVENT_BUTTON id=  1  type=Meta   meta=ScsSoft1 range=0:1
EVENT_BUTTON id=  2  type=Meta   meta=ScsSoft2 range=0:1
EVENT_BUTTON id=  3  type=Meta   meta=ScsSoft3 range=0:1
EVENT_BUTTON id=  4  type=Meta   meta=ScsSoft4 range=0:1
EVENT_BUTTON id=  5  type=Meta   meta=ScsShift range=0:1
EVENT_BUTTON id=  6  type=Meta   meta=ScsMenu  range=0:1

# if dec/inc buttons should be used:
# DEC:
EVENT_BUTTON id=  7  type=Meta   meta=ScsEnc   range=63:63 button_mode=OnOnly
# INC:
EVENT_BUTTON id=  8  type=Meta   meta=ScsEnc   range=65:65 button_mode=OnOnly

# if a rotary encoder should be used:
ENC n=  1   sr= 15 pins=0:1   type=detented3
EVENT_ENC    id=  1  type=Meta   meta=ScsEnc   range=0:127 enc_mode=40Speed

Main Page

In the main page (which is active after power-on) the SCS menu system is inactive. Instead, MIDIbox NG will display the strings which are printed by the controllers as specified in the .NGC file.

By pressing the EXIT button the menu system will be entered. Press it again to exit the menu system.

The SOFT1..4 and SHIFT button, as well as the encoder have no effect in the main page by default, but they can emulate controller ids!

E.g. with following configuration, the SOFT buttons can be used to select a bank, and the SHIFT button is used to enable the FAST mode for rotary encoders:

# the SCS should emulate button/enc functions in main page
SCS soft1_button_emu_id=2000 \
    soft2_button_emu_id=2001 \
    soft3_button_emu_id=2002 \
    soft4_button_emu_id=2003 \
    shift_button_emu_id=2004 \

# Controlled from SCS buttons at J10 in main page
EVENT_BUTTON id=2000  type=Meta   meta=SetBank   button_mode=OnOnly range=1:1  lcd_pos=1:17:1 label="Bnk%q"
EVENT_BUTTON id=2001  type=Meta   meta=SetBank   button_mode=OnOnly range=2:2  lcd_pos=1:17:1 label="Bnk%q"
EVENT_BUTTON id=2002  type=Meta   meta=SetBank   button_mode=OnOnly range=3:3  lcd_pos=1:17:1 label="Bnk%q"
EVENT_BUTTON id=2003  type=Meta   meta=SetBank   button_mode=OnOnly range=4:4  lcd_pos=1:17:1 label="Bnk%q"
EVENT_BUTTON id=2004  type=Meta   meta=EncFast:4 button_mode=OnOff  range=0:2

# the SCS encoder at J10 just increments/decrements the bank
# redundant function - could be changed in future
EVENT_ENC    id=2000  type=Meta   meta=SetBank   range=1:4

Of course, the buttons/encoders could also trigger any other action which is controllable by an EVENT_* definition. E.g., they could also send MIDI events.

In fact, MIDIbox NG configurations are thinkable which only only consist of these SCS components!

Menu Pages

The SCS menu will be entered by pressing the EXIT button in the main page:
The pages are described in more details below.
Note that the 2x20 LCD will only display 4 of these items at once. Use the rotary encoder to scroll through the menu, and use a soft button to select the item above the button. Use the Exit button to get back to the previous page.

By pressing the Shift button a special page will pop up:

  • Clk: no function yet!
  • BPM: no function yet!
  • DOUT: allows to disable all DOUT pins (like "All Notes Off") from any page
  • MSD: enables/disables the Mass Storage Device driver as descriped in the "Integrated SD Card Reader" topic



The Var page allows to change SysEx dump related variables directly from the control surface:

  • Dev: the device number ^dev
  • Pat: the patch number ^pat
  • Bnk: the bank number ^bnk
  • Ins: the instrument number ^ins
  • Chn: the channel number ^chn

The variables could also be used for other purposes of course, they are only placeholders for typical usecases.



The Snapshot page allows to select, load, save and dump a snapshot.

Snapshots are stored in a .NGS file with the same name of the .NGC configuration which is currently active.

Up to 128 snapshots are available: 0..127; the stored values are referenced with the control element ids. It's allowed to add or remove ids, but they shouldn't change anymore if you are starting to create snapshots, otherwise values will be restored for the wrong control elements. If id changes can't be omitted, please remove the .NGS file from SD Card, so that a new one will be created.

Note that snapshots can be alternatively controlled from buttons or incoming MIDI events by using meta events as described in the .NGC page.



The Router page allows to configure the integrated MIDI Router.
The router consists of 16 "nodes".
Each node can be connected to an individual source and destination port.
A node is activated by selecting a source MIDI channel != "--", e.g. 1..16 or All (for all channels).
The node will forward a MIDI event to the destination port. Either to the original channel ("All"), or to a changed channel (1..16)

  • Node: the selected router node (1..16)
  • SrcP: the source port
  • Chn.: the source channel ("--" to disable, 1..16 or "All")
  • DstP: the destination port
  • Chn.: the destination channel ("--" to disable, 1..16 to change the channel, or "All" to keep it untouched)


Aside from the possibility to configure Ethernet and OSC Server/Client from the MIOS Terminal as described at the MIDIbox OSC page, it's also possible to change the settings from the control surface:
allows to configure the OSC ports 1..4.
Each OSC port has an individual remote IP, a remote port (to which OSC packets will be sent) and a local port (from which OSC packets will be received). Various packet formats are supported, additional modes can be added in future on request.

  • Port: the selected OSC port (1..4)
  • Remote IP: the remote IP assigned to the OSC port (e.g. the IP of your iPad)
  • Remote Port: the remote port to which OSC packets will be sent
  • Local Port: the local port from which OSC packets will be received
  • Mode: following transfer formats are currently supported:
    • MIDI: MIDI events are bundled into MIDI elements
    • Text Msg (Integer): uses human readable pathes, values are in integer format
    • Text Msg (Float): uses human readable pathes, values are in float format
    • MPP (Pianist Pro): selects format which is used by Pianist Pro
    • TOSC (TouchOSC): selects format which is used by TouchOSC

See the MIDIbox OSC chapter for more details about the OSC protocol.



The Network page allows to configure the Ethernet interface of the MBHP_CORE_LPC17 module.

  • DHCP: if enabled (default), the Host IP, Network Mask and Gateway address will be requested from a DHCP Daemon (e.g. your wireless router) automatically whenever the ethernet cable is connected. The configuration could take some seconds depending on the responsiveness of your router.
  • IP Host: if DHCP on: displays the current IP address, if DHCP off: allows to enter the IP address of your MIDIbox NG manually
  • Netmask: if DHCP on: displays the current netmask, if DHCP off: allows to enter the netmask of your MIDIbox NG manually
  • IP Gateway: if DHCP on: displays the current gateway address, if DHCP off: allows to enter the gateway of the ethernet network manually



The Monitor page shows all IN ports at the upper line, and OUT ports at the lower line.

Whenever an event is received or sent, the appr. item will show the event for a short moment.
This gives you a great overview of the MIDI activity, especially to analyze the current track and MIDI router setup.


The MIDI Learn function allows to assign a received MIDI event (Note/Aftertouch/CC/Program Change/PitchBender) to a controller (button/encoder/pot/motorfader). In NRPN mode it's even possible to assign an incoming NRPN event. In this learn mode, CC#6/38/98/99 will be transformed to an NRPN and can't be learned "standalone", therefore it's provided as a separate selection.

The usage is simple:

Select either "Common" or "NRPN" to start the learning procedure. Thereafter following screen will appear:
which tells you that MBNG is waiting for an incoming MIDI event.

The incoming MIDI event should be sent over the full range (e..g. 0...127) to define the min/max value of the event which should be learnt: Screen
Once the values have been received, just move the controller (button/encoder/pot/motorfader) to which the new event should be assigned.

-> done!

Please note that it's also possible to assign the MIDI Learn function to a dedicated button by using a Meta Function.



The Disk page allows to store and restore a patch on SD Card of a given name.

  • Load: opens a filename browser for all .MIO files found on SD Card:
    Select one of these files to load the patch (or press the Exit button to cancel this operation).
  • Save: enter the filename with the rotary encoder:
    Press "SAVE" to store the patch (or press the Exit button to cancel this operation).

Planned Features

It's planned to store/restore "snapshots" from the SCS, which allow to recall controller values (resp. SysEx patches) from files stored on SD Card.

Last update: 2021-04-04

Copyright 1998-2020, Thorsten Klose. All rights reserved.