Home

Awesome

PedalinoMini™

Wireless MIDI foot controller for guitarists and more.

You can change the presets of your guitar rig, turn old MIDI equipment into something that’s USB-compatible, give you hands-free or foot-occupied ways to control your rig during a live performance, and it can be done with WiFi or Bluetooth. This is a full-featured MIDI controller, with three user profiles, and it can control a maximum of 36 foot switches. That’s an impressive amount of kit for such a small device; usually you’d have to spend hundreds or even thousands of dollars for a simple MIDI controller, and the PedalinoMini does everything with very cheap hardware.

Features

PedalinoMini™ 4

An easy way to create one is by building the PedalinoMini™ 4. I aimed to keep it as simple as possible.

PedalinoMini™ 4 operates seamlessly with its 4 footswitches, featuring a big 1.9" color display equipped with WiFi, Bluetooth, and USB MIDI capabilities. It is powered through a USB-C port, using either a power adapter or, for enhanced convenience, a compact power bank, ensuring up to 6 hours of uninterrupted functionality.

PedalinoMini™ 6/8

Do you need more footswitches? PedalinoMini™ 6 or PedalinoMini™ 8 is for you.

Sponsors

New features, bug corrections, priority reply will be offered at zero-day to sponsors only. Sponsors will have access to a private repository.

New features and bug corrections will be released to this public repository when one of the following goals is met (whichever come first):

When one of the previous goals will be reached sponsors will continue to receive in advance new versions and new goals will set.

Sponsors version additions/fixes since October 25th, 2024:

PedalinoMini™ Case 1 is available to sponsors only.

Public versions history

<details> <summary>3.5.0 - October 25th, 2024 - Bonus release for 500 stars</summary> </details> <details> <summary>3.2.2 - February 3st, 2024</summary> </details> <details> <summary>3.2.1 - February 1st, 2024</summary> </details> <details> <summary>3.1.6 - May 1st, 2023</summary> - Fixed power off action </details> <details> <summary>3.1.5 - April 30th, 2023</summary>

The following features:

has been released to public on April 30th, 2023. Thanks to the new sponsors: SrMorris, FelixMuellCode, MiqViq, serhatsoyyigit, potul, AndreySom, C*********, jimhiggs, A***********, Ratterbass, TarFilarek, S*********, bobvc133, itsptadeu, mosswind,,b*******, m*****, m*******, m********, TheNothingMan.

</details> <details> <summary>2.5.2 - September 23rd, 2022</summary>

Bonus version for doubling the stars on September 2nd, 2022.

</details> <details> <summary>2.5.1 - August 2nd, 2022</summary>

The following features:

has been released to public on August 2nd, 2022 thanks to the following sponsors: b*******, basst22778, dbosnyak, d***********, slapukas, Samantha-uk, Poznik, FelixMuellCode, yusufrahadika and s*****.

</details> <details> <summary>2.4.0 - February 26th, 2022</summary>

The following features:

has been released to public on February 26th, 2022. Thanks to the new sponsors: ClintR1984, pstechsolutions, mknerr, radioactivetoy, y0m1g, joesuspense, andeee, jsleroy, Viser, anssir, mattzzw.

</details> <details> <summary>2.3.2 - November 12th, 2021</summary>

The following features:

has been released to public on November 12th, 2021. Thanks to the new sponsors: RomanKlein777, michaelhauser, bobvc133, bmarshall91, p*************.

</details> <details> <summary>August 9th, 2021</summary>

The following features/fixes:

has been released to public on August 9th, 2021 thanks to the following sponsors: richardjs, P********, j*****, TarFilarek. wespac001 x 2, DR-Mello, DWSQUIRES, e36910, itsptadeu.

</details> <details> <summary>May 12th, 2021</summary>

The following features:

has been released to public on May 12th, 2021 thanks to the following sponsors: @MaxZak2020, @Alt Shift Creative, @serhatsoyyigit, @Kubbik1, @rigr, @jwyse, @teopost, @davidin73, @juani13973, @ba********, @MiqViq, @jisv48.

</details>

Bill of materials

