NOMAD - Cyberpunk2077 inspired guitar project

Pio

Well-known member
nomad_1.jpg

this project has been in the works for over a year now. The guitar is based on an DIY kit (Harley Benton JA) which is heavily modded and upgraded, mainly with electronics.

nomad_9.jpg
Hardware design is split in three main parts:

1. Pickguard, a large PCB itself using an Cypress PSoC5LP MCU is responsible for:
- most of the analog circuitry as pickup buffers, active hum cancelling system, analog pot controls
- digital controls as capacitive touch buttons and one X-Y pad (large X9 area)
- low EMI light control with constant current drivers - neon light, button leds and leds built into the P90 pickups
- generating CV control signals for the analog VCA+VCF (PT8211 + I2S used as cheap DC dac), controlling the volume and filter cutoff frequency + resonance.
nomad_2.jpg

2. Analog effect section consisting of an octave up (basically a precision rectifier), a state variable filter + VCA built around SSM2164 quad VCA chip and an 8 channel I2C volume controller. This chip is used as a switch to select the filter type (lowpass, highpass, bandpass, notch), bypass the octaver, mix in two DSP channels and combine everything into one mono output. The X axis of the touch pad controls the cutoff frequency and the Y axis takes over the resonance.
nomad_3.jpg

3. Power + DSP section placed in a 3D printed enclosure at the back of the guitar:
- It provides the power for everything. Initially i've used a ready made power bank, but after hacking around it to get the battery level i decided to design a more optimized version having all the fancy quick charge/PD charging options plus better 5V output filtering. 5V is converted to 3.3V with a buck converter, this is the main digital power bus, 5V is also boosted to 12V and regulated down to 9V as main analog supply rail (opamps, filters, VCA etc).
- Teensy4.1 + PSRAM, being the main DSP and display driver.
- 4 port USB hub, combining all the data and power into one USB-C socket. Here - it is used for the KitProg debugger for the PSoC MCU. Once the firmware is mature i'm going to remove it and use the PSoC's own USB for potential firmware upgrades in the future.
- Hardware MIDI input/output + Teensy's USB MIDI.
- 8 button RGB illuminated keypad. This is a separate sub-module controlled by a small risc-v MCU (CH32V003) doing all the keypad scanning, debouncing and LED control, talks to Teensy via I2C + interrupt line.
- 2 axis + button gamepad joystick for controlling the DSP effects.
nomad_6.jpgnomad_4.jpg
nomad_8.jpg

Display:
i wanted a small display with capacitive touch screen. One of the sources for such a display + nice looking bezel turned out to be a cheap P8 smart watch. I reverse engineered the original connections and designed a matching PCB with SPI (display control) and I2C (touch interface). LVGL9 is used for the GUI.
Main functions are: hardware setup and settings, guitar tuner and some demo animations.
p8.jpg

Keypad + RGB Led module:
4 buttons have (will have) a configurable functions, ie. play a sample, tap tempo etc. The other 4 used for quick preset access.
nomad_5.jpg

DSP:
where the Teensy4.1 shines. The first iteration of that board used ESP32-P4, however, after initial test and tries i decided i won't be needing any wireless, plus getting the performance out of RTOS brought many more issues, i've redesigned the board around T4.1, which i know and feel confident to work with.
Teensy is powered directly from the 3.3V bus using the trick with one LED supplying the power to the VBAT pin. USB is routed into one of usb hub ports.
Communication between the Teensy and the PSoC5LP happens via level shifted SPI bus + single interrupt line.

MIDI:
Teensy works as a MIDI merger combining messages coming via USB or the hardware inputs, sending them to the pickguard MCU and receiving CC from the PSoC. Touch sense buttons and the X-Y pad can be used to send MIDI messages, too.

Audio inputs:
both bridge + neck pickups are buffered and routed into stereo inputs of the AK4558 codec. Audio library runs on 32bit floating point math.

Digital effects:

1. Drone synth
. Initally i've experimented with building a sustainer pickup into the guitar. I did not want to sacrifice the neck P90 pickup for it, in the end i decided to go with synth based route.
Pressing the Drone button on the pickguard tells the Teensy to capture the current fundamental frequency and to start the drone synth. It is a combination of a few sinusoidal waves, base pitch, 2nd and 3rd harmonics, subharmonics used as ring modulation source. All this is controlled from a bunch of randomized control signal generators. They provide a smooth and always changing controls for the amplitude and vibrato applied to the drone components. Kind of a synth that never sounds the same. Sin waves are used since the output signal will be distorted in various effect pedals anyway.
The Drone has two voices to make the transition between two notes smooth. Plus it can be used a standard 2 voice synth playing the notes coming via MIDI. In the works is an envelope controlled ducker module, which automatically lowers the drone volume while playing. The overall drone volume is controlled with one section of the stacked potentiometer mounted on the pickguard PCB.

