It happened that some local retailers imported, from China, LED strips made for 220V (50Hz). One strip could have a length of 1m, 2m, 3m... etc. But it (as a single LED) has positive and negative terminals, so it needs a diode bridge to supply its LEDs during the two mains half-cycles (100 Hz).
The main features of their controller are:
 It is controlled by an IR remote unit (using 24 keys).
 8 triac outputs (a diode bridge is not needed at each output; the circuit has one for all).
 2 displaying modes; surrounding sound level and in-flash patterns.
 10 light dimming levels.
 10 sound gain levels.
 10 speeds (patterns).
Its MCU is ATmega8, running at 1 MHz (internal RC).
The two opamp of LM358 amplify the signal of a condenser microphone and generate a low frequency envelope wave for the ADC reading (MusicTree_01-TST.png).
The board is powered by mains voltage via 10W resistor, a diode bridge, zener and electrolytic capacitors.
The ATmega8 assembly code (sorry, I used writing in assembly only) is built on AS6.2.
I uploaded both its source and hex file.
At the end of the code source, there is a list of remarks that show how the actual fuse/lock bits are programmed.
Their actual bytes could also be read at the end of “tree_8ac.hex”:
:10220000 21 AB d1 ff 00 03 FF FF FF FF FF FF FF FF FF FF 39
Lo-fuse= 0x21, Hi-fuse= 0xD1, lock= 0xFF
(0xAB is for the internal RC calibration, set by factory if the MCU is fresh)
I also uploaded the project’s schematic and PCB layout; as PDF because my Kicad version is very old, BZR2356. But I can upload their source files too if requested.
The controller woks fine as expected. But, the IR code table is found for a specific IR unit which I was able to get locally. About 25 years ago, I built (using AT89C51) an IR reader that displays, on two 4-digit LED displays, the 4-byte key-code of an IR remote unit (usually made for a satellite receiver). Since there are different IR units, the user of some products, I produced (as a satellite dish positioner), can program his set to listen to the keys of the one he has (this was before introducing DiSEqC for dish motor). But I didn’t have enough time to also include this feature in this project.
For instance, there are some points (hardware and software) in this project that most engineers are not familiar to. For example, a ‘triac’ here drives a load supplied by a one-polarity voltage.
The files in the uploaded file, “tree_8ac_2020.zip”, are:
 Folder “Code_Atmega8”:
 Folder “Hardware”:
[2a] Y96S_AC8prg_12_tree.pdf , project schematic
[2b] Y96W_AC8prg_12_tree.pdf , components on PCB
[2c] Y96_AC8prg_12_tree.pdf , PCB (copper layout, seen from the front/components side)
 Folder “LTspice”:
[3a] MusicTree_01-TST.asc , circuit drawn on LTspice
[3b] MusicTree_01-TST.plt , a small file about the traces to be displayed during simulation
[3e] MusicTree_01-TST.png, screenshot
Although I uploaded the files as they are, giving more details later is always possible on request.
Finally, I take the opportunity to wish you all a Merry Christmas and Happy New Year Eve.