Using a foot pedal

I am looking to connecting a foot pedal to my PI.

I am wanting to use the LV2 plug-ins with my PI/PISound live, as a digital guitar effects unit. The missing piece is a pedal.

I see there have been some users here using FCB1010 foot controller w/EurekePROM chip upgrade (My First Loop (inspired by Reinhardt Buhr) (made with Pisound + Modep + Sooper Looper))… Also I found this:

Is any body here using either of these, or some other solution, to control a mod-host?

I thoughtg a USB pedal would be the answer but it is not that simple. Using USB pedals (that are effectively USB key boards with a few keys) it is not trivial with a headless set up.

If you feel like going for a DIY solution, I’d recommend this wonderful project:

I made one for a friend and it’s really cool.

Ask and ye shall receive.

I have cracked reading keypresses from the cheap ($30) three pedal usb keyboard thing…

Stripped of error checking, includes, and such cruft here is how: Three steps:

  1. Wait for a event on the input file handle select
  2. Check what key has been pressed ioctl/EVIOCGKEY
  3. Consume all the data ready to be read from the file handle so next time around the loop select can do its thing.

So simple once you know how…

fd_set rfds;
struct timeval tv;
int retval, res, fd;
unsigned buff_size = 1024;
char buf[buff_size];
unsigned yalv;
uint8_t key_b[KEY_MAX/8 + 1];
fd = open("/dev/input/event0", O_RDONLY);
last_yalv = 0;

  // Wait for something to happen on the file                                                                                                                            
  FD_SET(fd, &rfds);
  retval = select(fd+1, &rfds, NULL, NULL, &tv);

  // What key was activated?                                                                                                                                             
  memset(key_b, 0, sizeof(key_b));
  if(ioctl(fd, EVIOCGKEY(sizeof(key_b)), key_b) == -1){
    printf("IOCTL Error %s\n", strerror(errno));
    return -1;
  for (yalv = 0; yalv < KEY_MAX; yalv++) {
    if (test_bit(yalv, key_b)) {
      printf("  This is the key 0x%02x\n", yalv);
  /* Consume what can be read from fd */
  res = read(fd, &buf, buff_size);
1 Like

If you just want a straightforward wired midi pedal, then I would recommend something like a Tech21 Mongoose. I’ve had great success using it’s predecessor (Midimoose) for live gigs with both a laptop with a USB-Midi cable running guitarix, and a PiSound+pi3 running MODEP.

I got my Midimoose secondhand over 10 years ago, but if I were looking for a solution now I would definitely go DIY with the PedalinoMini project - it looks far more versatile and way cooler!

1 Like

I´m using FCB1010 + Eurekaprom.
Works 100%, but I´ve expected more from eureka (any function to any control any time…).
Anyway, FCB1010 worth the investment.

My setup:

RPi 3b
Raspbian Buster Lite (1)
Arduino Leonardo (for LCD)
LCD 16x2
Audio Injector Stereo
Eurekaprom 3.2

(1) lots of customization made by Python.
(2) There exists a 2nd boot option to start Guitarix instead of MODEP, just in case…

I do not know what Eurekaprom is. I am seeing it a lot in connection to FCB1010.

How does the FCB1010 talk to Midep? Midi?

Eurekaprom is a chip with alternative firmware to FCB1010.
The standard firmware is considered limited and buggy, so some people had made custom firmwares and sold them.
And yes, FCB talks to RPi by MIDI over USB, and then Modep (you will need a proper cable/adapter).

@aFunkyBass do you happen to have a gut-shot or a rough schematic of your build? I’m trying to build a PedalinoMini and I can’t get any switch presses to register. I have loaded the firmware successfully and can configure via the web interface, so I’m mostly sure I’m just wiring it up wrong. Seeing how a successful build is wired would be super helpful.

Hello @jasonbirchler! I wired it up following the schematics on Pedalino Mini site → PedalinoMini/Schematic_PedalinoMini_Sheet-3.svg at master · alf45tar/PedalinoMini · GitHub

Pedalino has 6 channels made of two inputs (one analong and one digital). Each channel can accept up to 6 switches depending on how you connect them to your physical switches. If you take a look at the schematics, you see on the left the six channels, and on the right the possible configurations. In my setup I’ve used the “Momentary 2” connection so that I don’t need any extra component, aside from the pullup resistor. I have the following schema:

  --- Input D1 - Switch 1
  --- Input A1 - Switch 2
  --- Input D2 - Switch 3
  --- Input A2 - Switch 4
  --- Input D3 - Switch 5
  --- Input A3 - Switch 6
  --- Input D4 - Switch 7
  --- Input A4 - Switch 8

What kind of wiring did you try? Have you configured the “pedals” page of the WEB UI accordingly?

Take a look at the serial monitor, it should tell you what’s going on under the hood, even if you don’t assign any actions to pedals. If you wired the switches correctly, it should display a message everytime you press one.

One more thing… There was a bug a few months ago that prevented actions to be executed if you didn’t define them in the global bank. Probably it’s been fixed but my suggestion is to define your actions there, just to make sure that everything is working as expected.

Let me know your progress.

@aFunkyBass I do not understand.

When your pedal is connected to modep how responsive is it changing the settings?

If you switch between two pedal boards can you do it without a audible glitch?

I could not get that using the methods I could find. Best I got was 200ms. How can a different pedal do differently?

Ciao @worik, nope… Switching pedalboards is a long process, and the signal doesn’t get through until all the the effects are loaded, so I guess that’s not the way to go if you want a fast response.

Have you tried snapshots? I’ve never used them, bu they look promising.

Btw, you could set up multiple ‘pedalboards’ within a pedalboard, and use switch box plugins to change the signal routings. It might not be super convenient, but it should allow for quick switching of effects being used. Snapshots may help with applying the switch settings in one go, but I haven’t looked deep into the functionality. :slight_smile:

1 Like

First, this is kind of diverging from the original topic. Should this be moved to a new one?

I tried wiring up a breadboard like the one shown here. I can’t get any switch to register. I saw nothing change on my pedalino display, I saw nothing in my MIDI monitor (the device registers, but no events) and I saw nothing in the serial monitor.

I think this is where I’m getting mixed up. Part of the problem is that I read schematics about as well as I read music, which is to say slowly and semi-accurately. If I understand correctly, you are saying that in the firmware, there is the concept of a “Channel” and each of these is associated with 2 pins on the board - one of the digital pins and one of the analog pins (e.g. VP and D25 on an ESP32). Is this correct?

I won’t have a chance to take another crack at this for a couple of weeks, but I’ll definitely share my progress when I do!

What do you mean. I do not understand

I do not know what you mean by “multiple ‘pedalboads’” and “switch box plugins”?

I had not thought about the snapshots. I have seen them in the front end, but I am a beer of short attention span so I have not gone down that rabbit hole. Thank you for the reminder I might have a look.

The switch box plugins allow you to dynamically switch the route of the signal within the same pedalboard. With some strategic planning, you could build multiple effect pathways within the same pedalboard, and use the switch plugins to change the route on the fly. It should be immediate. And snapshots could be helpful in controlling it as well.