The shortest bill of materials ever: an ESP32 board and a OLED display. That's it.

Not enough short?

Not enough powerful?

USB MIDI (ESP32 only) and DIN MIDI connection requires additional hardware.

Schematic

Schematic1 Schematic2 Schematic2

Warnings

To create your own ladder you can start simulating the below ones:

Simulate voltage ladder 2k 3k 5.1k 10k 30K

Simulate voltage ladder 10k (TC-Helicon Switch 6)

Simulate "D1 Robot LCD Keypad Shield" voltage ladder

How to upload firmware, WiFi provisioning and access to web user interface

Visit http://alf45tar.github.io/PedalinoMini/installer to install public firmware, update firmware, connect device to a WiFi network and visit the device's hosted web interface.

For sponsor only visit http://alf45tar.github.io/PedalinoMini/sponsor-installer to install latest firmware, update firmware, connect device to a WiFi network and visit the device's hosted web interface. It is required a secret key available on sponsor area.

The only requirement for now is to use a Google Chrome or Microsoft Edge browser (Safari and iOS devices are not supported yet). WiFi provisioing via Bluetooth is only supported in Google Chrome on Windows.

<details> <summary>Detailed instructions</summary>
  1. Connect PedalinoMini™ to a PC via USB
  2. Visit http://alf45tar.github.io/PedalinoMini/installer
  3. Select the latest firmware available
  4. Press "Connect"
  5. Select the USB/UART port where PedalinoMini™ is connected and press "Ok"
  6. Select "Install PedalinoMini™" and confirm to erase all data pressing "Install"
  7. Wait a couple of minutes to complete the installation and press "Next" at the end
  8. Reboot PedalinoMini™ and complete the WiFi provisioning
  9. Press "Connect to WiFi"
  10. Enter the Network Name and the Password of your WiFi and press "Connect"
  11. Press "Visit device" to access web user interface
</details>

USB MIDI using Raspberry Pi Pico (RP2040)

Raspberry Pi Pico is a generally available cost-effective board that can be used to add an USB MIDI connection.

Method 1

Thanks to Sthopeless

Method 2

For both methods:

ESP32 PinPico Pin
RX1GP0
TX1GP1
GNDGND

IMPORTANT: ESP32 board and Pico must share GND.

USB MIDI using Arduino Pro Micro

The cheapest and compact way to implement an USB MIDI connection is using an Arduino Pro Micro and the BlokasLabs/USBMIDI library. Upload the UsbMidiConverter example into the Arduino Pro Micro.

Serial1 of ESP32 (re-mapped to pin 18 RX and 19 TX) is connected to Serial1 (pin 1 TX0 and pin 2 RX1) of Arduino Pro Micro. Use a 3.3V Pro Micro board. A 5V Pro Micro board works too because the ESP32 is usually 5V tolerant.

Arduino Pro Micro is powered by the USB MIDI connection.

IMPORTANT: ESP32 board and Arduino Pro Micro must share GND.

Booting modes

PedalinoMini™ has 8 booting modes:

ModeNameDescription
1NormalBLE and WiFi are enabled. PedalinoMini™ starts the WiFi procedure on boot (connect to last AP -> WiFi Provisioning -> SmartConfig -> WPS -> Access Point).<br>After boot PedalinoMini™ will wait for BLE-MIDI connection.
2Bluetooth OnlyWiFi and Web UI are disabled.<br> PedalinoMini™ will wait for BLE-MIDI connection only.
3WiFi OnlyPedalinoMini™ starts the WiFi procedure on boot (connect to last AP -> WiFi Provisioning -> SmartConfig -> WPS -> Access Point).<br>BLE is disabled.
4Access Point with BluetoothPedalinoMini™ skip the WiFi procedure on boot and create a WiFi Access Point.<br>PedalinoMini™ will wait for BLE-MIDI connection too.
5Access Point without BluetoothPedalinoMini™ skips the WiFi procedure on boot and create a WiFi Access Point.<br>BLE is disabled.
6Reset WiFi credentialsForget the last connected access point.<br>On next boot PedalinoMini™ can be connected to a new AP.
7Ladder ConfigLearn mode for your ladder pedal. Any resistors ladder (up to 6 buttons) can be calibrated just pressing footswitches in any sequence. During calibration press and hold the footswitch until the timeout expires (the upper bar reaches zero) and the measure is acquired with a value in the botton bar. After calibration footswitches are numbered depending of the corresponding analog value: lower value lower number. TC HELICON Switch-6 footswitch 1 correspond to button 6, footswitch 2 to button 5, and so on until footswitch 6 to button 1.<br>Configure at least one pedal as Ladder before to proceed with configuration.
8Reset to factory default

