So the rev02 board was almost ok. Now we have 4 push-button bi-color LEDs. Of these, buttons 2, 3 an 4 are connected to the TRIG INPUT 2, 3, 4 respectively, while button 1 is connected to a different GPIO than TRIG IN 1. This allows to use buttons 2, 3, 4 to manually trigger the corresponding inputs. The brightness and the mix of yellow/red LEDs is controllable individually via software (via PWM and a tri-state pin). Button 1 can be used to trigger some "system" functions (e.g.: enter patch selection mode), but it can also be connected in software to TRIG IN 1, to behave like the other buttons.
We will have two modules, core and expander. The Bela will be plugged into the core. The expander requires the core, but the core does not require the expander. A ribbon cable is used to provide power and signals from the core to the expander (no need to feed it with a separate power connector from your power supply), so they do not have to be both in your rack and they do not even need to be side by side.
Core:12HP
2 audio in (AC-coupled)
2 audio out (DC-coupled)
4x CV in (with pots offset)
4x CV out
2x trigger in
2x trigger out
USB Device port
2x button with integrated bi-color LED
Power consumption (on the +12V rail): 450mA max.
Expander:10HP
4xCV in (with pots offset)
4xCV out
2x trigger in
2x trigger out
2x button with integrated bi-color LED
USB Host port
Levels (as measured on this prototype):
Audio out: -5.3V : 5.3V
Audio in: 11.3v pk-to-pk
Analog in: not sure, it should be -5V : 5V, with an additional 5V offset allowed by the pot.
Analog out: -5.4V : 4.7V
Improvements over rev01:
- we are now using the balanced line-level audio outputs from Bela instead of the headphone output. This requires soldering an extra 4x1 header on the Bela cape, but gives a better SNR and - most importantly - a DC-coupled signal.
- we switched to Beaglebone Green in order for the module to fit vertically in the eurorack case and still be able to plug a cable into the USB host/device ports at the same time (the Green has the two USB ports on the same side!).
- we now have the 4 switches and bi-color LEDs.
- we pushed the BeagleBone's headers down on the PCB in order to allow space at the top for the USB cables. Now some of the pins we need from the BeagleBone's headers are underneath the through-hole jack sockets. We managed to fit a 2x2 SMD male header in between the through holes, but this is a bit of a challenge to assemble (requires modification of the part to make sure it is at the same level as the through-hole headers we use for the other pins).
Open challenges:
in order to be able to dim independently the two LEDs in each button, we use PWM on one terminal of the bicolor LED and a tri-state digital pin on the others side. The tri-state is switched at audio rate. The more time the tri-state spends on HIGH/LOW, the more the balance of the color is going to be shifted towards yellow or red (respectively). The more time the tri-state spends in high-impedance mode, the more dimmed the LED will be, as explained/exemplified here. This approach requires one GPIO for each bicolor LED plus a PWM line that can be shared between multiple LEDs. We are using two PWM lines, each servicing two LEDs.
It is not clear yet if the LEDs can be made bright enough with this approach, as we may hit the BBB's output sourcing/sinking current limit. Right now we have a 1k resistor there, we will play around with smaller values and see if it's workable. Adding external buffers on the GPIOs would be a bit challenging (tri-state buffers require two GPIOs each or a bunch of external components!).
We hope that the next revision of the PCB will be the last one. As for a release date, that is not set yet, hopefully Q1 of 2018.