Bluetooth MIDI Controller for GSI Apps
GSi Control
Features
- Connect wirelessly to GSi apps running on Computer, iPad or iPhone
- Presets for VB3-II, Magic Tines, Model D6 and Genuine Soundware Piano Edition
- 7 Rotary pots, Expression pedal input and 6 toggle switches
- Powered from USB using a charger cable
Specifications and build
Components
SIAM Modular prototype board
Nano ESP32
Nano Teminal Adapter
7 10K Alpha T18 Pots
7 Bourne type knobs
6 Miniature toggle switches
Tactile switch with LED
Stereo Jack Socket for expression pedal
USB C breakout connector
Hammond 1591XXDTBU Translucent Blue ABS enclosure
Design
The Nano ESP32 has built in Bluetooth LE and there is a BLE library that supports the existing MIDI.h library for the Arduino:
#include <BLEMIDI_Transport.h>
#include <hardware/BLEMIDI_ESP32.h>
#include <hardware/BLEMIDI_ESP32.h>
BLEMIDI_CREATE_INSTANCE("GSiControl", MIDI)
bool isConnected = false;
#define BTN_Preset 9
#define BTN_Preset 9
So you don't need to include MIDI.h library
There are 8 analog pins A0 - A7. Connect A0-A6 to the pots and A7 the stereo jack for the expression pedal. The digital pins D0-D5 are connected to the toggle switches. Finally, the tactile switch uses D6 for the switch and D7 for the LED.
Setup
Once the board is built upload the sketch and connect it to a GSI app. Guido has included a Bluetooth option in he Device Settings page so just select it and it will find the GSi control box - just click connect:
The ESP32 has a yellow LED that will light when it is connected via Bluetooth:
CC Maps
The preset button selects one of five preset maps stored in this array:
Pots
int CCMapPOT[5][8] =
{
{ 7, 8, 10, 75, 76, 91, 73, 11 }, // VB3 II
{ 7, 12, 15, 36, 93, 91, 18, 19 }, // MAGIC TINES
{ 7, 8, 89, 86, 93, 91, 83, 11 }, // D6
{ 7, 8, 10, 75, 42, 91, 38, 11 }, // B3-x
{ 7, 12, 15, 44, 38, 50, 32, 33 }, // GS VOl1
};
{
{ 7, 8, 10, 75, 76, 91, 73, 11 }, // VB3 II
{ 7, 12, 15, 36, 93, 91, 18, 19 }, // MAGIC TINES
{ 7, 8, 89, 86, 93, 91, 83, 11 }, // D6
{ 7, 8, 10, 75, 42, 91, 38, 11 }, // B3-x
{ 7, 12, 15, 44, 38, 50, 32, 33 }, // GS VOl1
};
Switches
int CCMapSW[5][6] =
{
{ 30, 31, 66, 72, 59, 65 }, // VB3 II
{ 17, 16, 35, 35, 32, 31 }, // MAGIC TINES
{ 12, 13, 14, 15, 16, 17 }, // D6
{ 39, 40, 36, 44, 93, 58 }, // B3-x
{ 31, 30, 36, 42, 49, 48 }, // GS
};
{
{ 30, 31, 66, 72, 59, 65 }, // VB3 II
{ 17, 16, 35, 35, 32, 31 }, // MAGIC TINES
{ 12, 13, 14, 15, 16, 17 }, // D6
{ 39, 40, 36, 44, 93, 58 }, // B3-x
{ 31, 30, 36, 42, 49, 48 }, // GS
};

Comments