The last booting mode (1-5) is selected if you don't press any button on boot.

The default boot mode is (1) Normal.

To select a different mode:

ModeNameUSB-MIDILegacy MIDIRTP-MIDIipMIDIBLE MIDIOSCWeb UIOTA Firmware UpdateHTTP Firmware Update
1Normalxxxxxxxxx
2Bluetooth Onlyxx--x--x-
3WiFi Onlyxxxx-xxxx
4Access Point with Bluetoothxxxxxxxxx
5Access Point without Bluetoothxxxx-xxxx

How to build and upload

PlatformIO is the recommended IDE for PedalinoMini™ build and upload.

  1. Install PlatformIO IDE for VSCode
  2. Install Git
    • On Windows, install git from https://git-scm.com/download/win
    • On macOS, install Command Line Tools for Xcode running xcode-select --install via Terminal. Remember to run the command every time you update your macOS.
  3. In VSCode run the following commands:
    • from View->Command Palette (Ctrl+Shift+P)
    • under PlatformIO Project Tasks select your environment (i.e. env:esp32doit-devkit-v1)
      • Click "Build" under General
      • Click "Upload" under General
      • Click “Upload File System Image” under Platform. Do not skip this step otherwise the WebUI will not works properly.

That's all folks.

Before any update save configuration, reset to factory default and reload configuration. EEPROM can change without any further advice.

How to connect PedalinoMini™ to a WiFi network

PedalinoMini™ supports IEEE 802.11 b/g/n WiFi with WPA/WPA2 authentication (only 2.4 GHz).

PedalinoMini™ support 5 WiFi provisioning methods: 1 via USB, 1 via Bluetooth and 3 via WiFi.

PedalinoMini™ is using ESP Web Tools not only to install the firmware, via USB with a click of button right from you browser, but also to connect it to WiFi with the same simplicity via USB or Bluetooth.

PedalinoMini™ also implements Wi-Fi Protected Setup (WPS) and Smart Config technology (Espressif’s ESP-TOUCH protocol). WPS needs access to the WPS button on the WiFi router. Smart Config requires a smartphone with one the following apps:

If the WiFi network is not available PedalinoMini™ will create an hotspot for you. Once connected to the PedalinoMini™ hotspot, you can use the web interface to set the SSID and password of an access point that you would like to connect to.

Any of the previous steps can be skipped pressing BOOT button.

void wifi_connect()
{
  auto_reconnect();           // WIFI_CONNECT_TIMEOUT seconds to reconnect to last used access point
  if (!WiFi.isConnected())
    improv_config();          // IMPROV_CONFIG_TIMEOUT seconds to receive provisioning SSID and password via USB or Bluetooth and connect to WiFi
  if (!WiFi.isConnected())
    smart_config();           // SMART_CONFIG_TIMEOUT seconds to receive SmartConfig parameters and connect
  if (!WiFi.isConnected())
    wps_config();             // WPS_TIMEOUT seconds to receive WPS parameters and connect
  if (!WiFi.isConnected())
    ap_mode_start();          // switch to AP mode until next reboot
}

How to connect to the web user intertace

The responsive and mobile-first configuration web user interface is available on http://device-name.local address (the address is case insensitive). The device identification name is unique per device. Every device/board has a different device name. For example I am using http://2ab267ac.local to connect to my PedalinoMini™.

WEBUI HOME

In order to know your device name and/or the IP address press for at least half a second the BOOT button and check the display.

As alternative method you can use the IP address. If you are using the AP mode the IP address is always 192.168.4.1 and the connection address is http://192.168.4.1 for everyone.

