Skip to the content
PCBKitNew board
4 layers137 × 79.5 mmTGX4, the printed circuit board in 3D

Teensy 4 based guitar amp emulator

Size
137 × 79.5 mm
Copper layers
4
Thickness
1.6 mm
Parts
297
Nets
194
Pads
949
Tracks, vias
2,218, 527
Pours
1,160
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
22 Mar 2024
Updated
26 May 2025

Overview

TGX4 is an open-source printed circuit board by hexeguitar, from the hexeguitar/TGX4 repository on GitHub. It is a 4-layer board of 137 × 79.5 mm with 297 parts on 194 nets, routed with 2,218 tracks and 527 vias.

It is built around the TLC2274ID, AK4452VN and AK5552VN, with the 74LVC2G14GW, 1N4148W and MMBFJ112 among its other parts. Its parts include 100 resistors, 95 capacitors, 25 connectors, 11 diodes and 7 transistors. It belongs with the audio and music boards of this library.

Main components

9

README

readme.md

TGX4 - Teensy Guitar Amp Project

Top View

This project aims at creating a nice usable set of guitar and bass tones while using relatively inexpensive hardware and being simple to build.
It combines a Neural Network amp modeler with stereo IR cabinet emulation, versatile stereo Ping-Pong delay and 3 different reverbs. There is also a Compressor, Wah and Booster with octave up mode for further input tone shaping.

Side View

Change-log

V2.1 - 12-2024 - Added Front Panel, bug fixes
V2.0 - 07-2024 - Dedicated hardware platform
V1.4 - 04.2024 - Multiple hardware platforms added
V1.3 - 03.2024 - Initial release.

User Interface

HTML webpage

In general all the parameters are controlled via MIDI. There is a lot of controls and to make the hardware less expensive and easier to build the starting point is a simple html page using WebMIDI + WebSerial, which, opened in one of the supported browsers (Chrome, Opera, Edge) offers a full GUI interface.
Teensy is using the USB Serial port to show the status and other info about the current state.
Usage:

  1. Plug the Teensy with uploaded firmware into the USB port.
  2. Open the TGX4.htm page (html folder) in any of the supported browsers.
  3. Choose Teensy MIDI for the MIDI interface.
  4. Click Connect and choose the Teensy Serial port.
  5. Press Term button to switch between the status report and the CLI.
  6. Use dials and buttons to control the effects.

Ampinterface

Touchscreen GUI

