Check out our new Music Player Demo video running on NXP i.MX RT1050

Hi,

We have a new demo video on youtube! Give it a thumbs up if you like it! :slight_smile:

11 Likes

Aaah… that looks great, especially on the sync spectrum effect.

1 Like

It looks tremendous @kisvegabor.

1 Like

Looks awesome!! Will there be source code? What is powering the image and spectrum on the right?

1 Like

Thank you! :slight_smile:

I’ve just uploaded the source code: https://github.com/lvgl/lv_examples/tree/master/src/lv_demo_music
See the README for an explanation about the spectrum animation.

2 Likes

the spectrum is pre-created, did I understand correctly?

Great, trying it now…update have it working on Teensy 4.1 on a 480x320 ILI9488 parallel screen. Looks great!

One quick request - for this demo, and the others, would it be possible for you to preifx the image maps with LV_ATTRIBUTE_LARGE_CONST, similar to fonts, or perhaps a new and similar define? Perhaps add this in the image generator on your website itself, as I find myself having to manually tweak the demos and images I create with this define, so I can put them in PROGMEM via the define, rather than defaulting to RAM which typically runs out, even on my Teensy 4.1? Additionally, more consistent/widespread use of the logic around LV_LVGL_H_INCLUDE_SIMPLE for including lvgl.h into files?

Good to hear you made it work :slight_smile:
Could you make a video to see how it runs on Teensy?

One quick request - for this demo, and the others, would it be possible for you to preifx the image maps with LV_ATTRIBUTE_LARGE_CONST, similar to fonts, or perhaps a new and similar define? Perhaps add this in the image generator on your website itself, as I find myself having to manually tweak the demos and images I create with this define, so I can put them in PROGMEM via the define, rather than defaulting to RAM which typically runs out, even on my Teensy 4.1? Additionally, more consistent/widespread use of the logic around LV_LVGL_H_INCLUDE_SIMPLE for including lvgl.h into files?

Both are good ideas! I’ve just updated the image converter accordingly.

The spectrum is precalculated and the music is NOT real time processed.

Video:

Teensy 4.1 running LVGL music player demo on an ILI9488-controlled 3.5" 480x320 pixel resolution display, set to 16 bits per pixel, using an 8 bit parallel interface. The circuit board is a custom-made board, for a different project of mine. Screen removed at the end to prove there is a Teensy hiding in there :slight_smile: Frame rate is capped by the LVGL refresh rate of 15ms; if I set it to 12ms and the TFT refresh rate to 80hz, it averages 81fps, super nice!

P.S. Thanks for the updates mentioned above. Also, I grabbed the latest code from GitHub for the video - had to edit lv_demo_music.c to add underscores to the calls to lv_demo_music_play, etc. Also added call to lv_refr_get_fps_avg() for frame rate display at the end - it was hard-coded to 0

2 Likes

You probably got it right when I was in the middle of adjusting it to work with Emscripten - it was broken for about 10 minutes.

Timing is everything :slight_smile:

The LV_DEMO_MUSIC_AUTO_PLAY is not compiling.

I get this error:
rc/lv_demo_music/lv_demo_music.c:213: undefined reference to lv_demo_music_pause' src/lv_demo_music/lv_demo_music.c:153: undefined reference to lv_demo_music_album_next’
src/lv_demo_music/lv_demo_music.c:157: undefined reference to lv_demo_music_play' src/lv_demo_music/lv_demo_music.c:179: undefined reference to lv_demo_music_play’
src/lv_demo_music/lv_demo_music.c:190: undefined reference to `lv_demo_music_play’

Where are these functions ?

Works ok if I don’t have auto play.

How do you enable the frame rate display shown on the bottom right corner ?

Thanks, I’ve just fixed it.

With LV_USE_PERF_MONITOR in lv_conf.h.

Wow, that’s running fast! Do you use DMA in the flush function?
With a great custom board like this, you might be interested in LVGL’s Board Certificate Program.

I’ve just fixed a couple of issues. All should work well now.

Music Player Demo on Teensy 4.0 on a 3.5" LCD via SPI bus.

I think the frame rate can be improved using DMA.

1 Like

limit in 33fps?

No DMA, I’m using an 8 bit parallel interface to the ILI9488 driven off a GPIO port from the Teensy so it’s blocking while refreshing the screen, but it’s super quick relative to SPI - 480x320 full screen updates in around 5ms and for this demo, with the partial screen updates, only around 2-3ms for the updates per frame.

Thanks about the board, but it’s a very specific-use board for a project I built initially to detect lightning and trigger my camera to shoot it, as well as for controlling time lapses, etc. using LVGL to drive the user interface for managing and configuring all this. It does, however, give me a nice testbed for Teensy and TFT related stuff, especially with all the connections needed for 8 and 16 bit interfaces. I source from BuyDisplay and they have a consistent 40 pin connection interface, so I can drop in a few different ones and maintain hardware compatibility. Here’s the LVGL printer demo where I swapped to an 800x480 NT35510 driven screen on that board (also configured to 8 bit parallel):

Keep up the fabulous work!!

1 Like