There is no credentials to connect to web user interface. Device name and credentials to connect to web user interface can be changed in the Options page.

Pedals

Once PedalinoMini™ is connected to a WiFI network and you are connected to the web user interface it is time to configure which pedal is connected to each of the 6 available ports. Pedal 7, 8 and 9 (if present) are the on board buttons and they are fully configurable.

WEBUI PEDALS

____________Description
ModeSelect one of the following: NONE, MOMENTARY, LATCH, ANALOG, JOG WHEEL, MOMENTARY 2, MOMENTARY 3, LATCH 2, LADDER, ULTRASONIC, ANALOG+MOMENTARY, ANALOG+LATCH.
Invert PolarityNormally open (NO) and normally closed (NC) momentary switches are supported and configurable by software if the foot switch do not have a polarity switch. On analog pedal or ultrasonic ranging sensor it invert the range.
Singles PressSelect Enable/Disable here to enable/disable PRESS, RELEASE and CLICK events.<br>CLICK event is detected after a PRESS followed by a RELEASE event on momentary switches and on PRESS and on RELEASE on latch switches.
Double PressSelect Enable/Disable here to enable/disable DOUBLE CLICK events.<br>If double press is enabled CLICK event is postponed until double press timeout (by default 400ms).
Long PressSelect Enable/Disable here to enable/disable LONG PRESS, REPEAT PRESSED and LONG RELEASE events.<br>LONG PRESS event is detected after a PRESS event with no RELEASE event within the long press timeout (by default 500ms).<br>After a LONG PRESS event a REPEAT PRESSED event is triggered every repeat press timeout (by default 1000ms) until the button is keep pressed.<br>After a LONG PRESS event the RELEASE event is replaced by a LONG RELEASE event.<br>Two sequences of events are possible: PRESS and RELEASE or PRESS, LONG PRESS, REPEAT PRESS (optional) and LONG RELEASE.
Analog CalibrationEnable analog pedal continuous calibration. Min and Max values are managed by PedalinoMini™. After each power on cycle move the expression pedals to its full range and PedalinoMini™ will calibrate it. During the first full movement of the pedal MIDI events could be not precise because PedalinoMini™ is still learning the full range of the pedal.
Analog ResponseMapping between analog pedal movement and response. Accepted values: LINEAR (as is response), LOG (great acceleration but than flat), ANTILOG (start slow with a rapid increase).
MinIn ANALOG mode minumum digital value (after analog-to-digital conversion) that can reach the connected expression pedal.<br>In ULTRASONIC mode the minimum distance (250 is around 2cm and it is not recommended to go below). Acceptable values are from 0 to 1023
MaxIn ANALOG mode maximum digital value (after analog-to-digital conversion) that can reach the connected expression pedal.<br>In ULTRASONIC mode the maximum distance (1023 is around 18cm and it is far enough for the application). Acceptable values are from 0 to 1023.
EasingIt controls the amount of easing. Possible values are: 1, 2 or 3. Bigger value makes the responsive values more responsive: output value follows immediately the input value. Recommended values: 1 for ultrasonic sensor, 2 or 3 for potentiometer.
Activity ThresholdThe amount of movement that must take place for it to register as activity and start moving the output value. Increase the value to suppress noisy potentiometer. Recommended values: 8 or 16 for potentiometer, 64 for ultrasonic sensor.

Controls

A control is a single switch of a pedal (i.e. button 2 of pedal 4) or a combination of 2 switched of any pedal to be pressed simultaneous. Controls are used to logical sort and hide the physical connection of switches or to define a new control as simultaneous press of 2 switches.

Actions are triggered by controls. As a consequence a control is needed also for analog and ultrasonic pedals.

Due to hardware limitation simultaneous press do not works with 2 switches of the same MOMENTARY 3, LATCH 3 and LADDER. Instead simultaneous press works well between one switch of a MOMENTARY 3/LATCH 3/LADDER pedal and any other switch of a different pedal of any type. Simultaneous press works well between the 2 switches of the same MOMENTARY 2 or LADDER 2 pedal.

