Build a Teensy based CDJ - Can it be done?

More progress!!
New PCBs designed to fit inside the jog wheel in place of the original PCB have arrived and spent an hour assembling one - fired it up to make sure all was working
200d8ea5-cdb6-433c-9cbc-900bcdcb6fdf.jpeg

b1aa6c81-8be4-462d-ade2-3164184ba163.jpeg


And also received new PCBs for the main 7” display
Also working on initial test, but having some trouble with an unstable backlight driver
2ff92aa7-ae78-4df1-bf48-dd03e44eaaa3.jpeg
 
Main display is now ALIVE!

Powered by a Devboard v5, an 800x480px IPS display at 16 bit color depth, capacitive touch screen
PCM5102A DAC
And an Adafruit backlight driver hotwired as my original design has some flaws in the driver components layout

App is based on LVGL v9.3 and is in an extremely early stage, but is running SQLite to access db files on the uSD card that store track metadata and waveform data

Super short demo video here:
 
Few days have passed by, and now I can play the audio file using my very simple sync_i2s library (ISR based, loads a channel on each interrupt) AND I can sync the 3 band dynamic waveform to the play position
0a3f32ea-d743-4cc0-a7d3-01ee406598fa.jpeg


Ive changed my display flush setup to use the PXP.
Now I process LVGL in dual buffer mode alternating the final buffer to the PXPs process surface (PS)
The waveform, while it is an LVGL object, is excluded from LVGL handling its copy.
To speed things up, I point the waveform canvas to the PXPs Alpha Surface.

The PXP will then blend the two surfaces into the final buffer that is continuously being read by the eLCDIF.

With the above setup, I can retain a decent FPS of ~40 frames and keep CPU consumption under 20% VS letting LVGL draw the waveform to the output buffer, which gives similar FPS but CPU consumption jumps up to around 85%

I still have a whole bunch of bugs and random crashes, but here’s a short video of the waveform moving until it decides to crash
 
Last edited:
Back
Top