Code for my LED rollup banner project 'SnipDrop'. http://snippetupperlaser.com
- DAW sends out MIDI
- Qlc+ receives MIDI and has mappings to a bunch of functions, matrices etc.
- 3 ESP32 DevBoard units are connected via Ethernet to the computer running Qlc+.
- Qlc+ broadcasts all Artnet universes to the network.
- ESPs filter universes according to their firmware configuration.
- ESPs use FastLED to get alight.
These values are set according to the selected firmware configuration:
| Config | IP | MAC | NUM_LEDS |
|---|---|---|---|
| MODE_CIRCLE | 192.168.1.24 | 222.173.190.239.254.237 | 507 |
| MODE_ARROW | 192.168.1.25 | 222.173.190.239.254.238 | 452 |
| MODE_LASERSCISSORS | 192.168.1.26 | 222.173.190.239.254.239 | 646 |
Main libs involved are
FastLEDfor LED controlArtnetEtherfor network communication Details seeplatformio.ini.
762703 orange 3E1000 dark red SMH
Mapping MIDI notes from the track in our DAW to controls in Qlc+. These controls play animations or control single color values for our lights, which are the SnipDrop and some Asteras. (This has nothing to do with the code in this repo, just notes about our setup.)
| Qlc | Cmd / Note | Ableton | Reaper | Asteras | SnipDrop |
|---|---|---|---|---|---|
| 1 | Bank select MSB | 0 (blocked) | 0 | Envelope all red | Envelope all red |
| 2 | Modulation wheel MSB | 1 | 1 | Envelope all green | Envelope all green |
| 3 | Breath control MSB | 2 | 2 | Envelope all blue | Envelope all blue |
| 4 | Undefined MSB | 3 | 3 | Envelope all white | Envelope all white |
| 5 | Foot controller MSB | 4 | 4 | Envelope T01 r | C r |
| 6 | Portamento MSB | 5 | 5 | Envelope T01 g | C g |
| 7 | Data entry MSB | 6 | 6 | Envelope T01 b | C b |
| 8 | Channel volume MSB | 7 | 7 | Envelope T01 w | C w |
| 9 | Balance MSB | 8 (Env. all red) | 8 | _ | _ |
| 10 | Undefined MSB | 9 | 9 | _ | _ |
| 11 | Pan MSB | 10 | 10 | _ | _ |
| 12 | Expression controller MSB | 11 | 11 | _ | _ |
| 13 | Effect 1 MSB | 12 | 12 | _ | _ |
| 14 | Effect 2 MSB | 13 | 13 | _ | _ |
| 15 | Undefined MSB | 14 | 14 | _ | _ |
| 16 | Undefined 16 MSB | 15 | 15 | _ | _ |
| 17 | General Purpose #1 MSB | 16 | 16 | _ | _ |
| 18 | General Purpose #2 MSB | 17 | 17 | _ | _ |
| 19 | General Purpose #3 MSB | 18 | 18 | _ | _ |
| 20 | General Purpose #4 MSB | 19 | 19 | _ | _ |
| 21 | Undefined 21 MSB | 20 | 20 | _ | _ |
| 22 | Undefined MSB | 21 | 21 | _ | _ |
| 23 | Undefined MSB | 22 | 22 | _ | _ |
| 24 | Undefined MSB | 23 | 23 | _ | _ |
| 25 | Undefined MSB | 24 | 24 | _ | _ |
| 26 | Undefined MSB | 25 | 25 | _ | _ |
| 27 | Undefined MSB | 26 | 26 | _ | _ |
| 28 | Undefined MSB | 27 | 27 | _ | _ |
| 29 | Undefined MSB | 28 | 28 | _ | _ |
| 30 | Undefined MSB | 29 | 29 | _ | _ |
| 31 | Undefined MSB | 30 | 30 | _ | _ |
| 32 | Undefined MSB | 31 | 31 | _ | _ |
| 33 | Bank select LSB | 32 | 32 | _ | _ |
| 34 | Modulation wheel LSB | 33 | 33 | _ | _ |
| 35 | Breath control LSB | 34 | 34 | _ | _ |
| 36 | Undefined LSB | 35 | 35 | _ | _ |
| 37 | Foot controller LSB | 36 | 36 | Envelope T02 r | A r |
| 38 | Portamento LSB | 37 | 37 | Envelope T02 g | A g |
| 39 | Data entry LSB | 38 (blocked?) | 38 | Envelope T02 b | A b |
| 40 | Channel volume LSB | 39 | 39 | Envelope T02 w | A w |
| 41 | Balance LSB | 40 (Env. T02 b) | 40 | _ | _ |
| 42 | Undefined LSB | 41 | 41 | _ | _ |
| 43 | Pan LSB | 42 | 42 | _ | _ |
| 44 | Expression controller LSB | 43 | 43 | _ | _ |
| 45 | Effect 1 LSB | 44 | 44 | _ | _ |
| 46 | Effect 2 LSB | 45 | 45 | _ | _ |
| 47 | Undefined LSB | 46 | 46 | _ | _ |
| 48 | Undefined LSB | 47 | 47 | _ | _ |
| 49 | General Purpose #1 LSB | 48 | 48 | _ | _ |
| 50 | General Purpose #2 LSB | 49 | 49 | _ | _ |
| 51 | General Purpose #3 LSB | 50 | 50 | _ | _ |
| 52 | General Purpose #4 LSB | 51 | 51 | _ | _ |
| 53 | Undefined LSB | 52 | 52 | _ | _ |
| 54 | Undefined LSB | 53 | 53 | _ | _ |
| 55 | Undefined LSB | 54 | 54 | _ | _ |
| 56 | Undefined LSB | 55 | 55 | _ | _ |
| 57 | Undefined LSB | 56 | 56 | _ | _ |
| 58 | Undefined LSB | 57 | 57 | _ | _ |
| 59 | Undefined LSB | 58 | 58 | _ | _ |
| 60 | Undefined LSB | 59 | 59 | _ | _ |
| 61 | Undefined LSB | 60 | 60 | _ | _ |
| 62 | Undefined LSB | 61 | 61 | _ | _ |
| 63 | Undefined LSB | 62 | 62 | _ | _ |
| 64 | Undefined LSB | 63 | 63 | _ | _ |
| 65 | Sustain pedal | 64 | 64 | Envelope T03 r | L r |
| 66 | Portamento control | 65 | 65 | Envelope T03 g | L g |
| 67 | Sostenuto pedal | 66 | 66 | Envelope T03 b | L b |
| 68 | Soft pedal | 67 | 67 | Envelope T03 w | L w |
| 69 | Legato pedal | 68 | 68 | _ | _ |
| 70 | Hold 2 | 69 | 69 | _ | _ |
| 71 | Sound control 1 (Sound variation) LSB | 70 | 70 | _ | _ |
| 72 | Sound control 2 (Timbre) LSB | 71 | 71 | _ | _ |
| 73 | Sound control 3 (Release time) LSB | 72 | 72 | _ | _ |
| 74 | Sound control 4 (Attack time) LSB | 73 | 73 | _ | _ |
| 75 | Sound control 5 (Brightness) LSB | 74 | 74 | _ | _ |
| 76 | Sound control 6 LSB | 75 | 75 | _ | _ |
| 77 | Sound control 7 LSB | 76 | 76 | _ | _ |
| 78 | Sound control 8 LSB | 77 | 77 | _ | _ |
| 79 | Sound control 9 LSB | 78 | 78 | _ | _ |
| 80 | Sound control 10 LSB | 79 | 79 | _ | _ |
| 81 | General purpose control #5 LSB | 80 | 80 | _ | _ |
| 82 | General purpose control #6 LSB | 81 | 81 | _ | _ |
| 83 | General purpose control # 7 LSB | 82 | 82 | _ | _ |
| 84 | General purpose control #8 Source | 83 | 83 | _ | _ |
| 85 | Portamento control Note | 84 | 84 | _ | _ |
| 86 | Undefined LSB | 85 | 85 | _ | _ |
| 87 | Undefined LSB | 86 | 86 | _ | _ |
| 88 | Undefined LSB | 87 | 87 | _ | _ |
| 89 | Undefined LSB | 88 | 88 | _ | _ |
| 90 | Undefined LSB | 89 | 89 | _ | _ |
| 91 | Undefined LSB | 90 | 90 | _ | _ |
| 92 | Effects 1 (Reverb) Depth LSB | 91 | 91 | _ | _ |
| 93 | Effects 2 (Tremolo) Depth LSB | 92 | 92 | _ | _ |
| 94 | Effects 3 (Chorus) Depth LSB | 93 | 93 | _ | _ |
| 95 | Effects 4 (Detune) Depth LSB | 94 | 94 | _ | _ |
| 96 | Effects 5 (Phaser) Depth LSB | 95 | 95 | _ | _ |
| 97 | Data entry +1 | 96 | 96 | Envelope T04 r | _ |
| 98 | Data entry - 1 | 97 | 97 | Envelope T04 g | _ |
| 99 | NRPN LSB | 98 | 98 | Envelope T04 b | _ |
| 100 | NRPN MSB | 99 | 99 | Envelope T04 w | _ |
| 101 | RPN LSB | 100 | 100 | _ | _ |
| 102 | RPN MSB | 101 | 101 | _ | _ |
| 103 | Undefined | 102 | 102 | _ | _ |
| 104 | Undefined | 103 | 103 | _ | _ |
| 105 | Undefined | 104 | 104 | _ | _ |
| 106 | Undefined | 105 | 105 | _ | _ |
| 107 | Undefined | 106 | 106 | _ | _ |
| 108 | Undefined | 107 | 107 | _ | _ |
| 109 | Undefined | 108 | 108 | _ | _ |
| 110 | Undefined | 109 | 109 | _ | _ |
| 111 | Undefined | 110 | 110 | _ | _ |
| 112 | Undefined | 111 | 111 | _ | _ |
| 113 | Undefined | 112 | 112 | _ | _ |
| 114 | Undefined | 113 | 113 | _ | _ |
| 115 | Undefined | 114 | 114 | _ | _ |
| 116 | Undefined | 115 | 115 | _ | _ |
| 117 | Undefined | 116 | 116 | _ | _ |
| 118 | Undefined | 117 | 117 | _ | _ |
| 119 | Undefined | 118 | 118 | _ | _ |
| 120 | Undefined | 119 | 119 | _ | _ |
| 121 | All sound off | 120 | 120 | _ | _ |
| 122 | Reset all controllers | 121 | 121 | _ | _ |
| 123 | Local control | 122 | 122 | _ | _ |
| 124 | All notes off | 123 | 123 | _ | _ |
| 125 | Omni mode off | 124 | 124 | _ | _ |
| 126 | Omni mode on | 125 | 125 | _ | _ |
| 127 | Poly mode on/off | 126 | 126 | _ | _ |
| 128 | Poly mode on | 127 | 127 | _ | _ |
| 129 | C-1 | C-2 | C-2 | all R | all R |
| 130 | C#-1 | C#-2 | C#-2 | all G | all G |
| 131 | D-1 | D-2 | D-2 | all B | all B |
| 132 | D#-1 | D#-2 | D#-2 | all W | all W |
| 133 | E-1 | E-2 | E-2 | T01 R | C R |
| 134 | F-1 | F-2 | F-2 | T01 G | C G |
| 135 | F#-1 | F#-2 | F#-2 | T01 B | C B |
| 136 | G-1 | G-2 | G-2 | T01 W | C W |
| 137 | G#-1 | G#-2 | G#-2 | T02 R | A R |
| 138 | A-1 | A-2 | A-2 | T02 G | A G |
| 139 | A#-1 | A#-2 | A#-2 | T02 B | A B |
| 140 | B-1 | B-2 | B-2 | T02 W | A W |
| 141 | C0 | C-1 | C-1 | T03 R | L R |
| 142 | C#0 | C#-1 | C#-1 | T03 G | L G |
| 143 | D0 | D-1 | D-1 | T03 B | L B |
| 144 | D#0 | D#-1 | D#-1 | T03 W | L W |
| 145 | E0 | E-1 | E-1 | T04 R | _ |
| 146 | F0 | F-1 | F-1 | T04 G | _ |
| 147 | F#0 | F#-1 | F#-1 | T04 B | _ |
| 148 | G0 | G-1 | G-1 | T04 W | _ |
| 149 | G#0 | G#-1 | G#-1 | _ | _ |
| 150 | A0 | A-1 | A-1 | _ | _ |
| 151 | A#0 | A#-1 | A#-1 | _ | _ |
| 152 | B0 | B-1 | B-1 | _ | _ |
| 153 | C1 | C0 | C0 | Flash R | Flash R |
| 154 | C#1 | C#0 | C#0 | Flash G | Flash G |
| 155 | D1 | D0 | D0 | Flash B | Flash B |
| 156 | D#1 | D#0 | D#0 | Flash W | Flash W |
| 157 | E1 | E0 | E0 | Flash Teal | Flash Teal |
| 158 | F1 | F0 | F0 | Flash Orange | Flash Orange |
| 159 | F#1 | F#0 | F#0 | _ | A She Moved Here Wheep |
| 160 | G1 | G0 | G0 | _ | C She Moved Here Wheep |
| 161 | G#1 | G#0 | G#0 | _ | L She Moved Here Wheep |
| 162 | A1 | A0 | A0 | _ | A Water R Radar |
| 163 | A#1 | A#0 | A#0 | _ | C Water R Radar |
| 164 | B1 | B0 | B0 | _ | L Water R Radar |
| 165 | C2 | C1 | C1 | _ | A Spiral Nebula |
| 166 | C#2 | C#1 | C#1 | _ | C Spiral Nebula |
| 167 | D2 | D1 | D1 | _ | L Spiral Nebula |
| 168 | D#2 | D#1 | D#1 | _ | A 1st assignment |
| 169 | E2 | E1 | E1 | _ | C 1st assignment |
| 170 | F2 | F1 | F1 | _ | L 1st assignment |
| 171 | F#2 | F#1 | F#1 | _ | C One neutral slow |
| 172 | G2 | G1 | G1 | _ | C One neutral slow backwards |
| 173 | G#2 | G#1 | G#1 | _ | _ |
| 174 | A2 | A1 | A1 | _ | C Fill up from center neutral |
| 175 | A#2 | A#1 | A#1 | SA - 03 | C Fill up from center neutral slow |
| 176 | B2 | B1 | B1 | _ | _ |
| 177 | C3 | C2 | C2 | _ | A Circular violet |
| 178 | C#3 | C#2 | C#2 | _ | C Circular violet |
| 179 | D3 | D2 | D2 | _ | L Circular violet |
| 180 | D#3 | D#2 | D#2 | _ | A Fill up from center red |
| 181 | E3 | E2 | E2 | _ | C Fill up from center red |
| 182 | F3 | F2 | F2 | _ | L Fill up from center red |
| 183 | F#3 | F#2 | F#2 | _ | A One red |
| 184 | G3 | G2 | G2 | _ | C One red |
| 185 | G#3 | G#2 | G#2 | _ | L One red |
| 186 | A3 | A2 | A2 | _ | C One red medium |
| 187 | A#3 | A#2 | A#2 | _ | C One red slow |
| 188 | B3 | B2 | B2 | _ | A Squares turq |
| 189 | C4 | C3 | C3 | _ | C Squares turq |
| 190 | C#4 | C#3 | C#3 | _ | L Squares turq |
| 191 | D4 | D3 | D3 | _ | A Rnd fill orange |
| 192 | D#4 | D#3 | D#3 | _ | C Rnd fill red |
| 193 | E4 | E3 | E3 | _ | L Rnd fill red |
| 194 | F4 | F3 | F3 | _ | A Rnd fill turq |
| 195 | F#4 | F#3 | F#3 | _ | C Rnd fill red |
| 196 | G4 | G3 | G3 | _ | L Rnd fill turq |
| 197 | G#4 | G#3 | G#3 | _ | _ |
| 198 | A4 | A3 | A3 | _ | _ |
| 199 | A#4 | A#3 | A#3 | _ | _ |
| 200 | B4 | B3 | B3 | SA Flash Teal | SA Flash Teal |
| 201 | C5 | C4 | C4 | SA Flash Orange | SA Flash Orange |
| 202 | C#5 | C#4 | C#4 | SA Flash Orange Fast | SA Flash Orange Fast |
| 203 | D5 | D4 | D4 | _ | _ |
| 204 | D#5 | D#4 | D#4 | SA Flash Red Fast | SA Flash Red Fast |
| 205 | E5 | E4 | E4 | _ | _ |
| 206 | F5 | F4 | F4 | _ | _ |
| 207 | F#5 | F#4 | F#4 | _ | _ |
| 208 | G5 | G4 | G4 | _ | _ |
| 209 | G#5 | G#4 | G#4 | _ | _ |
| 210 | A5 | A4 | A4 | _ | A Strobe orange |
| 211 | A#5 | A#4 | A#4 | _ | C Strobe red |
| 212 | B5 | B4 | B4 | _ | L Strobe orange |
| 213 | C6 | C5 | C5 | _ | A Strobe turq |
| 214 | C#6 | C#5 | C#5 | _ | C Strobe turq |
| 215 | D6 | D5 | D5 | _ | L Strobe turq |
| 216 | D#6 | D#5 | D#5 | _ | A Strobe white |
| 217 | E6 | E5 | E5 | _ | C Strobe white |
| 218 | F6 | F5 | F5 | _ | L Strobe white |
| 219 | F#6 | F#5 | F#5 | _ | _ |
| 220 | G6 | G5 | G5 | _ | _ |
| 221 | G#6 | G#5 | G#5 | _ | _ |
| 222 | A6 | A5 | A5 | _ | _ |
| 223 | A#6 | A#5 | A#5 | _ | _ |
| 224 | B6 | B5 | B5 | _ | _ |
| 225 | C7 | C6 | C6 | _ | _ |
| 226 | C#7 | C#6 | C#6 | _ | _ |
| 227 | D7 | D6 | D6 | _ | _ |
| 228 | D#7 | D#6 | D#6 | _ | _ |
| 229 | E7 | E6 | E6 | _ | _ |
| 230 | F7 | F6 | F6 | _ | Gradient Abstract |
| 231 | F#7 | F#6 | F#6 | _ | Gradient Abstract |
| 232 | G7 | G6 | G6 | _ | _ |
| 233 | G#7 | G#6 | G#6 | _ | Gradient Ocean |
| 234 | A7 | A6 | A6 | _ | Gradient Ocean |
| 235 | A#7 | A#6 | A#6 | _ | _ |
| 236 | B7 | B6 | B6 | _ | Gradient Sunset |
| 237 | C8 | C7 | C7 | _ | Gradient Sunset |
| 238 | C#8 | C#7 | C#7 | _ | Gradient Sunset |
| 239 | D8 | D7 | D7 | _ | C Sparkle fast neutral |
| 240 | D#8 | D#7 | D#7 | _ | C Sparkle slow neutral |
| 241 | E8 | E7 | E7 | _ | C Sparkle fast blue |
| 242 | F8 | F7 | F7 | _ | _ |
| 243 | F#8 | F#7 | F#7 | _ | _ |
| 244 | G8 | G7 | G7 | _ | _ |
| 245 | G#8 | G#7 | G#7 | _ | _ |
| 246 | A8 | A7 | A7 | _ | _ |
| 247 | A#8 | A#7 | A#7 | _ | _ |
| 248 | B8 | B7 | B7 | _ | _ |
| 249 | C9 | C8 | C8 | _ | _ |
| 250 | C#9 | C#8 | C#8 | _ | _ |
| 251 | D9 | D8 | D8 | _ | _ |
| 252 | D#9 | D#8 | D#8 | _ | _ |
| 253 | E9 | E8 | E8 | _ | _ |
| 254 | F9 | F8 | F8 | _ | _ |
| 255 | F#9 | F#8 | F#8 | _ | _ |
| 256 | G9 | G8 | G8 | Stop all functions | Stop all functions |