For each control it is possible to define the default led number to be used in Actions. It helps to simply the hardware leds connections but keeping each led logically linked to a switch.

Of course the simultaneous release, double click and long press are supported too even if they are not so usefull.

WEBUI CONTROLS

Actions

Once Controls setup is complete proceed with Actions setup to define which event (press, release, double press, long press, repeat pressed, long release, move or jog) trigger an action.

  1. Select a bank on top left. Bank 0 is also called global bank. Actions added to bank 0 are active in all the others banks.
  2. Select a control on top right or "All"
  3. (Optional) Enter the Bank Name
  4. Click on New Action and select a control on the dropdown menu.

WEBUI PEDALS

________Description
OnThe event that trigger the action.<br>Momentary switches, latches and ladders have 7 different events: PRESS, RELEASE, PRESS&RELEASE, CLICK, DOUBLE CLICK, LONG PRESS, REPEAT PRESSED and LONG RELEASE. All of them need to be enabled on Pedals level otherwise the action is not triggered.<br>Analog expression pedals have only MOVE event.<br>Jog wheels have only JOG event.
ControlThe control that trigger the event as defined in Controls page.
SendThe action to be triggered on event.<br>It can be a MIDI message (PROGRAM CHANGE, CONTROL CHANGE, NOTE ON, NOTE OFF, PITCH BEND, CHANNEL PRESSURE, START, STOP, CONTINUE), a special action (BANK SELECT+, BANK SELECT-, PROGRAM CHANGE+, PROGRAM CHANGE-, BANK+, BANK-, MTC START, MTC STOP, MTC CONTINUE, TAP, BPM+, BPM-) or a SEQUENCE of them.<br>For an analog pedal leave it blank to activate the universal mode. In universal mode an analog pedal can be used to repeat the last MIDI message. A typical usage is to modify the value of the last CONTROL CHANGE.
From Value/To ValueDefine the range from a off value to a on value (see below).
Tags When OffAction name to display when off action is triggered.
Tags When OnAction name to display when on action is triggered.
LedSelect the led number and the off and on color. Use Default for use the default led defined in Pedals.
ActionMIDI ChannelMIDI CodeFromTo
Program ChangeChannelPC#--
Control ChangeChannelCC#From ValueTo Value
Control Change SnapChannelCC#From ValueTo Value
Note OnChannelNoteVelocity-
Note OffChannelNoteVelocity (+)-
Bank Select+ChannelMSBFrom LSBTo LSB
Bank Select-ChannelMSBFrom LSBTo LSB
Program Change+Channel-From PC#To PC#
Program Change-Channel-From PC#To PC#
Pitch BendChannel---
Channel PressureChannel---
MIDI Clock Master----
MIDI Clock Slave----
MIDI Clock Off----
Start----
Stop----
Ccontinue----
Sequence-Sequence #--
Step By Step+----
Step By Step-----
Bank+--From BankTo Bank
Bank---From BankTo Bank
MTC Master----
MTC Slave----
MTC Off----
MTC Start----
MTC Stop----
MTC Continue----
Tap----
BPM+----
BPM-----
OSC Message----
Profile+--From Profile#To Profile#
Profile---From Profile#To Profile#
Set Led Color----
Repeat----
Repeat OverwriteChannel-From ValueTo Value
Device Info----
Power On/Off----

Interfaces

WEBUI INTERFACES

The supported interfaces are:

InterfaceDescription
USB MIDIPlug&play USB MIDI interface. Requires additional hardware (see schematic).
Legacy MIDILegacy serial MIDI interface with 5 pins DIN connectors. Requires additional hardware (see schematic).
RTP-MIDIRTP-MIDI also know as AppleMIDI or Network MIDI. It is based on UDP protocol and it requires WiFi.
ipMIDIipMIDI is a multicast UDP protocol and it requires WiFi. ipMIDI works only if both end points are connected to the same 2.4 GHz WiFi network. Same router is not enough when one end point is connected to a 5 GHz WiFi network or to a different 2.4 GHz WiFI network hosted by the same router.
BLE MIDIRequires Bluetooth Low Energy (BLE).
OSCOSC messages are based on UDP protocol and it requires WiFi.

