Talko 2 Firmware & Manuals
Choose the manual for the firmware installed on your Talko 2. The instrument announces its firmware version when it starts.
Standard Talko 2 firmware
The firmware supplied with Talko 2. See the manual for its speech banks, controls and the standard firmware download.
Read the standard Talko 2 user manual
Talko S.A.M.
An alternate voice for the same instrument, with six presets, live effects and Visual Console lip sync. The manual covers test version 0.6.
Read the Talko S.A.M. user manual
Build your own firmware
If you are a developer and you want to write your own firmware, the section below summarizes the Talko2 hardware pin map
Important note: in the TalkoΒ irmware, most inputs are configured with INPUT_PULLUP. This means they are normally HIGH and become LOW when the switch closes to GND.
Gate input note: the gate signal is inverted by a transistor on the hardware, so the RP2040 pin sees an active-low signal when an external gate is present. For this reason, the Talko firmware attaches the gate interrupt on a FALLING edge (active-low trigger).
Hardware pin map (Talko2 / RP2040-Zero)
| Signal (firmware name) | RP2040 pin | Direction | Description | Notes |
|---|---|---|---|---|
| PIN_AUDIO | GPIO1 | OUT (PWM) | Audio PWM output | Low pass filtered PWM |
| PIN_POT_SOUND | GPIO26 / ADC0 | IN (ADC) | Sound potentiometer | Read with analogRead() |
| PIN_POT_FX | GPIO27 / ADC1 | IN (ADC) | FX potentiometer | Read with analogRead() |
| PIN_POT_SPEED | GPIO28 / ADC2 | IN (ADC) | Speed potentiometer | Read with analogRead() |
| PIN_POT_PITCH | GPIO29 / ADC3 | IN (ADC) | Pitch potentiometer | Read with analogRead() |
| PIN_GATE | GPIO2 | IN (pull-up) | Gate / trigger input | INPUT_PULLUP. The gate is inverted by a transistor on the hardware, so the RP2040 sees an active-low signal. Interrupt on FALLING in the reference firmware. |
| PIN_ROTA | GPIO3 | IN (pull-up) | Rotary encoder A | INPUT_PULLUP, interrupt on CHANGE |
| PIN_ROTB | GPIO4 | IN (pull-up) | Rotary encoder B | INPUT_PULLUP, interrupt on CHANGE |
| PIN_SELECT | GPIO13 | IN (pull-up) | Rotary select / click | INPUT_PULLUP |
| PIN_ERROR | GPIO0 | IN (pull-up) | Push button | INPUT_PULLUP |
| PIN_MODE_A | GPIO15 | IN (pull-up) | Mode select A | INPUT_PULLUP |
| PIN_MODE_B | GPIO14 | IN (pull-up) | Mode select B | INPUT_PULLUP |
| WS_PIN | GPIO16 | OUT | NeoPixel (WS2812) data | Single on-board NeoPixel |
| PIN_SEG_A | GPIO5 | OUT | 7-segment display: segment A | Digital output |
| PIN_SEG_B | GPIO6 | OUT | 7-segment display: segment B | Digital output |
| PIN_SEG_C | GPIO7 | OUT | 7-segment display: segment C | Digital output |
| PIN_SEG_D | GPIO8 | OUT | 7-segment display: segment D | Digital output |
| PIN_SEG_E | GPIO9 | OUT | 7-segment display: segment E | Digital output |
| PIN_SEG_F | GPIO10 | OUT | 7-segment display: segment F | Digital output |
| PIN_SEG_G | GPIO11 | OUT | 7-segment display: segment G | Digital output |
| PIN_SEG_DP | GPIO12 | OUT | 7-segment display: decimal point | Digital output |
If you publish your own firmware, you can send me:
- a short description
- a link (GitHub, zip, or release page)