2. Simple looper with vinyl scratch option. Always recording a few seconds of audio and if necessary allowing to loop it and use emulated vinyl scratch on it. Not sure yet if i leave it this way or move the vinyl scratch to the next effect:

3. Sample player - special effects player. Pre loaded samples can be played or engaged in scratch mode, where the play speed and direction is controlled by the movement of the gamepad joystick. Still working on it...

The main concept for this guitar is not to make another instrument with built in amp sims, ready made sounds to be just amplified. What i wanted to focus on is shaping the guitar sounds that happens before any distortion, amp etc. Hence the filter + VCA section which can completely change the sounds of two P90 pickups, adding a second or third voice to it, intermodulating with whatever is being played using the strings. All this leads to many new interesting effects, sounds and even ways of playing. All the DSP based effects are added to the original sound only, the main signal is latency free. Saying that, the main, biggest and most useful feature on this guitar is one simple push pull switch which takes all the electronics out of the signal path and makes the instrument work as regular passive output completely analog guitar :)

A side quest was developing a pickup winder to make a pair of "cyberpunky" illuminated pair of P90 pickups. There are two LEDs inside each pickup, one (blue) shows the pickup is currently active and the other (pink) tells if the active hum cancelling system is enabled. The covers are 3D printed using a transparent resin.
pickupwinder_1a.jpgp90_cover.jpg

Since this is a Cyberpunk inspired project, there are some hidden "data links" visible only under UV light:
nomad_10.jpg
 
this looks incredible! I'm not super familiar with the game -- is there any guitar-related gameplay in Cyberpunk 2077, or is the inspiration purely aesthetic? 💗
 
I'm still waiting for new pickup covers, once installed i plan to make a proper photo session.
Guitars play a quite important role in the CP2077 game, you can even go home and play some riffs.
However, this one is not a reproduction of any guitar from the game. More a loose inspiration in style, combining the retro shape (Jazzmaster) with futuristic details and features. The looks and colors are actually inspired by one of the cars from the game.
 
Nomad_features.jpgnomad_15.jpg
Visually it's pretty much finished. The only hardware part requiring more work is the battery. The power bank will be replaced with two 21700 cells with charger/5V boost board based on IP5238 with I2C and few other signals exposed. Teensy will be able to directly read the charge/discharge status and the battery level.
NOMAD_Powerbank.jpg
 

The drone synth and the preliminary version of the looper in action. Amp/cabinet sim and effects (delay, reverb) are also Teensy based (TGX4).
 
Power section and related adventures:
for the power section i went with the IP5328 power bank controller chip, mainly because it's a compact one chip solution to get multiple fast charging protocols and a stable 5V output. Plus the IP5328 chip is one of not so many actually having any datasheet including the register map.
Nomad_powerbank1.jpg

1. Plug in detection and automatic power on.
Datasheet does not explain how exactly does it work, but simply applying a load to one of outputs is not the way. It needs either the USB data line for type A outputs or data/cc for the USB C in/out. I could wire the power bank's button to an external one, however from the start i wanted to have a bi stable power switch. A button can be accidentally pressed when the guitar is in a bag or case. Power bank can be turned on by a single button press or turned off by a quick double press.

2. Light load automatic shutdown.
Common for most of the power banks, if the load is under about 150mA it switches the outputs off. This can be reconfigured via I2C, however, i found out the settings get changed after plugging the charger. I assume the guitar with more low power model enabled will go below that threshold. One way to keep the power on is to tick the button every few seconds, it restarts the internal timer.

Solution for these two problems is solved by adding a small 6 pin Attiny9. It reads a standard on-off switch, generates pulses for the IP5328's button input and ticks it every 8 seconds to keep the output on while consuming almost no power: about 8.5uA when on and about 250nA when off.

Having the access to all the battery telemetry i was able to plot the discharge curve for the two 6000mAh cells using a current draw which is in ballpark with what the guitar will use 800mA -1A (direct battery current). I'm a bit skeptical about the measured total capacitance. The load was lower than the typical spec'd 2A, yet the internal voltage and current measurements might be off.
However, the important parameter, which is the discharge time looks promising, over 14 hours. It will be even longer when i implement more power saving features in the firmware and remove the PSoC programmer/debugger (~100mA).
discharge_curve.png
Btw, the DC load used to test the cells is also Teensy (LC) based:

dc_load.jpg
 
Back
Top