A separate project is provided for the WT32SC01Plus board (ESP32-S3 + 3.5" 480x320 IPS display, capacitive touchscreen) which is the main and dedicated user interface allowing access to all controls and functions of the pedal.
The GUI is created using LVGL9 library:

Setup

Internal structure

Internal structure

Signal Flow

The signal flow, except three components is stereo. The three mono components are: Wah, Booster and Neural Amp Modeler. Mono means, these two sum the input signal into one and send one output to both L and R channels when enabled. In bypass mode both mono blocks pass the stereo signal unaffected. This way the TGX4 can be used either with mono source or as stereo effects processor (with Wah, Booster and Amp Modeler disabled).

  1. Input Select - controls which input channel use as source:
    • L+R - stereo input
    • L+L - left mono input
    • R+R - right mono input
  2. Compressor - stereo dynamic compressor with wide variety of controls:
    • Pregain - input gain
    • Threshold
    • Ratio
    • Attack, Release
    • PostGain (MakeUp)
  3. Wah - mono wah implementation:
    • 8 available models
    • Frequency control
    • Mix - dry/wet mixer
  4. Booster - an oversampled wave shaper based on 12AX7 tube curve:
    • Drive - overdrive level
    • Bottom - input highpass filter
    • Presence - treble control
    • Mix - dry/wet(distorted) mixer ratio, useful for Bass!
    • Level - Booster output volume
    • Octave - analog octave up emulation
  5. Neural Amp Modeler 8 models available, from, clean channels, through light crunch to high gain lead ones:
    • Gain - controls the input signal level
  6. 3 Band EQ - this EQ is a "passive" one, meaning the flat response is when all controls are at max. Use for slight tone adjustments. Most of the "amp" sounds are already modelled in the previous block.
  7. Gate - adjustable Noise Gate. Noise gate is using the clean input signal for the side chain path, this way the threshold does not have to be adjusted for different distortion levels.
  8. Time Based FX Section consisting of two effects in parallel: Stereo Ping-Pong delay with modulation and one of 3 available Reverbs. There are two main controls for this section:
    • FX Mix - controls the dry sound vs Time FX sound mix ratio. Use to set the balance between the main sound and the Delay + Reverb combo
    • Delay/Reverb Mix - this mixer controls the balance between the delay and reverb outputs.
  9. Stereo Cabinet Emulator / IR convolver:
    • 7 guitar cabinet models
    • 3 bass cabinet models
    • Stereo Doubler function emulating double tracking
  10. Output Section:
    • Master Lowcut - output highpass filter to control the low end range
    • Pan - Left/Right panorama setting
    • Volume - final output volume

Stereo Ping-Pong delay

One of the time based effects, versatile 1 second delay with modulation and Freeze feature (looper mode). Controls:

  • Time - delay time
  • Inertia - how fast the delay time is updated after change. Creates weird pitch shifting effects
  • Repeats - amount of feedback
  • HiCut - low pass filter inside the delay path, controls the treble loss for each repeat. Many delays implement such feature and claim to make the sound "analog"
  • LowCut - high pass filer inside the delay path, controls the bass loss for each repeat
  • Treble - overall treble control to make the sound darker
  • Bass - output bass control for further delay tone shaping
  • ModRate - modulation rate (internal LFO speed)
  • ModDepth - modulation depth (internal LFO depth)
  • Tap Tempo
  • Freeze mode - mutes the input signal and lets the echo repeat infinitely

Delay controls

Reverb Section

There are 3 types of reverb built in, only one can be active at a time:

  1. Plate Reverb - versatile lush sounding long reverb:
    • Size - reverb time
    • Diffusion - lower values create more echo effects inside the reverb tail
    • Treble Cut - treble loss in the reverb tail, affects the reverb time
    • Bass Cut - bass loss in the reverb tail, affects the reverb time
    • Treble - output treble control for the reverb wet signal
    • Bass - output bass controls fot the reverb wet signal
    • Pitch - reverb pitch set in semitones (range -12 to +24)
    • Pitch Mix - mix ratio for the pitched up/down and natural pitch signal (creates harmonies)
    • Shimmer - amount of shimmer effect
    • Pitch Shim - shimmer effect pitch setting
    • Freeze mode - creates infinite reverb sound
    • Bleed In - amount of input signal fed into the reverb while in Freeze mode.
  2. Reverb SC based on Sean Costello's reverb algorithm using multiple feedback delay lines (available only with PSRAM installed):
    • Time - reverb time
    • Lowpass Freq - tail treble loss
    • Freeze mode - infinite reverb sound
  3. Spring Reverb - for more classic guitar tones, emulation of a typical spring reverb tank:
    • Time - reverb time
    • Bass Cut - high pass filter
    • Treble Cut - lowpass filter

Reverb controls

Press Plate, Spring or ReverbSC button to activate the reverb.

Hardware

In the simplest form, this project can run on a Teensy 4.0 or T.4 and the audio adapter board.
Adding PSRAM to the Teensy4.1 opens up the full set of features. Lack of PSRAM results in:

  • ReverbSC disabled,
  • Delay has a shorter time range.

Recommended upgrade would be a high impedance input buffer using an opamp or even a simple transistor one.
See here for a simple DIY project. Alternatively, another pedal with buffered bypass can be used instead.

The hardware build option is set either in the platformio.ini file
default_envs = t40_audio_board
or by invoking the build command from the terminal:
pio run -e t40_audio_board

List of pre configured hardware platforms as of July 2024:

  • hexefx_tgx4 - Dedicated hardware platform for this project using 32bit AKM converters.
  • t40_audio_board - Teensy4.0 + Audio Adaptor Board
  • t41_audio_board - Teensy4.1 + Audio Adaptor Board
  • t40_blackaddr_tgapro - Blackaddr TGA Pro + Teensy4.0
  • t41_blackaddr_tgapro - Blackaddr TGA Pro + Teensy4.1

The project is designed to be easily adaptable to many Teensy based hardware platforms, take a look here for more details.

Caution!

A high gain sound, like the Preset 5 might and do create a feedback and oscillation on some of the hardware platforms, namely the SGTL5000 and ES8388. The noise gate can cut it off, although some oscillation will be audible when the gate closes. WM8731 seems to be more immune to oscillations.
A very high gain devices require a careful layout and design to make them as silent as possible. It is also a reason for designing a dedicated HW platform for the TGX4 project which incorporates design techniques to minimize these issues.

TGX4 Hardware

Reverb controls
Dedicated TGX hardware platform project is available in the hardware/ folder.

Usage

  1. Open the TGX4_TeensyMainBoard project in the PlatformIO environment.
  2. Open the platformio.ini file and set the required hardware configuration.
  3. Build the project and upload it to the Teensy4 board.
  4. Open the TGX4_WT32SC01PLUS_GUI project in the PlatformIO environment.
  5. Build the project and upload it to the Display board.
  6. For the web page access open the TGX4.html file placed in the html folder in Chrome, Chromium or Edge browser (others do not implement WebMIDI and WebSerial).
  7. Connect to the USB MIDI interface listed as Teensy.
  8. Click Connect button on the top of the page and choose Teensy Serial port.
  9. Use the dials and buttons to control the device.

Preset System (no display version)

A snapshot of all controls (except Delay+Reverb Freeze modes) can be saved in 128 available preset slots. Preset System is using the SD card to store the files. If no SD card is detected, the number of presets is limited to 8, stored in EEPROM.

  1. Choose the Preset slot by pressing the buttons Preset 1 - Preset 8. Alternatively use the CLI console to load preset numbers over 8 using the command preset-load n, where n is the preset number in range 1-128.
  2. Set a new name for the preset using the preset-name xxxx CLI command.
  3. Press Save to store the current sound in the chosen preset.

Preset System (using the display GUI)

Switching the presets can be done in two ways:

  1. Using the + and - buttons on the touch screen MAIN page. The new preset is loaded immediately. To reload the preset from the saved file (ie. restore to saved version) press the PR.LOAD button.
  2. Using the footswitches. The default function of the middle footswitch is Preset UP, the right one Preset DOWN. Pressing one of the footswitches enables browsing through the presets without loading them. To activate the chosen preset press and hold down one footswitches (usually the last used one). Browsing is shown as a popup window with the number and the name of the preset.

Default Presets

  1. Clean guitar sound, spring reverb.
  2. Lightly overdriven clean guitar sound with modulated delay used as a stereo chorus.
  3. Boost/Overdrive into Clean channel + Reverb SC. Uses Stereo Doubler to emulate double tracking. Bluesy rhythm tone.
  4. Crunch Amp + Boost, mono mode + stereo delay and reverb. Bluesy solo sound.
  5. High gain rhythm tone, a bit of Spring Reverb, Stereo Doubler enabled. Uses Booster for input tone shaping, low end cut and light overdrive.
  6. High Gain solo tone with modulated delay and reverb.
  7. Clean Bass sound with compressor.
  8. Distorted fuzzy stereo bass sound.

Demos

https://www.youtube.com/watch?v=2hztEZ9_kYk
Watch the video

https://www.youtube.com/watch?v=AlLRwmOwigU
Watch the video

All guitar/bass sounds on this track were recorded using the TGX4:

Command Line Interface

Use the Term button places on the main Amp page to switch between the status report and the CLI. Type help to list all the commands. CLI uses history and autocomplete.
Available commands:

  • preset-rst - repopulates the 128 (or 8 without the SD card) available presets with default "factory" ones.
  • preset-name - sets the new name for the current preset. Argument: name, max 15 chars. Eg. preset-name Solo-Delay
  • preset-load - loads the preset, argument: preset number 1-128.
  • preset-backup - creates a copy of the 128 presets data in a separate backup directory on the SD card.
  • meminfo- print RAM memory details
  • load- list CPU loads for all components
  • midi-ch- assign a new MIDI channel for the Teensy. Use it when controlling the device with other MIDI controllers. The WebMIDI interface sends the data on channel 1.
  • i2c - I2C scanner, takes one parameter: 0, 1 or 2 (Wire, Wire1, Wire2) and reports all found devices.
  • list - lists all the files found on the SD card.

Credits

The Neural Network Modeler is based on implementation by Keith Bloemer/GuitarML

OpenAudio_ArduinoLibrary by Chip Audette

embedded_cli by Sviatoslav Kokurin.


(c) 2024 by Piotr Zapart
www.hexefx.com

Parts

297
QtyValueFootprintReferences
2110kH_smd_passives:Hx_R_0805_2012MetricR29, R30, R33, R34, R45, R46, R47, R48, R51, R52, R55, R56, R71, R72, R73, R74 +5
1910uH_smd_passives:Hx_C_0805_2012MetricC6, C7, C9, C10, C13, C17, C21, C31, C74, C75, C76, C77, C78, C79, C83, C85 +3
131kH_smd_passives:Hx_R_0805_2012MetricR3, R4, R5, R32, R35, R39, R40, R92, R94, R95, R96, R97, R99
12100kH_smd_passives:Hx_R_0805_2012MetricR10, R12, R13, R14, R15, R57, R59, R77, R78, R79, R90, R98
121uH_smd_passives:Hx_C_0805_2012MetricC8, C15, C28, C29, C30, C33, C57, C58, C65, C70, C88, C89
11100nH_smd_passives:Hx_C_0805_2012MetricC5, C14, C16, C20, C53, C54, C80, C84, C87, C92, C94
10100pH_smd_passives:Hx_C_0805_2012MetricC37, C38, C45, C46, C47, C48, C55, C56, C59, C60
1010uCapacitor_Tantalum_SMD:CP_EIA-3216-18_Kemet-AC32, C34, C39, C40, C49, C50, C51, C52, C61, C62
733RH_smd_passives:Hx_R_0805_2012MetricR1, R2, R6, R7, R8, R9, R85
6100uCapacitor_Tantalum_SMD:CP_EIA-6032-28_Kemet-CC4, C11, C12, C18, C19, C73
6470kH_smd_passives:Hx_R_0805_2012MetricR58, R60, R65, R66, R67, R68
647kH_smd_passives:Hx_R_0805_2012MetricR61, R62, R63, R64, R69, R70
510RH_smd_passives:Hx_R_0805_2012MetricR36, R49, R50, R53, R54
510uHH_smd_passives:Hx_L_0805_2012MetricL2, L3, L4, L5, L6
51N4148WDiode_SMD:D_SOD-123D3, D7, D8, D9, D10
51nH_smd_passives:Hx_C_0805_2012MetricC24, C25, C26, C27, C95
5470pH_smd_passives:Hx_C_0805_2012MetricC41, C42, C43, C44, C81
4150RH_smd_passives:Hx_R_0805_2012MetricR23, R24, R25, R26
422uH_smd_passives:Hx_C_0805_2012MetricC63, C64, C71, C72
42M2H_smd_passives:Hx_R_0805_2012MetricR37, R38, R41, R42
43k3H_smd_passives:Hx_R_0805_2012MetricR21, R22, R27, R28
44k7H_smd_passives:Hx_R_0805_2012MetricR17, R18, R19, R20
4Conn_01x02Connector_JST:JST_XA_B02B-XASK-1_1x02_P2.50mm_VerticalJ6, J7, J8, J15
4Conn_01x03Connector_JST:JST_XA_B03B-XASK-1_1x03_P2.50mm_VerticalJ2, J16, J17, J18
4MMBFJ112H_SOT:SOT-23Q3, Q4, Q5, Q6
34n7H_smd_passives:Hx_C_0805_2012MetricC1, C22, C23
3BAT54SH_SOT:SOT-23D1, D5, D6
3BC817H_SOT:SOT-23Q1, Q2, Q8
3Conn_01x01Connector_PinHeader_2.00mm:PinHeader_1x01_P2.00mm_VerticalJ22, J23, J24
3Conn_01x02Connector_PinSocket_2.54mm:PinSocket_1x02_P2.54mm_Vertical_SMD_Pin1LeftJ19, J20, J21
3Footsw_symbolH_symbols:FootswitchTopViewSW1, SW2, SW3
3LED PINKLED_SMD:LED_0603_1608MetricD11, D12, D13
3TLC2274Package_SO:SO-14_3.9x8.65mm_P1.27mmU6, U7, U9
3TRS_JACKH_conn:NMJ6HCD2_TRSjack_smallPadsCON1, CON2, CON3
2100nCapacitor_THT:C_Rect_L7.0mm_W2.5mm_P5.00mmC35, C36
215nH_smd_passives:Hx_C_0805_2012MetricC2, C3
21MH_smd_passives:Hx_R_0805_2012MetricR31, R88
220RH_smd_passives:Hx_R_0805_2012MetricR11, R16
2220uCapacitor_THT:CP_Radial_D6.3mm_P2.50mmC67, C68
222kH_smd_passives:Hx_R_0805_2012MetricR43, R44
2470RH_smd_passives:Hx_R_0805_2012MetricR75, R76
25K1H_smd_passives:Hx_R_0805_2012MetricR86, R87
2ADDR0H_switches:PCB_jumper_2_closedJP3, JP4
2MountingHole_PadMountingHole:MountingHole_3.2mm_M3_Pad_ViaH1, H2
2XW10202-20R-00H_conn:HCTL_XW10202-20R-00 _1x20-1MP_P1.00mm_HorizontalJ10, J12
1100uCapacitor_THT:CP_Radial_D5.0mm_P2.00mmC82
110kH_smd_passives:R_Array_Convex_4x0603RP1
110kH_pots:Trimpot_SMD_miniRV2
110kLOGH_pots:ALPHA_DUALPOT_16mmRV1
110uHInductor_SMD:L_Changjiang_FNR5020SL1
1110kH_smd_passives:Hx_R_0805_2012MetricR80
115kH_smd_passives:Hx_R_0805_2012MetricR81
12.2MH_smd_passives:Hx_R_0805_2012MetricR100
122nH_smd_passives:Hx_C_0805_2012MetricC66
122pH_smd_passives:Hx_C_0805_2012MetricC69
12k2H_smd_passives:Hx_R_0805_2012MetricR82
12k2H_smd_passives:R_Array_Convex_4x0603RP2
147uCapacitor_THT:CP_Radial_D5.0mm_P2.00mmC86
1500mAH_Fuses:Fuse_1812_4532MetricF1
150mA - 0ZCJ0005FF2EH_Fuses:Fuse_1206_3216MetricF2
174LVC2G14Package_TO_SOT_SMD:SOT-363_SC-70-6U8
1ADDR1H_switches:PCB_jumper_2JP5
1ADDR1H_switches:PCB_jumper_2_closedJP2
1AK4452Package_DFN_QFN:QFN-32-1EP_5x5mm_P0.5mm_EP3.1x3.1mmU4
1AK5552Package_DFN_QFN:QFN-48-1EP_7x7mm_P0.5mm_EP5.15x5.15mmU3
1CLIP_OFFH_switches:PCB_jumper_2JP9
1CLIP_SELH_switches:PCB_jumper_2JP10
1Conn_01x03Connector_PinSocket_2.00mm:PinSocket_1x03_P2.00mm_VerticalJ9
1Conn_01x04Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ3
1Conn_01x04Connector_JST:JST_XA_B04B-XASK-1_1x04_P2.50mm_VerticalJ4
1Conn_01x06Connector_PinSocket_2.00mm:PinSocket_1x06_P2.00mm_VerticalJ14
1Conn_01x07Connector_PinSocket_2.00mm:PinSocket_1x09_P2.00mm_VerticalJ5
1Conn_01x08Connector_Molex:Molex_PicoBlade_53047-0810_1x08_P1.25mm_VerticalJ11
1Detail2H_logos:HexeFx_077x022S2
1EXPSNS_A0H_switches:PCB_jumper_2_closedJP7
1EXP_AN1H_switches:PCB_jumper_2_closedJP6
1FuseBypassH_switches:PCB_jumper_2JP8
1G***kibuzzard-661FAC7Fkibuzzard-661FAC7F
1G***kibuzzard-661FB961kibuzzard-661FB961
1G***kibuzzard-661BAEA8kibuzzard-661BAEA8

The 274 most common of 297 parts.

Questions

How big is the TGX4 PCB?

It measures 137 × 79.5 mm and has 4 copper layers, 1.6 mm thick.

What parts does the TGX4 use?

297 parts, built around the TLC2274ID, AK4452VN, AK5552VN and 74LVC2G14GW. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the TGX4 KiCad files?

From the hexeguitar/TGX4 repository on GitHub, at the commit this page was made from: the board is hardware/KiCad_proj/MainBoard/TGX4.kicad_pcb and its schematic hardware/KiCad_proj/FrontPanel/TGX4_Panel.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the TGX4 design in my own project?

Its repository states no licence, so its author keeps all rights: ask hexeguitar before reusing the design.

Similar boards

  • 2 layers144 × 80 mmDVDLaserScanner, the printed circuit board in 3D

    DVDLaserScanner

    GaudiLabs/OpenLaserScanningMicroscope

    Open Source Laser Scanning Microscope

    83 parts345GPL-3.0
  • 2 layers65 × 56.5 mmSarsatJRX, the printed circuit board in 3D

    SarsatJRX

    fredzo/SarsatJRX

    Décodeur balise Sarsat 406 avec un Arduino.

    61 parts4
  • 4 layers149.6 × 63.5 mmEsp p148-3way crossover retuned quad smd, the printed circuit board in 3D

    Esp p148-3way crossover retuned quad smd

    nict41/crossover

    An EasyEDA-importable schematic for the 3-way state variable electronic crossover from Elliott Sound Products Project 148 ( ), redrawn from Figure 2.

    90 parts
  • 2 layers152.3 × 128.5 mmCv depot, the printed circuit board in 3D

    Cv depot

    naokiiwakami/cv-depot

    Source of control voltages for euro rack synth system

    206 parts1MIT
  • 2 layers38 × 110 mmParadox, the printed circuit board in 3D

    Paradox

    odeliy/noise-reap

    118 parts37
  • 2 layers213.5 × 128.5 mmAnalog via, the printed circuit board in 3D

    Analog via

    starlingcode/analog-via

    Designs for an all-analog variant of the VIA meta crossfader

    708 parts