Commit graph

21 commits

Author SHA1 Message Date
Thomas Kolb 347a95ea8d Implement silence detection and „standby“ mode 2021-06-27 22:01:15 +02:00
Thomas Kolb fc43035f9b Removing last remains of the Lua interface 2021-04-09 17:48:20 +02:00
Thomas Kolb d01c5b459c New animation: sparkles 2021-04-09 17:38:42 +02:00
Thomas Kolb c1202bb41c Work around panic in time::Instant subtraction
Also, reduced the maximum lag measure. 5 Frames lag should be enough.
2021-04-08 20:49:32 +02:00
Thomas Kolb c08f24f8dc Reset send timing if lag becomes too high
This happens always if the input stream stops (for example, if the MPD
is paused). If the timing is not reset in this case, the program starts
spamming the target with UDP packets, resulting in unpredictable
animation behaviour.
2021-04-04 17:59:46 +00:00
Thomas Kolb 898ebbecc7 UDPProto: Fixed index-out-of-bounds bug 2021-03-18 21:22:30 +01:00
Thomas Kolb b683c8a391 main: handle “Connection refused” UDP errors 2021-03-10 22:38:30 +01:00
Thomas Kolb 24850f1a1b particles animation: config tuning 2021-03-10 22:18:29 +01:00
Thomas Kolb 35c5c33689 Disabled userscript module 2021-03-07 21:36:57 +01:00
Thomas Kolb 7929861ad4 Implement "particles" animation in Rust 2021-03-07 20:32:34 +01:00
Thomas Kolb a9202d8303 Limit main loop and packet send rates
LED data packets are now sent with at most 60 updates per second. The
main loop tries to uniformly distribute calculation updates over time.
2021-02-23 22:32:34 +01:00
Thomas Kolb 45475cb89d UdpProto: fixed data offset 2021-02-23 22:31:31 +01:00
Thomas Kolb 5da4548e25 Provide Lua function to calculate output array index from led and strip 2021-02-23 22:30:04 +01:00
Thomas Kolb 7631bfb669 Started implementing the UDP protocol 2021-02-22 23:24:32 +01:00
Thomas Kolb ded8a7c21f main: cleanup 2021-02-21 19:49:16 +01:00
Thomas Kolb 001af5f0f3 Added test Lua script demonstrating current features 2021-02-21 19:49:16 +01:00
Thomas Kolb 8776e8e960 Properly handle and display Lua errors 2021-02-21 19:49:16 +01:00
Thomas Kolb 864add8403 Provide SignalProcessing methods to the Lua script
This is accomplished by providing a wrapped reference to the
SignalProcessing instance of the Rust program as a global Lua variable.
The wrapper class implements mlua::UserData, wraps the relevant
SignalProcessing methods and provides them as Lua methods.

So far, this is implemented for get_energy_in_band() only.
2021-02-21 19:49:16 +01:00
Thomas Kolb 62bbff481c Lua support: add script handling class with basic I/O
The relevant functions are called and the return types and sizes
verified. The API for the user is not implemented yet.
2021-02-19 23:29:52 +01:00
Thomas Kolb 942f66f7df Support overlapping FFT blocks
Now an arbitrary number of samples can be read and appended to the FFT
block. Old samples will be dropped such that only BLOCK_LEN samples
are in the memory buffer. Currently one half of the FFT block is
replaced per update.
2021-02-19 23:26:28 +01:00
Thomas Kolb ff018a98e1 Initial commit
Start experimenting with Rust. This is a little experimental, but fully
functional real-time FFT program based on the FFTW library.
2021-02-16 22:44:31 +01:00