For each interface there are 4 filtering options:

______Description
INEnable/disable receiving MIDI messages from the interface
OUTEnable/disable sending MIDI messages to the interface
THRUEnable/disable so called MIDI Thru (every message received from the IN port is automatically sent to the OUT port of the same interface)
CLOCKEnable/disable receiving and sending CLOCK MIDI message

Routing between different interfaces is enabled between every IN enabled interfaces to any OUT enabled interfaces. Do not confuse routing (different interfaces) with MIDI Thru (between IN and OUT of same interface).

Sequences

WEBUI SEQUENCES

Options

PedalinoMini™ has a lot of options well documented in the Options page.

WEBUI OPTIONS 1

WEBUI OPTIONS 2

Configurations

The complete profile setup can be saved as configuration to be used later or just for backup reason in case of hardware failure. Configuration files can be downloaded and shared with others PedalinoMini™ users. A complete configuration file editor is provided for advanced operations.

WEBUI CONFIGURATIONS

Some example configurations are provides. The default configuration for PedalinoMini™ Case 1 is available as 'case1'.

iRig BlueBoard

PedalinoMini™ can emulate an IK Multimedia iRig Blueboard using 'blueboard' configuration. Midi Mode 1 is on bank 1 and Midi Mode 2 is on bank 2. PedalinoMini™ emulation works on any MIDI interface and not only "MIDI over Bluetooth" as the original iRig Blueboard.

Fender Mustang Amplifier

PedalinoMini™ can control a Fender Mustang I/II/III/IV Amplifier via MIDI. Additional software is required to translate MIDI messages to the proprietary USB protocol used by Fender Mustang amplifiers. The bonus configuration is called 'mustang' and works with 3 momentary switches and 3 jog wheels.

Display mode

WhereWhatDisplayDescription
Bank NameEmptyIf the current bank name is empty the current profile and the current bank is shown using a vintage 7 segment LED style. First digit is the profile, the others two are for bank.
Bank NameAnyIf current bank name is not empty the bank name is displayed within the 6 pedal names. PedalinoMini™ assumes the first action tag for the pedal as its pedal name. The bank name screen will switch every 4 seconds to display pedals current value if no event occurs.
Bank Name:If the bank name start with colon (:) the bank name is always shown (if no event occurs).
Bank Name.If bank name start with point (.) the current values are shown and events update values in real time without any display switch.
Bank Name##A double hashtag sign (##) in bank name is replaced with the bank number.
Action Tags:If action tag start with colon (:) the display is not switched when an event occurs.
Action Tags.If action tag end with dot (.) the corresponding led and color is set on boot.
Action Tag###A triple hashtag sign (###) in action tag is replaced with the current value of the parameter.

How to switch profiles

During normal operation

On TTGO T-Eight replace BOOT button with CENTER button.

End User Built (oldest first)

https://github.com/marosell marosell More details

https://github.com/mknerr mknerr

https://github.com/alf45tar alf45tar

https://github.com/jimhiggs jimhiggs

https://github.com/raidolo raidolo

https://github.com/bsos bsos

https://github.com/rigr rigr More details

https://github.com/Hans68 Hans68 More details

https://github.com/teopost teopost More details

https://github.com/gallochri gallochri More details

https://github.com/juani13973/pedalinio-18-footswitches-prototype juani13973 More details

https://github.com/MaxZak2020 MaxZak2020

https://github.com/aFunkyBass aFunkyBass More details

https://github.com/akosbeke akosbeke More details

https://github.com/borsei222 borsei222 More details

https://github.com/TarFilarek TarFilarek More details

https://github.com/bobvc133 bobvc133 More details

https://github.com/Samantha-uk Samantha-uk More details

https://github.com/potul potul More details

https://github.com/Celticpure Celticpure More details

https://github.com/jimhiggs jimhiggs More details

https://github.com/Keeze Keeze More details

https://github.com/mattzzw mattzzw More details

https://github.com/Jelle7and9 Jelle7and9 More details

https://github.com/regisampa regisampa More details