-
-
Notifications
You must be signed in to change notification settings - Fork 3.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
FSEQ Playback from LittleFS and SD #2413
base: main
Are you sure you want to change the base?
Conversation
Credit goes to @constant-flow for the original idea and structure created for TPM2 playback! Aircoookie#2292 Adds support for playback of FSEQ files from xLights or Vixen Includes support for both SD_MMC and SD via SPI (e.g. TTGO devices) Uses FSEQFile class to prevent overlapping functions NOTE: Created REALTIME_MODE_FSEQ using 10 instead of 9 (next available value) to keep compatibility with TPM2RECORD once both are merged
Hi @guardmedia Wow, great ! How do I activate it ? shouldn't it be on the drop down menu together with the now missing ddp, artnet and so on. Thanks Harald |
What type of fseq files ? |
Hi @harueg, Take a look at the comments in https://github.com/Aircoookie/WLED/pull/2413/files#diff-d81c4924f6e5d3564ea86ee4f97939e6ef6273897f4b2d002c9bf93ab5a08113 which should explain most of your questions.
The pins you use will depend on the module being used. You will want to check the pinout specifications for your board, or you may be lucky enough to just use the SD_MMC library as-is (doesn't require SPI pins to be defined).
Technically any V1 or V2 file without compression should work. This is compatible with the default FSEQ output from xLights.
|
Hi @guardmedia Thanks for the quick answer ! Will go through all this information. Thanks Harald |
This was covered already in the links I shared above, which includes the PINs used for a TTGO T8 board as well. Here's the link again for reference. |
i'm trying this on my own build pcb. it loads a fsec file. this file length should be 30 sec. only it takes 1 sec to complete. any idea? i do not get any error. log: Never mind. I am sleeping. It is working. |
Hi guardmedia Successfully compiled your fork. But the fseq features didn't show on the UI. It always wants to compile D1 mini, although platformio setting is default_envs = esp32dev Thank you so much |
@guardmedia could you talk to @constant-flow about making this a usermod? |
Hi Guys ! Thanks Harald |
@blazoncek I guess this is a good idea to make the mod format-independent. @guardmedia I'm currently (and slowly) progressing with the implementation as a usermod. You can see the current state here. My plan is to not only support TPM2, but multiple formats like The code for the mod was quite similar to the original, you may be able to prep a snippet of code for the I'm currently thinking it might be even cleaner to split @harueg there's quite some high chance it will support the mentioned board, but as I don't have one of these i can't test it |
I am not dependent on a special board design at the moment. Thanks for your efforts ! |
Thank you for your work! Looks good at first glance. The upcoming QuinLED Dig-Octa Brainboard will have a native SD slot by the way :) |
So i found some time to split both into separate usermods and am quite happy with it. To be clear i didn't add The mod for @Aircoookie I bodged together an SD-adapter-card with soldered wires dead-bugging into an ESP32 to test the SPI mode with the same pin config as the QuinLED Dig-Octa Brainboard. I used those pins as the default for now ... and 🎉 SPI and MMC behave the same, tho SPI is more configurable :) Further more I added a @blazoncek General feedback is welcome, if everything is fine I'd start another PR. |
@constant-flow I'll have a look later this week. |
Question about interaction with other usermods and effects, especially audioreactive usermod. Audioreactive has a kind of 'kill switch' in certain realtime modes, if WLED built-in animations (fx.cpp) no longer control LEDs.The reason is that audioreactive is quite cpu intensive, and we try to give back cpu ressources when all LEDs are under external control, so WLED can achieve higher FPS.
Is your new usermod also controlling all LEDs, so I should update our realtime modes 'kill list' in audioreactive, once the playback usermod code is merged? |
I'm sorry, but I can't tell how this behaves with other mods modifying the LEDs, especially with the reactive-mod. So far the The original poster could adjust their fseq playback code to match the new approach, so it can be merged in as another format allowed for playback. When it comes to signalling the end of the realtime playback, it seems like there is still a bug, because the Web interface still shows the RT-mode on, while it signalled the end of it via |
@constant-flow:
|
Hi @ElToberino Where did you find this usermod ? Really looked hard @constant-flow 's fork. |
@harueg I use Jinx! as a tpm2 recorder which always outputs 25 fps. So it should run properly out of the box without manually configuring fps rate. |
Thanks ! Did you store the files on sd card or flash ? Did some projects with Jinx! as well. The developer even made a special edition for me with up to 60.000 leds. |
It's just another branch of his fork - but that's indeed a little confusing... I haven't tested the sd card support yet - I just uploaded my file via ..../edit (no special directory). Jinx! is indeed a great software (I even think it's the best matrix software) and it's really regrettable that its developer has stopped any further development. |
Hi, sorry if things got a bit confusing (I tried my best to put links to what I refer to). For now I'll leave this PR ( |
yep, I cloned exactly that fork to platformio, was also without this usermod. worked as zip file. You should have a look at xlights, once you are over the slightly complicated workflow, it is really versatil. |
Did you get this error as well ? |
@harueg I think that's the "compile it again and it will succeed"-bug I have with WLED from time to time. |
Yep, saw quindors video last night about compiling wled But thank you |
Yep, happens for me also, randomly. I think it's a problem in platformio, and nothing related to WLED. only known solution is to compile again. |
Is there any news on Usermod with playback capabilities? Hardware is ready to use microSD card ;) |
Please take a look into this PR.. |
@Aircoookie & @softhack007 I think it is time we finally tackle this PR (with help from @guardmedia and @constant-flow) as there are a few controller boards with SD card slots readily available. Would you agree? |
👍 yes, I think this would be a good enhancement. I actually have some esp32 devices with SD support, including one -S3. Guess that others would also love to see what WLED can do with an SDCard. |
Hi, yes it would be nice to see it integrated. For my part i've to say I didn't touch it for quite some time now, but might be able to help here and there. Conceptually this PR here is based off from an older approach/PR by me and replaced TPM2 playback for FSEQ playback. Having said this, I heard that the most recent version of my PR is in questionable state. It was working as expected and either by a WLED update or my fixing of playback on 2D matrices (latter is more likely 😅), the plugin doesn't work as expected, from what other users say. Maybe @ElToberino can elaborate a bit more what (code link) works and what not, I'm referencing this quote Looking forward to get this functionality integrated. A full rewrite using only parts/concepts is also an acceptable way of approaching this 🗑 🔁 So my suggestion would be to take my other PR, test and fix it and add FSEQ playback over there |
I agree! Would love to have both SD support and native FSEQ playback as native WLED features, but it makes it more managable to merge them separately. For SD support, ideally it would be possible to take advantage of it for all files WLED uses (including sequences and images, but also presets, config (excluding wsec.json potentially), custom palette and LED mapping files) WLEDFS::open(const char *path, const char *mode = "r") {
File f = nullptr;
if (SD && SD.exists(path)) {
f = SD.open(path, mode);
if (f) return f;
}
f = WLED_FS.open(path.mode);
return f;
} Essentially you have already implemented this in This could even be extended by a backup functionality down the line, which could automatically or manually backup all files (exluding wsec.json) in the internal LittleFS filesystem to SD and restore them manually on demand. |
Thx for remembering me: The base of this PR had SD and Playback mixed. This PR which is accepted already separated SD from the playback. |
Apologies, I haven't had a good dev environment for a while due to travel
(hard to test leds on the go). I encourage anyone who wants to update this
to give it a go.
Let me know if it's easier to close this PR.
…On Thu, Jul 27, 2023, 2:24 PM Constantin Wolf ***@***.***> wrote:
Thx for remembering me: The base of this PR had *SD* and *Playback*
mixed. This PR which is accepted already
<#2877> separated SD from the
playback.
—
Reply to this email directly, view it on GitHub
<#2413 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAGZXJTUK5SNLLA4DHJ3YL3XSJMW3ANCNFSM5J4QCPCA>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
Credit goes to @constant-flow for the original idea and structure created for TPM2 playback!
#2292
Adds support for playback of FSEQ files from xLights or Vixen
Includes support for both SD_MMC and SD via SPI (e.g. TTGO devices)
Uses FSEQFile class to prevent overlapping functions
NOTE: Created REALTIME_MODE_FSEQ using 10 instead of 9 (next available value) to keep compatibility with TPM2RECORD once both are merged