├── AllPixMatrix ├── AllPixMatrix.pde ├── README.md ├── configs │ ├── 16x16-square │ │ ├── 16x16-patch.txt │ │ ├── content-save-file-1.allpix │ │ ├── content-save-file-1.txt │ │ ├── matrix-config.ini │ │ └── output-config.ini │ ├── 22x22-round │ │ ├── content-save-file-1.txt │ │ ├── matrix-config.ini │ │ ├── output-config.ini │ │ └── round-matrix-22x22-patch-2018.txt │ ├── 28x28-apa102-panel │ │ ├── 28x28-patch.txt │ │ ├── content-save-file-1.allpix │ │ ├── content-save-file-2.allpix │ │ ├── matrix-config.ini │ │ └── output-config.ini │ ├── 32x32-test-panel │ │ ├── 32x32-1024pix-test-patch.txt │ │ ├── content-save-file-1.txt │ │ ├── matrix-config.ini │ │ └── output-config.ini │ ├── 8x32-test │ │ ├── 8x32-panel-guessed.txt │ │ ├── content-save-file-1.txt │ │ ├── matrix-config.ini │ │ └── output-config.ini │ ├── LED_mask │ │ ├── LED_mask_patch.txt │ │ ├── content.txt │ │ ├── matrix-config.ini │ │ └── output-config.ini │ ├── shuttershades │ │ ├── content-save-file-1.txt │ │ ├── matrix-config.ini │ │ ├── output-config.ini │ │ └── shutter-shades-21x7-patch.txt │ └── sphere │ │ ├── content-save-file-1.txt │ │ ├── matrix-config.ini │ │ ├── output-config.ini │ │ └── sphere-matrix-patch.txt ├── connection.pde ├── data │ ├── Arial-BoldMT-48-smooth.vlw │ ├── Arial-BoldMT-48.vlw │ ├── colorpickerimg.png │ ├── favicon.gif │ ├── intensitybg-horiz.png │ ├── mixerhandle-horiz.png │ ├── mixerhandle-vert.png │ ├── sliderbg-horiz.png │ ├── sliderbg-vert.png │ └── testbars.png ├── draw.pde ├── events.pde ├── fileFunctions.pde ├── footage │ ├── 22x22 │ │ ├── FractalNoise.mov │ │ ├── README.txt │ │ ├── Rainbow.mov │ │ ├── Rainbow2.mov │ │ ├── acid-magma-hicontrast.mov │ │ ├── acid-magma.mov │ │ ├── alienhead.mov │ │ ├── blocks-blue.mov │ │ ├── blue-mosaic.mov │ │ ├── bluewaves.mov │ │ ├── checker-board.mov │ │ ├── color-circle-rain.mov │ │ ├── earth-rotate-1.mov │ │ ├── earth-rotate-2.mov │ │ ├── earth-shrunk.png │ │ ├── earth-spin-contrast.mov │ │ ├── fast-stars.mov │ │ ├── greenrain.mov │ │ ├── jupiter-shrunk.png │ │ ├── magma-long.mov │ │ ├── magma.mov │ │ ├── new-earth.mov │ │ ├── pink-blue-cellmosaic.mov │ │ ├── sampleimg.png │ │ ├── snowing.mov │ │ ├── starburst.mov │ │ ├── testbars-nomove.mov │ │ ├── testbars.mov │ │ ├── turquoise-tissue.mov │ │ ├── twinkle.mov │ │ ├── wave-warp.mov │ │ ├── waves-colorcycle.mov │ │ ├── white-lines-2.mov │ │ ├── white-lines.mov │ │ ├── white-turq-smoke.mov │ │ ├── whitelines3.mov │ │ └── whiterain.mov │ ├── earth-flat-contrast.png │ ├── earth-flat.png │ ├── fractal.png │ └── laser-image.jpg ├── functions.pde ├── generatedCallBacks.pde ├── generatedObjects.pde ├── guiCallBacks.pde ├── guiObjects.pde ├── keyPressed.pde ├── mousePressed.pde ├── nled-allpixmatrix-manual.pdf ├── objects.pde ├── overlayMenu.pde ├── recorded │ ├── recorded-12x14-15-37-49-date-29-10-2018.txt │ ├── recorded-12x14-15-38-1-date-29-10-2018.txt │ ├── recorded-16x16-14-29-43-date-29-10-2018.txt │ ├── recorded-16x16-17-4-26-date-13-7-2018.txt │ ├── recorded-16x16-17-5-48-date-18-6-2018.txt │ ├── recorded-16x16-19-1-55-date-25-10-2018.txt │ ├── recorded-16x16-20-41-52-date-10-7-2018.txt │ ├── recorded-28x28-14-15-20-date-13-12-2018.txt │ ├── recorded-28x28-14-15-25-date-13-12-2018.txt │ ├── recorded-28x28-15-50-35-date-13-12-2018.txt │ ├── recorded-28x28-18-49-40-date-4-11-2018.txt │ ├── recorded-28x28-20-21-20-date-13-12-2018.txt │ ├── recorded-28x28-blocky-colors.txt │ └── recorded-32x32-15-44-12-date-11-11-2018.txt └── software.ini ├── README.md ├── allpixmatrix-layout-definition.jpg └── nled-allpixmatrix-manual.pdf /AllPixMatrix/README.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Northern Lights Electronic Design, LLC 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | Original Author: Jeffrey Nygaard 24 | Copyright 2018 25 | Company: Northern Lights Electronic Design, LLC 26 | Contact: JNygaard@NLEDShop.com 27 | Date Updated: December 19, 2018 28 | Software Version: v.1b 29 | Webpage: www.NLEDShop.com/nledallpixmatrix 30 | Written in Processing v3.4 - www.Processing.org 31 | 32 | ====================================================================================================================================== 33 | 34 | What It Does: 35 | The software uses many media types such as images, animated GIFs, videos(many codecs), Spout/Syphon, external data reception(like Glediator) and software 36 | generated content. It converts or maintains the media to low resolution, that will display well on low resolution LED matrices. Small scale LED matrices 37 | require low resolution media, as scaling down larger standard sized media results in poor looking images once down scaled. The different types of 38 | media content can be mixed together in different ways, and have effects and filters applied to them. The resulting output is transmitted out to a serial 39 | port(like a FTDI or USB enabled microcontroller) which converts it to a pixel chipset protocol and sends it to the pixels. 40 | 41 | Description: 42 | This program was written for use with my projects and products, but hope it will be useful to others as well. I am frequently asked about how best to 43 | create content for low-resolution pixel matrices. There are a few choices out there, but none that are feature rich and open source. This software was 44 | kept simple as possible with the ability to easily modify and add to it. Processing has many inbuilt graphics functions that made it a good choice for 45 | this type of software. 46 | 47 | Compatible Controllers: There are many ways to receive the output from this software. 48 | NLED Pixel Controller Micro - Serial 49 | NLED Pixel Controller Mini - Serial 50 | NLED Pixel Controller Ion - Aurora USB or Serial 51 | NLED Pixel Controller Electron - Aurora USB or Serial 52 | More NLED Controllers will be available soon 53 | 54 | Currently no Arduino library, but should work with any Gleidator compatible sketches. If someone wants to write one, I can link it. 55 | Previously I have had reports that USB enabled Arduinos may not work with the default USB stack. I think this is because the default USB stack 56 | can not handle the data volume. So the stack may need to be adjusted or rewritten. 57 | 58 | Maximum Size matrix: 512x512 - not tested or know if it would actually work. But software would support it. 59 | 60 | Other Required Software: 61 | NLED Patcher for creating matrix patch files - https://www.nledshop.com/nledpatcher/ 62 | 63 | ====================================================================================================================================== 64 | 65 | Changes v.1a to v.1b: 66 | - Added Artnet output support, ID#3, use the OUTPUTPORT line on matrix-output.ini to set the IP address 67 | - Overhauled the the application timing. No longer uses frameRate(1000) for timing 68 | - Threads off the media updating, layer mixing, and final mixing. - Creates a few issues 69 | - The mixing function's color min/max causes graphical GUI glitches and CPU usage has increased 70 | - Now output transmission packet rate is a lot tighter and regular. 71 | - Fixed the display "Output Rate(mS)" as it was showing incorrect time 72 | - Numerous variable optimizations 73 | 74 | Changes BETA 0.99 to v.1a 75 | - numerous GUI fixes 76 | - Star fieild 'twinkle' changed to z-distance 77 | - Updated media crop/resize options 78 | - Centered matrix preview grids 79 | - Numerous fixes to prevent stalls/freezes when loading external data streams 80 | - Fixed per layer pausing and feed pausing 81 | - Fixed issues with re-loading config files during application runtime 82 | - Renamed numerous variables and objects with more refined naming schemes 83 | - Added option to record to file for string or binary/raw formated files 84 | 85 | 86 | ====================================================================================================================================== 87 | 88 | See AllPixMatrix.pde for additional notes and details 89 | 90 | -------------------------------------------------------------------------------- /AllPixMatrix/configs/16x16-square/16x16-patch.txt: -------------------------------------------------------------------------------- 1 | 256 25 32 800 800 2 | 1 16 3 | 2 16 4 | 3 16 5 | 4 16 6 | 5 16 7 | 6 16 8 | 7 16 9 | 8 16 10 | 9 16 11 | 10 16 12 | 11 16 13 | 12 16 14 | 13 16 15 | 14 16 16 | 15 16 17 | 16 16 18 | 16 15 19 | 15 15 20 | 14 15 21 | 13 15 22 | 12 15 23 | 11 15 24 | 10 15 25 | 9 15 26 | 8 15 27 | 7 15 28 | 6 15 29 | 5 15 30 | 4 15 31 | 3 15 32 | 2 15 33 | 1 15 34 | 1 14 35 | 2 14 36 | 3 14 37 | 4 14 38 | 5 14 39 | 6 14 40 | 7 14 41 | 8 14 42 | 9 14 43 | 10 14 44 | 11 14 45 | 12 14 46 | 13 14 47 | 14 14 48 | 15 14 49 | 16 14 50 | 16 13 51 | 15 13 52 | 14 13 53 | 13 13 54 | 12 13 55 | 11 13 56 | 10 13 57 | 9 13 58 | 8 13 59 | 7 13 60 | 6 13 61 | 5 13 62 | 4 13 63 | 3 13 64 | 2 13 65 | 1 13 66 | 1 12 67 | 2 12 68 | 3 12 69 | 4 12 70 | 5 12 71 | 6 12 72 | 7 12 73 | 8 12 74 | 9 12 75 | 10 12 76 | 11 12 77 | 12 12 78 | 13 12 79 | 14 12 80 | 15 12 81 | 16 12 82 | 16 11 83 | 15 11 84 | 14 11 85 | 13 11 86 | 12 11 87 | 11 11 88 | 10 11 89 | 9 11 90 | 8 11 91 | 7 11 92 | 6 11 93 | 5 11 94 | 4 11 95 | 3 11 96 | 2 11 97 | 1 11 98 | 1 10 99 | 2 10 100 | 3 10 101 | 4 10 102 | 5 10 103 | 6 10 104 | 7 10 105 | 8 10 106 | 9 10 107 | 10 10 108 | 11 10 109 | 12 10 110 | 13 10 111 | 14 10 112 | 15 10 113 | 16 10 114 | 16 9 115 | 15 9 116 | 14 9 117 | 13 9 118 | 12 9 119 | 11 9 120 | 10 9 121 | 9 9 122 | 8 9 123 | 7 9 124 | 6 9 125 | 5 9 126 | 4 9 127 | 3 9 128 | 2 9 129 | 1 9 130 | 1 8 131 | 2 8 132 | 3 8 133 | 4 8 134 | 5 8 135 | 6 8 136 | 7 8 137 | 8 8 138 | 9 8 139 | 10 8 140 | 11 8 141 | 12 8 142 | 13 8 143 | 14 8 144 | 15 8 145 | 16 8 146 | 16 7 147 | 15 7 148 | 14 7 149 | 13 7 150 | 12 7 151 | 11 7 152 | 10 7 153 | 9 7 154 | 8 7 155 | 7 7 156 | 6 7 157 | 5 7 158 | 4 7 159 | 3 7 160 | 2 7 161 | 1 7 162 | 1 6 163 | 2 6 164 | 3 6 165 | 4 6 166 | 5 6 167 | 6 6 168 | 7 6 169 | 8 6 170 | 9 6 171 | 10 6 172 | 11 6 173 | 12 6 174 | 13 6 175 | 14 6 176 | 15 6 177 | 16 6 178 | 16 5 179 | 15 5 180 | 14 5 181 | 13 5 182 | 12 5 183 | 11 5 184 | 10 5 185 | 9 5 186 | 8 5 187 | 7 5 188 | 6 5 189 | 5 5 190 | 4 5 191 | 3 5 192 | 2 5 193 | 1 5 194 | 1 4 195 | 2 4 196 | 3 4 197 | 4 4 198 | 5 4 199 | 6 4 200 | 7 4 201 | 8 4 202 | 9 4 203 | 10 4 204 | 11 4 205 | 12 4 206 | 13 4 207 | 14 4 208 | 15 4 209 | 16 4 210 | 16 3 211 | 15 3 212 | 14 3 213 | 13 3 214 | 12 3 215 | 11 3 216 | 10 3 217 | 9 3 218 | 8 3 219 | 7 3 220 | 6 3 221 | 5 3 222 | 4 3 223 | 3 3 224 | 2 3 225 | 1 3 226 | 1 2 227 | 2 2 228 | 3 2 229 | 4 2 230 | 5 2 231 | 6 2 232 | 7 2 233 | 8 2 234 | 9 2 235 | 10 2 236 | 11 2 237 | 12 2 238 | 13 2 239 | 14 2 240 | 15 2 241 | 16 2 242 | 16 1 243 | 15 1 244 | 14 1 245 | 13 1 246 | 12 1 247 | 11 1 248 | 10 1 249 | 9 1 250 | 8 1 251 | 7 1 252 | 6 1 253 | 5 1 254 | 4 1 255 | 3 1 256 | 2 1 257 | 1 1 258 | -------------------------------------------------------------------------------- /AllPixMatrix/configs/16x16-square/content-save-file-1.allpix: -------------------------------------------------------------------------------- 1 | 0,0,41,0.0,0.25,1.0,1.0 2 | 24,255,30.0,3,0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,255.0,255.0,255.0 3 | 6,255,30.0,0,0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,255.0,255.0,255.0 4 | 0,255,24.0,0,0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,255.0,255.0,255.0 5 | 29,255,24.0,0,0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,255.0,255.0 6 | 5,255,30.0,0,0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,255.0,255.0,255.0 7 | 0,255,24.0,0,0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,255.0,255.0,255.0 8 | NULL,0,0,0,0,null,0,0,0,0,1,24.0 9 | Test Bars,1,0,0,0,testbars.png,0,0,0,0,1,24.0 10 | Blocks,2,5,3,0,null,0,0,28,28,1,24.0,1,5,0.0,0,255,255,255,255 11 | Gen Stars,3,5,2,0,null,0,0,28,28,1,24.0,0,1,200,0,0.0,false,255,255,255,255,0,0,0,0 12 | Video 4,4,1,0,0,footage\22x22\bluewaves.mov,0,0,22,22,1,30.0 13 | Video-SnowBalls,5,1,0,0,footage\22x22\snowing.mov,0,0,22,22,1,30.0 14 | Video 6,6,1,0,0,footage\22x22\FractalNoise.mov,0,0,22,22,1,30.0 15 | Fractal Img,7,3,0,0,footage\fractal.png,0,0,300,300,1,1.0 16 | Gen Text,8,5,1,0,null,0,0,28,28,1,24.0,Your Text,16,0,0,0,255,255,255,255,1,0,0,0 17 | Laser Img,9,3,0,0,footage\22x22\jupiter-shrunk.png,0,0,22,21,1,1.0 18 | Gen Meta,10,5,4,0,null,0,0,28,28,1,24.0,0,20,20,0.1,255,255,255,255 19 | Gen Ripples,11,5,5,0,null,0,0,28,28,1,24.0,1,0,100,0,1,0,0,0,0,255,255,255,255 20 | Gen Spiral,12,5,6,0,null,0,0,28,28,1,24.0,2,0.5,1,3,255,255,255,255 21 | Gen Plasma,13,5,8,0,null,0,0,28,28,1,24.0,NONE 22 | Generated 14,14,5,12,0,null,0,0,28,28,1,24.0,0,0,1,2,4,0.0,0,255,0,255 23 | Generated 15,15,5,11,0,null,0,0,28,28,1,24.0,1,0,0,10,8,0.0,255,255,255,255 24 | Generated 16,16,5,6,1,null,0,0,28,28,1,24.0,3,0.5,2,3,255,255,255,255 25 | Generated 17,17,5,9,0,null,0,0,28,28,1,24.0,1,5,10,1,210,105,false,255,0,0,255,0,255,0,255 26 | Generated 18,18,5,5,1,null,0,0,28,28,1,24.0,0,0,21,0,1,0,0,0,0,0,0,255,255 27 | Generated 19,19,5,10,0,null,0,0,28,28,1,24.0,8,1,1,1,false,255,255,255,255 28 | Generated 20,20,5,4,1,null,0,0,28,28,1,24.0,1,20,20,0.1,0,0,255,255 29 | Generated 21,21,5,4,2,null,0,0,28,28,1,24.0,1,40,5,0.1,255,0,255,255 30 | Video 22,22,1,0,0,footage\22x22\alienhead.mov,0,0,22,22,1,30.0 31 | Video 23,23,1,0,0,footage\22x22\earth-spin-contrast.mov,0,0,68,24,1,30.0 32 | Video 24,24,1,0,0,footage\22x22\acid-magma.mov,0,0,22,22,1,30.0 33 | Video 25,25,1,0,0,footage\22x22\greenrain.mov,0,0,22,22,1,30.0 34 | Video 26,26,1,0,0,footage\22x22\starburst.mov,0,0,22,22,1,30.0 35 | Image 27,27,3,0,0,footage\laser-image.jpg,0,0,1024,768,1,1.0 36 | Generated 28,28,5,2,1,,0,0,28,28,1,24.0,2,4,100,0,0.0,true,255,0,0,255,0,0,0,0 37 | Generated 29,29,5,12,1,,0,0,28,28,1,24.0,3,0,1,2,7,0.0,71,255,255,255 38 | Generated 30,30,5,11,1,,0,0,28,28,1,24.0,2,0,0,8,8,0.0,0,255,0,255 39 | Generated 31,31,5,11,2,,0,0,28,28,1,24.0,2,0,0,16,100,0.0,255,255,255,255 40 | Image 32,32,3,0,0,footage\earth-flat-contrast.png,0,0,68,24,1,1.0 41 | Video 33,33,1,0,0,footage\22x22\pink-blue-cellmosaic.mov,0,0,22,22,1,30.0 42 | Video 34,34,1,0,0,footage\22x22\Rainbow2.mov,0,0,22,22,1,30.0 43 | Video 35,35,1,0,0,footage\22x22\testbars.mov,0,0,22,16,1,30.0 44 | Generated 36,36,5,7,0,,0,0,28,28,1,24.0,0,128,0,255 45 | Generated 37,37,5,3,1,,0,0,28,28,1,24.0,1,5,0.0,0,0,255,0,255 46 | Generated 38,38,5,3,2,,0,0,28,28,1,24.0,2,5,0.0,2,255,0,0,255 47 | Generated 39,39,5,3,3,,0,0,28,28,1,24.0,1,5,0.0,1,255,255,255,255 48 | Generated 40,40,5,12,2,,0,0,28,28,1,24.0,1,0,2,4,7,0.0,0,0,255,255 49 | Generated 41,41,5,12,3,,0,0,28,28,1,24.0,1,0,1,1,10,0.0,0,255,0,255 50 | -------------------------------------------------------------------------------- /AllPixMatrix/configs/16x16-square/content-save-file-1.txt: -------------------------------------------------------------------------------- 1 | 0,0,1,0.5,0.25,1.0,1.0 2 | 1,255,24.0,0,0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,255.0,255.0,255.0 3 | 0,255,24.0,0,0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,255.0,255.0,255.0 4 | 0,255,24.0,0,0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,255.0,255.0,255.0 5 | 0,255,24.0,0,0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,255.0,255.0,255.0 6 | 0,255,24.0,0,0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,255.0,255.0,255.0 7 | 0,255,24.0,0,0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,255.0,255.0,255.0 8 | NULL,0,0,0,0,,0,0,0,0,1,24.0 9 | Generated 1,1,5,10,0,,0,0,28,28,1,24.0,12,1,8,8,false,255,0,0,255 10 | -------------------------------------------------------------------------------- /AllPixMatrix/configs/16x16-square/matrix-config.ini: -------------------------------------------------------------------------------- 1 | NAME 16x16 WS2812 Matrix 2 | PATCHFILE 16x16-patch.txt 3 | CONTENTFILE content-save-file-1.allpix 4 | FOOTAGEDIR NOT YET USED 5 | AUTOMATICFILE Auto-1.txt -------------------------------------------------------------------------------- /AllPixMatrix/configs/16x16-square/output-config.ini: -------------------------------------------------------------------------------- 1 | OUTPUTTYPE 1 //0: none, 1: NLED serial, 2: glediator serial, 3: TCP, 4: UDP, ?? 2 | OUTPUTPORT 1 3 | OUTPUTBAUD 500000 4 | OUTPUTFPS 24 5 | COLORORDER 0 //0: RGB, 1: BRG, 2: GBR, 3: RBG, 4: BGR, 5: GRB 6 | AURORACMD true 7 | EXTERNALDATA false 8 | EXTERNALPORT 0 9 | EXTERNALBAUD 1000000 -------------------------------------------------------------------------------- /AllPixMatrix/configs/22x22-round/content-save-file-1.txt: -------------------------------------------------------------------------------- 1 | 0,0,41,0.0,0.25,1.0,1.0 2 | 4,255,30.0,2,0,0.0,0,0.0,0.0,0.0,255.0,0.0,0.0,0.0,255.0,255.0,255.0 3 | 6,255,30.0,0,0,0.0,0,0.0,0.0,0.0,255.0,0.0,0.0,0.0,255.0,255.0,255.0 4 | 0,255,24.0,0,0,0.0,0,0.0,0.0,0.0,255.0,0.0,0.0,0.0,255.0,255.0,255.0 5 | 29,255,24.0,0,0,0.0,0,0.0,0.0,0.0,255.0,0.0,0.0,0.0,255.0,255.0,255.0 6 | 0,0,30.0,0,0,0.0,0,0.0,0.0,0.0,255.0,0.0,0.0,0.0,255.0,255.0,255.0 7 | 0,255,24.0,0,0,0.0,0,0.0,0.0,0.0,255.0,0.0,0.0,0.0,255.0,255.0,255.0 8 | NULL,0,0,0,0,null,0,0,0,0,1,24.0 9 | Test Bars,1,0,0,0,testbars.png,0,0,0,0,1,24.0 10 | Blocks,2,5,3,0,null,0,0,21,7,1,24.0,1,5,0.0,0,255,255,255,255 11 | Gen Stars,3,5,2,0,null,0,0,21,7,1,24.0,0,1,200,0,0.0,false,255,255,255,255,0,0,0,0 12 | Video-Magma,4,1,0,0,footage\22x22\acid-magma-hicontrast.mov,0,0,22,22,1,30.0 13 | Video-SnowBalls,5,1,0,0,footage\22x22\snowing.mov,0,0,22,22,1,30.0 14 | Video 6,6,1,0,0,footage\22x22\FractalNoise.mov,0,0,22,22,1,30.0 15 | Fractal Img,7,3,0,0,footage\fractal.png,0,0,300,300,1,1.0 16 | Gen Text,8,5,1,0,null,0,0,21,7,1,24.0,Your Text,16,0,0,0,255,255,255,255,1,0,0,0 17 | Laser Img,9,3,0,0,footage\22x22\jupiter-shrunk.png,0,0,22,21,1,1.0 18 | Gen Meta,10,5,4,0,null,0,0,21,7,1,24.0,0,20,20,0.1,255,255,255,255 19 | Gen Ripples,11,5,5,0,null,0,0,21,7,1,24.0,1,0,100,0,1,0,0,0,0,255,255,255,255 20 | Gen Spiral,12,5,6,0,null,0,0,21,7,1,24.0,2,0.5,1,3,255,255,255,255 21 | Gen Plasma,13,5,8,0,null,0,0,21,7,1,24.0,NONE 22 | Generated 14,14,5,12,0,null,0,0,21,7,1,24.0,0,0,1,2,4,0.0,0,255,0,255 23 | Generated 15,15,5,11,0,null,0,0,21,7,1,24.0,1,0,0,10,8,0.0,255,255,255,255 24 | Generated 16,16,5,6,1,null,0,0,21,7,1,24.0,3,0.5,2,3,255,255,255,255 25 | Generated 17,17,5,9,0,null,0,0,21,7,1,24.0,1,5,10,1,210,105,false,255,0,0,255,0,255,0,255 26 | Generated 18,18,5,5,1,null,0,0,21,7,1,24.0,0,0,21,0,1,0,0,0,0,0,0,255,255 27 | Generated 19,19,5,10,0,null,0,0,21,7,1,24.0,8,1,1,1,false,255,255,255,255 28 | Generated 20,20,5,4,1,null,0,0,21,7,1,24.0,1,20,20,0.1,0,0,255,255 29 | Generated 21,21,5,4,2,null,0,0,21,7,1,24.0,1,40,5,0.1,255,0,255,255 30 | Video 22,22,1,0,0,footage\22x22\alienhead.mov,0,0,22,22,1,30.0 31 | Video 23,23,1,0,0,footage\22x22\earth-spin-contrast.mov,0,0,68,24,1,30.0 32 | Video 24,24,1,0,0,footage\22x22\bluewaves.mov,0,0,22,22,1,30.0 33 | Video 25,25,1,0,0,footage\22x22\greenrain.mov,0,0,22,22,1,30.0 34 | Video 26,26,1,0,0,footage\22x22\starburst.mov,0,0,22,22,1,30.0 35 | Image 27,27,3,0,0,footage\laser-image.jpg,0,0,1024,768,1,1.0 36 | Generated 28,28,5,2,1,,0,0,21,7,1,24.0,2,4,100,0,0.0,true,255,0,0,255,0,0,0,0 37 | Generated 29,29,5,12,1,,0,0,21,7,1,24.0,3,0,1,2,7,0.0,71,255,255,255 38 | Generated 30,30,5,11,1,,0,0,21,7,1,24.0,2,0,0,8,8,0.0,0,255,0,255 39 | Generated 31,31,5,11,2,,0,0,21,7,1,24.0,2,0,0,16,100,0.0,255,255,255,255 40 | Image 32,32,3,0,0,footage\earth-flat-contrast.png,0,0,68,24,1,1.0 41 | Video 33,33,1,0,0,footage\22x22\pink-blue-cellmosaic.mov,0,0,22,22,1,30.0 42 | Video 34,34,1,0,0,footage\22x22\Rainbow2.mov,0,0,22,22,1,30.0 43 | Video 35,35,1,0,0,footage\22x22\testbars.mov,0,0,22,16,1,30.0 44 | Generated 36,36,5,7,0,,0,0,21,7,1,24.0,0,128,0,255 45 | Generated 37,37,5,3,1,,0,0,21,7,1,24.0,1,5,0.0,0,0,255,0,255 46 | Generated 38,38,5,3,2,,0,0,21,7,1,24.0,2,5,0.0,2,255,0,0,255 47 | Generated 39,39,5,3,3,,0,0,21,7,1,24.0,1,5,0.0,1,255,255,255,255 48 | Generated 40,40,5,12,2,,0,0,21,7,1,24.0,1,0,2,4,7,0.0,0,0,255,255 49 | Generated 41,41,5,12,3,,0,0,21,7,1,24.0,1,0,1,1,10,0.0,0,255,0,255 50 | -------------------------------------------------------------------------------- /AllPixMatrix/configs/22x22-round/matrix-config.ini: -------------------------------------------------------------------------------- 1 | NAME 22x22 Round Matrix 2 | PATCHFILE round-matrix-22x22-patch-2018.txt 3 | CONTENTFILE content-save-file-1.txt 4 | FOOTAGEDIR LOCAL 5 | AUTOMATICFILE Auto-1.txt 6 | -------------------------------------------------------------------------------- /AllPixMatrix/configs/22x22-round/output-config.ini: -------------------------------------------------------------------------------- 1 | OUTPUTTYPE 1 //0: none, 1: NLED serial, 2: glediator serial, 3: TCP, 4: UDP, ?? 2 | OUTPUTPORT 1 3 | OUTPUTBAUD 1000000 4 | OUTPUTFPS 24 5 | COLORORDER 0 //0: RGB, 1: BRG, 2: GBR, 3: RBG, 4: BGR, 5: GRB 6 | AURORACMD false 7 | EXTERNALDATA true 8 | EXTERNALPORT 2 9 | EXTERNALBAUD 500000 -------------------------------------------------------------------------------- /AllPixMatrix/configs/22x22-round/round-matrix-22x22-patch-2018.txt: -------------------------------------------------------------------------------- 1 | 340 25 32 800 800 2 | 12 22 3 | 12 21 4 | 12 20 5 | 12 19 6 | 12 18 7 | 12 17 8 | 12 16 9 | 12 15 10 | 12 14 11 | 12 13 12 | 12 12 13 | 12 11 14 | 12 10 15 | 12 9 16 | 12 8 17 | 12 7 18 | 12 6 19 | 12 5 20 | 12 4 21 | 12 3 22 | 12 2 23 | 12 1 24 | 13 2 25 | 13 3 26 | 13 4 27 | 13 5 28 | 13 6 29 | 13 7 30 | 13 8 31 | 13 9 32 | 13 10 33 | 13 11 34 | 13 12 35 | 13 13 36 | 13 14 37 | 13 15 38 | 13 16 39 | 13 17 40 | 13 18 41 | 13 19 42 | 13 20 43 | 13 21 44 | 14 21 45 | 14 20 46 | 14 19 47 | 14 18 48 | 14 17 49 | 14 16 50 | 14 15 51 | 14 14 52 | 14 13 53 | 14 12 54 | 14 11 55 | 14 10 56 | 14 9 57 | 14 8 58 | 14 7 59 | 14 6 60 | 14 5 61 | 14 4 62 | 14 3 63 | 14 2 64 | 15 2 65 | 15 3 66 | 15 4 67 | 15 5 68 | 15 6 69 | 15 7 70 | 15 8 71 | 15 9 72 | 15 10 73 | 15 11 74 | 15 12 75 | 15 13 76 | 15 14 77 | 15 15 78 | 15 16 79 | 15 17 80 | 15 18 81 | 15 19 82 | 15 20 83 | 15 21 84 | 16 20 85 | 16 19 86 | 16 18 87 | 16 17 88 | 16 16 89 | 16 15 90 | 16 14 91 | 16 13 92 | 16 12 93 | 16 11 94 | 16 10 95 | 16 9 96 | 16 8 97 | 16 7 98 | 16 6 99 | 16 5 100 | 16 4 101 | 16 3 102 | 17 3 103 | 17 4 104 | 17 5 105 | 17 6 106 | 17 7 107 | 17 8 108 | 17 9 109 | 17 10 110 | 17 11 111 | 17 12 112 | 17 13 113 | 17 14 114 | 17 15 115 | 17 16 116 | 17 17 117 | 17 18 118 | 17 19 119 | 17 20 120 | 18 19 121 | 18 18 122 | 18 17 123 | 18 16 124 | 18 15 125 | 18 14 126 | 18 13 127 | 18 12 128 | 18 11 129 | 18 10 130 | 18 9 131 | 18 8 132 | 18 7 133 | 18 6 134 | 18 5 135 | 18 4 136 | 19 5 137 | 19 6 138 | 19 7 139 | 19 8 140 | 19 9 141 | 19 10 142 | 19 11 143 | 19 12 144 | 19 13 145 | 19 14 146 | 19 15 147 | 19 16 148 | 19 17 149 | 19 18 150 | 20 17 151 | 20 16 152 | 20 15 153 | 20 14 154 | 20 13 155 | 20 12 156 | 20 11 157 | 20 10 158 | 20 9 159 | 20 8 160 | 20 7 161 | 20 6 162 | 21 8 163 | 21 9 164 | 21 10 165 | 21 11 166 | 21 12 167 | 21 13 168 | 21 14 169 | 22 12 170 | 22 11 171 | 22 12 172 | 11 22 173 | 11 21 174 | 11 20 175 | 11 19 176 | 11 18 177 | 11 17 178 | 11 16 179 | 11 15 180 | 11 14 181 | 11 13 182 | 11 12 183 | 11 11 184 | 11 10 185 | 11 9 186 | 11 8 187 | 11 7 188 | 11 6 189 | 11 5 190 | 11 4 191 | 11 3 192 | 11 2 193 | 11 1 194 | 10 2 195 | 10 3 196 | 10 4 197 | 10 5 198 | 10 6 199 | 10 7 200 | 10 8 201 | 10 9 202 | 10 10 203 | 10 11 204 | 10 12 205 | 10 13 206 | 10 14 207 | 10 15 208 | 10 16 209 | 10 17 210 | 10 18 211 | 10 19 212 | 10 20 213 | 10 21 214 | 9 21 215 | 9 20 216 | 9 19 217 | 9 18 218 | 9 17 219 | 9 16 220 | 9 15 221 | 9 14 222 | 9 13 223 | 9 12 224 | 9 11 225 | 9 10 226 | 9 9 227 | 9 8 228 | 9 7 229 | 9 6 230 | 9 5 231 | 9 4 232 | 9 3 233 | 9 2 234 | 8 2 235 | 8 3 236 | 8 4 237 | 8 5 238 | 8 6 239 | 8 7 240 | 8 8 241 | 8 9 242 | 8 10 243 | 8 11 244 | 8 12 245 | 8 13 246 | 8 14 247 | 8 15 248 | 8 16 249 | 8 17 250 | 8 18 251 | 8 19 252 | 8 20 253 | 8 21 254 | 7 20 255 | 7 19 256 | 7 18 257 | 7 17 258 | 7 16 259 | 7 15 260 | 7 14 261 | 7 13 262 | 7 12 263 | 7 11 264 | 7 10 265 | 7 9 266 | 7 8 267 | 7 7 268 | 7 6 269 | 7 5 270 | 7 4 271 | 7 3 272 | 6 3 273 | 6 4 274 | 6 5 275 | 6 6 276 | 6 7 277 | 6 8 278 | 6 9 279 | 6 10 280 | 6 11 281 | 6 12 282 | 6 13 283 | 6 14 284 | 6 15 285 | 6 16 286 | 6 17 287 | 6 18 288 | 6 19 289 | 6 20 290 | 5 19 291 | 5 18 292 | 5 17 293 | 5 16 294 | 5 15 295 | 5 14 296 | 5 13 297 | 5 12 298 | 5 11 299 | 5 10 300 | 5 9 301 | 5 8 302 | 5 7 303 | 5 6 304 | 5 5 305 | 5 4 306 | 4 5 307 | 4 6 308 | 4 7 309 | 4 8 310 | 4 9 311 | 4 10 312 | 4 11 313 | 4 12 314 | 4 13 315 | 4 14 316 | 4 15 317 | 4 16 318 | 4 17 319 | 4 18 320 | 3 17 321 | 3 16 322 | 3 15 323 | 3 14 324 | 3 13 325 | 3 12 326 | 3 11 327 | 3 10 328 | 3 9 329 | 3 8 330 | 3 7 331 | 3 6 332 | 2 8 333 | 2 9 334 | 2 10 335 | 2 11 336 | 2 12 337 | 2 13 338 | 2 14 339 | 2 15 340 | 1 12 341 | 1 11 342 | -------------------------------------------------------------------------------- /AllPixMatrix/configs/28x28-apa102-panel/28x28-patch.txt: -------------------------------------------------------------------------------- 1 | 784 22 32 794 695 2 | 28 28 3 | 27 28 4 | 26 28 5 | 25 28 6 | 24 28 7 | 23 28 8 | 22 28 9 | 21 28 10 | 20 28 11 | 19 28 12 | 18 28 13 | 17 28 14 | 16 28 15 | 15 28 16 | 14 28 17 | 13 28 18 | 12 28 19 | 11 28 20 | 10 28 21 | 9 28 22 | 8 28 23 | 7 28 24 | 6 28 25 | 5 28 26 | 4 28 27 | 3 28 28 | 2 28 29 | 1 28 30 | 1 27 31 | 2 27 32 | 3 27 33 | 4 27 34 | 5 27 35 | 6 27 36 | 7 27 37 | 8 27 38 | 9 27 39 | 10 27 40 | 11 27 41 | 12 27 42 | 13 27 43 | 14 27 44 | 15 27 45 | 16 27 46 | 17 27 47 | 18 27 48 | 19 27 49 | 20 27 50 | 21 27 51 | 22 27 52 | 23 27 53 | 24 27 54 | 25 27 55 | 26 27 56 | 27 27 57 | 28 27 58 | 28 26 59 | 27 26 60 | 26 26 61 | 25 26 62 | 24 26 63 | 23 26 64 | 22 26 65 | 21 26 66 | 20 26 67 | 19 26 68 | 18 26 69 | 17 26 70 | 16 26 71 | 15 26 72 | 14 26 73 | 13 26 74 | 12 26 75 | 11 26 76 | 10 26 77 | 9 26 78 | 8 26 79 | 7 26 80 | 6 26 81 | 5 26 82 | 4 26 83 | 3 26 84 | 2 26 85 | 1 26 86 | 1 25 87 | 2 25 88 | 3 25 89 | 4 25 90 | 5 25 91 | 6 25 92 | 7 25 93 | 8 25 94 | 9 25 95 | 10 25 96 | 11 25 97 | 12 25 98 | 13 25 99 | 14 25 100 | 15 25 101 | 16 25 102 | 17 25 103 | 18 25 104 | 19 25 105 | 20 25 106 | 21 25 107 | 22 25 108 | 23 25 109 | 24 25 110 | 25 25 111 | 26 25 112 | 27 25 113 | 28 25 114 | 28 24 115 | 27 24 116 | 26 24 117 | 25 24 118 | 24 24 119 | 23 24 120 | 22 24 121 | 21 24 122 | 20 24 123 | 19 24 124 | 18 24 125 | 17 24 126 | 16 24 127 | 15 24 128 | 14 24 129 | 13 24 130 | 12 24 131 | 11 24 132 | 10 24 133 | 9 24 134 | 8 24 135 | 7 24 136 | 6 24 137 | 5 24 138 | 4 24 139 | 3 24 140 | 2 24 141 | 1 24 142 | 1 23 143 | 2 23 144 | 3 23 145 | 4 23 146 | 5 23 147 | 6 23 148 | 7 23 149 | 8 23 150 | 9 23 151 | 10 23 152 | 11 23 153 | 12 23 154 | 13 23 155 | 14 23 156 | 15 23 157 | 16 23 158 | 17 23 159 | 18 23 160 | 19 23 161 | 20 23 162 | 21 23 163 | 22 23 164 | 23 23 165 | 24 23 166 | 25 23 167 | 26 23 168 | 27 23 169 | 28 23 170 | 28 22 171 | 27 22 172 | 26 22 173 | 25 22 174 | 24 22 175 | 23 22 176 | 22 22 177 | 21 22 178 | 20 22 179 | 19 22 180 | 18 22 181 | 17 22 182 | 16 22 183 | 15 22 184 | 14 22 185 | 13 22 186 | 12 22 187 | 11 22 188 | 10 22 189 | 9 22 190 | 8 22 191 | 7 22 192 | 6 22 193 | 5 22 194 | 4 22 195 | 3 22 196 | 2 22 197 | 1 22 198 | 1 21 199 | 2 21 200 | 3 21 201 | 4 21 202 | 5 21 203 | 6 21 204 | 7 21 205 | 8 21 206 | 9 21 207 | 10 21 208 | 11 21 209 | 12 21 210 | 13 21 211 | 14 21 212 | 15 21 213 | 16 21 214 | 17 21 215 | 18 21 216 | 19 21 217 | 20 21 218 | 21 21 219 | 22 21 220 | 23 21 221 | 24 21 222 | 25 21 223 | 26 21 224 | 27 21 225 | 28 21 226 | 28 20 227 | 27 20 228 | 26 20 229 | 25 20 230 | 24 20 231 | 23 20 232 | 22 20 233 | 21 20 234 | 20 20 235 | 19 20 236 | 18 20 237 | 17 20 238 | 16 20 239 | 15 20 240 | 14 20 241 | 13 20 242 | 12 20 243 | 11 20 244 | 10 20 245 | 9 20 246 | 8 20 247 | 7 20 248 | 6 20 249 | 5 20 250 | 4 20 251 | 3 20 252 | 2 20 253 | 1 20 254 | 1 19 255 | 2 19 256 | 3 19 257 | 4 19 258 | 5 19 259 | 6 19 260 | 7 19 261 | 8 19 262 | 9 19 263 | 10 19 264 | 11 19 265 | 12 19 266 | 13 19 267 | 14 19 268 | 15 19 269 | 16 19 270 | 17 19 271 | 18 19 272 | 19 19 273 | 20 19 274 | 21 19 275 | 22 19 276 | 23 19 277 | 24 19 278 | 25 19 279 | 26 19 280 | 27 19 281 | 28 19 282 | 28 18 283 | 27 18 284 | 26 18 285 | 25 18 286 | 24 18 287 | 23 18 288 | 22 18 289 | 21 18 290 | 20 18 291 | 19 18 292 | 18 18 293 | 17 18 294 | 16 18 295 | 15 18 296 | 14 18 297 | 13 18 298 | 12 18 299 | 11 18 300 | 10 18 301 | 9 18 302 | 8 18 303 | 7 18 304 | 6 18 305 | 5 18 306 | 4 18 307 | 3 18 308 | 2 18 309 | 1 18 310 | 1 17 311 | 2 17 312 | 3 17 313 | 4 17 314 | 5 17 315 | 6 17 316 | 7 17 317 | 8 17 318 | 9 17 319 | 10 17 320 | 11 17 321 | 12 17 322 | 13 17 323 | 14 17 324 | 15 17 325 | 16 17 326 | 17 17 327 | 18 17 328 | 19 17 329 | 20 17 330 | 21 17 331 | 22 17 332 | 23 17 333 | 24 17 334 | 25 17 335 | 26 17 336 | 27 17 337 | 28 17 338 | 28 16 339 | 27 16 340 | 26 16 341 | 25 16 342 | 24 16 343 | 23 16 344 | 22 16 345 | 21 16 346 | 20 16 347 | 19 16 348 | 18 16 349 | 17 16 350 | 16 16 351 | 15 16 352 | 14 16 353 | 13 16 354 | 12 16 355 | 11 16 356 | 10 16 357 | 9 16 358 | 8 16 359 | 7 16 360 | 6 16 361 | 5 16 362 | 4 16 363 | 3 16 364 | 2 16 365 | 1 16 366 | 1 15 367 | 2 15 368 | 3 15 369 | 4 15 370 | 5 15 371 | 6 15 372 | 7 15 373 | 8 15 374 | 9 15 375 | 10 15 376 | 11 15 377 | 12 15 378 | 13 15 379 | 14 15 380 | 15 15 381 | 16 15 382 | 17 15 383 | 18 15 384 | 19 15 385 | 20 15 386 | 21 15 387 | 22 15 388 | 23 15 389 | 24 15 390 | 25 15 391 | 26 15 392 | 27 15 393 | 28 15 394 | 28 14 395 | 27 14 396 | 26 14 397 | 25 14 398 | 24 14 399 | 23 14 400 | 22 14 401 | 21 14 402 | 20 14 403 | 19 14 404 | 18 14 405 | 17 14 406 | 16 14 407 | 15 14 408 | 14 14 409 | 13 14 410 | 12 14 411 | 11 14 412 | 10 14 413 | 9 14 414 | 8 14 415 | 7 14 416 | 6 14 417 | 5 14 418 | 4 14 419 | 3 14 420 | 2 14 421 | 1 14 422 | 1 13 423 | 2 13 424 | 3 13 425 | 4 13 426 | 5 13 427 | 6 13 428 | 7 13 429 | 8 13 430 | 9 13 431 | 10 13 432 | 11 13 433 | 12 13 434 | 13 13 435 | 14 13 436 | 15 13 437 | 16 13 438 | 17 13 439 | 18 13 440 | 19 13 441 | 20 13 442 | 21 13 443 | 22 13 444 | 23 13 445 | 24 13 446 | 25 13 447 | 26 13 448 | 27 13 449 | 28 13 450 | 28 12 451 | 27 12 452 | 26 12 453 | 25 12 454 | 24 12 455 | 23 12 456 | 22 12 457 | 21 12 458 | 20 12 459 | 19 12 460 | 18 12 461 | 17 12 462 | 16 12 463 | 15 12 464 | 14 12 465 | 13 12 466 | 12 12 467 | 11 12 468 | 10 12 469 | 9 12 470 | 8 12 471 | 7 12 472 | 6 12 473 | 5 12 474 | 4 12 475 | 3 12 476 | 2 12 477 | 1 12 478 | 1 11 479 | 2 11 480 | 3 11 481 | 4 11 482 | 5 11 483 | 6 11 484 | 7 11 485 | 8 11 486 | 9 11 487 | 10 11 488 | 11 11 489 | 12 11 490 | 13 11 491 | 14 11 492 | 15 11 493 | 16 11 494 | 17 11 495 | 18 11 496 | 19 11 497 | 20 11 498 | 21 11 499 | 22 11 500 | 23 11 501 | 24 11 502 | 25 11 503 | 26 11 504 | 27 11 505 | 28 11 506 | 28 10 507 | 27 10 508 | 26 10 509 | 25 10 510 | 24 10 511 | 23 10 512 | 22 10 513 | 21 10 514 | 20 10 515 | 19 10 516 | 18 10 517 | 17 10 518 | 16 10 519 | 15 10 520 | 14 10 521 | 13 10 522 | 12 10 523 | 11 10 524 | 10 10 525 | 9 10 526 | 8 10 527 | 7 10 528 | 6 10 529 | 5 10 530 | 4 10 531 | 3 10 532 | 2 10 533 | 1 10 534 | 1 9 535 | 2 9 536 | 3 9 537 | 4 9 538 | 5 9 539 | 6 9 540 | 7 9 541 | 8 9 542 | 9 9 543 | 10 9 544 | 11 9 545 | 12 9 546 | 13 9 547 | 14 9 548 | 15 9 549 | 16 9 550 | 17 9 551 | 18 9 552 | 19 9 553 | 20 9 554 | 21 9 555 | 22 9 556 | 23 9 557 | 24 9 558 | 25 9 559 | 26 9 560 | 27 9 561 | 28 9 562 | 28 8 563 | 27 8 564 | 26 8 565 | 25 8 566 | 24 8 567 | 23 8 568 | 22 8 569 | 21 8 570 | 20 8 571 | 19 8 572 | 18 8 573 | 17 8 574 | 16 8 575 | 15 8 576 | 14 8 577 | 13 8 578 | 12 8 579 | 11 8 580 | 10 8 581 | 9 8 582 | 8 8 583 | 7 8 584 | 6 8 585 | 5 8 586 | 4 8 587 | 3 8 588 | 2 8 589 | 1 8 590 | 1 7 591 | 2 7 592 | 3 7 593 | 4 7 594 | 5 7 595 | 6 7 596 | 7 7 597 | 8 7 598 | 9 7 599 | 10 7 600 | 11 7 601 | 12 7 602 | 13 7 603 | 14 7 604 | 15 7 605 | 16 7 606 | 17 7 607 | 18 7 608 | 19 7 609 | 20 7 610 | 21 7 611 | 22 7 612 | 23 7 613 | 24 7 614 | 25 7 615 | 26 7 616 | 27 7 617 | 28 7 618 | 28 6 619 | 27 6 620 | 26 6 621 | 25 6 622 | 24 6 623 | 23 6 624 | 22 6 625 | 21 6 626 | 20 6 627 | 19 6 628 | 18 6 629 | 17 6 630 | 16 6 631 | 15 6 632 | 14 6 633 | 13 6 634 | 12 6 635 | 11 6 636 | 10 6 637 | 9 6 638 | 8 6 639 | 7 6 640 | 6 6 641 | 5 6 642 | 4 6 643 | 3 6 644 | 2 6 645 | 1 6 646 | 1 5 647 | 2 5 648 | 3 5 649 | 4 5 650 | 5 5 651 | 6 5 652 | 7 5 653 | 8 5 654 | 9 5 655 | 10 5 656 | 11 5 657 | 12 5 658 | 13 5 659 | 14 5 660 | 15 5 661 | 16 5 662 | 17 5 663 | 18 5 664 | 19 5 665 | 20 5 666 | 21 5 667 | 22 5 668 | 23 5 669 | 24 5 670 | 25 5 671 | 26 5 672 | 27 5 673 | 28 5 674 | 28 4 675 | 27 4 676 | 26 4 677 | 25 4 678 | 24 4 679 | 23 4 680 | 22 4 681 | 21 4 682 | 20 4 683 | 19 4 684 | 18 4 685 | 17 4 686 | 16 4 687 | 15 4 688 | 14 4 689 | 13 4 690 | 12 4 691 | 11 4 692 | 10 4 693 | 9 4 694 | 8 4 695 | 7 4 696 | 6 4 697 | 5 4 698 | 4 4 699 | 3 4 700 | 2 4 701 | 1 4 702 | 1 3 703 | 2 3 704 | 3 3 705 | 4 3 706 | 5 3 707 | 6 3 708 | 7 3 709 | 8 3 710 | 9 3 711 | 10 3 712 | 11 3 713 | 12 3 714 | 13 3 715 | 14 3 716 | 15 3 717 | 16 3 718 | 17 3 719 | 18 3 720 | 19 3 721 | 20 3 722 | 21 3 723 | 22 3 724 | 23 3 725 | 24 3 726 | 25 3 727 | 26 3 728 | 27 3 729 | 28 3 730 | 28 2 731 | 27 2 732 | 26 2 733 | 25 2 734 | 24 2 735 | 23 2 736 | 22 2 737 | 21 2 738 | 20 2 739 | 19 2 740 | 18 2 741 | 17 2 742 | 16 2 743 | 15 2 744 | 14 2 745 | 13 2 746 | 12 2 747 | 11 2 748 | 10 2 749 | 9 2 750 | 8 2 751 | 7 2 752 | 6 2 753 | 5 2 754 | 4 2 755 | 3 2 756 | 2 2 757 | 1 2 758 | 1 1 759 | 2 1 760 | 3 1 761 | 4 1 762 | 5 1 763 | 6 1 764 | 7 1 765 | 8 1 766 | 9 1 767 | 10 1 768 | 11 1 769 | 12 1 770 | 13 1 771 | 14 1 772 | 15 1 773 | 16 1 774 | 17 1 775 | 18 1 776 | 19 1 777 | 20 1 778 | 21 1 779 | 22 1 780 | 23 1 781 | 24 1 782 | 25 1 783 | 26 1 784 | 27 1 785 | 28 1 786 | -------------------------------------------------------------------------------- /AllPixMatrix/configs/28x28-apa102-panel/content-save-file-1.allpix: -------------------------------------------------------------------------------- 1 | 0,0,41,0.0,0.25,1.0,1.0 2 | 24,255,30.0,3,0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,255.0,255.0,255.0 3 | 6,255,30.0,0,0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,255.0,255.0,255.0 4 | 0,255,24.0,0,0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,255.0,255.0,255.0 5 | 29,255,24.0,0,0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,255.0,255.0,255.0 6 | 5,255,30.0,0,0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,255.0,255.0,255.0 7 | 0,255,24.0,0,0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,255.0,255.0,255.0 8 | NULL,0,0,0,0,null,0,0,0,0,1,24.0 9 | Test Bars,1,0,0,0,testbars.png,0,0,0,0,1,24.0 10 | Blocks,2,5,3,0,null,0,0,28,28,1,24.0,1,5,0.0,0,255,255,255,255 11 | Gen Stars,3,5,2,0,null,0,0,28,28,1,24.0,0,1,200,0,0.0,false,255,255,255,255,0,0,0,0 12 | Video 4,4,1,0,0,footage\22x22\bluewaves.mov,0,0,22,22,1,30.0 13 | Video-SnowBalls,5,1,0,0,footage\22x22\snowing.mov,0,0,22,22,1,30.0 14 | Video 6,6,1,0,0,footage\22x22\FractalNoise.mov,0,0,22,22,1,30.0 15 | Fractal Img,7,3,0,0,footage\fractal.png,0,0,300,300,1,1.0 16 | Gen Text,8,5,1,0,null,0,0,28,28,1,24.0,Your Text,16,0,0,0,255,255,255,255,1,0,0,0 17 | Laser Img,9,3,0,0,footage\22x22\jupiter-shrunk.png,0,0,22,21,1,1.0 18 | Gen Meta,10,5,4,0,null,0,0,28,28,1,24.0,0,20,20,0.1,255,255,255,255 19 | Gen Ripples,11,5,5,0,null,0,0,28,28,1,24.0,1,0,100,0,1,0,0,0,0,255,255,255,255 20 | Gen Spiral,12,5,6,0,null,0,0,28,28,1,24.0,2,0.5,1,3,255,255,255,255 21 | Gen Plasma,13,5,8,0,null,0,0,28,28,1,24.0,NONE 22 | Generated 14,14,5,12,0,null,0,0,28,28,1,24.0,0,0,1,2,4,0.0,0,255,0,255 23 | Generated 15,15,5,11,0,null,0,0,28,28,1,24.0,1,0,0,10,8,0.0,255,255,255,255 24 | Generated 16,16,5,6,1,null,0,0,28,28,1,24.0,3,0.5,2,3,255,255,255,255 25 | Generated 17,17,5,9,0,null,0,0,28,28,1,24.0,1,5,10,1,210,105,false,255,0,0,255,0,255,0,255 26 | Generated 18,18,5,5,1,null,0,0,28,28,1,24.0,0,0,21,0,1,0,0,0,0,0,0,255,255 27 | Generated 19,19,5,10,0,null,0,0,28,28,1,24.0,8,1,1,1,false,255,255,255,255 28 | Generated 20,20,5,4,1,null,0,0,28,28,1,24.0,1,20,20,0.1,0,0,255,255 29 | Generated 21,21,5,4,2,null,0,0,28,28,1,24.0,1,40,5,0.1,255,0,255,255 30 | Video 22,22,1,0,0,footage\22x22\alienhead.mov,0,0,22,22,1,30.0 31 | Video 23,23,1,0,0,footage\22x22\earth-spin-contrast.mov,0,0,68,24,1,30.0 32 | Video 24,24,1,0,0,footage\22x22\acid-magma.mov,0,0,22,22,1,30.0 33 | Video 25,25,1,0,0,footage\22x22\greenrain.mov,0,0,22,22,1,30.0 34 | Video 26,26,1,0,0,footage\22x22\starburst.mov,0,0,22,22,1,30.0 35 | Image 27,27,3,0,0,footage\laser-image.jpg,0,0,1024,768,1,1.0 36 | Generated 28,28,5,2,1,,0,0,28,28,1,24.0,2,4,100,0,0.0,true,255,0,0,255,0,0,0,0 37 | Generated 29,29,5,12,1,,0,0,28,28,1,24.0,3,0,1,2,7,0.0,71,255,255,255 38 | Generated 30,30,5,11,1,,0,0,28,28,1,24.0,2,0,0,8,8,0.0,0,255,0,255 39 | Generated 31,31,5,11,2,,0,0,28,28,1,24.0,2,0,0,16,100,0.0,255,255,255,255 40 | Image 32,32,3,0,0,footage\earth-flat-contrast.png,0,0,68,24,1,1.0 41 | Video 33,33,1,0,0,footage\22x22\pink-blue-cellmosaic.mov,0,0,22,22,1,30.0 42 | Video 34,34,1,0,0,footage\22x22\Rainbow2.mov,0,0,22,22,1,30.0 43 | Video 35,35,1,0,0,footage\22x22\testbars.mov,0,0,22,16,1,30.0 44 | Generated 36,36,5,7,0,,0,0,28,28,1,24.0,0,128,0,255 45 | Generated 37,37,5,3,1,,0,0,28,28,1,24.0,1,5,0.0,0,0,255,0,255 46 | Generated 38,38,5,3,2,,0,0,28,28,1,24.0,2,5,0.0,2,255,0,0,255 47 | Generated 39,39,5,3,3,,0,0,28,28,1,24.0,1,5,0.0,1,255,255,255,255 48 | Generated 40,40,5,12,2,,0,0,28,28,1,24.0,1,0,2,4,7,0.0,0,0,255,255 49 | Generated 41,41,5,12,3,,0,0,28,28,1,24.0,1,0,1,1,10,0.0,0,255,0,255 50 | -------------------------------------------------------------------------------- /AllPixMatrix/configs/28x28-apa102-panel/content-save-file-2.allpix: -------------------------------------------------------------------------------- 1 | 0,0,7,1.0,1.0,1.0,1.0 2 | 1,255,30.0,3,0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,255.0,255.0,255.0 3 | 0,255,30.0,0,0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,255.0,255.0,255.0 4 | 0,255,24.0,0,0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,255.0,255.0,255.0 5 | 6,255,24.0,0,0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,255.0,255.0,255.0 6 | 2,255,24.0,0,0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,255.0,255.0,255.0 7 | 0,255,24.0,0,0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,255.0,255.0,255.0 8 | NULL,0,0,0,0,,0,0,0,0,1,24.0 9 | Generated 1,1,5,10,0,,0,0,28,28,1,24.0,12,1,8,8,false,255,0,0,255 10 | Generated 2,2,5,4,0,,0,0,28,28,1,24.0,0,20,20,0.1,255,255,255,255 11 | Generated 3,3,5,5,0,,0,0,28,28,1,24.0,0,0,28,0,1,0,0,0,0,255,255,255,255 12 | Data File 4,4,0,0,0,recorded\recorded-28x28-14-15-25-date-13-12-2018.txt,0,0,0,0,1,24.0 13 | Generated 5,5,5,1,0,,0,0,28,28,1,24.0,TEST,23,0,8,0,255,255,255,255,1,0,0,0 14 | Data File 6,6,6,0,0,recorded\recorded-28x28-15-50-35-date-13-12-2018.txt,0,0,0,0,1,24.0 15 | Video 7,7,1,0,0,footage\22x22\acid-magma.mov,0,0,22,22,1,30.0 16 | -------------------------------------------------------------------------------- /AllPixMatrix/configs/28x28-apa102-panel/matrix-config.ini: -------------------------------------------------------------------------------- 1 | NAME 28x28 APA102 Rigid Panel 2 | PATCHFILE 28x28-patch.txt 3 | CONTENTFILE content-save-file-1.allpix 4 | FOOTAGEDIR LOCAL 5 | AUTOMATICFILE Auto-1.txt 6 | -------------------------------------------------------------------------------- /AllPixMatrix/configs/28x28-apa102-panel/output-config.ini: -------------------------------------------------------------------------------- 1 | OUTPUTTYPE 3 //0: none, 1: NLED serial, 2: glediator serial, 3: Artnet, 4: ?? 2 | OUTPUTPORT 192.168.0.100 3 | OUTPUTBAUD 1000000 4 | OUTPUTFPS 30 5 | COLORORDER 0 //0: RGB, 1: BRG, 2: GBR, 3: RBG, 4: BGR, 5: GRB 6 | AURORACMD true 7 | EXTERNALDATA true 8 | EXTERNALPORT 2 9 | EXTERNALBAUD 500000 -------------------------------------------------------------------------------- /AllPixMatrix/configs/32x32-test-panel/32x32-1024pix-test-patch.txt: -------------------------------------------------------------------------------- 1 | 1024 22 32 1026 965 2 | 32 32 3 | 31 32 4 | 30 32 5 | 29 32 6 | 28 32 7 | 27 32 8 | 26 32 9 | 25 32 10 | 24 32 11 | 23 32 12 | 22 32 13 | 21 32 14 | 20 32 15 | 19 32 16 | 18 32 17 | 17 32 18 | 16 32 19 | 15 32 20 | 14 32 21 | 13 32 22 | 12 32 23 | 11 32 24 | 10 32 25 | 9 32 26 | 8 32 27 | 7 32 28 | 6 32 29 | 5 32 30 | 4 32 31 | 3 32 32 | 2 32 33 | 1 32 34 | 1 31 35 | 2 31 36 | 3 31 37 | 4 31 38 | 5 31 39 | 6 31 40 | 7 31 41 | 8 31 42 | 9 31 43 | 10 31 44 | 11 31 45 | 12 31 46 | 13 31 47 | 14 31 48 | 15 31 49 | 16 31 50 | 17 31 51 | 18 31 52 | 19 31 53 | 20 31 54 | 21 31 55 | 22 31 56 | 23 31 57 | 24 31 58 | 25 31 59 | 26 31 60 | 27 31 61 | 28 31 62 | 29 31 63 | 30 31 64 | 31 31 65 | 32 31 66 | 32 30 67 | 31 30 68 | 30 30 69 | 29 30 70 | 28 30 71 | 27 30 72 | 26 30 73 | 25 30 74 | 24 30 75 | 23 30 76 | 22 30 77 | 21 30 78 | 20 30 79 | 19 30 80 | 18 30 81 | 17 30 82 | 16 30 83 | 15 30 84 | 14 30 85 | 13 30 86 | 12 30 87 | 11 30 88 | 10 30 89 | 9 30 90 | 8 30 91 | 7 30 92 | 6 30 93 | 5 30 94 | 4 30 95 | 3 30 96 | 2 30 97 | 1 30 98 | 1 29 99 | 2 29 100 | 3 29 101 | 4 29 102 | 5 29 103 | 6 29 104 | 7 29 105 | 8 29 106 | 9 29 107 | 10 29 108 | 11 29 109 | 12 29 110 | 13 29 111 | 14 29 112 | 15 29 113 | 16 29 114 | 17 29 115 | 18 29 116 | 19 29 117 | 20 29 118 | 21 29 119 | 22 29 120 | 23 29 121 | 24 29 122 | 25 29 123 | 26 29 124 | 27 29 125 | 28 29 126 | 29 29 127 | 30 29 128 | 31 29 129 | 32 29 130 | 32 28 131 | 31 28 132 | 30 28 133 | 29 28 134 | 28 28 135 | 27 28 136 | 26 28 137 | 25 28 138 | 24 28 139 | 23 28 140 | 22 28 141 | 21 28 142 | 20 28 143 | 19 28 144 | 18 28 145 | 17 28 146 | 16 28 147 | 15 28 148 | 14 28 149 | 13 28 150 | 12 28 151 | 11 28 152 | 10 28 153 | 9 28 154 | 8 28 155 | 7 28 156 | 6 28 157 | 5 28 158 | 4 28 159 | 3 28 160 | 2 28 161 | 1 28 162 | 1 27 163 | 2 27 164 | 3 27 165 | 4 27 166 | 5 27 167 | 6 27 168 | 7 27 169 | 8 27 170 | 9 27 171 | 10 27 172 | 11 27 173 | 12 27 174 | 13 27 175 | 14 27 176 | 15 27 177 | 16 27 178 | 17 27 179 | 18 27 180 | 19 27 181 | 20 27 182 | 21 27 183 | 22 27 184 | 23 27 185 | 24 27 186 | 25 27 187 | 26 27 188 | 27 27 189 | 28 27 190 | 29 27 191 | 30 27 192 | 31 27 193 | 32 27 194 | 32 26 195 | 31 26 196 | 30 26 197 | 29 26 198 | 28 26 199 | 27 26 200 | 26 26 201 | 25 26 202 | 24 26 203 | 23 26 204 | 22 26 205 | 21 26 206 | 20 26 207 | 19 26 208 | 18 26 209 | 17 26 210 | 16 26 211 | 15 26 212 | 14 26 213 | 13 26 214 | 12 26 215 | 11 26 216 | 10 26 217 | 9 26 218 | 8 26 219 | 7 26 220 | 6 26 221 | 5 26 222 | 4 26 223 | 3 26 224 | 2 26 225 | 1 26 226 | 1 25 227 | 2 25 228 | 3 25 229 | 4 25 230 | 5 25 231 | 6 25 232 | 7 25 233 | 8 25 234 | 9 25 235 | 10 25 236 | 11 25 237 | 12 25 238 | 13 25 239 | 14 25 240 | 15 25 241 | 16 25 242 | 17 25 243 | 18 25 244 | 19 25 245 | 20 25 246 | 21 25 247 | 22 25 248 | 23 25 249 | 24 25 250 | 25 25 251 | 26 25 252 | 27 25 253 | 28 25 254 | 29 25 255 | 30 25 256 | 31 25 257 | 32 25 258 | 32 24 259 | 31 24 260 | 30 24 261 | 29 24 262 | 28 24 263 | 27 24 264 | 26 24 265 | 25 24 266 | 24 24 267 | 23 24 268 | 22 24 269 | 21 24 270 | 20 24 271 | 19 24 272 | 18 24 273 | 17 24 274 | 16 24 275 | 15 24 276 | 14 24 277 | 13 24 278 | 12 24 279 | 11 24 280 | 10 24 281 | 9 24 282 | 8 24 283 | 7 24 284 | 6 24 285 | 5 24 286 | 4 24 287 | 3 24 288 | 2 24 289 | 1 24 290 | 1 23 291 | 2 23 292 | 3 23 293 | 4 23 294 | 5 23 295 | 6 23 296 | 7 23 297 | 8 23 298 | 9 23 299 | 10 23 300 | 11 23 301 | 12 23 302 | 13 23 303 | 14 23 304 | 15 23 305 | 16 23 306 | 17 23 307 | 18 23 308 | 19 23 309 | 20 23 310 | 21 23 311 | 22 23 312 | 23 23 313 | 24 23 314 | 25 23 315 | 26 23 316 | 27 23 317 | 28 23 318 | 29 23 319 | 30 23 320 | 31 23 321 | 32 23 322 | 32 22 323 | 31 22 324 | 30 22 325 | 29 22 326 | 28 22 327 | 27 22 328 | 26 22 329 | 25 22 330 | 24 22 331 | 23 22 332 | 22 22 333 | 21 22 334 | 20 22 335 | 19 22 336 | 18 22 337 | 17 22 338 | 16 22 339 | 15 22 340 | 14 22 341 | 13 22 342 | 12 22 343 | 11 22 344 | 10 22 345 | 9 22 346 | 8 22 347 | 7 22 348 | 6 22 349 | 5 22 350 | 4 22 351 | 3 22 352 | 2 22 353 | 1 22 354 | 1 21 355 | 2 21 356 | 3 21 357 | 4 21 358 | 5 21 359 | 6 21 360 | 7 21 361 | 8 21 362 | 9 21 363 | 10 21 364 | 11 21 365 | 12 21 366 | 13 21 367 | 14 21 368 | 15 21 369 | 16 21 370 | 17 21 371 | 18 21 372 | 19 21 373 | 20 21 374 | 21 21 375 | 22 21 376 | 23 21 377 | 24 21 378 | 25 21 379 | 26 21 380 | 27 21 381 | 28 21 382 | 29 21 383 | 30 21 384 | 31 21 385 | 32 21 386 | 32 20 387 | 31 20 388 | 30 20 389 | 29 20 390 | 28 20 391 | 27 20 392 | 26 20 393 | 25 20 394 | 24 20 395 | 23 20 396 | 22 20 397 | 21 20 398 | 20 20 399 | 19 20 400 | 18 20 401 | 17 20 402 | 16 20 403 | 15 20 404 | 14 20 405 | 13 20 406 | 12 20 407 | 11 20 408 | 10 20 409 | 9 20 410 | 8 20 411 | 7 20 412 | 6 20 413 | 5 20 414 | 4 20 415 | 3 20 416 | 2 20 417 | 1 20 418 | 1 19 419 | 2 19 420 | 3 19 421 | 4 19 422 | 5 19 423 | 6 19 424 | 7 19 425 | 8 19 426 | 9 19 427 | 10 19 428 | 11 19 429 | 12 19 430 | 13 19 431 | 14 19 432 | 15 19 433 | 16 19 434 | 17 19 435 | 18 19 436 | 19 19 437 | 20 19 438 | 21 19 439 | 22 19 440 | 23 19 441 | 24 19 442 | 25 19 443 | 26 19 444 | 27 19 445 | 28 19 446 | 29 19 447 | 30 19 448 | 31 19 449 | 32 19 450 | 32 18 451 | 31 18 452 | 30 18 453 | 29 18 454 | 28 18 455 | 27 18 456 | 26 18 457 | 25 18 458 | 24 18 459 | 23 18 460 | 22 18 461 | 21 18 462 | 20 18 463 | 19 18 464 | 18 18 465 | 17 18 466 | 16 18 467 | 15 18 468 | 14 18 469 | 13 18 470 | 12 18 471 | 11 18 472 | 10 18 473 | 9 18 474 | 8 18 475 | 7 18 476 | 6 18 477 | 5 18 478 | 4 18 479 | 3 18 480 | 2 18 481 | 1 18 482 | 1 17 483 | 2 17 484 | 3 17 485 | 4 17 486 | 5 17 487 | 6 17 488 | 7 17 489 | 8 17 490 | 9 17 491 | 10 17 492 | 11 17 493 | 12 17 494 | 13 17 495 | 14 17 496 | 15 17 497 | 16 17 498 | 17 17 499 | 18 17 500 | 19 17 501 | 20 17 502 | 21 17 503 | 22 17 504 | 23 17 505 | 24 17 506 | 25 17 507 | 26 17 508 | 27 17 509 | 28 17 510 | 29 17 511 | 30 17 512 | 31 17 513 | 32 17 514 | 32 16 515 | 31 16 516 | 30 16 517 | 29 16 518 | 28 16 519 | 27 16 520 | 26 16 521 | 25 16 522 | 24 16 523 | 23 16 524 | 22 16 525 | 21 16 526 | 20 16 527 | 19 16 528 | 18 16 529 | 17 16 530 | 16 16 531 | 15 16 532 | 14 16 533 | 13 16 534 | 12 16 535 | 11 16 536 | 10 16 537 | 9 16 538 | 8 16 539 | 7 16 540 | 6 16 541 | 5 16 542 | 4 16 543 | 3 16 544 | 2 16 545 | 1 16 546 | 1 15 547 | 2 15 548 | 3 15 549 | 4 15 550 | 5 15 551 | 6 15 552 | 7 15 553 | 8 15 554 | 9 15 555 | 10 15 556 | 11 15 557 | 12 15 558 | 13 15 559 | 14 15 560 | 15 15 561 | 16 15 562 | 17 15 563 | 18 15 564 | 19 15 565 | 20 15 566 | 21 15 567 | 22 15 568 | 23 15 569 | 24 15 570 | 25 15 571 | 26 15 572 | 27 15 573 | 28 15 574 | 29 15 575 | 30 15 576 | 31 15 577 | 32 15 578 | 32 14 579 | 31 14 580 | 30 14 581 | 29 14 582 | 28 14 583 | 27 14 584 | 26 14 585 | 25 14 586 | 24 14 587 | 23 14 588 | 22 14 589 | 21 14 590 | 20 14 591 | 19 14 592 | 18 14 593 | 17 14 594 | 16 14 595 | 15 14 596 | 14 14 597 | 13 14 598 | 12 14 599 | 11 14 600 | 10 14 601 | 9 14 602 | 8 14 603 | 7 14 604 | 6 14 605 | 5 14 606 | 4 14 607 | 3 14 608 | 2 14 609 | 1 14 610 | 1 13 611 | 2 13 612 | 3 13 613 | 4 13 614 | 5 13 615 | 6 13 616 | 7 13 617 | 8 13 618 | 9 13 619 | 10 13 620 | 11 13 621 | 12 13 622 | 13 13 623 | 14 13 624 | 15 13 625 | 16 13 626 | 17 13 627 | 18 13 628 | 19 13 629 | 20 13 630 | 21 13 631 | 22 13 632 | 23 13 633 | 24 13 634 | 25 13 635 | 26 13 636 | 27 13 637 | 28 13 638 | 29 13 639 | 30 13 640 | 31 13 641 | 32 13 642 | 32 12 643 | 31 12 644 | 30 12 645 | 29 12 646 | 28 12 647 | 27 12 648 | 26 12 649 | 25 12 650 | 24 12 651 | 23 12 652 | 22 12 653 | 21 12 654 | 20 12 655 | 19 12 656 | 18 12 657 | 17 12 658 | 16 12 659 | 15 12 660 | 14 12 661 | 13 12 662 | 12 12 663 | 11 12 664 | 10 12 665 | 9 12 666 | 8 12 667 | 7 12 668 | 6 12 669 | 5 12 670 | 4 12 671 | 3 12 672 | 2 12 673 | 1 12 674 | 1 11 675 | 2 11 676 | 3 11 677 | 4 11 678 | 5 11 679 | 6 11 680 | 7 11 681 | 8 11 682 | 9 11 683 | 10 11 684 | 11 11 685 | 12 11 686 | 13 11 687 | 14 11 688 | 15 11 689 | 16 11 690 | 17 11 691 | 18 11 692 | 19 11 693 | 20 11 694 | 21 11 695 | 22 11 696 | 23 11 697 | 24 11 698 | 25 11 699 | 26 11 700 | 27 11 701 | 28 11 702 | 29 11 703 | 30 11 704 | 31 11 705 | 32 11 706 | 32 10 707 | 31 10 708 | 30 10 709 | 29 10 710 | 28 10 711 | 27 10 712 | 26 10 713 | 25 10 714 | 24 10 715 | 23 10 716 | 22 10 717 | 21 10 718 | 20 10 719 | 19 10 720 | 18 10 721 | 17 10 722 | 16 10 723 | 15 10 724 | 14 10 725 | 13 10 726 | 12 10 727 | 11 10 728 | 10 10 729 | 9 10 730 | 8 10 731 | 7 10 732 | 6 10 733 | 5 10 734 | 4 10 735 | 3 10 736 | 2 10 737 | 1 10 738 | 1 9 739 | 2 9 740 | 3 9 741 | 4 9 742 | 5 9 743 | 6 9 744 | 7 9 745 | 8 9 746 | 9 9 747 | 10 9 748 | 11 9 749 | 12 9 750 | 13 9 751 | 14 9 752 | 15 9 753 | 16 9 754 | 17 9 755 | 18 9 756 | 19 9 757 | 20 9 758 | 21 9 759 | 22 9 760 | 23 9 761 | 24 9 762 | 25 9 763 | 26 9 764 | 27 9 765 | 28 9 766 | 29 9 767 | 30 9 768 | 31 9 769 | 32 9 770 | 32 8 771 | 31 8 772 | 30 8 773 | 29 8 774 | 28 8 775 | 27 8 776 | 26 8 777 | 25 8 778 | 24 8 779 | 23 8 780 | 22 8 781 | 21 8 782 | 20 8 783 | 19 8 784 | 18 8 785 | 17 8 786 | 16 8 787 | 15 8 788 | 14 8 789 | 13 8 790 | 12 8 791 | 11 8 792 | 10 8 793 | 9 8 794 | 8 8 795 | 7 8 796 | 6 8 797 | 5 8 798 | 4 8 799 | 3 8 800 | 2 8 801 | 1 8 802 | 1 7 803 | 2 7 804 | 3 7 805 | 4 7 806 | 5 7 807 | 6 7 808 | 7 7 809 | 8 7 810 | 9 7 811 | 10 7 812 | 11 7 813 | 12 7 814 | 13 7 815 | 14 7 816 | 15 7 817 | 16 7 818 | 17 7 819 | 18 7 820 | 19 7 821 | 20 7 822 | 21 7 823 | 22 7 824 | 23 7 825 | 24 7 826 | 25 7 827 | 26 7 828 | 27 7 829 | 28 7 830 | 29 7 831 | 30 7 832 | 31 7 833 | 32 7 834 | 32 6 835 | 31 6 836 | 30 6 837 | 29 6 838 | 28 6 839 | 27 6 840 | 26 6 841 | 25 6 842 | 24 6 843 | 23 6 844 | 22 6 845 | 21 6 846 | 20 6 847 | 19 6 848 | 18 6 849 | 17 6 850 | 16 6 851 | 15 6 852 | 14 6 853 | 13 6 854 | 12 6 855 | 11 6 856 | 10 6 857 | 9 6 858 | 8 6 859 | 7 6 860 | 6 6 861 | 5 6 862 | 4 6 863 | 3 6 864 | 2 6 865 | 1 6 866 | 1 5 867 | 2 5 868 | 3 5 869 | 4 5 870 | 5 5 871 | 6 5 872 | 7 5 873 | 8 5 874 | 9 5 875 | 10 5 876 | 11 5 877 | 12 5 878 | 13 5 879 | 14 5 880 | 15 5 881 | 16 5 882 | 17 5 883 | 18 5 884 | 19 5 885 | 20 5 886 | 21 5 887 | 22 5 888 | 23 5 889 | 24 5 890 | 25 5 891 | 26 5 892 | 27 5 893 | 28 5 894 | 29 5 895 | 30 5 896 | 31 5 897 | 32 5 898 | 32 4 899 | 31 4 900 | 30 4 901 | 29 4 902 | 28 4 903 | 27 4 904 | 26 4 905 | 25 4 906 | 24 4 907 | 23 4 908 | 22 4 909 | 21 4 910 | 20 4 911 | 19 4 912 | 18 4 913 | 17 4 914 | 16 4 915 | 15 4 916 | 14 4 917 | 13 4 918 | 12 4 919 | 11 4 920 | 10 4 921 | 9 4 922 | 8 4 923 | 7 4 924 | 6 4 925 | 5 4 926 | 4 4 927 | 3 4 928 | 2 4 929 | 1 4 930 | 1 3 931 | 2 3 932 | 3 3 933 | 4 3 934 | 5 3 935 | 6 3 936 | 7 3 937 | 8 3 938 | 9 3 939 | 10 3 940 | 11 3 941 | 12 3 942 | 13 3 943 | 14 3 944 | 15 3 945 | 16 3 946 | 17 3 947 | 18 3 948 | 19 3 949 | 20 3 950 | 21 3 951 | 22 3 952 | 23 3 953 | 24 3 954 | 25 3 955 | 26 3 956 | 27 3 957 | 28 3 958 | 29 3 959 | 30 3 960 | 31 3 961 | 32 3 962 | 32 2 963 | 31 2 964 | 30 2 965 | 29 2 966 | 28 2 967 | 27 2 968 | 26 2 969 | 25 2 970 | 24 2 971 | 23 2 972 | 22 2 973 | 21 2 974 | 20 2 975 | 19 2 976 | 18 2 977 | 17 2 978 | 16 2 979 | 15 2 980 | 14 2 981 | 13 2 982 | 12 2 983 | 11 2 984 | 10 2 985 | 9 2 986 | 8 2 987 | 7 2 988 | 6 2 989 | 5 2 990 | 4 2 991 | 3 2 992 | 2 2 993 | 1 2 994 | 1 1 995 | 2 1 996 | 3 1 997 | 4 1 998 | 5 1 999 | 6 1 1000 | 7 1 1001 | 8 1 1002 | 9 1 1003 | 10 1 1004 | 11 1 1005 | 12 1 1006 | 13 1 1007 | 14 1 1008 | 15 1 1009 | 16 1 1010 | 17 1 1011 | 18 1 1012 | 19 1 1013 | 20 1 1014 | 21 1 1015 | 22 1 1016 | 23 1 1017 | 24 1 1018 | 25 1 1019 | 26 1 1020 | 27 1 1021 | 28 1 1022 | 29 1 1023 | 30 1 1024 | 31 1 1025 | 32 1 1026 | -------------------------------------------------------------------------------- /AllPixMatrix/configs/32x32-test-panel/content-save-file-1.txt: -------------------------------------------------------------------------------- 1 | 0,0,41,0.0,0.25,1.0,1.0 2 | 4,255,30.0,2,0,0.0,0,0.0,0.0,0.0,255.0,0.0,0.0,0.0,255.0,255.0,255.0 3 | 6,255,30.0,0,0,0.0,0,0.0,0.0,0.0,255.0,0.0,0.0,0.0,255.0,255.0,255.0 4 | 0,255,24.0,0,0,0.0,0,0.0,0.0,0.0,255.0,0.0,0.0,0.0,255.0,255.0,255.0 5 | 29,255,24.0,0,0,0.0,0,0.0,0.0,0.0,255.0,0.0,0.0,0.0,255.0,255.0,255.0 6 | 0,0,30.0,0,0,0.0,0,0.0,0.0,0.0,255.0,0.0,0.0,0.0,255.0,255.0,255.0 7 | 0,255,24.0,0,0,0.0,0,0.0,0.0,0.0,255.0,0.0,0.0,0.0,255.0,255.0,255.0 8 | NULL,0,0,0,0,null,0,0,0,0,1,24.0 9 | Test Bars,1,0,0,0,testbars.png,0,0,0,0,1,24.0 10 | Blocks,2,5,3,0,null,0,0,21,7,1,24.0,1,5,0.0,0,255,255,255,255 11 | Gen Stars,3,5,2,0,null,0,0,21,7,1,24.0,0,1,200,0,0.0,false,255,255,255,255,0,0,0,0 12 | Video-Magma,4,1,0,0,footage\22x22\acid-magma-hicontrast.mov,0,0,22,22,1,30.0 13 | Video-SnowBalls,5,1,0,0,footage\22x22\snowing.mov,0,0,22,22,1,30.0 14 | Video 6,6,1,0,0,footage\22x22\FractalNoise.mov,0,0,22,22,1,30.0 15 | Fractal Img,7,3,0,0,footage\fractal.png,0,0,300,300,1,1.0 16 | Gen Text,8,5,1,0,null,0,0,21,7,1,24.0,Your Text,16,0,0,0,255,255,255,255,1,0,0,0 17 | Laser Img,9,3,0,0,footage\22x22\jupiter-shrunk.png,0,0,22,21,1,1.0 18 | Gen Meta,10,5,4,0,null,0,0,21,7,1,24.0,0,20,20,0.1,255,255,255,255 19 | Gen Ripples,11,5,5,0,null,0,0,21,7,1,24.0,1,0,100,0,1,0,0,0,0,255,255,255,255 20 | Gen Spiral,12,5,6,0,null,0,0,21,7,1,24.0,2,0.5,1,3,255,255,255,255 21 | Gen Plasma,13,5,8,0,null,0,0,21,7,1,24.0,NONE 22 | Generated 14,14,5,12,0,null,0,0,21,7,1,24.0,0,0,1,2,4,0.0,0,255,0,255 23 | Generated 15,15,5,11,0,null,0,0,21,7,1,24.0,1,0,0,10,8,0.0,255,255,255,255 24 | Generated 16,16,5,6,1,null,0,0,21,7,1,24.0,3,0.5,2,3,255,255,255,255 25 | Generated 17,17,5,9,0,null,0,0,21,7,1,24.0,1,5,10,1,210,105,false,255,0,0,255,0,255,0,255 26 | Generated 18,18,5,5,1,null,0,0,21,7,1,24.0,0,0,21,0,1,0,0,0,0,0,0,255,255 27 | Generated 19,19,5,10,0,null,0,0,21,7,1,24.0,8,1,1,1,false,255,255,255,255 28 | Generated 20,20,5,4,1,null,0,0,21,7,1,24.0,1,20,20,0.1,0,0,255,255 29 | Generated 21,21,5,4,2,null,0,0,21,7,1,24.0,1,40,5,0.1,255,0,255,255 30 | Video 22,22,1,0,0,footage\22x22\alienhead.mov,0,0,22,22,1,30.0 31 | Video 23,23,1,0,0,footage\22x22\earth-spin-contrast.mov,0,0,68,24,1,30.0 32 | Video 24,24,1,0,0,footage\22x22\bluewaves.mov,0,0,22,22,1,30.0 33 | Video 25,25,1,0,0,footage\22x22\greenrain.mov,0,0,22,22,1,30.0 34 | Video 26,26,1,0,0,footage\22x22\starburst.mov,0,0,22,22,1,30.0 35 | Image 27,27,3,0,0,footage\laser-image.jpg,0,0,1024,768,1,1.0 36 | Generated 28,28,5,2,1,,0,0,21,7,1,24.0,2,4,100,0,0.0,true,255,0,0,255,0,0,0,0 37 | Generated 29,29,5,12,1,,0,0,21,7,1,24.0,3,0,1,2,7,0.0,71,255,255,255 38 | Generated 30,30,5,11,1,,0,0,21,7,1,24.0,2,0,0,8,8,0.0,0,255,0,255 39 | Generated 31,31,5,11,2,,0,0,21,7,1,24.0,2,0,0,16,100,0.0,255,255,255,255 40 | Image 32,32,3,0,0,footage\earth-flat-contrast.png,0,0,68,24,1,1.0 41 | Video 33,33,1,0,0,footage\22x22\pink-blue-cellmosaic.mov,0,0,22,22,1,30.0 42 | Video 34,34,1,0,0,footage\22x22\Rainbow2.mov,0,0,22,22,1,30.0 43 | Video 35,35,1,0,0,footage\22x22\testbars.mov,0,0,22,16,1,30.0 44 | Generated 36,36,5,7,0,,0,0,21,7,1,24.0,0,128,0,255 45 | Generated 37,37,5,3,1,,0,0,21,7,1,24.0,1,5,0.0,0,0,255,0,255 46 | Generated 38,38,5,3,2,,0,0,21,7,1,24.0,2,5,0.0,2,255,0,0,255 47 | Generated 39,39,5,3,3,,0,0,21,7,1,24.0,1,5,0.0,1,255,255,255,255 48 | Generated 40,40,5,12,2,,0,0,21,7,1,24.0,1,0,2,4,7,0.0,0,0,255,255 49 | Generated 41,41,5,12,3,,0,0,21,7,1,24.0,1,0,1,1,10,0.0,0,255,0,255 50 | -------------------------------------------------------------------------------- /AllPixMatrix/configs/32x32-test-panel/matrix-config.ini: -------------------------------------------------------------------------------- 1 | NAME 32x32 Test Panel 2 | PATCHFILE 32x32-1024pix-test-patch.txt 3 | CONTENTFILE content-save-file-1.txt 4 | FOOTAGEDIR LOCAL 5 | AUTOMATICFILE Auto-1.txt 6 | -------------------------------------------------------------------------------- /AllPixMatrix/configs/32x32-test-panel/output-config.ini: -------------------------------------------------------------------------------- 1 | OUTPUTTYPE 1 //0: none, 1: NLED serial, 2: glediator serial, 3: TCP, 4: UDP, ?? 2 | OUTPUTPORT 1 3 | OUTPUTBAUD 1000000 4 | OUTPUTFPS 24 5 | COLORORDER 0 //0: RGB, 1: BRG, 2: GBR, 3: RBG, 4: BGR, 5: GRB 6 | AURORACMD true 7 | EXTERNALDATA false 8 | EXTERNALPORT 2 9 | EXTERNALBAUD 500000 -------------------------------------------------------------------------------- /AllPixMatrix/configs/8x32-test/8x32-panel-guessed.txt: -------------------------------------------------------------------------------- 1 | 256 22 32 1031 747 2 | 1 8 3 | 1 7 4 | 1 6 5 | 1 5 6 | 1 4 7 | 1 3 8 | 1 2 9 | 1 1 10 | 2 1 11 | 2 2 12 | 2 3 13 | 2 4 14 | 2 5 15 | 2 6 16 | 2 7 17 | 2 8 18 | 3 8 19 | 3 7 20 | 3 6 21 | 3 5 22 | 3 4 23 | 3 3 24 | 3 2 25 | 3 1 26 | 4 1 27 | 4 2 28 | 4 3 29 | 4 4 30 | 4 5 31 | 4 6 32 | 4 7 33 | 4 8 34 | 5 8 35 | 5 7 36 | 5 6 37 | 5 5 38 | 5 4 39 | 5 3 40 | 5 2 41 | 5 1 42 | 6 1 43 | 6 2 44 | 6 3 45 | 6 4 46 | 6 5 47 | 6 6 48 | 6 7 49 | 6 8 50 | 7 8 51 | 7 7 52 | 7 6 53 | 7 5 54 | 7 4 55 | 7 3 56 | 7 2 57 | 7 1 58 | 8 1 59 | 8 2 60 | 8 3 61 | 8 4 62 | 8 5 63 | 8 6 64 | 8 7 65 | 8 8 66 | 9 8 67 | 9 7 68 | 9 6 69 | 9 5 70 | 9 4 71 | 9 3 72 | 9 2 73 | 9 1 74 | 10 1 75 | 10 2 76 | 10 3 77 | 10 4 78 | 10 5 79 | 10 6 80 | 10 7 81 | 10 8 82 | 11 8 83 | 11 7 84 | 11 6 85 | 11 5 86 | 11 4 87 | 11 3 88 | 11 2 89 | 11 1 90 | 12 1 91 | 12 2 92 | 12 3 93 | 12 4 94 | 12 5 95 | 12 6 96 | 12 7 97 | 12 8 98 | 13 8 99 | 13 7 100 | 13 6 101 | 13 5 102 | 13 4 103 | 13 3 104 | 13 2 105 | 13 1 106 | 14 1 107 | 14 2 108 | 14 3 109 | 14 4 110 | 14 5 111 | 14 6 112 | 14 7 113 | 14 8 114 | 15 8 115 | 15 7 116 | 15 6 117 | 15 5 118 | 15 4 119 | 15 3 120 | 15 2 121 | 15 1 122 | 16 1 123 | 16 2 124 | 16 3 125 | 16 4 126 | 16 5 127 | 16 6 128 | 16 7 129 | 16 8 130 | 17 8 131 | 17 7 132 | 17 6 133 | 17 5 134 | 17 4 135 | 17 3 136 | 17 2 137 | 17 1 138 | 18 1 139 | 18 2 140 | 18 3 141 | 18 4 142 | 18 5 143 | 18 6 144 | 18 7 145 | 18 8 146 | 19 8 147 | 19 7 148 | 19 6 149 | 19 5 150 | 19 4 151 | 19 3 152 | 19 2 153 | 19 1 154 | 20 1 155 | 20 2 156 | 20 3 157 | 20 4 158 | 20 5 159 | 20 6 160 | 20 7 161 | 20 8 162 | 21 8 163 | 21 7 164 | 21 6 165 | 21 5 166 | 21 4 167 | 21 3 168 | 21 2 169 | 21 1 170 | 22 1 171 | 22 2 172 | 22 3 173 | 22 4 174 | 22 5 175 | 22 6 176 | 22 7 177 | 22 8 178 | 23 8 179 | 23 7 180 | 23 6 181 | 23 5 182 | 23 4 183 | 23 3 184 | 23 2 185 | 23 1 186 | 24 1 187 | 24 2 188 | 24 3 189 | 24 4 190 | 24 5 191 | 24 6 192 | 24 7 193 | 24 8 194 | 25 8 195 | 25 7 196 | 25 6 197 | 25 5 198 | 25 4 199 | 25 3 200 | 25 2 201 | 25 1 202 | 26 1 203 | 26 2 204 | 26 3 205 | 26 4 206 | 26 5 207 | 26 6 208 | 26 7 209 | 26 8 210 | 27 8 211 | 27 7 212 | 27 6 213 | 27 5 214 | 27 4 215 | 27 3 216 | 27 2 217 | 27 1 218 | 28 1 219 | 28 2 220 | 28 3 221 | 28 4 222 | 28 5 223 | 28 6 224 | 28 7 225 | 28 8 226 | 29 8 227 | 29 7 228 | 29 6 229 | 29 5 230 | 29 4 231 | 29 3 232 | 29 2 233 | 29 1 234 | 30 1 235 | 30 2 236 | 30 3 237 | 30 4 238 | 30 5 239 | 30 6 240 | 30 7 241 | 30 8 242 | 31 8 243 | 31 7 244 | 31 6 245 | 31 5 246 | 31 4 247 | 31 3 248 | 31 2 249 | 31 1 250 | 32 1 251 | 32 2 252 | 32 3 253 | 32 4 254 | 32 5 255 | 32 6 256 | 32 7 257 | 32 8 258 | -------------------------------------------------------------------------------- /AllPixMatrix/configs/8x32-test/content-save-file-1.txt: -------------------------------------------------------------------------------- 1 | 0,0,41,0.0,0.25,1.0,1.0 2 | 4,255,30.0,2,0,0.0,0,0.0,0.0,0.0,255.0,0.0,0.0,0.0,255.0,255.0,255.0 3 | 6,255,30.0,0,0,0.0,0,0.0,0.0,0.0,255.0,0.0,0.0,0.0,255.0,255.0,255.0 4 | 0,255,24.0,0,0,0.0,0,0.0,0.0,0.0,255.0,0.0,0.0,0.0,255.0,255.0,255.0 5 | 29,255,24.0,0,0,0.0,0,0.0,0.0,0.0,255.0,0.0,0.0,0.0,255.0,255.0,255.0 6 | 0,0,30.0,0,0,0.0,0,0.0,0.0,0.0,255.0,0.0,0.0,0.0,255.0,255.0,255.0 7 | 0,255,24.0,0,0,0.0,0,0.0,0.0,0.0,255.0,0.0,0.0,0.0,255.0,255.0,255.0 8 | NULL,0,0,0,0,null,0,0,0,0,1,24.0 9 | Test Bars,1,0,0,0,testbars.png,0,0,0,0,1,24.0 10 | Blocks,2,5,3,0,null,0,0,21,7,1,24.0,1,5,0.0,0,255,255,255,255 11 | Gen Stars,3,5,2,0,null,0,0,21,7,1,24.0,0,1,200,0,0.0,false,255,255,255,255,0,0,0,0 12 | Video-Magma,4,1,0,0,footage\22x22\acid-magma-hicontrast.mov,0,0,22,22,1,30.0 13 | Video-SnowBalls,5,1,0,0,footage\22x22\snowing.mov,0,0,22,22,1,30.0 14 | Video 6,6,1,0,0,footage\22x22\FractalNoise.mov,0,0,22,22,1,30.0 15 | Fractal Img,7,3,0,0,footage\fractal.png,0,0,300,300,1,1.0 16 | Gen Text,8,5,1,0,null,0,0,21,7,1,24.0,Your Text,16,0,0,0,255,255,255,255,1,0,0,0 17 | Laser Img,9,3,0,0,footage\22x22\jupiter-shrunk.png,0,0,22,21,1,1.0 18 | Gen Meta,10,5,4,0,null,0,0,21,7,1,24.0,0,20,20,0.1,255,255,255,255 19 | Gen Ripples,11,5,5,0,null,0,0,21,7,1,24.0,1,0,100,0,1,0,0,0,0,255,255,255,255 20 | Gen Spiral,12,5,6,0,null,0,0,21,7,1,24.0,2,0.5,1,3,255,255,255,255 21 | Gen Plasma,13,5,8,0,null,0,0,21,7,1,24.0,NONE 22 | Generated 14,14,5,12,0,null,0,0,21,7,1,24.0,0,0,1,2,4,0.0,0,255,0,255 23 | Generated 15,15,5,11,0,null,0,0,21,7,1,24.0,1,0,0,10,8,0.0,255,255,255,255 24 | Generated 16,16,5,6,1,null,0,0,21,7,1,24.0,3,0.5,2,3,255,255,255,255 25 | Generated 17,17,5,9,0,null,0,0,21,7,1,24.0,1,5,10,1,210,105,false,255,0,0,255,0,255,0,255 26 | Generated 18,18,5,5,1,null,0,0,21,7,1,24.0,0,0,21,0,1,0,0,0,0,0,0,255,255 27 | Generated 19,19,5,10,0,null,0,0,21,7,1,24.0,8,1,1,1,false,255,255,255,255 28 | Generated 20,20,5,4,1,null,0,0,21,7,1,24.0,1,20,20,0.1,0,0,255,255 29 | Generated 21,21,5,4,2,null,0,0,21,7,1,24.0,1,40,5,0.1,255,0,255,255 30 | Video 22,22,1,0,0,footage\22x22\alienhead.mov,0,0,22,22,1,30.0 31 | Video 23,23,1,0,0,footage\22x22\earth-spin-contrast.mov,0,0,68,24,1,30.0 32 | Video 24,24,1,0,0,footage\22x22\bluewaves.mov,0,0,22,22,1,30.0 33 | Video 25,25,1,0,0,footage\22x22\greenrain.mov,0,0,22,22,1,30.0 34 | Video 26,26,1,0,0,footage\22x22\starburst.mov,0,0,22,22,1,30.0 35 | Image 27,27,3,0,0,footage\laser-image.jpg,0,0,1024,768,1,1.0 36 | Generated 28,28,5,2,1,,0,0,21,7,1,24.0,2,4,100,0,0.0,true,255,0,0,255,0,0,0,0 37 | Generated 29,29,5,12,1,,0,0,21,7,1,24.0,3,0,1,2,7,0.0,71,255,255,255 38 | Generated 30,30,5,11,1,,0,0,21,7,1,24.0,2,0,0,8,8,0.0,0,255,0,255 39 | Generated 31,31,5,11,2,,0,0,21,7,1,24.0,2,0,0,16,100,0.0,255,255,255,255 40 | Image 32,32,3,0,0,footage\earth-flat-contrast.png,0,0,68,24,1,1.0 41 | Video 33,33,1,0,0,footage\22x22\pink-blue-cellmosaic.mov,0,0,22,22,1,30.0 42 | Video 34,34,1,0,0,footage\22x22\Rainbow2.mov,0,0,22,22,1,30.0 43 | Video 35,35,1,0,0,footage\22x22\testbars.mov,0,0,22,16,1,30.0 44 | Generated 36,36,5,7,0,,0,0,21,7,1,24.0,0,128,0,255 45 | Generated 37,37,5,3,1,,0,0,21,7,1,24.0,1,5,0.0,0,0,255,0,255 46 | Generated 38,38,5,3,2,,0,0,21,7,1,24.0,2,5,0.0,2,255,0,0,255 47 | Generated 39,39,5,3,3,,0,0,21,7,1,24.0,1,5,0.0,1,255,255,255,255 48 | Generated 40,40,5,12,2,,0,0,21,7,1,24.0,1,0,2,4,7,0.0,0,0,255,255 49 | Generated 41,41,5,12,3,,0,0,21,7,1,24.0,1,0,1,1,10,0.0,0,255,0,255 50 | -------------------------------------------------------------------------------- /AllPixMatrix/configs/8x32-test/matrix-config.ini: -------------------------------------------------------------------------------- 1 | NAME 8x32 Panel 2 | PATCHFILE 8x32-panel-guessed.txt 3 | CONTENTFILE content-save-file-1.txt 4 | FOOTAGEDIR LOCAL 5 | AUTOMATICFILE Auto-1.txt 6 | -------------------------------------------------------------------------------- /AllPixMatrix/configs/8x32-test/output-config.ini: -------------------------------------------------------------------------------- 1 | OUTPUTTYPE 1 //0: none, 1: NLED serial, 2: glediator serial, 3: TCP, 4: UDP, ?? 2 | OUTPUTPORT 1 3 | OUTPUTBAUD 1000000 4 | OUTPUTFPS 24 5 | COLORORDER 0 //0: RGB, 1: BRG, 2: GBR, 3: RBG, 4: BGR, 5: GRB 6 | AURORACMD true 7 | EXTERNALDATA false 8 | EXTERNALPORT 2 9 | EXTERNALBAUD 500000 -------------------------------------------------------------------------------- /AllPixMatrix/configs/LED_mask/LED_mask_patch.txt: -------------------------------------------------------------------------------- 1 | 156 43 14 970 864 2 | 14 14 3 | 13 14 4 | 12 14 5 | 11 14 6 | 10 14 7 | 9 14 8 | 8 14 9 | 7 14 10 | 6 14 11 | 5 14 12 | 4 14 13 | 3 14 14 | 3 13 15 | 4 13 16 | 5 13 17 | 6 13 18 | 7 13 19 | 8 13 20 | 9 13 21 | 10 13 22 | 11 13 23 | 12 13 24 | 13 13 25 | 14 13 26 | 14 12 27 | 13 12 28 | 12 12 29 | 11 12 30 | 10 12 31 | 9 12 32 | 8 12 33 | 7 12 34 | 6 12 35 | 5 12 36 | 4 12 37 | 3 12 38 | 3 11 39 | 4 11 40 | 5 11 41 | 6 11 42 | 7 11 43 | 8 11 44 | 9 11 45 | 10 11 46 | 11 11 47 | 12 11 48 | 13 11 49 | 14 11 50 | 14 10 51 | 13 10 52 | 12 10 53 | 11 10 54 | 10 10 55 | 9 10 56 | 8 10 57 | 7 10 58 | 6 10 59 | 5 10 60 | 4 10 61 | 3 10 62 | 3 9 63 | 4 9 64 | 5 9 65 | 6 9 66 | 7 9 67 | 8 9 68 | 9 9 69 | 10 9 70 | 11 9 71 | 12 9 72 | 13 9 73 | 14 9 74 | 14 8 75 | 13 8 76 | 12 8 77 | 11 8 78 | 10 8 79 | 9 8 80 | 8 8 81 | 7 8 82 | 6 8 83 | 5 8 84 | 4 8 85 | 3 8 86 | 3 7 87 | 4 7 88 | 8 7 89 | 9 7 90 | 13 7 91 | 14 7 92 | 14 6 93 | 13 6 94 | 9 6 95 | 8 6 96 | 4 6 97 | 3 6 98 | 3 5 99 | 4 5 100 | 5 5 101 | 6 5 102 | 7 5 103 | 8 5 104 | 9 5 105 | 10 5 106 | 11 5 107 | 12 5 108 | 13 5 109 | 14 5 110 | 14 4 111 | 13 4 112 | 12 4 113 | 11 4 114 | 10 4 115 | 9 4 116 | 8 4 117 | 7 4 118 | 6 4 119 | 5 4 120 | 4 4 121 | 3 4 122 | 3 3 123 | 4 3 124 | 5 3 125 | 6 3 126 | 7 3 127 | 8 3 128 | 9 3 129 | 10 3 130 | 11 3 131 | 12 3 132 | 13 3 133 | 14 3 134 | 14 2 135 | 13 2 136 | 12 2 137 | 11 2 138 | 10 2 139 | 9 2 140 | 8 2 141 | 7 2 142 | 6 2 143 | 5 2 144 | 4 2 145 | 3 2 146 | 3 1 147 | 4 1 148 | 5 1 149 | 6 1 150 | 7 1 151 | 8 1 152 | 9 1 153 | 10 1 154 | 11 1 155 | 12 1 156 | 13 1 157 | 14 1 158 | -------------------------------------------------------------------------------- /AllPixMatrix/configs/LED_mask/content.txt: -------------------------------------------------------------------------------- 1 | 0,0,41,0.0,0.25,1.0,1.0 2 | 4,255,30.0,2,0,0.0,0,0.0,0.0,0.0,0.0,255.0,0.0,0.0,0.0,255.0,255.0 3 | 6,255,30.0,0,0,0.0,0,0.0,0.0,0.0,0.0,255.0,0.0,0.0,0.0,255.0,255.0 4 | 0,255,24.0,0,0,0.0,0,0.0,0.0,0.0,0.0,255.0,0.0,0.0,0.0,255.0,255.0 5 | 29,255,24.0,0,0,0.0,0,0.0,0.0,0.0,0.0,255.0,0.0,0.0,0.0,255.0,255.0 6 | 0,0,30.0,0,0,0.0,0,0.0,0.0,0.0,0.0,255.0,0.0,0.0,0.0,255.0,255.0 7 | 0,255,24.0,0,0,0.0,0,0.0,0.0,0.0,0.0,255.0,0.0,0.0,0.0,255.0,255.0 8 | Generated 0,0,5,3,4,,0,0,12,14,1,24.0,1,5,0.75,0,255,255,255,255 9 | Test Bars,1,0,0,0,testbars.png,0,0,0,0,1,24.0 10 | Blocks,2,5,3,0,null,0,0,12,14,1,24.0,1,5,0.0,0,255,255,255,255 11 | Gen Stars,3,5,2,0,null,0,0,12,14,1,24.0,0,1,200,0,0.0,false,255,255,255,255,0,0,0,0 12 | Generated 4,4,5,4,3,,0,0,12,14,1,24.0,0,20,20,0.1,255,255,255,255 13 | Video-SnowBalls,5,1,0,0,footage\22x22\snowing.mov,0,0,22,22,1,30.0 14 | Video 6,6,1,0,0,footage\22x22\FractalNoise.mov,0,0,22,22,1,30.0 15 | Fractal Img,7,3,0,0,footage\fractal.png,0,0,300,300,1,1.0 16 | Gen Text,8,5,1,0,null,0,0,12,14,1,24.0,Your Text,16,0,0,0,255,255,255,255,1,0,0,0 17 | Laser Img,9,3,0,0,footage\22x22\jupiter-shrunk.png,0,0,22,21,1,1.0 18 | Gen Meta,10,5,4,0,null,0,0,12,14,1,24.0,0,20,20,0.1,255,255,255,255 19 | Gen Ripples,11,5,5,0,null,0,0,12,14,1,24.0,1,0,100,0,1,0,0,0,0,255,255,255,255 20 | Gen Spiral,12,5,6,0,null,0,0,12,14,1,24.0,2,0.5,1,3,255,255,255,255 21 | Gen Plasma,13,5,8,0,null,0,0,12,14,1,24.0,NONE 22 | Generated 14,14,5,12,0,null,0,0,12,14,1,24.0,0,0,1,2,4,0.0,0,255,0,255 23 | Generated 15,15,5,11,0,null,0,0,12,14,1,24.0,1,0,0,10,8,0.0,255,255,255,255 24 | Generated 16,16,5,6,1,null,0,0,12,14,1,24.0,3,0.5,2,3,255,255,255,255 25 | Generated 17,17,5,9,0,null,0,0,12,14,1,24.0,1,5,10,1,210,105,false,255,0,0,255,0,255,0,255 26 | Generated 18,18,5,5,1,null,0,0,12,14,1,24.0,0,0,21,0,1,0,0,0,0,0,0,255,255 27 | Generated 19,19,5,10,0,null,0,0,12,14,1,24.0,8,1,1,1,false,255,255,255,255 28 | Generated 20,20,5,4,1,null,0,0,12,14,1,24.0,1,20,20,0.1,0,0,255,255 29 | Generated 21,21,5,4,2,null,0,0,12,14,1,24.0,1,40,5,0.1,255,0,255,255 30 | Video 22,22,1,0,0,footage\22x22\alienhead.mov,0,0,22,22,1,30.0 31 | Video 23,23,1,0,0,footage\22x22\earth-spin-contrast.mov,0,0,68,24,1,30.0 32 | Video 24,24,1,0,0,footage\22x22\bluewaves.mov,0,0,22,22,1,30.0 33 | Video 25,25,1,0,0,footage\22x22\greenrain.mov,0,0,22,22,1,30.0 34 | Video 26,26,1,0,0,footage\22x22\starburst.mov,0,0,22,22,1,30.0 35 | Image 27,27,3,0,0,footage\laser-image.jpg,0,0,1024,768,1,1.0 36 | Generated 28,28,5,2,1,,0,0,12,14,1,24.0,2,4,100,0,0.0,true,255,0,0,255,0,0,0,0 37 | Generated 29,29,5,12,1,,0,0,12,14,1,24.0,3,0,1,2,7,0.0,71,255,255,255 38 | Generated 30,30,5,11,1,,0,0,12,14,1,24.0,2,0,0,8,8,0.0,0,255,0,255 39 | Generated 31,31,5,11,2,,0,0,12,14,1,24.0,2,0,0,16,100,0.0,255,255,255,255 40 | Image 32,32,3,0,0,footage\earth-flat-contrast.png,0,0,68,24,1,1.0 41 | Video 33,33,1,0,0,footage\22x22\pink-blue-cellmosaic.mov,0,0,22,22,1,30.0 42 | Video 34,34,1,0,0,footage\22x22\Rainbow2.mov,0,0,22,22,1,30.0 43 | Video 35,35,1,0,0,footage\22x22\testbars.mov,0,0,22,16,1,30.0 44 | Generated 36,36,5,7,0,,0,0,12,14,1,24.0,0,128,0,255 45 | Generated 37,37,5,3,1,,0,0,12,14,1,24.0,1,5,0.0,0,0,255,0,255 46 | Generated 38,38,5,3,2,,0,0,12,14,1,24.0,2,5,0.0,2,255,0,0,255 47 | Generated 39,39,5,3,3,,0,0,12,14,1,24.0,1,5,0.0,1,255,255,255,255 48 | Generated 40,40,5,12,2,,0,0,12,14,1,24.0,1,0,2,4,7,0.0,0,0,255,255 49 | Generated 41,41,5,12,3,,0,0,12,14,1,24.0,1,0,1,1,10,0.0,0,255,0,255 50 | -------------------------------------------------------------------------------- /AllPixMatrix/configs/LED_mask/matrix-config.ini: -------------------------------------------------------------------------------- 1 | NAME LED_mask_patch 2 | PATCHFILE LED_mask_patch.txt 3 | CONTENTFILE content.txt 4 | FOOTAGEDIR NOT YET USED 5 | AUTOMATICFILE Auto-1.txt -------------------------------------------------------------------------------- /AllPixMatrix/configs/LED_mask/output-config.ini: -------------------------------------------------------------------------------- 1 | OUTPUTTYPE 1 //0: none, 1: NLED serial, 2: glediator serial, 3: TCP, 4: UDP, ?? 2 | OUTPUTPORT 1 3 | OUTPUTBAUD 19200 4 | OUTPUTFPS 24 5 | COLORORDER 5 //0: RGB, 1: BRG, 2: GBR, 3: RBG, 4: BGR, 5: GRB 6 | AURORACMD true 7 | EXTERNALDATA true 8 | EXTERNALPORT 3 9 | EXTERNALBAUD 1000000 -------------------------------------------------------------------------------- /AllPixMatrix/configs/shuttershades/content-save-file-1.txt: -------------------------------------------------------------------------------- 1 | 0,0,41,0.0,0.25,1.0,1.0 2 | 4,255,30.0,2,0,0.0,0,0.0,0.0,0.0,255.0,0.0,0.0,0.0,255.0,255.0,255.0 3 | 6,255,30.0,0,0,0.0,0,0.0,0.0,0.0,255.0,0.0,0.0,0.0,255.0,255.0,255.0 4 | 0,255,24.0,0,0,0.0,0,0.0,0.0,0.0,255.0,0.0,0.0,0.0,255.0,255.0,255.0 5 | 29,255,24.0,0,0,0.0,0,0.0,0.0,0.0,255.0,0.0,0.0,0.0,255.0,255.0,255.0 6 | 0,0,30.0,0,0,0.0,0,0.0,0.0,0.0,255.0,0.0,0.0,0.0,255.0,255.0,255.0 7 | 0,255,24.0,0,0,0.0,0,0.0,0.0,0.0,255.0,0.0,0.0,0.0,255.0,255.0,255.0 8 | NULL,0,0,0,0,null,0,0,0,0,1,24.0 9 | Test Bars,1,0,0,0,testbars.png,0,0,0,0,1,24.0 10 | Blocks,2,5,3,0,null,0,0,21,7,1,24.0,1,5,0.0,0,255,255,255,255 11 | Gen Stars,3,5,2,0,null,0,0,21,7,1,24.0,0,1,200,0,0.0,false,255,255,255,255,0,0,0,0 12 | Video-Magma,4,1,0,0,footage\22x22\acid-magma-hicontrast.mov,0,0,22,22,1,30.0 13 | Video-SnowBalls,5,1,0,0,footage\22x22\snowing.mov,0,0,22,22,1,30.0 14 | Video 6,6,1,0,0,footage\22x22\FractalNoise.mov,0,0,22,22,1,30.0 15 | Fractal Img,7,3,0,0,footage\fractal.png,0,0,300,300,1,1.0 16 | Gen Text,8,5,1,0,null,0,0,21,7,1,24.0,Your Text,16,0,0,0,255,255,255,255,1,0,0,0 17 | Laser Img,9,3,0,0,footage\22x22\jupiter-shrunk.png,0,0,22,21,1,1.0 18 | Gen Meta,10,5,4,0,null,0,0,21,7,1,24.0,0,20,20,0.1,255,255,255,255 19 | Gen Ripples,11,5,5,0,null,0,0,21,7,1,24.0,1,0,100,0,1,0,0,0,0,255,255,255,255 20 | Gen Spiral,12,5,6,0,null,0,0,21,7,1,24.0,2,0.5,1,3,255,255,255,255 21 | Gen Plasma,13,5,8,0,null,0,0,21,7,1,24.0,NONE 22 | Generated 14,14,5,12,0,null,0,0,21,7,1,24.0,0,0,1,2,4,0.0,0,255,0,255 23 | Generated 15,15,5,11,0,null,0,0,21,7,1,24.0,1,0,0,10,8,0.0,255,255,255,255 24 | Generated 16,16,5,6,1,null,0,0,21,7,1,24.0,3,0.5,2,3,255,255,255,255 25 | Generated 17,17,5,9,0,null,0,0,21,7,1,24.0,1,5,10,1,210,105,false,255,0,0,255,0,255,0,255 26 | Generated 18,18,5,5,1,null,0,0,21,7,1,24.0,0,0,21,0,1,0,0,0,0,0,0,255,255 27 | Generated 19,19,5,10,0,null,0,0,21,7,1,24.0,8,1,1,1,false,255,255,255,255 28 | Generated 20,20,5,4,1,null,0,0,21,7,1,24.0,1,20,20,0.1,0,0,255,255 29 | Generated 21,21,5,4,2,null,0,0,21,7,1,24.0,1,40,5,0.1,255,0,255,255 30 | Video 22,22,1,0,0,footage\22x22\alienhead.mov,0,0,22,22,1,30.0 31 | Video 23,23,1,0,0,footage\22x22\earth-spin-contrast.mov,0,0,68,24,1,30.0 32 | Video 24,24,1,0,0,footage\22x22\bluewaves.mov,0,0,22,22,1,30.0 33 | Video 25,25,1,0,0,footage\22x22\greenrain.mov,0,0,22,22,1,30.0 34 | Video 26,26,1,0,0,footage\22x22\starburst.mov,0,0,22,22,1,30.0 35 | Image 27,27,3,0,0,footage\laser-image.jpg,0,0,1024,768,1,1.0 36 | Generated 28,28,5,2,1,,0,0,21,7,1,24.0,2,4,100,0,0.0,true,255,0,0,255,0,0,0,0 37 | Generated 29,29,5,12,1,,0,0,21,7,1,24.0,3,0,1,2,7,0.0,71,255,255,255 38 | Generated 30,30,5,11,1,,0,0,21,7,1,24.0,2,0,0,8,8,0.0,0,255,0,255 39 | Generated 31,31,5,11,2,,0,0,21,7,1,24.0,2,0,0,16,100,0.0,255,255,255,255 40 | Image 32,32,3,0,0,footage\earth-flat-contrast.png,0,0,68,24,1,1.0 41 | Video 33,33,1,0,0,footage\22x22\pink-blue-cellmosaic.mov,0,0,22,22,1,30.0 42 | Video 34,34,1,0,0,footage\22x22\Rainbow2.mov,0,0,22,22,1,30.0 43 | Video 35,35,1,0,0,footage\22x22\testbars.mov,0,0,22,16,1,30.0 44 | Generated 36,36,5,7,0,,0,0,21,7,1,24.0,0,128,0,255 45 | Generated 37,37,5,3,1,,0,0,21,7,1,24.0,1,5,0.0,0,0,255,0,255 46 | Generated 38,38,5,3,2,,0,0,21,7,1,24.0,2,5,0.0,2,255,0,0,255 47 | Generated 39,39,5,3,3,,0,0,21,7,1,24.0,1,5,0.0,1,255,255,255,255 48 | Generated 40,40,5,12,2,,0,0,21,7,1,24.0,1,0,2,4,7,0.0,0,0,255,255 49 | Generated 41,41,5,12,3,,0,0,21,7,1,24.0,1,0,1,1,10,0.0,0,255,0,255 50 | -------------------------------------------------------------------------------- /AllPixMatrix/configs/shuttershades/matrix-config.ini: -------------------------------------------------------------------------------- 1 | NAME APA102-2020 Shutter Shades 2 | PATCHFILE shutter-shades-21x7-patch.txt 3 | CONTENTFILE content-save-file-1.txt 4 | FOOTAGEDIR LOCAL 5 | AUTOMATICFILE Auto-1.txt -------------------------------------------------------------------------------- /AllPixMatrix/configs/shuttershades/output-config.ini: -------------------------------------------------------------------------------- 1 | OUTPUTTYPE 1 //0: none, 1: NLED serial, 2: glediator serial, 3: TCP, 4: UDP, ?? 2 | OUTPUTPORT 1 3 | OUTPUTBAUD 500000 4 | OUTPUTFPS 24 5 | COLORORDER 0 //0: RGB, 1: BRG, 2: GBR, 3: RBG, 4: BGR, 5: GRB 6 | AURORACMD true 7 | EXTERNALDATA true 8 | EXTERNALPORT 3 9 | EXTERNALBAUD 1000000 -------------------------------------------------------------------------------- /AllPixMatrix/configs/shuttershades/shutter-shades-21x7-patch.txt: -------------------------------------------------------------------------------- 1 | 127 22 32 805 600 2 | 11 1 3 | 10 1 4 | 9 1 5 | 8 1 6 | 7 1 7 | 6 1 8 | 5 1 9 | 4 1 10 | 3 1 11 | 1 2 12 | 2 2 13 | 3 2 14 | 4 2 15 | 5 2 16 | 6 2 17 | 7 2 18 | 8 2 19 | 9 2 20 | 10 2 21 | 11 2 22 | 11 3 23 | 10 3 24 | 9 3 25 | 8 3 26 | 7 3 27 | 6 3 28 | 5 3 29 | 4 3 30 | 3 3 31 | 2 3 32 | 1 3 33 | 1 4 34 | 2 4 35 | 3 4 36 | 4 4 37 | 5 4 38 | 6 4 39 | 7 4 40 | 8 4 41 | 9 4 42 | 10 4 43 | 9 5 44 | 8 5 45 | 7 5 46 | 6 5 47 | 5 5 48 | 4 5 49 | 3 5 50 | 2 5 51 | 1 5 52 | 2 6 53 | 3 6 54 | 4 6 55 | 5 6 56 | 6 6 57 | 7 6 58 | 8 6 59 | 9 6 60 | 8 7 61 | 7 7 62 | 6 7 63 | 5 7 64 | 4 7 65 | 3 7 66 | 2 7 67 | 12 1 68 | 13 1 69 | 14 1 70 | 15 1 71 | 16 1 72 | 17 1 73 | 18 1 74 | 19 1 75 | 21 2 76 | 20 2 77 | 19 2 78 | 18 2 79 | 17 2 80 | 16 2 81 | 15 2 82 | 14 2 83 | 13 2 84 | 12 2 85 | 12 3 86 | 13 3 87 | 14 3 88 | 15 3 89 | 16 3 90 | 17 3 91 | 18 3 92 | 19 3 93 | 20 3 94 | 21 3 95 | 21 4 96 | 20 4 97 | 19 4 98 | 18 4 99 | 17 4 100 | 16 4 101 | 15 4 102 | 14 4 103 | 13 4 104 | 12 4 105 | 13 5 106 | 14 5 107 | 15 5 108 | 16 5 109 | 17 5 110 | 18 5 111 | 19 5 112 | 20 5 113 | 21 5 114 | 20 6 115 | 19 6 116 | 18 6 117 | 17 6 118 | 16 6 119 | 15 6 120 | 14 6 121 | 13 6 122 | 14 7 123 | 15 7 124 | 16 7 125 | 17 7 126 | 18 7 127 | 19 7 128 | 20 7 129 | -------------------------------------------------------------------------------- /AllPixMatrix/configs/sphere/content-save-file-1.txt: -------------------------------------------------------------------------------- 1 | 0,0,41,0.0,0.25,1.0,1.0 2 | 4,255,30.0,2,0,0.0,0,0.0,0.0,0.0,255.0,0.0,0.0,0.0,255.0,255.0,255.0 3 | 6,255,30.0,0,0,0.0,0,0.0,0.0,0.0,255.0,0.0,0.0,0.0,255.0,255.0,255.0 4 | 0,255,24.0,0,0,0.0,0,0.0,0.0,0.0,255.0,0.0,0.0,0.0,255.0,255.0,255.0 5 | 29,255,24.0,0,0,0.0,0,0.0,0.0,0.0,255.0,0.0,0.0,0.0,255.0,255.0,255.0 6 | 0,0,30.0,0,0,0.0,0,0.0,0.0,0.0,255.0,0.0,0.0,0.0,255.0,255.0,255.0 7 | 0,255,24.0,0,0,0.0,0,0.0,0.0,0.0,255.0,0.0,0.0,0.0,255.0,255.0,255.0 8 | NULL,0,0,0,0,null,0,0,0,0,1,24.0 9 | Test Bars,1,0,0,0,testbars.png,0,0,0,0,1,24.0 10 | Blocks,2,5,3,0,null,0,0,21,7,1,24.0,1,5,0.0,0,255,255,255,255 11 | Gen Stars,3,5,2,0,null,0,0,21,7,1,24.0,0,1,200,0,0.0,false,255,255,255,255,0,0,0,0 12 | Video-Magma,4,1,0,0,footage\22x22\acid-magma-hicontrast.mov,0,0,22,22,1,30.0 13 | Video-SnowBalls,5,1,0,0,footage\22x22\snowing.mov,0,0,22,22,1,30.0 14 | Video 6,6,1,0,0,footage\22x22\FractalNoise.mov,0,0,22,22,1,30.0 15 | Fractal Img,7,3,0,0,footage\fractal.png,0,0,300,300,1,1.0 16 | Gen Text,8,5,1,0,null,0,0,21,7,1,24.0,Your Text,16,0,0,0,255,255,255,255,1,0,0,0 17 | Laser Img,9,3,0,0,footage\22x22\jupiter-shrunk.png,0,0,22,21,1,1.0 18 | Gen Meta,10,5,4,0,null,0,0,21,7,1,24.0,0,20,20,0.1,255,255,255,255 19 | Gen Ripples,11,5,5,0,null,0,0,21,7,1,24.0,1,0,100,0,1,0,0,0,0,255,255,255,255 20 | Gen Spiral,12,5,6,0,null,0,0,21,7,1,24.0,2,0.5,1,3,255,255,255,255 21 | Gen Plasma,13,5,8,0,null,0,0,21,7,1,24.0,NONE 22 | Generated 14,14,5,12,0,null,0,0,21,7,1,24.0,0,0,1,2,4,0.0,0,255,0,255 23 | Generated 15,15,5,11,0,null,0,0,21,7,1,24.0,1,0,0,10,8,0.0,255,255,255,255 24 | Generated 16,16,5,6,1,null,0,0,21,7,1,24.0,3,0.5,2,3,255,255,255,255 25 | Generated 17,17,5,9,0,null,0,0,21,7,1,24.0,1,5,10,1,210,105,false,255,0,0,255,0,255,0,255 26 | Generated 18,18,5,5,1,null,0,0,21,7,1,24.0,0,0,21,0,1,0,0,0,0,0,0,255,255 27 | Generated 19,19,5,10,0,null,0,0,21,7,1,24.0,8,1,1,1,false,255,255,255,255 28 | Generated 20,20,5,4,1,null,0,0,21,7,1,24.0,1,20,20,0.1,0,0,255,255 29 | Generated 21,21,5,4,2,null,0,0,21,7,1,24.0,1,40,5,0.1,255,0,255,255 30 | Video 22,22,1,0,0,footage\22x22\alienhead.mov,0,0,22,22,1,30.0 31 | Video 23,23,1,0,0,footage\22x22\earth-spin-contrast.mov,0,0,68,24,1,30.0 32 | Video 24,24,1,0,0,footage\22x22\bluewaves.mov,0,0,22,22,1,30.0 33 | Video 25,25,1,0,0,footage\22x22\greenrain.mov,0,0,22,22,1,30.0 34 | Video 26,26,1,0,0,footage\22x22\starburst.mov,0,0,22,22,1,30.0 35 | Image 27,27,3,0,0,footage\laser-image.jpg,0,0,1024,768,1,1.0 36 | Generated 28,28,5,2,1,,0,0,21,7,1,24.0,2,4,100,0,0.0,true,255,0,0,255,0,0,0,0 37 | Generated 29,29,5,12,1,,0,0,21,7,1,24.0,3,0,1,2,7,0.0,71,255,255,255 38 | Generated 30,30,5,11,1,,0,0,21,7,1,24.0,2,0,0,8,8,0.0,0,255,0,255 39 | Generated 31,31,5,11,2,,0,0,21,7,1,24.0,2,0,0,16,100,0.0,255,255,255,255 40 | Image 32,32,3,0,0,footage\earth-flat-contrast.png,0,0,68,24,1,1.0 41 | Video 33,33,1,0,0,footage\22x22\pink-blue-cellmosaic.mov,0,0,22,22,1,30.0 42 | Video 34,34,1,0,0,footage\22x22\Rainbow2.mov,0,0,22,22,1,30.0 43 | Video 35,35,1,0,0,footage\22x22\testbars.mov,0,0,22,16,1,30.0 44 | Generated 36,36,5,7,0,,0,0,21,7,1,24.0,0,128,0,255 45 | Generated 37,37,5,3,1,,0,0,21,7,1,24.0,1,5,0.0,0,0,255,0,255 46 | Generated 38,38,5,3,2,,0,0,21,7,1,24.0,2,5,0.0,2,255,0,0,255 47 | Generated 39,39,5,3,3,,0,0,21,7,1,24.0,1,5,0.0,1,255,255,255,255 48 | Generated 40,40,5,12,2,,0,0,21,7,1,24.0,1,0,2,4,7,0.0,0,0,255,255 49 | Generated 41,41,5,12,3,,0,0,21,7,1,24.0,1,0,1,1,10,0.0,0,255,0,255 50 | -------------------------------------------------------------------------------- /AllPixMatrix/configs/sphere/matrix-config.ini: -------------------------------------------------------------------------------- 1 | NAME Sphere Matrix 2 | PATCHFILE sphere-matrix-patch.txt 3 | CONTENTFILE content-save-file-1.txt 4 | FOOTAGEDIR NOT YET USED 5 | AUTOMATICFILE Auto-1.txt -------------------------------------------------------------------------------- /AllPixMatrix/configs/sphere/output-config.ini: -------------------------------------------------------------------------------- 1 | OUTPUTTYPE 1 //0: none, 1: NLED serial, 2: glediator serial, 3: TCP, 4: UDP, ?? 2 | OUTPUTPORT 1 3 | OUTPUTBAUD 1000000 4 | OUTPUTFPS 24 5 | COLORORDER 1 //0: RGB, 1: BRG, 2: GBR, 3: RBG, 4: BGR, 5: GRB 6 | AURORACMD true 7 | EXTERNALDATA true 8 | EXTERNALPORT 3 9 | EXTERNALBAUD 1000000 -------------------------------------------------------------------------------- /AllPixMatrix/configs/sphere/sphere-matrix-patch.txt: -------------------------------------------------------------------------------- 1 | 1238 2 | 1 14 3 | 2 14 4 | 3 14 5 | 4 14 6 | 5 14 7 | 6 14 8 | 7 14 9 | 8 14 10 | 9 14 11 | 10 14 12 | 11 14 13 | 12 14 14 | 13 14 15 | 14 14 16 | 15 14 17 | 16 14 18 | 17 14 19 | 18 14 20 | 19 14 21 | 20 14 22 | 21 14 23 | 22 14 24 | 23 14 25 | 24 14 26 | 25 14 27 | 26 14 28 | 27 14 29 | 28 14 30 | 29 14 31 | 30 14 32 | 31 14 33 | 32 14 34 | 33 14 35 | 34 14 36 | 35 14 37 | 36 14 38 | 37 14 39 | 38 14 40 | 39 14 41 | 40 14 42 | 41 14 43 | 42 14 44 | 43 14 45 | 44 14 46 | 45 14 47 | 46 14 48 | 47 14 49 | 48 14 50 | 49 14 51 | 50 14 52 | 51 14 53 | 52 14 54 | 53 14 55 | 54 14 56 | 55 14 57 | 56 14 58 | 57 14 59 | 58 14 60 | 59 14 61 | 60 14 62 | 61 14 63 | 62 14 64 | 63 14 65 | 64 14 66 | 65 14 67 | 66 14 68 | 67 14 69 | 68 14 70 | 1 13 71 | 2 13 72 | 3 13 73 | 4 13 74 | 5 13 75 | 6 13 76 | 7 13 77 | 8 13 78 | 9 13 79 | 10 13 80 | 11 13 81 | 12 13 82 | 13 13 83 | 14 13 84 | 15 13 85 | 16 13 86 | 17 13 87 | 18 13 88 | 19 13 89 | 20 13 90 | 21 13 91 | 22 13 92 | 23 13 93 | 24 13 94 | 25 13 95 | 26 13 96 | 27 13 97 | 28 13 98 | 29 13 99 | 30 13 100 | 31 13 101 | 32 13 102 | 33 13 103 | 34 13 104 | 35 13 105 | 36 13 106 | 37 13 107 | 38 13 108 | 39 13 109 | 40 13 110 | 41 13 111 | 42 13 112 | 43 13 113 | 44 13 114 | 45 13 115 | 46 13 116 | 47 13 117 | 48 13 118 | 49 13 119 | 50 13 120 | 51 13 121 | 52 13 122 | 53 13 123 | 54 13 124 | 55 13 125 | 56 13 126 | 57 13 127 | 58 13 128 | 59 13 129 | 60 13 130 | 61 13 131 | 62 13 132 | 63 13 133 | 64 13 134 | 65 13 135 | 66 13 136 | 67 13 137 | 68 13 138 | 1 12 139 | 2 12 140 | 3 12 141 | 4 12 142 | 5 12 143 | 6 12 144 | 7 12 145 | 8 12 146 | 10 12 147 | 11 12 148 | 12 12 149 | 13 12 150 | 14 12 151 | 15 12 152 | 16 12 153 | 17 12 154 | 18 12 155 | 19 12 156 | 20 12 157 | 21 12 158 | 22 12 159 | 23 12 160 | 24 12 161 | 25 12 162 | 26 12 163 | 27 12 164 | 28 12 165 | 29 12 166 | 30 12 167 | 31 12 168 | 32 12 169 | 33 12 170 | 34 12 171 | 35 12 172 | 36 12 173 | 37 12 174 | 38 12 175 | 39 12 176 | 40 12 177 | 41 12 178 | 42 12 179 | 43 12 180 | 44 12 181 | 45 12 182 | 46 12 183 | 47 12 184 | 48 12 185 | 49 12 186 | 50 12 187 | 51 12 188 | 52 12 189 | 53 12 190 | 54 12 191 | 55 12 192 | 56 12 193 | 57 12 194 | 58 12 195 | 59 12 196 | 61 12 197 | 62 12 198 | 63 12 199 | 64 12 200 | 65 12 201 | 66 12 202 | 67 12 203 | 68 12 204 | 1 11 205 | 2 11 206 | 3 11 207 | 4 11 208 | 5 11 209 | 6 11 210 | 7 11 211 | 8 11 212 | 9 11 213 | 10 11 214 | 11 11 215 | 12 11 216 | 13 11 217 | 14 11 218 | 16 11 219 | 17 11 220 | 18 11 221 | 19 11 222 | 20 11 223 | 21 11 224 | 22 11 225 | 23 11 226 | 24 11 227 | 25 11 228 | 26 11 229 | 27 11 230 | 29 11 231 | 30 11 232 | 31 11 233 | 32 11 234 | 33 11 235 | 34 11 236 | 35 11 237 | 36 11 238 | 37 11 239 | 38 11 240 | 39 11 241 | 40 11 242 | 42 11 243 | 43 11 244 | 44 11 245 | 45 11 246 | 46 11 247 | 47 11 248 | 48 11 249 | 49 11 250 | 50 11 251 | 51 11 252 | 52 11 253 | 53 11 254 | 55 11 255 | 56 11 256 | 57 11 257 | 58 11 258 | 59 11 259 | 60 11 260 | 61 11 261 | 62 11 262 | 63 11 263 | 64 11 264 | 66 11 265 | 67 11 266 | 68 11 267 | 65 11 268 | 1 10 269 | 2 10 270 | 4 10 271 | 5 10 272 | 6 10 273 | 7 10 274 | 8 10 275 | 9 10 276 | 10 10 277 | 11 10 278 | 12 10 279 | 13 10 280 | 14 10 281 | 15 10 282 | 16 10 283 | 17 10 284 | 19 10 285 | 20 10 286 | 21 10 287 | 22 10 288 | 23 10 289 | 24 10 290 | 25 10 291 | 26 10 292 | 27 10 293 | 28 10 294 | 29 10 295 | 31 10 296 | 32 10 297 | 33 10 298 | 34 10 299 | 35 10 300 | 36 10 301 | 37 10 302 | 38 10 303 | 39 10 304 | 40 10 305 | 41 10 306 | 42 10 307 | 44 10 308 | 45 10 309 | 46 10 310 | 47 10 311 | 48 10 312 | 49 10 313 | 50 10 314 | 51 10 315 | 52 10 316 | 53 10 317 | 54 10 318 | 55 10 319 | 57 10 320 | 58 10 321 | 59 10 322 | 60 10 323 | 61 10 324 | 62 10 325 | 63 10 326 | 65 10 327 | 66 10 328 | 67 10 329 | 68 10 330 | 1 9 331 | 2 9 332 | 3 9 333 | 4 9 334 | 5 9 335 | 7 9 336 | 8 9 337 | 9 9 338 | 10 9 339 | 11 9 340 | 13 9 341 | 14 9 342 | 15 9 343 | 16 9 344 | 18 9 345 | 17 9 346 | 20 9 347 | 21 9 348 | 22 9 349 | 23 9 350 | 24 9 351 | 26 9 352 | 27 9 353 | 28 9 354 | 29 9 355 | 30 9 356 | 31 9 357 | 33 9 358 | 34 9 359 | 35 9 360 | 36 9 361 | 37 9 362 | 38 9 363 | 40 9 364 | 41 9 365 | 42 9 366 | 43 9 367 | 44 9 368 | 45 9 369 | 47 9 370 | 48 9 371 | 49 9 372 | 50 9 373 | 51 9 374 | 52 9 375 | 54 9 376 | 55 9 377 | 56 9 378 | 57 9 379 | 58 9 380 | 59 9 381 | 61 9 382 | 62 9 383 | 63 9 384 | 64 9 385 | 65 9 386 | 66 9 387 | 68 9 388 | 2 8 389 | 3 8 390 | 4 8 391 | 5 8 392 | 6 8 393 | 7 8 394 | 9 8 395 | 10 8 396 | 11 8 397 | 12 8 398 | 13 8 399 | 15 8 400 | 16 8 401 | 17 8 402 | 18 8 403 | 19 8 404 | 21 8 405 | 22 8 406 | 23 8 407 | 25 8 408 | 26 8 409 | 27 8 410 | 28 8 411 | 30 8 412 | 31 8 413 | 32 8 414 | 33 8 415 | 34 8 416 | 36 8 417 | 37 8 418 | 38 8 419 | 39 8 420 | 41 8 421 | 42 8 422 | 43 8 423 | 44 8 424 | 45 8 425 | 47 8 426 | 48 8 427 | 49 8 428 | 50 8 429 | 52 8 430 | 53 8 431 | 54 8 432 | 56 8 433 | 57 8 434 | 58 8 435 | 60 8 436 | 61 8 437 | 62 8 438 | 64 8 439 | 66 8 440 | 67 8 441 | 68 8 442 | 1 7 443 | 2 7 444 | 4 7 445 | 5 7 446 | 6 7 447 | 8 7 448 | 9 7 449 | 10 7 450 | 12 7 451 | 13 7 452 | 14 7 453 | 16 7 454 | 17 7 455 | 19 7 456 | 20 7 457 | 22 7 458 | 23 7 459 | 24 7 460 | 26 7 461 | 27 7 462 | 28 7 463 | 29 7 464 | 31 7 465 | 32 7 466 | 33 7 467 | 35 7 468 | 36 7 469 | 37 7 470 | 39 7 471 | 40 7 472 | 41 7 473 | 43 7 474 | 44 7 475 | 46 7 476 | 47 7 477 | 48 7 478 | 50 7 479 | 51 7 480 | 52 7 481 | 53 7 482 | 55 7 483 | 56 7 484 | 57 7 485 | 59 7 486 | 60 7 487 | 62 7 488 | 63 7 489 | 65 7 490 | 66 7 491 | 68 7 492 | 1 6 493 | 3 6 494 | 4 6 495 | 6 6 496 | 7 6 497 | 9 6 498 | 11 6 499 | 12 6 500 | 14 6 501 | 15 6 502 | 17 6 503 | 18 6 504 | 20 6 505 | 21 6 506 | 23 6 507 | 25 6 508 | 26 6 509 | 28 6 510 | 29 6 511 | 30 6 512 | 32 6 513 | 34 6 514 | 36 6 515 | 38 6 516 | 40 6 517 | 41 6 518 | 42 6 519 | 44 6 520 | 45 6 521 | 47 6 522 | 48 6 523 | 49 6 524 | 51 6 525 | 52 6 526 | 54 6 527 | 56 6 528 | 58 6 529 | 59 6 530 | 61 6 531 | 62 6 532 | 64 6 533 | 67 6 534 | 68 6 535 | 65 6 536 | 1 5 537 | 2 5 538 | 4 5 539 | 6 5 540 | 8 5 541 | 9 5 542 | 10 5 543 | 12 5 544 | 13 5 545 | 15 5 546 | 16 5 547 | 18 5 548 | 20 5 549 | 22 5 550 | 24 5 551 | 26 5 552 | 27 5 553 | 29 5 554 | 31 5 555 | 33 5 556 | 35 5 557 | 37 5 558 | 39 5 559 | 41 5 560 | 43 5 561 | 45 5 562 | 46 5 563 | 48 5 564 | 50 5 565 | 51 5 566 | 53 5 567 | 55 5 568 | 57 5 569 | 59 5 570 | 60 5 571 | 62 5 572 | 63 5 573 | 65 5 574 | 67 5 575 | 68 5 576 | 1 4 577 | 3 4 578 | 5 4 579 | 7 4 580 | 9 4 581 | 11 4 582 | 14 4 583 | 17 4 584 | 19 4 585 | 21 4 586 | 23 4 587 | 25 4 588 | 28 4 589 | 30 4 590 | 32 4 591 | 34 4 592 | 36 4 593 | 38 4 594 | 40 4 595 | 42 4 596 | 45 4 597 | 47 4 598 | 49 4 599 | 52 4 600 | 54 4 601 | 58 4 602 | 61 4 603 | 64 4 604 | 66 4 605 | 68 4 606 | 1 3 607 | 4 3 608 | 6 3 609 | 8 3 610 | 11 3 611 | 14 3 612 | 16 3 613 | 19 3 614 | 22 3 615 | 25 3 616 | 28 3 617 | 31 3 618 | 35 3 619 | 39 3 620 | 43 3 621 | 46 3 622 | 50 3 623 | 53 3 624 | 56 3 625 | 59 3 626 | 63 3 627 | 67 3 628 | 2 2 629 | 7 2 630 | 12 2 631 | 17 2 632 | 21 2 633 | 26 2 634 | 30 2 635 | 34 2 636 | 38 2 637 | 44 2 638 | 49 2 639 | 55 2 640 | 61 2 641 | 66 2 642 | 4 1 643 | 11 1 644 | 18 1 645 | 27 1 646 | 36 1 647 | 43 1 648 | 51 1 649 | 64 1 650 | 1 15 651 | 2 15 652 | 3 15 653 | 4 15 654 | 5 15 655 | 6 15 656 | 7 15 657 | 8 15 658 | 9 15 659 | 10 15 660 | 11 15 661 | 12 15 662 | 13 15 663 | 14 15 664 | 15 15 665 | 16 15 666 | 17 15 667 | 18 15 668 | 19 15 669 | 20 15 670 | 21 15 671 | 22 15 672 | 23 15 673 | 24 15 674 | 25 15 675 | 26 15 676 | 27 15 677 | 28 15 678 | 29 15 679 | 30 15 680 | 31 15 681 | 32 15 682 | 33 15 683 | 34 15 684 | 35 15 685 | 36 15 686 | 37 15 687 | 38 15 688 | 39 15 689 | 40 15 690 | 41 15 691 | 42 15 692 | 43 15 693 | 44 15 694 | 45 15 695 | 46 15 696 | 47 15 697 | 48 15 698 | 49 15 699 | 50 15 700 | 51 15 701 | 52 15 702 | 53 15 703 | 54 15 704 | 55 15 705 | 56 15 706 | 57 15 707 | 58 15 708 | 59 15 709 | 60 15 710 | 61 15 711 | 62 15 712 | 63 15 713 | 64 15 714 | 65 15 715 | 66 15 716 | 67 15 717 | 68 15 718 | 1 16 719 | 2 16 720 | 3 16 721 | 4 16 722 | 5 16 723 | 6 16 724 | 7 16 725 | 8 16 726 | 9 16 727 | 10 16 728 | 11 16 729 | 12 16 730 | 13 16 731 | 14 16 732 | 15 16 733 | 16 16 734 | 17 16 735 | 18 16 736 | 19 16 737 | 20 16 738 | 21 16 739 | 22 16 740 | 23 16 741 | 24 16 742 | 25 16 743 | 26 16 744 | 27 16 745 | 28 16 746 | 29 16 747 | 30 16 748 | 31 16 749 | 32 16 750 | 33 16 751 | 34 16 752 | 35 16 753 | 36 16 754 | 37 16 755 | 38 16 756 | 39 16 757 | 40 16 758 | 41 16 759 | 42 16 760 | 43 16 761 | 44 16 762 | 45 16 763 | 46 16 764 | 47 16 765 | 48 16 766 | 49 16 767 | 50 16 768 | 51 16 769 | 52 16 770 | 53 16 771 | 54 16 772 | 55 16 773 | 56 16 774 | 57 16 775 | 58 16 776 | 59 16 777 | 60 16 778 | 61 16 779 | 62 16 780 | 63 16 781 | 64 16 782 | 65 16 783 | 66 16 784 | 67 16 785 | 68 16 786 | 1 17 787 | 2 17 788 | 3 17 789 | 4 17 790 | 5 17 791 | 6 17 792 | 7 17 793 | 8 17 794 | 9 17 795 | 10 17 796 | 11 17 797 | 12 17 798 | 13 17 799 | 14 17 800 | 15 17 801 | 16 17 802 | 17 17 803 | 18 17 804 | 19 17 805 | 20 17 806 | 21 17 807 | 22 17 808 | 23 17 809 | 24 17 810 | 25 17 811 | 26 17 812 | 27 17 813 | 28 17 814 | 29 17 815 | 30 17 816 | 31 17 817 | 32 17 818 | 33 17 819 | 34 17 820 | 35 17 821 | 36 17 822 | 37 17 823 | 38 17 824 | 39 17 825 | 40 17 826 | 41 17 827 | 42 17 828 | 43 17 829 | 44 17 830 | 45 17 831 | 46 17 832 | 47 17 833 | 48 17 834 | 49 17 835 | 50 17 836 | 51 17 837 | 52 17 838 | 53 17 839 | 54 17 840 | 55 17 841 | 56 17 842 | 57 17 843 | 58 17 844 | 59 17 845 | 60 17 846 | 61 17 847 | 62 17 848 | 63 17 849 | 64 17 850 | 65 17 851 | 66 17 852 | 67 17 853 | 68 17 854 | 2 18 855 | 3 18 856 | 4 18 857 | 5 18 858 | 6 18 859 | 7 18 860 | 8 18 861 | 9 18 862 | 10 18 863 | 11 18 864 | 12 18 865 | 13 18 866 | 14 18 867 | 15 18 868 | 16 18 869 | 17 18 870 | 18 18 871 | 19 18 872 | 20 18 873 | 21 18 874 | 22 18 875 | 23 18 876 | 24 18 877 | 25 18 878 | 26 18 879 | 27 18 880 | 28 18 881 | 29 18 882 | 30 18 883 | 31 18 884 | 32 18 885 | 33 18 886 | 34 18 887 | 35 18 888 | 36 18 889 | 37 18 890 | 38 18 891 | 39 18 892 | 40 18 893 | 41 18 894 | 42 18 895 | 43 18 896 | 44 18 897 | 45 18 898 | 46 18 899 | 47 18 900 | 48 18 901 | 49 18 902 | 50 18 903 | 51 18 904 | 52 18 905 | 53 18 906 | 54 18 907 | 55 18 908 | 56 18 909 | 57 18 910 | 58 18 911 | 59 18 912 | 60 18 913 | 61 18 914 | 62 18 915 | 63 18 916 | 64 18 917 | 65 18 918 | 66 18 919 | 67 18 920 | 1 19 921 | 2 19 922 | 3 19 923 | 5 19 924 | 6 19 925 | 7 19 926 | 8 19 927 | 9 19 928 | 10 19 929 | 11 19 930 | 12 19 931 | 13 19 932 | 14 19 933 | 15 19 934 | 16 19 935 | 17 19 936 | 18 19 937 | 19 19 938 | 20 19 939 | 21 19 940 | 22 19 941 | 23 19 942 | 24 19 943 | 26 19 944 | 27 19 945 | 28 19 946 | 29 19 947 | 30 19 948 | 31 19 949 | 32 19 950 | 33 19 951 | 34 19 952 | 35 19 953 | 36 19 954 | 37 19 955 | 38 19 956 | 39 19 957 | 40 19 958 | 41 19 959 | 42 19 960 | 43 19 961 | 44 19 962 | 45 19 963 | 46 19 964 | 47 19 965 | 48 19 966 | 50 19 967 | 51 19 968 | 52 19 969 | 53 19 970 | 54 19 971 | 55 19 972 | 56 19 973 | 57 19 974 | 58 19 975 | 59 19 976 | 60 19 977 | 61 19 978 | 62 19 979 | 63 19 980 | 64 19 981 | 66 19 982 | 67 19 983 | 68 19 984 | 1 20 985 | 2 20 986 | 3 20 987 | 4 20 988 | 5 20 989 | 6 20 990 | 7 20 991 | 8 20 992 | 10 20 993 | 11 20 994 | 12 20 995 | 13 20 996 | 14 20 997 | 16 20 998 | 17 20 999 | 18 20 1000 | 19 20 1001 | 20 20 1002 | 21 20 1003 | 22 20 1004 | 24 20 1005 | 25 20 1006 | 26 20 1007 | 27 20 1008 | 28 20 1009 | 29 20 1010 | 30 20 1011 | 32 20 1012 | 33 20 1013 | 34 20 1014 | 35 20 1015 | 36 20 1016 | 37 20 1017 | 38 20 1018 | 40 20 1019 | 41 20 1020 | 42 20 1021 | 43 20 1022 | 44 20 1023 | 45 20 1024 | 46 20 1025 | 48 20 1026 | 49 20 1027 | 50 20 1028 | 51 20 1029 | 52 20 1030 | 53 20 1031 | 54 20 1032 | 56 20 1033 | 57 20 1034 | 58 20 1035 | 59 20 1036 | 60 20 1037 | 61 20 1038 | 62 20 1039 | 64 20 1040 | 65 20 1041 | 66 20 1042 | 67 20 1043 | 68 20 1044 | 2 21 1045 | 3 21 1046 | 4 21 1047 | 5 21 1048 | 6 21 1049 | 8 21 1050 | 9 21 1051 | 10 21 1052 | 11 21 1053 | 12 21 1054 | 14 21 1055 | 15 21 1056 | 16 21 1057 | 17 21 1058 | 18 21 1059 | 19 21 1060 | 20 21 1061 | 22 21 1062 | 23 21 1063 | 24 21 1064 | 25 21 1065 | 26 21 1066 | 28 21 1067 | 29 21 1068 | 30 21 1069 | 31 21 1070 | 32 21 1071 | 33 21 1072 | 35 21 1073 | 36 21 1074 | 37 21 1075 | 38 21 1076 | 39 21 1077 | 41 21 1078 | 42 21 1079 | 43 21 1080 | 45 21 1081 | 46 21 1082 | 47 21 1083 | 49 21 1084 | 50 21 1085 | 51 21 1086 | 52 21 1087 | 53 21 1088 | 55 21 1089 | 56 21 1090 | 57 21 1091 | 58 21 1092 | 59 21 1093 | 60 21 1094 | 62 21 1095 | 63 21 1096 | 64 21 1097 | 65 21 1098 | 67 21 1099 | 68 21 1100 | 1 22 1101 | 2 22 1102 | 3 22 1103 | 5 22 1104 | 6 22 1105 | 7 22 1106 | 9 22 1107 | 10 22 1108 | 11 22 1109 | 13 22 1110 | 14 22 1111 | 15 22 1112 | 17 22 1113 | 18 22 1114 | 19 22 1115 | 21 22 1116 | 22 22 1117 | 23 22 1118 | 24 22 1119 | 26 22 1120 | 27 22 1121 | 28 22 1122 | 30 22 1123 | 31 22 1124 | 32 22 1125 | 34 22 1126 | 35 22 1127 | 36 22 1128 | 38 22 1129 | 39 22 1130 | 40 22 1131 | 42 22 1132 | 43 22 1133 | 44 22 1134 | 46 22 1135 | 47 22 1136 | 48 22 1137 | 50 22 1138 | 51 22 1139 | 52 22 1140 | 54 22 1141 | 55 22 1142 | 56 22 1143 | 58 22 1144 | 59 22 1145 | 60 22 1146 | 62 22 1147 | 63 22 1148 | 64 22 1149 | 66 22 1150 | 67 22 1151 | 68 22 1152 | 1 23 1153 | 2 23 1154 | 4 23 1155 | 5 23 1156 | 7 23 1157 | 10 23 1158 | 12 23 1159 | 8 23 1160 | 13 23 1161 | 15 23 1162 | 16 23 1163 | 18 23 1164 | 20 23 1165 | 21 23 1166 | 23 23 1167 | 24 23 1168 | 25 23 1169 | 27 23 1170 | 29 23 1171 | 30 23 1172 | 32 23 1173 | 33 23 1174 | 35 23 1175 | 36 23 1176 | 38 23 1177 | 40 23 1178 | 41 23 1179 | 43 23 1180 | 45 23 1181 | 46 23 1182 | 48 23 1183 | 49 23 1184 | 51 23 1185 | 53 23 1186 | 54 23 1187 | 56 23 1188 | 57 23 1189 | 59 23 1190 | 60 23 1191 | 62 23 1192 | 63 23 1193 | 65 23 1194 | 66 23 1195 | 68 23 1196 | 44 23 1197 | 9 23 1198 | 1 24 1199 | 3 24 1200 | 4 24 1201 | 6 24 1202 | 7 24 1203 | 9 24 1204 | 11 24 1205 | 12 24 1206 | 14 24 1207 | 15 24 1208 | 17 24 1209 | 18 24 1210 | 20 24 1211 | 22 24 1212 | 23 24 1213 | 25 24 1214 | 26 24 1215 | 28 24 1216 | 29 24 1217 | 31 24 1218 | 33 24 1219 | 34 24 1220 | 36 24 1221 | 38 24 1222 | 39 24 1223 | 41 24 1224 | 43 24 1225 | 44 24 1226 | 46 24 1227 | 47 24 1228 | 49 24 1229 | 50 24 1230 | 52 24 1231 | 54 24 1232 | 56 24 1233 | 58 24 1234 | 59 24 1235 | 61 24 1236 | 62 24 1237 | 64 24 1238 | 66 24 1239 | 67 24 -------------------------------------------------------------------------------- /AllPixMatrix/connection.pde: -------------------------------------------------------------------------------- 1 | //========================================================================================== 2 | 3 | void loadMovieFile(int passedID, String passedFilePath) 4 | { 5 | movieFile[passedID] = new Movie(this, passedFilePath); 6 | } 7 | 8 | //========================================================================================== 9 | 10 | void EstablishOutputConnection() 11 | { 12 | printArray(Serial.list()); 13 | 14 | //loads external serial data input - such as glediator 15 | matrix.externalDataRunning = false; //initialize false 16 | 17 | if (matrix.externalDataEnable == true) //trys to connect to the external datastream, from a serial port, virtual or physical 18 | { 19 | //incase of a reconnection, make sure to close the port first 20 | try { 21 | externalSerialPort.stop(); 22 | } 23 | catch(Exception e) { 24 | println("No External Data Port To Close"); 25 | } 26 | 27 | //Resize this now or will error and disable the port when data starts being received 28 | ExternalDataArray = new short[(matrix.width * matrix.height) * 3]; //comes in full size, no patch yet. 3 is for RGB - needs update for single or RGBW 29 | 30 | try { 31 | ExternalDataCounter = 0; //reset variable incase of reconnection 32 | ExternalDataFramed = false; //reset variable incase of reconnection 33 | 34 | externalSerialPort = new Serial(this, Serial.list()[matrix.externalDataPort], matrix.externalDataBaud); 35 | println("externalDataSerialPort opened "+Serial.list()[matrix.externalDataPort]+" at "+matrix.externalDataBaud+" baud."); 36 | matrix.externalDataRunning = true; 37 | } 38 | catch(Exception e) { 39 | println("External Data Port Could Not Be Opened, Function will not work."); 40 | matrix.externalDataRunning = false; 41 | } 42 | } //end externalDataEnable if 43 | //end external data 44 | 45 | //only serial mode enabled as of now 46 | switch(matrix.transmissionType) 47 | { 48 | case 0: //none 49 | 50 | break; 51 | case 1: //NLED Serial 52 | case 2: //Glediator Serial 53 | try { 54 | serialPort.stop(); 55 | } 56 | catch(Exception e) { 57 | println("No Serial Port To Close"); 58 | } 59 | 60 | try { 61 | serialPort = new Serial(this, Serial.list()[matrix.serialPortNum], matrix.serialBaud); 62 | println("Opened serial port: "+Serial.list()[matrix.serialPortNum]+" at "+matrix.serialBaud+" baud."); 63 | } 64 | catch(Exception e) 65 | { 66 | matrix.transmissionType = 0; //new BETA 0.2 67 | println("Could not open output serial data port"); 68 | } 69 | 70 | break; 71 | case 3: 72 | 73 | break; 74 | } //end switch 75 | 76 | //Rerun this if using the "Reload Configs" button, transmission thread will send it when the thread starts 77 | if (matrix.auroraCMD == true) RequestAuroraProtocolLiveMode(); 78 | } 79 | 80 | //============================================================================================================= 81 | 82 | void RequestAuroraProtocolLiveMode() 83 | { 84 | println("Attempting NLED Aurora live control connection"); 85 | //Sends the command for bulk live control using the NLED protocol 86 | try { 87 | serialPort.write("N"); 88 | serialPort.write("L"); 89 | serialPort.write("E"); 90 | serialPort.write("D"); 91 | serialPort.write("1"); 92 | serialPort.write("1"); 93 | delay(5); //controller will send acknowledge, ignore it and assume it was received 94 | serialPort.write("n"); 95 | serialPort.write("l"); 96 | serialPort.write("e"); 97 | serialPort.write("d"); 98 | serialPort.write("9"); 99 | serialPort.write("9"); 100 | delay(5); //controller will send acknowledge, ignore it and assume it was received 101 | serialPort.write(60); //Live Mode Command 102 | serialPort.write(1); //Enable Live Mode 103 | serialPort.write(0); 104 | serialPort.write((matrix.patchedChannels >> 8) & 0xFF); //MSB 105 | serialPort.write(matrix.patchedChannels & 0xFF); //LSB 106 | println("NLED Aurora connection successful"); 107 | } 108 | catch(Exception e) { 109 | println("No COM Port open to send NLED Aurora Live Control CMD to"); 110 | } 111 | } 112 | 113 | //============================================================================================================= 114 | 115 | void OutputTransmissionThread() //threaded transmission 116 | { 117 | println("SendPixelBuffer() thread started"); 118 | 119 | color tempColor; 120 | byte myRed, myGreen, myBlue; 121 | int x = 0; 122 | int holdMillisOutput = millis(); 123 | byte[] dmxData = new byte[512]; //used to copy blocks of data, would rather use a pointer 124 | 125 | delay(1000); //wait to start transmitting after thread is started 126 | 127 | if (matrix.auroraCMD == true) RequestAuroraProtocolLiveMode(); 128 | 129 | 130 | if(matrix.transmissionType == 3) 131 | { 132 | // create artnet client without buffer (no receving needed) 133 | artnetServer = new ArtNetClient(null); 134 | artnetServer.start(); 135 | } 136 | 137 | //intial wait til first frame is ready 138 | while (PacketReadyForTransmit == false) 139 | { 140 | delay(1); 141 | } //end wait while() 142 | 143 | println("SendPixelBuffer() First Packet is Ready"); 144 | //println("matrix.totalPixels: "+matrix.totalPixels+" Length: "+TransmissionArray.length); 145 | 146 | while (true) 147 | { 148 | x = 0; //clear everytime a packet is built 149 | 150 | //println("tick "+millis()); 151 | //transmitPixelBuffer = MixedContentGBuf.get(); //convert from PGraphics to PImage for transmission by reading pixels[] 152 | 153 | //for (int i = 0; i <= TransmissionArray.length; i++) 154 | for (int i = 0; i < matrix.totalPixels; i++) 155 | { 156 | tempColor = transmitPixelBuffer.get(PatchCoordX[i], PatchCoordY[i]); 157 | //convert colors to 8-bit 158 | //get the pixel color out of the graphics buffer 159 | myRed = byte((tempColor >> 16 & 0xFF) * MasterIntensity); 160 | myGreen = byte((tempColor >> 8 & 0xFF) * MasterIntensity); 161 | myBlue = byte((tempColor & 0xFF) * MasterIntensity); 162 | 163 | 164 | //if Geldiator protocol, 1 is reserved for packet framing, so any 1's set to 0 165 | if (matrix.transmissionType == 2) 166 | { 167 | if (myRed == 1) myGreen = 0; 168 | if (myGreen == 1) myGreen = 0; 169 | if (myBlue == 1) myGreen = 0; 170 | } 171 | 172 | //apply the color order, if the controller is doing the color order, use RGB here 173 | switch(matrix.colorOrderID) 174 | { 175 | case 0://RGB 176 | TransmissionArray[x++] = myRed; 177 | TransmissionArray[x++] = myGreen; 178 | TransmissionArray[x++] = myBlue; 179 | break; 180 | case 1: //BRG 181 | TransmissionArray[x++] = myBlue; 182 | TransmissionArray[x++] = myRed; 183 | TransmissionArray[x++] = myGreen; 184 | break; 185 | case 2: //GBR 186 | TransmissionArray[x++] = myGreen; 187 | TransmissionArray[x++] = myBlue; 188 | TransmissionArray[x++] = myRed; 189 | break; 190 | case 3: //RBG 191 | TransmissionArray[x++] = myRed; 192 | TransmissionArray[x++] = myBlue; 193 | TransmissionArray[x++] = myGreen; 194 | break; 195 | case 4: //BGR 196 | TransmissionArray[x++] = myBlue; 197 | TransmissionArray[x++] = myGreen; 198 | TransmissionArray[x++] = myRed; 199 | break; 200 | case 5: //WS2812B - GRB 201 | TransmissionArray[x++] = myGreen; 202 | TransmissionArray[x++] = myRed; 203 | TransmissionArray[x++] = myBlue; 204 | break; 205 | } //end switch 206 | } //end for() 207 | 208 | //now do dithering/gamma correction by editing TransmissionArray, note they are signed bytes, so careful typecasting 209 | 210 | //transmissionType; //0: none, 1: NLED serial, 2: glediator serial, 3: ArtNet, 4: ?? 211 | //matrix.transmissionType = 3; // debug 212 | //for(int i = 0; i < TransmissionArray.length; i++) TransmissionArray[i] = byte(i); //debug 213 | 214 | try { 215 | switch(matrix.transmissionType) 216 | { 217 | case 0: //none 218 | //TransmissionArray not sent 219 | break; 220 | case 1: //NLED serial 221 | serialPort.write(TransmissionArray); //send out the packet 222 | break; 223 | case 2: //glediator serial 224 | serialPort.write(1); //if glediator output add leading 1 for framing 225 | serialPort.write(TransmissionArray); //send out the packet 226 | break; 227 | case 3: //artnet via artnetp4j 228 | x = 0; //reuse local for universe count 229 | 230 | for(int i = 0; i < TransmissionArray.length; i += 512) 231 | { 232 | //println("Start at: "+i+" of "+TransmissionArray.length+" Universe: "+x); 233 | if((i+512) < TransmissionArray.length) arrayCopy(TransmissionArray, i, dmxData, 0, 512); 234 | else 235 | { 236 | for(int v = 0; v < dmxData.length; v++) dmxData[v] = byte(0); //debug - clears the rest of dmxData 237 | arrayCopy(TransmissionArray, i, dmxData, 0, (TransmissionArray.length-i)); 238 | } 239 | 240 | //Send the DMX universe to artnet 241 | artnetServer.unicastDmx(matrix.outputNetworkIPAdr, 0, x, dmxData); //IP, subnet, universe#, data array 242 | x++; 243 | } 244 | 245 | //arrayCopy(TransmissionArray, 0, dmxData, 0, 512); 246 | //artnetServer.unicastDmx("127.0.0.1", 0, 0, dmxData); //IP, subnet, universe#, data array 247 | break; 248 | } //end switch 249 | } 250 | catch(Exception e) 251 | { 252 | println("Error sending transmission array"); 253 | } 254 | 255 | if(recordToFileButton.selected == true) thread("FileRecoderAddFrame"); //record packet to file if enabled - recorded file has color order applied 256 | 257 | //packet sent or is currently transmitting 258 | PacketReadyForTransmit = false; //clear the flag 259 | 260 | //wait here until next frame is ready for transmission 261 | while (PacketReadyForTransmit == false) 262 | { 263 | delay(1); 264 | } //end wait while() 265 | 266 | OutputFrameRateMs = millis() - holdMillisOutput; 267 | holdMillisOutput = millis(); 268 | //Will also wait for correct timing, want a packet to be updated and within the required time 269 | 270 | //println("Transmission thread sent packet "+millis()); 271 | } //end forever while() 272 | } //end func 273 | 274 | //======================================================================================================= 275 | 276 | void FileRecoderAddFrame() //called threaded from the output transmission thread 277 | { 278 | //Takes the received packet, and writes all the values as single comma delimeted line 279 | //Doubt this is the most efficent way to do it. But works well enough 280 | // This saves the data values to the text file in the order they are transmitted, so the patch file directs data value ordering 281 | 282 | try 283 | { 284 | fw = new FileWriter(sketchPath(File.separator+"recorded"+File.separator+RecorderFileName+".txt"), true); // true means: "append" 285 | bw = new BufferedWriter(fw); 286 | for (int i = 0; i != matrix.patchedChannels; i++) 287 | { 288 | if(FileRecorderFormat == 0) bw.write(str(TransmissionArray[i] & 0xFF)+","); //the & 0xFF converts the signed byte to unsigned so it can be converted to a string 289 | else if(FileRecorderFormat == 1) bw.write(TransmissionArray[i] & 0xFF); //writes binary/byte/raw files, can only be viewed with a Hex viewer 290 | } 291 | bw.newLine(); //add a new line for the next packet / frame. 292 | } 293 | catch (IOException e) 294 | { 295 | // Report problem or handle it 296 | 297 | } 298 | finally 299 | { 300 | if (bw != null) 301 | { 302 | try { 303 | bw.close(); 304 | } 305 | catch (IOException e) { 306 | } 307 | } 308 | } 309 | } 310 | 311 | //============================================================================================================= 312 | 313 | 314 | 315 | 316 | -------------------------------------------------------------------------------- /AllPixMatrix/data/Arial-BoldMT-48-smooth.vlw: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NLED/allpixmatrix/7a5106489cb6e2a822f058f42959be3130607eea/AllPixMatrix/data/Arial-BoldMT-48-smooth.vlw -------------------------------------------------------------------------------- /AllPixMatrix/data/Arial-BoldMT-48.vlw: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NLED/allpixmatrix/7a5106489cb6e2a822f058f42959be3130607eea/AllPixMatrix/data/Arial-BoldMT-48.vlw -------------------------------------------------------------------------------- /AllPixMatrix/data/colorpickerimg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NLED/allpixmatrix/7a5106489cb6e2a822f058f42959be3130607eea/AllPixMatrix/data/colorpickerimg.png -------------------------------------------------------------------------------- /AllPixMatrix/data/favicon.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NLED/allpixmatrix/7a5106489cb6e2a822f058f42959be3130607eea/AllPixMatrix/data/favicon.gif -------------------------------------------------------------------------------- /AllPixMatrix/data/intensitybg-horiz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NLED/allpixmatrix/7a5106489cb6e2a822f058f42959be3130607eea/AllPixMatrix/data/intensitybg-horiz.png -------------------------------------------------------------------------------- /AllPixMatrix/data/mixerhandle-horiz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NLED/allpixmatrix/7a5106489cb6e2a822f058f42959be3130607eea/AllPixMatrix/data/mixerhandle-horiz.png -------------------------------------------------------------------------------- /AllPixMatrix/data/mixerhandle-vert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NLED/allpixmatrix/7a5106489cb6e2a822f058f42959be3130607eea/AllPixMatrix/data/mixerhandle-vert.png -------------------------------------------------------------------------------- /AllPixMatrix/data/sliderbg-horiz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NLED/allpixmatrix/7a5106489cb6e2a822f058f42959be3130607eea/AllPixMatrix/data/sliderbg-horiz.png -------------------------------------------------------------------------------- /AllPixMatrix/data/sliderbg-vert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NLED/allpixmatrix/7a5106489cb6e2a822f058f42959be3130607eea/AllPixMatrix/data/sliderbg-vert.png -------------------------------------------------------------------------------- /AllPixMatrix/data/testbars.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NLED/allpixmatrix/7a5106489cb6e2a822f058f42959be3130607eea/AllPixMatrix/data/testbars.png -------------------------------------------------------------------------------- /AllPixMatrix/events.pde: -------------------------------------------------------------------------------- 1 | 2 | //============================================================================================================= 3 | 4 | //Called every time a new frame is available to read 5 | //NEW: Changed method doesn't read() the frame until needed by the layer mixing 6 | /* 7 | void movieEvent(Movie m) { 8 | try { 9 | m.read(); //how could it error if it just called the event, but it has 10 | } 11 | catch(Exception e) 12 | { 13 | println("Movie Event Error - let it go"); 14 | } 15 | } 16 | */ 17 | //============================================================================================================= 18 | 19 | void serialEvent(Serial p) 20 | { 21 | int rxByte; 22 | 23 | if(p == serialPort) 24 | { 25 | rxByte = p.read(); 26 | //println("responds on serial output. "+rxByte+" "+char(rxByte)); 27 | //aurora will "zAck" packets, that can be ignored or use for a heartbeat to monitor the serial port 28 | return; 29 | } 30 | 31 | while (p.available() > 0) 32 | { 33 | rxByte = p.read(); 34 | 35 | //Code for glediator only as of now 36 | if(ExternalDataFramed == true && ExternalDataArray.length > 1) //if 1 or less its not yet inialized 37 | { 38 | //println("RX: "+rxByte+" Counter: "+ExternalDataCounter); 39 | 40 | //if(rxByte == 1) println("This happened"); 41 | //else 42 | ExternalDataArray[ExternalDataCounter] = (short)rxByte; //store received value 43 | 44 | ExternalDataCounter++; 45 | if(ExternalDataCounter >= ((matrix.width * matrix.height)*3)) 46 | { 47 | // println("reset counter, received: "+ExternalDataCounter); 48 | ExternalDataCounter = 0; 49 | ExternalDataFramed = false; 50 | } 51 | } 52 | else if(rxByte == 1) 53 | { 54 | // println("Frame detected "+millis()); 55 | ExternalDataMillis = (millis()-ExternalDataHoldMillis); //monitors the packet speed for display on the GUI 56 | ExternalDataHoldMillis = millis(); //update after saving packet timing 57 | ExternalDataFramed = true; 58 | } 59 | } //end while 60 | } //end serial event 61 | 62 | //================================================================================================================ 63 | -------------------------------------------------------------------------------- /AllPixMatrix/fileFunctions.pde: -------------------------------------------------------------------------------- 1 | 2 | //============================================================================================================= 3 | 4 | void SaveUserContentFile(String passedFilePath) 5 | { 6 | println("SaveUserContentFile() with path "+passedFilePath); 7 | String[] WorkString = new String[DefinedMediaTiles+1+7]; //or use cSoftwareMaxMediaTiles 8 | 9 | //Save other stuff first - version# - intensity and mixer values - layersA123- layersB123 - 10 | WorkString[0] = ""+cSoftwareVersion+cFileSep+cSoftwareRevision+cFileSep+DefinedMediaTiles+cFileSep+CrossFaderValue+cFileSep+MasterIntensity+cFileSep+FeedIntensityA+cFileSep+FeedIntensityB; 11 | 12 | WorkString[1] = contentLayerA[0].saveLayer(); 13 | WorkString[2] = contentLayerA[1].saveLayer(); 14 | WorkString[3] = contentLayerA[2].saveLayer(); 15 | 16 | WorkString[4] = contentLayerB[0].saveLayer(); 17 | WorkString[5] = contentLayerB[1].saveLayer(); 18 | WorkString[6] = contentLayerB[2].saveLayer(); 19 | 20 | for (int i = 0; i <= DefinedMediaTiles; i++) 21 | { 22 | WorkString[i+7] = mediaContentTile[i].saveContent(); 23 | } //end for 24 | 25 | saveStrings(passedFilePath, WorkString); //now save to file 26 | } 27 | 28 | //============================================================================================================= 29 | 30 | 31 | void ResetObjects() 32 | { 33 | genContentText = new generatedText[cMaxGeneratedObjects]; 34 | genContentStarField = new generatedStarField[cMaxGeneratedObjects]; 35 | genContentFallingBlocks = new generatedFallingBlocks[cMaxGeneratedObjects]; 36 | genContentMetaBalls = new generatedMetaBalls[cMaxGeneratedObjects]; 37 | genContentRipples = new generatedRipples[cMaxGeneratedObjects]; 38 | genContentSpiral = new generatedSpiral[cMaxGeneratedObjects]; 39 | genContentSolidColor = new generatedSolidColor[cMaxGeneratedObjects]; 40 | genContentPlasma = new generatedPlasma[cMaxGeneratedObjects]; 41 | genContent2DShape = new generated2DShape[cMaxGeneratedObjects]; 42 | genContent3DShape = new generated3DShape[cMaxGeneratedObjects]; 43 | genContentTemplate = new generatedTemplate[cMaxGeneratedObjects]; //empty slot use to add another generated function 44 | genContentSineWave = new generatedSineWave[cMaxGeneratedObjects]; 45 | genContentBars = new generatedBars[cMaxGeneratedObjects]; 46 | 47 | //Reset media tiles, in case loading a new content file 48 | mediaContentTile = new mediaContentObj[cSoftwareMaxMediaTiles]; 49 | } 50 | 51 | //============================================================================================================= 52 | 53 | void LoadUserContentFile(String passedFilePath) 54 | { 55 | println("LoadUserContentFile()"); 56 | 57 | try { 58 | String[] strLines = loadStrings(passedFilePath); 59 | String[] workString = new String[100]; 60 | int lineCount = 7; 61 | 62 | // println(strLines[0]); //show the top line, not loaded for now 63 | workString = split(strLines[0], ','); 64 | //version = workString[0] 65 | //revision = workString[1] 66 | //DefinedMediaTiles = workString[2] 67 | CrossFaderValue = float(workString[3]); 68 | MasterIntensity = float(workString[4]); 69 | FeedIntensityA = float(workString[5]); 70 | FeedIntensityB = float(workString[6]); 71 | 72 | DefinedMediaTiles = 0; //start from beginning 73 | workingTileID = 0; //start from beginning 74 | 75 | ResetObjects(); //resets objects so new instance IDs and media tile settings are cleared 76 | 77 | for (int i = 0; i <= strLines.length-8; i++) //starts at 0 since it saves the [0] null content object 78 | { 79 | DisposeGeneratedObjects(); //get rid of any objects that are currently assigned, if any. Only applicable on any load after one in setup() 80 | 81 | createMediaContentObj("Loading", 0, 0, ""); //add place hold object, filled later 82 | 83 | mediaContentTile[i].loadContent(strLines[lineCount]); //use the saved string to fill with proper values and parameters 84 | 85 | if(mediaContentTile[i].typeID == cTypeIDGenerated) 86 | { 87 | println("Load generated parameters"); 88 | mediaContentTile[i].localLoadParameters(strLines[lineCount]); 89 | } 90 | 91 | workingTileID++; 92 | lineCount++; 93 | } //end for 94 | 95 | 96 | //now that the mediaContentTiles are loaded and populated, assign layers from save file 97 | //workString = split(strLines[1], ','); //layer ID numbers 98 | contentLayerA[0].loadLayer(strLines[1]); 99 | contentLayerA[1].loadLayer(strLines[2]); 100 | contentLayerA[2].loadLayer(strLines[3]); 101 | contentLayerB[0].loadLayer(strLines[4]); 102 | contentLayerB[1].loadLayer(strLines[5]); 103 | contentLayerB[2].loadLayer(strLines[6]); 104 | } 105 | catch(Exception e) 106 | { 107 | println("There was a problem loading the media content file"); 108 | 109 | } 110 | 111 | 112 | mediaContentScrollBar.value = 0; //set media tile scroll area to lowest 113 | } 114 | 115 | //============================================================================================================= 116 | 117 | void LoadConfigurationFiles() 118 | { 119 | //loads config.ini to get the path to the device configuration file, each matrix will most likley require their own device config file 120 | println("LoadConfigurationFile()"); 121 | 122 | String[] workString = new String[5]; //used to divide the lines into tab 123 | String[] strLines = loadStrings("software.ini"); //divides the lines 124 | //software.ini now loaded 125 | 126 | workString = split(strLines[0], '\t'); //get CONFIGDIR directory string 127 | software.configFilePath = workString[1]; 128 | 129 | println("Using config directory: "+software.configFilePath); 130 | 131 | workString = split(strLines[1], '\t'); //get GUIWIDTH value 132 | software.GUIWidth = int(workString[1]); 133 | 134 | workString = split(strLines[2], '\t'); //get GUIHEIGHT value 135 | software.GUIHeight = int(workString[1]); 136 | 137 | workString = split(strLines[3], '\t'); //get MOUSEOVER value 138 | software.mouseOverEnabled = boolean(workString[1]); 139 | 140 | workString = split(strLines[4], '\t'); //get MIDIENABLE value 141 | software.MIDIenable = boolean(workString[1]); 142 | 143 | workString = split(strLines[5], '\t'); //get MIDIENABLE value 144 | software.MIDIport = int(workString[1]); 145 | 146 | // frameRateMs never filled from file 147 | 148 | //can't do this here 149 | // surface.setSize(software.GUIWidth,software.GUIHeight); //resize window 150 | // PrevWidth = 0; 151 | // PrevHeight = 0; 152 | // set SF value 153 | 154 | //------------------ now load the matrix config file --------------------------------------------- 155 | 156 | strLines = loadStrings(File.separator+"configs"+File.separator+software.configFilePath+"/matrix-config.ini"); //divides the lines 157 | //config file for matrix is now loaded 158 | //printArray(strLines); 159 | 160 | workString = split(strLines[0], '\t'); //get NAME string 161 | matrix.name = workString[1]; 162 | 163 | workString = split(strLines[1], '\t'); //get PATCHFILE string 164 | matrix.patchFileName = workString[1]; 165 | 166 | workString = split(strLines[2], '\t'); //get CONTENTFILE string 167 | matrix.contentFileName = workString[1]; 168 | 169 | workString = split(strLines[3], '\t'); //get FOOTAGEDIR boolean 170 | matrix.footagePath = workString[1]; 171 | 172 | workString = split(strLines[4], '\t'); //get AUTOMATICFILE boolean 173 | matrix.automaticFileName = workString[1]; 174 | 175 | //Not sure if this is a good way, but have to utilize relative paths for ease of use, but absolute for expanded usage 176 | /* 177 | if(matrix.footagePath.equals("LOCAL")) 178 | { 179 | println("SET LOCAL ACTIVE"); 180 | matrix.footageFilePathMethod = false; //use relative 181 | matrix.footagePath = sketchPath(""); 182 | } 183 | else 184 | { 185 | matrix.footageFilePathMethod = true; //use absolute 186 | matrix.footagePath = ""; 187 | } 188 | */ 189 | 190 | //------------------ Load Output Config File --------------------------------------------- 191 | 192 | strLines = loadStrings("/configs/"+software.configFilePath+"/output-config.ini"); //divides the lines 193 | //output file for matrix now loaded 194 | 195 | workString = split(strLines[0], '\t'); //get OUTPUTTYPE integer 196 | matrix.transmissionType = int(workString[1]); 197 | 198 | workString = split(strLines[1], '\t'); //get OUTPUTPORT integer - saves serial port number or artnet IP address 199 | if(matrix.transmissionType == 3) //check if artnet 200 | { 201 | matrix.outputNetworkIPAdr = workString[1]; 202 | if(matrix.outputNetworkIPAdr.length() < 7) matrix.outputNetworkIPAdr = ArtNetIPDefault; //string read is not long enough to be an IP, set to default 203 | } 204 | else matrix.serialPortNum = int(workString[1]); 205 | 206 | workString = split(strLines[2], '\t'); //get OUTPUTBAUD integer 207 | matrix.serialBaud = int(workString[1]); 208 | 209 | workString = split(strLines[3], '\t'); //get OUTPUTFPS integer 210 | matrix.outputFPS = 1000/int(workString[1]); //store as mS 211 | 212 | workString = split(strLines[4], '\t'); //get COLORORDER integer 213 | matrix.colorOrderID = int(workString[1]); 214 | 215 | workString = split(strLines[5], '\t'); //get AURORACMD boolean 216 | matrix.auroraCMD = boolean(workString[1]); 217 | 218 | workString = split(strLines[6], '\t'); //get EXTERNALDATA integer 219 | matrix.externalDataEnable = boolean(workString[1]); 220 | 221 | workString = split(strLines[7], '\t'); //get EXTERNALPORT integer 222 | matrix.externalDataPort = int(workString[1]); 223 | 224 | workString = split(strLines[8], '\t'); //get EXTERNALBAUD integer 225 | matrix.externalDataBaud = int(workString[1]); 226 | 227 | EstablishOutputConnection(); 228 | 229 | println("Configs loaded"); 230 | } //end load config 231 | 232 | //============================================================================================================= 233 | 234 | void ReadDataFile() 235 | { 236 | //println("ReadDataFile(), Frame: "+FilePlayDataCount); 237 | FilePlayDataBuffer = int(split(FilePlayStrLines[FilePlayDataCount], ',')); 238 | FilePlayDataCount++; 239 | if (FilePlayDataCount >= FilePlayStrLines.length) FilePlayDataCount = 0; 240 | } 241 | 242 | //============================================================================================================= 243 | -------------------------------------------------------------------------------- /AllPixMatrix/footage/22x22/FractalNoise.mov: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NLED/allpixmatrix/7a5106489cb6e2a822f058f42959be3130607eea/AllPixMatrix/footage/22x22/FractalNoise.mov -------------------------------------------------------------------------------- /AllPixMatrix/footage/22x22/README.txt: -------------------------------------------------------------------------------- 1 | This program is free software: you can redistribute it and/or modify 2 | it under the terms of the Attribution 4.0 International as published by 3 | Creative Commons. 4 | 5 | This program is distributed in the hope that it will be useful, 6 | but WITHOUT ANY WARRANTY; without even the implied warranty of 7 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 8 | 9 | You should have received a copy of the Attribution 4.0 International as published by 10 | Creative Commons or visit http://creativecommons.org/licenses/by/4.0/legalcode 11 | 12 | Original Author: Jeffrey Nygaard 13 | Company: Northern Lights Electronic Design, LLC 14 | Date: January 18, 2014 15 | Contact: JNygaard@NLEDshop.com 16 | 17 | ;============= www.NLEDShop.com/nledmatrix ============ 18 | ;============= www.NorthernLightsElectronicDesign.com ============ 19 | 20 | ;== Please Support Future Projects by Visiting the Store or Donating == 21 | 22 | Included is some footage, 22 x 22 pixel, Quicktime PNG video files and some example .dat video files 23 | 24 | They are made for my 22x22 round LED matrix, but they will expand to fit others, square is best. 25 | 26 | Most were created with Adobe After Effects. -------------------------------------------------------------------------------- /AllPixMatrix/footage/22x22/Rainbow.mov: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NLED/allpixmatrix/7a5106489cb6e2a822f058f42959be3130607eea/AllPixMatrix/footage/22x22/Rainbow.mov -------------------------------------------------------------------------------- /AllPixMatrix/footage/22x22/Rainbow2.mov: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NLED/allpixmatrix/7a5106489cb6e2a822f058f42959be3130607eea/AllPixMatrix/footage/22x22/Rainbow2.mov -------------------------------------------------------------------------------- /AllPixMatrix/footage/22x22/acid-magma-hicontrast.mov: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NLED/allpixmatrix/7a5106489cb6e2a822f058f42959be3130607eea/AllPixMatrix/footage/22x22/acid-magma-hicontrast.mov -------------------------------------------------------------------------------- /AllPixMatrix/footage/22x22/acid-magma.mov: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NLED/allpixmatrix/7a5106489cb6e2a822f058f42959be3130607eea/AllPixMatrix/footage/22x22/acid-magma.mov -------------------------------------------------------------------------------- /AllPixMatrix/footage/22x22/alienhead.mov: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NLED/allpixmatrix/7a5106489cb6e2a822f058f42959be3130607eea/AllPixMatrix/footage/22x22/alienhead.mov -------------------------------------------------------------------------------- /AllPixMatrix/footage/22x22/blocks-blue.mov: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NLED/allpixmatrix/7a5106489cb6e2a822f058f42959be3130607eea/AllPixMatrix/footage/22x22/blocks-blue.mov -------------------------------------------------------------------------------- /AllPixMatrix/footage/22x22/blue-mosaic.mov: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NLED/allpixmatrix/7a5106489cb6e2a822f058f42959be3130607eea/AllPixMatrix/footage/22x22/blue-mosaic.mov -------------------------------------------------------------------------------- /AllPixMatrix/footage/22x22/bluewaves.mov: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NLED/allpixmatrix/7a5106489cb6e2a822f058f42959be3130607eea/AllPixMatrix/footage/22x22/bluewaves.mov -------------------------------------------------------------------------------- /AllPixMatrix/footage/22x22/checker-board.mov: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NLED/allpixmatrix/7a5106489cb6e2a822f058f42959be3130607eea/AllPixMatrix/footage/22x22/checker-board.mov -------------------------------------------------------------------------------- /AllPixMatrix/footage/22x22/color-circle-rain.mov: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NLED/allpixmatrix/7a5106489cb6e2a822f058f42959be3130607eea/AllPixMatrix/footage/22x22/color-circle-rain.mov -------------------------------------------------------------------------------- /AllPixMatrix/footage/22x22/earth-rotate-1.mov: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NLED/allpixmatrix/7a5106489cb6e2a822f058f42959be3130607eea/AllPixMatrix/footage/22x22/earth-rotate-1.mov -------------------------------------------------------------------------------- /AllPixMatrix/footage/22x22/earth-rotate-2.mov: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NLED/allpixmatrix/7a5106489cb6e2a822f058f42959be3130607eea/AllPixMatrix/footage/22x22/earth-rotate-2.mov -------------------------------------------------------------------------------- /AllPixMatrix/footage/22x22/earth-shrunk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NLED/allpixmatrix/7a5106489cb6e2a822f058f42959be3130607eea/AllPixMatrix/footage/22x22/earth-shrunk.png -------------------------------------------------------------------------------- /AllPixMatrix/footage/22x22/earth-spin-contrast.mov: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NLED/allpixmatrix/7a5106489cb6e2a822f058f42959be3130607eea/AllPixMatrix/footage/22x22/earth-spin-contrast.mov -------------------------------------------------------------------------------- /AllPixMatrix/footage/22x22/fast-stars.mov: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NLED/allpixmatrix/7a5106489cb6e2a822f058f42959be3130607eea/AllPixMatrix/footage/22x22/fast-stars.mov -------------------------------------------------------------------------------- /AllPixMatrix/footage/22x22/greenrain.mov: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NLED/allpixmatrix/7a5106489cb6e2a822f058f42959be3130607eea/AllPixMatrix/footage/22x22/greenrain.mov -------------------------------------------------------------------------------- /AllPixMatrix/footage/22x22/jupiter-shrunk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NLED/allpixmatrix/7a5106489cb6e2a822f058f42959be3130607eea/AllPixMatrix/footage/22x22/jupiter-shrunk.png -------------------------------------------------------------------------------- /AllPixMatrix/footage/22x22/magma-long.mov: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NLED/allpixmatrix/7a5106489cb6e2a822f058f42959be3130607eea/AllPixMatrix/footage/22x22/magma-long.mov -------------------------------------------------------------------------------- /AllPixMatrix/footage/22x22/magma.mov: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NLED/allpixmatrix/7a5106489cb6e2a822f058f42959be3130607eea/AllPixMatrix/footage/22x22/magma.mov -------------------------------------------------------------------------------- /AllPixMatrix/footage/22x22/new-earth.mov: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NLED/allpixmatrix/7a5106489cb6e2a822f058f42959be3130607eea/AllPixMatrix/footage/22x22/new-earth.mov -------------------------------------------------------------------------------- /AllPixMatrix/footage/22x22/pink-blue-cellmosaic.mov: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NLED/allpixmatrix/7a5106489cb6e2a822f058f42959be3130607eea/AllPixMatrix/footage/22x22/pink-blue-cellmosaic.mov -------------------------------------------------------------------------------- /AllPixMatrix/footage/22x22/sampleimg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NLED/allpixmatrix/7a5106489cb6e2a822f058f42959be3130607eea/AllPixMatrix/footage/22x22/sampleimg.png -------------------------------------------------------------------------------- /AllPixMatrix/footage/22x22/snowing.mov: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NLED/allpixmatrix/7a5106489cb6e2a822f058f42959be3130607eea/AllPixMatrix/footage/22x22/snowing.mov -------------------------------------------------------------------------------- /AllPixMatrix/footage/22x22/starburst.mov: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NLED/allpixmatrix/7a5106489cb6e2a822f058f42959be3130607eea/AllPixMatrix/footage/22x22/starburst.mov -------------------------------------------------------------------------------- /AllPixMatrix/footage/22x22/testbars-nomove.mov: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NLED/allpixmatrix/7a5106489cb6e2a822f058f42959be3130607eea/AllPixMatrix/footage/22x22/testbars-nomove.mov -------------------------------------------------------------------------------- /AllPixMatrix/footage/22x22/testbars.mov: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NLED/allpixmatrix/7a5106489cb6e2a822f058f42959be3130607eea/AllPixMatrix/footage/22x22/testbars.mov -------------------------------------------------------------------------------- /AllPixMatrix/footage/22x22/turquoise-tissue.mov: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NLED/allpixmatrix/7a5106489cb6e2a822f058f42959be3130607eea/AllPixMatrix/footage/22x22/turquoise-tissue.mov -------------------------------------------------------------------------------- /AllPixMatrix/footage/22x22/twinkle.mov: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NLED/allpixmatrix/7a5106489cb6e2a822f058f42959be3130607eea/AllPixMatrix/footage/22x22/twinkle.mov -------------------------------------------------------------------------------- /AllPixMatrix/footage/22x22/wave-warp.mov: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NLED/allpixmatrix/7a5106489cb6e2a822f058f42959be3130607eea/AllPixMatrix/footage/22x22/wave-warp.mov -------------------------------------------------------------------------------- /AllPixMatrix/footage/22x22/waves-colorcycle.mov: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NLED/allpixmatrix/7a5106489cb6e2a822f058f42959be3130607eea/AllPixMatrix/footage/22x22/waves-colorcycle.mov -------------------------------------------------------------------------------- /AllPixMatrix/footage/22x22/white-lines-2.mov: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NLED/allpixmatrix/7a5106489cb6e2a822f058f42959be3130607eea/AllPixMatrix/footage/22x22/white-lines-2.mov -------------------------------------------------------------------------------- /AllPixMatrix/footage/22x22/white-lines.mov: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NLED/allpixmatrix/7a5106489cb6e2a822f058f42959be3130607eea/AllPixMatrix/footage/22x22/white-lines.mov -------------------------------------------------------------------------------- /AllPixMatrix/footage/22x22/white-turq-smoke.mov: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NLED/allpixmatrix/7a5106489cb6e2a822f058f42959be3130607eea/AllPixMatrix/footage/22x22/white-turq-smoke.mov -------------------------------------------------------------------------------- /AllPixMatrix/footage/22x22/whitelines3.mov: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NLED/allpixmatrix/7a5106489cb6e2a822f058f42959be3130607eea/AllPixMatrix/footage/22x22/whitelines3.mov -------------------------------------------------------------------------------- /AllPixMatrix/footage/22x22/whiterain.mov: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NLED/allpixmatrix/7a5106489cb6e2a822f058f42959be3130607eea/AllPixMatrix/footage/22x22/whiterain.mov -------------------------------------------------------------------------------- /AllPixMatrix/footage/earth-flat-contrast.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NLED/allpixmatrix/7a5106489cb6e2a822f058f42959be3130607eea/AllPixMatrix/footage/earth-flat-contrast.png -------------------------------------------------------------------------------- /AllPixMatrix/footage/earth-flat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NLED/allpixmatrix/7a5106489cb6e2a822f058f42959be3130607eea/AllPixMatrix/footage/earth-flat.png -------------------------------------------------------------------------------- /AllPixMatrix/footage/fractal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NLED/allpixmatrix/7a5106489cb6e2a822f058f42959be3130607eea/AllPixMatrix/footage/fractal.png -------------------------------------------------------------------------------- /AllPixMatrix/footage/laser-image.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NLED/allpixmatrix/7a5106489cb6e2a822f058f42959be3130607eea/AllPixMatrix/footage/laser-image.jpg -------------------------------------------------------------------------------- /AllPixMatrix/functions.pde: -------------------------------------------------------------------------------- 1 | 2 | //====================================================================================================== 3 | 4 | void createMediaContentObj(String passedStr, int passedTypeID, int passedGenType, String passedFilePath) 5 | { 6 | println("createMediaContentObj() "+passedTypeID+" "+workingTileID+" "+DefinedMediaTiles); 7 | 8 | SelectedFilePath = passedFilePath; //required for loadMediaSource(); 9 | 10 | /* 11 | //changes file path from absolute to relative, not needed as of now 12 | if(passedTypeID != 0 && passedTypeID != cTypeIDGenerated && passedTypeID != cTypeIDSpout) 13 | { 14 | //if media type uses a file path, print it out and edit the file path 15 | println("Starting with path "+SelectedFilePath); 16 | //if (matrix.footageFilePathMethod == false) 17 | SelectedFilePath = SelectedFilePath.replace(sketchPath(""), ""); //create relative path 18 | //else absolute 19 | println("Using path "+SelectedFilePath); 20 | } 21 | */ 22 | 23 | mediaContentTile[workingTileID] = new mediaContentObj(passedStr, workingTileID); 24 | mediaContentTile[workingTileID].generatedType = passedGenType; //must be set before loadMediaSource() 25 | mediaContentTile[workingTileID].loadMediaSource(passedTypeID); //loads and intializes the content 26 | 27 | if (workingTileID > DefinedMediaTiles) 28 | { 29 | DefinedMediaTiles++; //keeps global count, only increment if a new media tile. Rather than redefining 30 | //Since a media tile was added adjust media tiles scroll bar. Don't like this way but is quick and easy 31 | mediaContentSliderFunc(); //run call back that adjust the max value 32 | mediaContentScrollBar.value = mediaContentScrollBar.max; //set to max so user sees the add button 33 | } 34 | } 35 | 36 | //====================================================================================================== 37 | 38 | float scaleImageRatio(int image_width, int image_height, int reference_width, int reference_height) 39 | { 40 | float ratio = max((float)image_width / reference_width, (float)image_height / reference_height); 41 | return ratio; 42 | } 43 | 44 | int scaleImageW(int image_width, int image_height, int reference_width, int reference_height) 45 | { 46 | float ratio = max((float)image_width / reference_width, (float)image_height / reference_height); 47 | // println("W: "+ratio+" "+int((float)image_width / ratio)); 48 | return int((float)image_width / ratio); 49 | } 50 | 51 | int scaleImageH(int image_width, int image_height, int reference_width, int reference_height) 52 | { 53 | float ratio = max((float)image_width / reference_width, (float)image_height / reference_height); 54 | // println("H: "+ratio+" "+int((float)image_height / ratio)); 55 | return int((float)image_height / ratio); 56 | } 57 | 58 | 59 | //====================================================================================================== 60 | 61 | //going to add a lot more to this 62 | String StatusMessage() 63 | { 64 | String tempStr = ""; 65 | 66 | if(matrix.transmissionType == 3) tempStr = "Transmitting Artnet universe(s) on "+matrix.outputNetworkIPAdr; 67 | else tempStr = "You are connected to COM "+serialPort; 68 | 69 | return tempStr; 70 | } 71 | 72 | //====================================================================================================== 73 | 74 | //Since the object is not yet created this will see if it is available or direct it to the NULL contentTile until loadSource is ran 75 | int getmediaContentObjTypeID() 76 | { 77 | int temp = 0; 78 | 79 | try { 80 | temp = mediaContentTile[workingTileID].typeID; 81 | } 82 | catch(Exception e) 83 | { 84 | temp = 0; 85 | } 86 | return temp; 87 | } 88 | 89 | //====================================================================================================== 90 | 91 | void handleEffectsFilterElements(int passedVal) 92 | { 93 | println("handleEffectsFilterElements() with "+passedVal+" "); 94 | 95 | //sets the status and range of effectsFilterInputField based on effectFilterIDNum 96 | 97 | effectsFilterInputField.status = 0;//0=show, 1=grey out, 2=hide 98 | 99 | if (cFilterIDStr[passedVal] == THRESHOLD) 100 | { 101 | effectsFilterInputField.status = 0;//0=show, 1=grey out, 2=hide 102 | effectsFilterInputField.inputMethod = 3; //floats 103 | effectsFilterInputField.maxValue = 1; 104 | effectsFilterInputField.minValue = 0; 105 | effectsFilterInputField.value = 0.5; 106 | effectsFilterInputField.label = ""+effectsFilterInputField.value; 107 | } 108 | else if (cFilterIDStr[passedVal] == POSTERIZE) 109 | { 110 | effectsFilterInputField.status = 0;//0=show, 1=grey out, 2=hide 111 | effectsFilterInputField.inputMethod = 1; //integers 112 | effectsFilterInputField.maxValue = 255; 113 | effectsFilterInputField.minValue = 2; 114 | effectsFilterInputField.value = 2; 115 | effectsFilterInputField.label = ""+int(effectsFilterInputField.value); 116 | } else if (cFilterIDStr[passedVal] == BLUR) 117 | { 118 | effectsFilterInputField.status = 0;//0=show, 1=grey out, 2=hide 119 | effectsFilterInputField.inputMethod = 1; //integers 120 | effectsFilterInputField.maxValue = 24; 121 | effectsFilterInputField.minValue = 1; 122 | effectsFilterInputField.value = 1; 123 | effectsFilterInputField.label = ""+int(effectsFilterInputField.value); 124 | } else effectsFilterInputField.status = 1;//0=show, 1=grey out, 2=hide 125 | } //end func 126 | 127 | //====================================================================================================== 128 | 129 | //Selects a media tile to place into layer 130 | void FillContentLayer(int passedVal) 131 | { 132 | contentLayerPtr.loadMediaToLayer(passedVal); 133 | SelectFeedID = 0; //clear as it indicates function 134 | } //end func 135 | 136 | //====================================================================================================== 137 | 138 | int scanSpoutReceivers() 139 | { 140 | int IDScanner = 0; 141 | //scans through the syphon/spout receivers, and finds the next undefined one. 142 | try { 143 | for (int i = 0; i != spoutReciever.length; i++) 144 | { 145 | img = spoutReciever[i].receivePixels(img); //try to read the spout buffer, if not there, object not defined 146 | IDScanner++; //increment counter 147 | } //end for() 148 | } 149 | catch(Exception e) 150 | { 151 | //found an undefined spout object 152 | println("Next Available Spout ID: "+IDScanner); 153 | } 154 | return IDScanner; 155 | } 156 | 157 | void createSpout(int passedID) 158 | { 159 | if (passedID >= cSoftwareMaxSpout) 160 | { 161 | println("Max Syphon/Spout objects reached"); 162 | return; 163 | } 164 | println("createSpout() with "+passedID); 165 | spoutReciever[passedID] = new Spout(this); 166 | } 167 | 168 | //====================================================================================================== 169 | 170 | //Checks if the user selected a file properly or just closed the dialog. 171 | boolean validateFileDialogSelection(File selection) 172 | { 173 | if (selection == null) { 174 | println("Window was closed or the user hit cancel."); 175 | return false; 176 | } 177 | else 178 | { 179 | println("User selected " + selection.getAbsolutePath()); 180 | 181 | SelectedFilePath = selection.getAbsolutePath(); 182 | // if (matrix.footageFilePathMethod == false) selection.getAbsolutePath().replace(sketchPath(""), ""); //create relative path 183 | // else SelectedFilePath = selection.getAbsolutePath(); //absolute 184 | return true; 185 | } 186 | } //end func 187 | 188 | //====================================================================================================== 189 | 190 | void CloseOverLayMenu() 191 | { 192 | println("CloseOverLayMenu()"); 193 | OverlayMenuID = 0; 194 | SelectFeedID = 0; 195 | SelectLayerID = 0; 196 | GlobalDDOpen = false; 197 | } 198 | 199 | //====================================================================================================== 200 | 201 | void OpenOverlayMenu(int passedID, int passedArgument1) 202 | { 203 | println("OpenOverlayMenu("+passedID+") Passed1: "+passedArgument1); 204 | 205 | OverlayMenuID = passedID; 206 | //what else to do? 207 | 208 | if (passedID == cOverlayMediaTileMenu) 209 | { 210 | workingTileID = passedArgument1; 211 | } //end if() 212 | else if (passedID == cOverlayEffectsMenu) 213 | { 214 | //the per layer EffectsMenu is Open 215 | //contentLayerPtr is already updated 216 | effectsOptionsDD.setValue(contentLayerPtr.effectFilterIDNum); 217 | handleEffectsFilterElements(effectsOptionsDD.getValue()); 218 | } 219 | guiOverlayMenus[OverlayMenuID].initMenu(); 220 | } //end func 221 | 222 | //====================================================================================================== 223 | 224 | void displayMediaTiles() 225 | { 226 | 227 | try { 228 | //for (int i=1; i != mediaContentTile.length; i++) 229 | for (int i=1; i != (DefinedMediaTiles+1)-mediaContentScrollBar.value; i++) 230 | { 231 | mediaContentTile[i+mediaContentScrollBar.getValue()].display(10+((i-1)*90), 655); //starts at tile #1 232 | } //end for 233 | } 234 | catch(Exception e) { 235 | //println("Problem with content tiles"); 236 | } 237 | 238 | //These buttons are never shown but are used for over() detection 239 | //for (int i=0; i != mediaTileSelectionButtons.length; i++) mediaTileSelectionButtons[i].display(); 240 | 241 | //Displays the (+) add Source button to the tile area 242 | if ((DefinedMediaTiles-mediaContentScrollBar.value) < mediaTileSelectionButtons.length) 243 | { 244 | if ((DefinedMediaTiles-mediaContentScrollBar.value) >= 0) 245 | { 246 | //println("VALUE IS: "+DefinedMediaTiles+" "+mediaContentScrollBar.Value+" "+mediaTileSelectionButtons.length); 247 | mediaTileSelectionButtons[(DefinedMediaTiles)-mediaContentScrollBar.value].display(); 248 | } 249 | } 250 | } //end displayMediaTiles() 251 | 252 | //====================================================================================================== 253 | 254 | void stop() 255 | { 256 | try { 257 | fw.close(); 258 | bw.close(); 259 | serialPort.dispose(); 260 | externalSerialPort.dispose(); 261 | } 262 | catch(Exception e) { 263 | } 264 | } 265 | 266 | //====================================================================================================== 267 | 268 | void SetFeedAPausePlay(int passedVal) 269 | { 270 | println("SetFeedAPausePlay("+passedVal+")"); 271 | FeedPlayModeA = passedVal; 272 | mediaContentTile[contentLayerA[0].mediaIDNum].setPlayMode(passedVal); 273 | mediaContentTile[contentLayerA[1].mediaIDNum].setPlayMode(passedVal); 274 | mediaContentTile[contentLayerA[2].mediaIDNum].setPlayMode(passedVal); 275 | 276 | //update layer play/pause GUI elements - this could be done somewhere better 277 | for (int i = 0; i != feedLayersPlayPauseA.length; i++) 278 | { 279 | if (mediaContentTile[contentLayerA[i].mediaIDNum].playMode == 0) feedLayersPlayPauseA[i].selected = false; 280 | else feedLayersPlayPauseA[i].selected = true; 281 | } //end for 282 | } 283 | 284 | //====================================================================================================== 285 | 286 | void SetFeedBPausePlay(int passedVal) 287 | { 288 | println("SetFeedBPausePlay("+passedVal+")"); 289 | FeedPlayModeB = passedVal; 290 | mediaContentTile[contentLayerB[0].mediaIDNum].setPlayMode(passedVal); 291 | mediaContentTile[contentLayerB[1].mediaIDNum].setPlayMode(passedVal); 292 | mediaContentTile[contentLayerB[2].mediaIDNum].setPlayMode(passedVal); 293 | 294 | //update layer play/pause GUI elements - this could be done somewhere better 295 | for (int i = 0; i != feedLayersPlayPauseA.length; i++) 296 | { 297 | if (mediaContentTile[contentLayerB[i].mediaIDNum].playMode == 0) feedLayersPlayPauseB[i].selected = false; 298 | else feedLayersPlayPauseB[i].selected = true; 299 | } //end for 300 | } 301 | //====================================================================================================== 302 | 303 | 304 | -------------------------------------------------------------------------------- /AllPixMatrix/generatedCallBacks.pde: -------------------------------------------------------------------------------- 1 | //====================================================================================================== 2 | 3 | void generatedContentBarsModeFunc() 4 | { 5 | genContentBars[mediaContentTile[workingTileID].instanceID].mode = DropDownPointer.getValue(); 6 | } 7 | 8 | void generatedContentBarsAudioModeFunc() 9 | { 10 | genContentBars[mediaContentTile[workingTileID].instanceID].audioMode = DropDownPointer.getValue(); 11 | } 12 | 13 | void generatedContentBarsWidthFunc() 14 | { 15 | genericNumberInputField(); 16 | genContentBars[mediaContentTile[workingTileID].instanceID].barWidth = (int)numberInputFieldPtr.value; 17 | } 18 | 19 | void generatedContentBarsSpacingFunc() 20 | { 21 | genericNumberInputField(); 22 | genContentBars[mediaContentTile[workingTileID].instanceID].barSpacing = (int)numberInputFieldPtr.value; 23 | } 24 | 25 | void generatedContentBarsAmplitudeFunc() 26 | { 27 | genericNumberInputField(); 28 | genContentBars[mediaContentTile[workingTileID].instanceID].barAmplitude = (int)numberInputFieldPtr.value; 29 | } 30 | 31 | void generatedContentBarsDecayFunc() 32 | { 33 | genericNumberInputField(); 34 | genContentBars[mediaContentTile[workingTileID].instanceID].decay = numberInputFieldPtr.value; //stay as float 35 | } 36 | 37 | void generatedContentBarsFillColorFunc() 38 | { 39 | genContentBars[mediaContentTile[workingTileID].instanceID].fillColor = colorSquarePtr.selColor; 40 | } 41 | 42 | //====================================================================================================== 43 | 44 | void generatedContentSineWaveModeFunc() 45 | { 46 | genContentSineWave[mediaContentTile[workingTileID].instanceID].mode = DropDownPointer.getValue(); 47 | } 48 | 49 | void generatedContentSineWaveAudioModeFunc() 50 | { 51 | genContentSineWave[mediaContentTile[workingTileID].instanceID].audioMode = DropDownPointer.getValue(); 52 | } 53 | 54 | void generatedContentSineWaveYOffsetFunc() 55 | { 56 | genericNumberInputField(); 57 | genContentSineWave[mediaContentTile[workingTileID].instanceID].yOffset = (int)numberInputFieldPtr.value; 58 | } 59 | 60 | void generatedContentSineWaveAmplitudeFunc() 61 | { 62 | genericNumberInputField(); 63 | genContentSineWave[mediaContentTile[workingTileID].instanceID].amplitude = (int)numberInputFieldPtr.value; 64 | } 65 | 66 | void generatedContentSineWavePeriodFunc() 67 | { 68 | genericNumberInputField(); 69 | genContentSineWave[mediaContentTile[workingTileID].instanceID].period = (int)numberInputFieldPtr.value; 70 | } 71 | 72 | void generatedContentSineWaveDecayFunc() 73 | { 74 | genericNumberInputField(); 75 | genContentSineWave[mediaContentTile[workingTileID].instanceID].decay = numberInputFieldPtr.value; //stay as float 76 | } 77 | 78 | void generatedContentSineWaveFillColorFunc() 79 | { 80 | genContentSineWave[mediaContentTile[workingTileID].instanceID].fillColor = colorSquarePtr.selColor; 81 | } 82 | 83 | //====================================================================================================== 84 | 85 | void generatedContentColorGenFunc() 86 | { 87 | genContentSolidColor[mediaContentTile[workingTileID].instanceID].bgColor = color(guiColorSelectorMenu.red, guiColorSelectorMenu.green, guiColorSelectorMenu.blue, guiColorSelectorMenu.alpha); //colorSquarePtr.selColor; 88 | } 89 | 90 | //====================================================================================================== 91 | 92 | void generatedContentTemplateSmoothingFunc() 93 | { 94 | //stuff 95 | } 96 | 97 | void generatedContentTemplateStrokeWidthFunc() 98 | { 99 | genericNumberInputField(); 100 | //set variables or actions 101 | } 102 | 103 | void generatedContentTemplateSizeFunc() 104 | { 105 | genericNumberInputField(); 106 | //set variables or actions 107 | } 108 | 109 | //====================================================================================================== 110 | 111 | void generatedContent3DShapeStrokeColorFunc() 112 | { 113 | genContent3DShape[mediaContentTile[workingTileID].instanceID].strokeColor = colorSquarePtr.selColor; 114 | } 115 | 116 | void generatedContent3DShapeSizeFunc() 117 | { 118 | genericNumberInputField(); 119 | genContent3DShape[mediaContentTile[workingTileID].instanceID].size = (int)numberInputFieldPtr.value; 120 | } 121 | 122 | void generatedContent3DShapeStrokeWidthFunc() 123 | { 124 | genericNumberInputField(); 125 | genContent3DShape[mediaContentTile[workingTileID].instanceID].strokeWeight = (int)numberInputFieldPtr.value; 126 | } 127 | 128 | void generatedContent3DShapeRotXFunc() 129 | { 130 | genericNumberInputField(); 131 | genContent3DShape[mediaContentTile[workingTileID].instanceID].rotationValX = (int)numberInputFieldPtr.value; 132 | } 133 | 134 | void generatedContent3DShapeRotYFunc() 135 | { 136 | genericNumberInputField(); 137 | genContent3DShape[mediaContentTile[workingTileID].instanceID].rotationValY = (int)numberInputFieldPtr.value; 138 | } 139 | 140 | void generatedContent3DShapeSmoothingFunc() 141 | { 142 | genContent3DShape[mediaContentTile[workingTileID].instanceID].enableSmoothing = gen3DShapeEnableSmoothing.selected; 143 | } 144 | 145 | //====================================================================================================== 146 | 147 | void generatedContent2DShapeRotSpeedFunc() 148 | { 149 | genericNumberInputField(); 150 | genContent2DShape[mediaContentTile[workingTileID].instanceID].rotationSpeed = (int)numberInputFieldPtr.value; 151 | } 152 | 153 | void generatedContent2DShapeZoomSpeedFunc() 154 | { 155 | genericNumberInputField(); 156 | genContent2DShape[mediaContentTile[workingTileID].instanceID].zoomSpeed = (int)numberInputFieldPtr.value; 157 | } 158 | 159 | void generatedContent2DShapeZoomMinFunc() 160 | { 161 | genericNumberInputField(); 162 | genContent2DShape[mediaContentTile[workingTileID].instanceID].zoomMin = (int)numberInputFieldPtr.value; 163 | } 164 | 165 | void generatedContent2DShapeZoomMaxFunc() 166 | { 167 | genericNumberInputField(); 168 | genContent2DShape[mediaContentTile[workingTileID].instanceID].zoomMax = (int)numberInputFieldPtr.value; 169 | } 170 | 171 | void generatedContent2DShapeFillColorFunc() 172 | { 173 | genContent2DShape[mediaContentTile[workingTileID].instanceID].fillColor = colorSquarePtr.selColor; 174 | } 175 | 176 | void generatedContent2DShapeStrokeColorFunc() 177 | { 178 | genContent2DShape[mediaContentTile[workingTileID].instanceID].strokeColor = colorSquarePtr.selColor; 179 | } 180 | 181 | void generatedContent2DShapeStrokeWidthFunc() 182 | { 183 | genericNumberInputField(); 184 | genContent2DShape[mediaContentTile[workingTileID].instanceID].strokeWeight = (int)numberInputFieldPtr.value; 185 | } 186 | 187 | void generatedContent2DShapeSizeFunc() 188 | { 189 | genericNumberInputField(); 190 | genContent2DShape[mediaContentTile[workingTileID].instanceID].baseSize = (int)numberInputFieldPtr.value; 191 | } 192 | 193 | void generatedContent2DShapeSmoothingFunc() 194 | { 195 | genContent2DShape[mediaContentTile[workingTileID].instanceID].enableSmoothing = gen2DShapeEnableSmoothing.selected; 196 | } 197 | 198 | //====================================================================================================== 199 | 200 | void generatedContentSpiralColorFunc() 201 | { 202 | genContentSpiral[mediaContentTile[workingTileID].instanceID].strokeColor = colorSquarePtr.selColor; 203 | } 204 | 205 | void generatedContentSpiralColorModeFunc() 206 | { 207 | genContentSpiral[mediaContentTile[workingTileID].instanceID].colorMode = genSpiralColorMode.getValue(); 208 | } 209 | 210 | void generatedContentSpiralModeVariableFunc() 211 | { 212 | genericNumberInputField(); 213 | genContentSpiral[mediaContentTile[workingTileID].instanceID].modeVariable = (int)numberInputFieldPtr.value; 214 | } 215 | 216 | void generatedContentSpiralCoilsFunc() 217 | { 218 | genericNumberInputField(); 219 | genContentSpiral[mediaContentTile[workingTileID].instanceID].coils = (int)numberInputFieldPtr.value; 220 | } 221 | 222 | void generatedContentSpiralDecayFunc() 223 | { 224 | genericNumberInputField(); 225 | genContentSpiral[mediaContentTile[workingTileID].instanceID].decay = numberInputFieldPtr.value; //stay as float 226 | } 227 | 228 | //====================================================================================================== 229 | 230 | void generatedContentRipplAmplitudeFunc() 231 | { 232 | genericNumberInputField(); 233 | genContentRipples[mediaContentTile[workingTileID].instanceID].amplitude = (int)numberInputFieldPtr.value; 234 | } 235 | 236 | void generatedContentRipplAudioModeFunc() 237 | { 238 | genContentRipples[mediaContentTile[workingTileID].instanceID].audioMode = DropDownPointer.getValue(); 239 | } 240 | 241 | void generatedContentRippleFillColorFunc() 242 | { 243 | genContentRipples[mediaContentTile[workingTileID].instanceID].fillColor = colorSquarePtr.selColor; 244 | } 245 | 246 | void generatedContentRippleStrokeColorFunc() 247 | { 248 | genContentRipples[mediaContentTile[workingTileID].instanceID].strokeColor = colorSquarePtr.selColor; 249 | } 250 | 251 | void generatedContentRippleFillMethod() 252 | { 253 | genContentRipples[mediaContentTile[workingTileID].instanceID].fillMethod = DropDownPointer.getValue(); 254 | } 255 | 256 | void generatedContentRippleShape() 257 | { 258 | genContentRipples[mediaContentTile[workingTileID].instanceID].shape = DropDownPointer.getValue(); 259 | } 260 | 261 | void generatedContentRippleStrokeWidth() 262 | { 263 | genericNumberInputField(); 264 | genContentRipples[mediaContentTile[workingTileID].instanceID].strokeWeight = (int)numberInputFieldPtr.value; 265 | } 266 | 267 | //====================================================================================================== 268 | 269 | void generatedContentMetaBallsColorFunc() 270 | { 271 | genContentMetaBalls[mediaContentTile[workingTileID].instanceID].fillColor = colorSquarePtr.selColor; 272 | } 273 | 274 | void generatedContentMetaBallsColorModeFunc() 275 | { 276 | genContentMetaBalls[mediaContentTile[workingTileID].instanceID].colorMode = genMetaBallsColorMode.getValue(); 277 | } 278 | 279 | void generatedContentMetaBallsAmountFunc() 280 | { 281 | genericNumberInputField(); 282 | genContentMetaBalls[mediaContentTile[workingTileID].instanceID].ballAmount = (int)numberInputFieldPtr.value; 283 | } 284 | 285 | void generatedContentMetaBallsSizeFunc() 286 | { 287 | genericNumberInputField(); 288 | genContentMetaBalls[mediaContentTile[workingTileID].instanceID].ballSize = (int)numberInputFieldPtr.value; 289 | } 290 | 291 | void generatedContentMetaBallsFrequencyFunc() 292 | { 293 | genericNumberInputField(); 294 | genContentMetaBalls[mediaContentTile[workingTileID].instanceID].colorFrequency = (int)numberInputFieldPtr.value; 295 | } 296 | 297 | //====================================================================================================== 298 | 299 | void generatedContentFallingColorFunc() 300 | { 301 | genContentFallingBlocks[mediaContentTile[workingTileID].instanceID].fillColor = colorSquarePtr.selColor; 302 | } 303 | 304 | void generatedContentFallingBlocksDirectionFunc() 305 | { 306 | genContentFallingBlocks[mediaContentTile[workingTileID].instanceID].direction = genFallingBlocksDirection.getValue(); 307 | } 308 | 309 | void generatedContentFallingBlocksSizeFunc() 310 | { 311 | genericNumberInputField(); 312 | genContentFallingBlocks[mediaContentTile[workingTileID].instanceID].size = (int)numberInputFieldPtr.value; 313 | } 314 | 315 | void generatedContentFallingBlocksDecayFunc() 316 | { 317 | genericNumberInputField(); 318 | genContentFallingBlocks[mediaContentTile[workingTileID].instanceID].decay = numberInputFieldPtr.value; //already a float, no typecast 319 | } 320 | 321 | void generatedContentFallingBlocksFreqFunc() 322 | { 323 | genericNumberInputField(); 324 | genContentFallingBlocks[mediaContentTile[workingTileID].instanceID].frequency = (int)numberInputFieldPtr.value; 325 | } 326 | 327 | //====================================================================================================== 328 | 329 | void generatedContentStarsStrokeColorFunc() 330 | { 331 | genContentStarField[mediaContentTile[workingTileID].instanceID].strokeColor = colorSquarePtr.selColor; 332 | } 333 | 334 | void generatedContentStarsColorFunc() 335 | { 336 | genContentStarField[mediaContentTile[workingTileID].instanceID].fillColor = colorSquarePtr.selColor; 337 | } 338 | 339 | void generatedContentStarsZDistFunc() 340 | { 341 | genContentStarField[mediaContentTile[workingTileID].instanceID].starZDist = genStarsZDistEnable.selected; 342 | } 343 | 344 | void generatedContentStarsStrokeFunc() 345 | { 346 | genericNumberInputField(); 347 | genContentStarField[mediaContentTile[workingTileID].instanceID].starStrokeWidth = (int)numberInputFieldPtr.value; 348 | } 349 | 350 | void generatedContentStarsShapeFuncSizeFunc() 351 | { 352 | genericNumberInputField(); 353 | genContentStarField[mediaContentTile[workingTileID].instanceID].starSize = (int)numberInputFieldPtr.value; 354 | } 355 | 356 | void generatedContentStarsQuantityFunc() 357 | { 358 | genericNumberInputField(); 359 | genContentStarField[mediaContentTile[workingTileID].instanceID].starQuantity = (int)numberInputFieldPtr.value; 360 | } 361 | 362 | void generatedContentStarsShapeFunc() 363 | { 364 | genContentStarField[mediaContentTile[workingTileID].instanceID].starShape = genStarsShapeDD.getValue(); 365 | } 366 | 367 | void generatedContentStarsDecayFunc() 368 | { 369 | genericNumberInputField(); 370 | genContentStarField[mediaContentTile[workingTileID].instanceID].decay = numberInputFieldPtr.value; 371 | } 372 | 373 | //====================================================================================================== 374 | 375 | void generatedContentTextBGColorFunc() 376 | { 377 | genContentText[mediaContentTile[workingTileID].instanceID].bgColor = colorSquarePtr.selColor; 378 | } 379 | 380 | void generatedContentTextColorFunc() 381 | { 382 | genContentText[mediaContentTile[workingTileID].instanceID].fillColor = colorSquarePtr.selColor; 383 | } 384 | 385 | void generatedContentTextSizeFunc() 386 | { 387 | genericNumberInputField(); 388 | genContentText[mediaContentTile[workingTileID].instanceID].textSize = (int)numberInputFieldPtr.value; 389 | println("Used "+mediaContentTile[workingTileID].instanceID); 390 | } 391 | 392 | void generatedContentTextXFunc() 393 | { 394 | genericNumberInputField(); 395 | genContentText[mediaContentTile[workingTileID].instanceID].xOffset = (int)numberInputFieldPtr.value; 396 | } 397 | 398 | void generatedContentTextYFunc() 399 | { 400 | genericNumberInputField(); 401 | genContentText[mediaContentTile[workingTileID].instanceID].yOffset = (int)numberInputFieldPtr.value; 402 | } 403 | 404 | void generatedContentTextLabelFunc() 405 | { 406 | genContentText[mediaContentTile[workingTileID].instanceID].textLabel = genTextLabel.label; 407 | genericHandlerTextField(); // just sets pointer obj to false 408 | } 409 | 410 | void generatedContentTextScrollType() 411 | { 412 | genContentText[mediaContentTile[workingTileID].instanceID].scrollingType = genTextScrollTypeDD.getValue(); 413 | genContentText[mediaContentTile[workingTileID].instanceID].scrollVal = 0; //reset scrolling value when type is changed 414 | } 415 | 416 | 417 | //====================================================================================================== 418 | -------------------------------------------------------------------------------- /AllPixMatrix/guiCallBacks.pde: -------------------------------------------------------------------------------- 1 | 2 | //====================================================================================================== 3 | 4 | void mainBlendModeFunc() 5 | { 6 | MainBlendMode = mainBlendModeDD.getValue(); //DropDownPointer.getValue(); 7 | } 8 | 9 | //====================================================================================================== 10 | 11 | void effectMaxColorSliderRFunc() 12 | { 13 | contentLayerPtr.maxColor = color(SliderPointer.getUnsignedChar(), green(contentLayerPtr.maxColor), blue(contentLayerPtr.maxColor)); 14 | guiOverlayMenus[OverlayMenuID].initMenu(); 15 | } 16 | 17 | void effectMaxColorSliderGFunc() 18 | { 19 | contentLayerPtr.maxColor = color(red(contentLayerPtr.maxColor), SliderPointer.getUnsignedChar(), blue(contentLayerPtr.maxColor)); 20 | guiOverlayMenus[OverlayMenuID].initMenu(); 21 | } 22 | 23 | void effectMaxColorSliderBFunc() 24 | { 25 | contentLayerPtr.maxColor = color(red(contentLayerPtr.maxColor), green(contentLayerPtr.maxColor), SliderPointer.getUnsignedChar()); 26 | guiOverlayMenus[OverlayMenuID].initMenu(); 27 | } 28 | 29 | void effectMinColorSliderRFunc() 30 | { 31 | contentLayerPtr.minColor = color(SliderPointer.getUnsignedChar(), green(contentLayerPtr.minColor), blue(contentLayerPtr.minColor)); 32 | guiOverlayMenus[OverlayMenuID].initMenu(); 33 | } 34 | 35 | void effectMinColorSliderGFunc() 36 | { 37 | contentLayerPtr.minColor = color(red(contentLayerPtr.minColor), SliderPointer.getUnsignedChar(), blue(contentLayerPtr.minColor)); 38 | guiOverlayMenus[OverlayMenuID].initMenu(); 39 | } 40 | 41 | void effectMinColorSliderBFunc() 42 | { 43 | contentLayerPtr.minColor = color(red(contentLayerPtr.minColor), green(contentLayerPtr.minColor), SliderPointer.getUnsignedChar()); 44 | guiOverlayMenus[OverlayMenuID].initMenu(); 45 | } 46 | 47 | //====================================================================================================== 48 | 49 | void effectMaxColorRFunc() 50 | { 51 | genericNumberInputField(); //common to all 52 | contentLayerPtr.maxColor = color((int)numberInputFieldPtr.value, green(contentLayerPtr.maxColor), blue(contentLayerPtr.maxColor)); 53 | guiOverlayMenus[OverlayMenuID].initMenu(); 54 | } 55 | 56 | void effectMaxColorGFunc() 57 | { 58 | genericNumberInputField(); //common to all 59 | contentLayerPtr.maxColor = color(red(contentLayerPtr.maxColor), (int)numberInputFieldPtr.value, blue(contentLayerPtr.maxColor)); 60 | guiOverlayMenus[OverlayMenuID].initMenu(); 61 | } 62 | 63 | void effectMaxColorBFunc() 64 | { 65 | genericNumberInputField(); //common to all 66 | contentLayerPtr.maxColor = color(red(contentLayerPtr.maxColor), green(contentLayerPtr.maxColor), (int)numberInputFieldPtr.value); 67 | guiOverlayMenus[OverlayMenuID].initMenu(); 68 | } 69 | 70 | void effectMinColorRFunc() 71 | { 72 | genericNumberInputField(); //common to all 73 | contentLayerPtr.minColor = color((int)numberInputFieldPtr.value, green(contentLayerPtr.minColor), blue(contentLayerPtr.minColor)); 74 | guiOverlayMenus[OverlayMenuID].initMenu(); 75 | } 76 | 77 | void effectMinColorGFunc() 78 | { 79 | genericNumberInputField(); //common to all 80 | contentLayerPtr.minColor = color(red(contentLayerPtr.minColor), (int)numberInputFieldPtr.value, blue(contentLayerPtr.minColor)); 81 | } 82 | 83 | void effectMinColorBFunc() 84 | { 85 | genericNumberInputField(); //common to all 86 | contentLayerPtr.minColor = color(red(contentLayerPtr.minColor), green(contentLayerPtr.minColor), (int)numberInputFieldPtr.value); 87 | guiOverlayMenus[OverlayMenuID].initMenu(); 88 | } 89 | 90 | //====================================================================================================== 91 | 92 | void effectsTintColor() 93 | { 94 | contentLayerPtr.tintColor = colorSquarePtr.selColor; 95 | } 96 | 97 | void effectContrastFunc() 98 | { 99 | genericNumberInputField(); //common to all 100 | contentLayerPtr.effectContrast = (int)numberInputFieldPtr.value; 101 | } 102 | 103 | //====================================================================================================== 104 | 105 | void layerBlendingModeFunc() 106 | { 107 | println("layerBlendingModeFunc()"); 108 | contentLayerPtr.blendMode = DropDownPointer.getValue(); 109 | } 110 | 111 | //====================================================================================================== 112 | 113 | void layerSpeedAdjFunc() 114 | { 115 | genericNumberInputField(); //common to all 116 | contentLayerPtr.setLayerFPS((int)numberInputFieldPtr.value); 117 | } 118 | 119 | //====================================================================================================== 120 | 121 | void layerOpacitySliderFunc() 122 | { 123 | contentLayerPtr.layerOpacity = SliderPointer.getUnsignedChar(); 124 | } 125 | 126 | //====================================================================================================== 127 | 128 | void colorSelectorSliderRed() 129 | { 130 | guiColorSelectorMenu.red = menuColorSelSliderRed.value; 131 | guiColorSelectorMenu.updateColorGUIElements(); 132 | } 133 | 134 | //====================================================================================================== 135 | 136 | void colorSelectorSliderGreen() 137 | { 138 | guiColorSelectorMenu.green = menuColorSelSliderGreen.value; 139 | guiColorSelectorMenu.updateColorGUIElements(); 140 | } 141 | 142 | //====================================================================================================== 143 | 144 | void colorSelectorSliderBlue() 145 | { 146 | guiColorSelectorMenu.blue = menuColorSelSliderBlue.value; 147 | guiColorSelectorMenu.updateColorGUIElements(); 148 | } 149 | 150 | //====================================================================================================== 151 | 152 | void colorSelectorSliderWhite() 153 | { 154 | guiColorSelectorMenu.white = menuColorSelSliderWhite.value; 155 | guiColorSelectorMenu.updateColorGUIElements(); 156 | } 157 | 158 | //====================================================================================================== 159 | 160 | void colorSelectorSliderAlpha() 161 | { 162 | guiColorSelectorMenu.alpha = menuColorSelSliderAlpha.value; 163 | guiColorSelectorMenu.updateColorGUIElements(); 164 | } 165 | 166 | //====================================================================================================== 167 | 168 | void colorSelectorValueRed() 169 | { 170 | genericNumberInputField(); 171 | guiColorSelectorMenu.red = (int)numberInputFieldPtr.value; 172 | menuColorSelSliderRed.setValue(guiColorSelectorMenu.red); 173 | } 174 | 175 | //====================================================================================================== 176 | 177 | void colorSelectorValueGreen() 178 | { 179 | genericNumberInputField(); 180 | guiColorSelectorMenu.green = (int)numberInputFieldPtr.value; 181 | menuColorSelSliderGreen.setValue(guiColorSelectorMenu.green); 182 | } 183 | 184 | //====================================================================================================== 185 | 186 | void colorSelectorValueBlue() 187 | { 188 | genericNumberInputField(); 189 | guiColorSelectorMenu.blue = (int)numberInputFieldPtr.value; 190 | menuColorSelSliderBlue.setValue(guiColorSelectorMenu.blue); 191 | } 192 | 193 | //====================================================================================================== 194 | 195 | void colorSelectorValueWhite() 196 | { 197 | genericNumberInputField(); 198 | guiColorSelectorMenu.white = (int)numberInputFieldPtr.value; 199 | menuColorSelSliderWhite.setValue(guiColorSelectorMenu.white); 200 | } 201 | 202 | //====================================================================================================== 203 | 204 | void colorSelectorValueAlpha() 205 | { 206 | genericNumberInputField(); 207 | guiColorSelectorMenu.alpha = (int)numberInputFieldPtr.value; 208 | menuColorSelSliderAlpha.setValue(guiColorSelectorMenu.alpha); //update slider 209 | } 210 | 211 | //====================================================================================================== 212 | 213 | void feedIntensityFuncA() 214 | { 215 | FeedIntensityA = 1-((float)intensitySliderA.value / 100); //convert to float 216 | } 217 | 218 | //====================================================================================================== 219 | 220 | void feedIntensityFuncB() 221 | { 222 | FeedIntensityB = 1-((float)intensitySliderB.value / 100); //convert to float 223 | } 224 | 225 | //====================================================================================================== 226 | 227 | void generatedMediaFPSFunc() 228 | { 229 | genericNumberInputField(); 230 | mediaContentTile[workingTileID].contentFPS = (int)numberInputFieldPtr.value; 231 | } 232 | 233 | //====================================================================================================== 234 | 235 | void scaleOptionsDDFunc() 236 | { 237 | mediaContentTile[workingTileID].scaleOption = imgScalingOptionsDD.getValue(); 238 | } 239 | 240 | //====================================================================================================== 241 | 242 | void mediaCropWFunc() 243 | { 244 | mediaMenuGUICropW.maxValue = (mediaContentTile[workingTileID].nativeWidth - mediaContentTile[workingTileID].offsetX); 245 | genericNumberInputField(); 246 | mediaContentTile[workingTileID].cropWidth = int(mediaMenuGUICropW.value); 247 | } 248 | 249 | void mediaCropHFunc() 250 | { 251 | mediaMenuGUICropH.maxValue = (mediaContentTile[workingTileID].nativeHeight - mediaContentTile[workingTileID].offsetY); 252 | genericNumberInputField(); 253 | mediaContentTile[workingTileID].cropHeight = int(mediaMenuGUICropH.value); 254 | } 255 | 256 | void mediaOffsetXFieldFunc() 257 | { 258 | contentOffsetX.maxValue = mediaContentTile[workingTileID].nativeWidth; //set max offset, which is image width 259 | genericNumberInputField(); 260 | mediaContentTile[workingTileID].offsetX = int(contentOffsetX.value); 261 | 262 | //update companion field if required 263 | if((mediaContentTile[workingTileID].nativeWidth - mediaContentTile[workingTileID].offsetX) < mediaContentTile[workingTileID].cropWidth) 264 | { 265 | mediaContentTile[workingTileID].cropWidth = (mediaContentTile[workingTileID].nativeWidth - mediaContentTile[workingTileID].offsetX); 266 | mediaMenuGUICropW.setValue(mediaContentTile[workingTileID].cropWidth); 267 | } 268 | } 269 | 270 | void mediaOffsetYFieldFunc() 271 | { 272 | contentOffsetY.maxValue = mediaContentTile[workingTileID].nativeHeight; //set max offset, which is image width 273 | genericNumberInputField(); 274 | mediaContentTile[workingTileID].offsetY = int(contentOffsetY.value); 275 | 276 | //update companion field if required 277 | if((mediaContentTile[workingTileID].nativeHeight - mediaContentTile[workingTileID].offsetY) < mediaContentTile[workingTileID].cropHeight) 278 | { 279 | mediaContentTile[workingTileID].cropHeight = (mediaContentTile[workingTileID].nativeHeight - mediaContentTile[workingTileID].offsetY); 280 | mediaMenuGUICropH.setValue(mediaContentTile[workingTileID].cropHeight); 281 | } 282 | } 283 | 284 | //====================================================================================================== 285 | 286 | void generatedMediaDDFunc() 287 | { 288 | println("generatedMediaDD() using ID#: "+workingTileID); 289 | 290 | //if currently a generated media content, dispose the object so it can be reused in the future 291 | DisposeGeneratedObjects(); 292 | 293 | mediaContentTile[workingTileID].generatedType = generatedMediaDD.getValue(); 294 | mediaContentTile[workingTileID].loadMediaSource(5); //5= ID for generated content 295 | guiOverlayMenus[OverlayMenuID].initMenu(); //this will intialize the locations of the GUI elements, since they will change 296 | mediaContentTile[workingTileID].updateMedia(); 297 | } 298 | 299 | //====================================================================================================== 300 | 301 | void effectsOptionsDDFunc() 302 | { 303 | println("effectsOptionsDDFunc()"); 304 | contentLayerPtr.effectFilterIDNum = effectsOptionsDD.getValue(); 305 | handleEffectsFilterElements(effectsOptionsDD.getValue()); 306 | } 307 | 308 | //====================================================================================================== 309 | 310 | void genericDDCallBack() 311 | { 312 | //do nothing 313 | } 314 | 315 | //====================================================================================================== 316 | 317 | void genericHandlerTextField() 318 | { 319 | textFieldPtr.selected = false; 320 | } 321 | 322 | //====================================================================================================== 323 | 324 | void effectsFilterInputFieldFunc() 325 | { 326 | genericNumberInputField(); 327 | contentLayerPtr.effectFilterVariable = effectsFilterInputField.value; 328 | } 329 | 330 | //====================================================================================================== 331 | 332 | void genericNumberInputField() 333 | { 334 | println("genericNumberInputField() with "+numberInputFieldPtr.selected); 335 | allowMousePressHold = true; //DEBUG - think I am keeping it 336 | 337 | if (numberInputFieldPtr.inputMethod == 3) //floats 338 | { 339 | switch(numberInputFieldPtr.selected) 340 | { 341 | case 0: 342 | break; 343 | case 1: //decrement 344 | if ((numberInputFieldPtr.value-0.1) > numberInputFieldPtr.minValue) numberInputFieldPtr.value-=0.05; 345 | else numberInputFieldPtr.value = numberInputFieldPtr.minValue; 346 | break; 347 | case 2: //increment 348 | if ((numberInputFieldPtr.value+0.1) < numberInputFieldPtr.maxValue) numberInputFieldPtr.value+=0.05; 349 | else numberInputFieldPtr.value = numberInputFieldPtr.maxValue; 350 | break; 351 | case 3: //typed in selection 352 | numberInputFieldPtr.selected = 0; //clear selection 353 | 354 | numberInputFieldPtr.value = float(numberInputFieldPtr.label); //covert string to float 355 | if (numberInputFieldPtr.value < numberInputFieldPtr.minValue) numberInputFieldPtr.value = numberInputFieldPtr.minValue; 356 | else if (numberInputFieldPtr.value > numberInputFieldPtr.maxValue) numberInputFieldPtr.value = numberInputFieldPtr.maxValue; 357 | break; 358 | } //end switch 359 | numberInputFieldPtr.label = str(numberInputFieldPtr.value); //not setValue() I guess 360 | return; 361 | } 362 | else if (numberInputFieldPtr.inputMethod == 1) //integers 363 | { 364 | switch(numberInputFieldPtr.selected) 365 | { 366 | case 0: 367 | break; 368 | case 1: //decrement 369 | if (numberInputFieldPtr.value > numberInputFieldPtr.minValue) numberInputFieldPtr.value--; 370 | break; 371 | case 2: //increment 372 | if (numberInputFieldPtr.value < numberInputFieldPtr.maxValue) numberInputFieldPtr.value++; 373 | break; 374 | case 3: 375 | numberInputFieldPtr.selected = 0; //clear selection 376 | 377 | numberInputFieldPtr.value = int(numberInputFieldPtr.label); //covert string to int 378 | if (numberInputFieldPtr.value < numberInputFieldPtr.minValue) numberInputFieldPtr.value = numberInputFieldPtr.minValue; 379 | else if (numberInputFieldPtr.value > numberInputFieldPtr.maxValue) numberInputFieldPtr.value = numberInputFieldPtr.maxValue; 380 | break; 381 | } //end switch 382 | numberInputFieldPtr.label = str(int(numberInputFieldPtr.value)); 383 | //return 384 | } 385 | } //end func() 386 | 387 | //====================================================================================================================== 388 | 389 | void deselectTextField() 390 | { 391 | if (TextFieldActive == true) 392 | { 393 | if (textFieldPtr.selected == true) 394 | { 395 | textFieldPtr.selected = false; 396 | textFieldPtr.label = GlobalLabelStore; //restore 397 | } 398 | TextFieldActive = false; 399 | } 400 | 401 | //--------------------------------------------------------- 402 | 403 | if (NumberInputFieldActive == true) 404 | { 405 | if (numberInputFieldPtr.selected > 0) 406 | { 407 | numberInputFieldPtr.selected = 0; 408 | numberInputFieldPtr.label = GlobalLabelStore; //restore 409 | } 410 | NumberInputFieldActive = false; 411 | } 412 | } //end mousePressedHandleTextFields 413 | 414 | 415 | //====================================================================================================== 416 | 417 | void fileSelectDataFile(File selection) 418 | { 419 | if (!validateFileDialogSelection(selection)) return; 420 | println("fileSelectDataFile()"); 421 | createMediaContentObj("Data File "+workingTileID, cTypeIDDataFile, 0, SelectedFilePath); //create new object if adding 422 | guiOverlayMenus[OverlayMenuID].initMenu(); //the GUI elements for the generated content are initialized here, so just run it 423 | } //end func 424 | 425 | //====================================================================================================== 426 | 427 | void fileSelectVideoFile(File selection) 428 | { 429 | if (!validateFileDialogSelection(selection)) return; 430 | println("fileSelectVideoFile()"); 431 | createMediaContentObj("Video "+workingTileID, cTypeIDVideo, 0, SelectedFilePath); //create new object if adding 432 | guiOverlayMenus[OverlayMenuID].initMenu(); //now that the type is selected, init the menu so elements display properly 433 | } //end func 434 | 435 | //====================================================================================================== 436 | 437 | void fileSelectImageFile(File selection) 438 | { 439 | if (!validateFileDialogSelection(selection)) return; 440 | println("fileSelectImageFile()"); 441 | createMediaContentObj("Image "+workingTileID, cTypeIDImage, 0, SelectedFilePath); //create new object if adding 442 | guiOverlayMenus[OverlayMenuID].initMenu(); //now that the type is selected, init the menu so elements display properly 443 | } //end func 444 | 445 | //====================================================================================================== 446 | 447 | //Doesn't work casues errors, think it is because selectInput() is a thread 448 | void fileSelectContentFile(File selection) 449 | { 450 | if (!validateFileDialogSelection(selection)) return; 451 | println("fileSelectContentFile()"); 452 | LoadUserContentFile(SelectedFilePath); //SelectedFilePath was updated by validateFileDialogSelection() 453 | } 454 | 455 | //====================================================================================================== 456 | 457 | void menuMediaTileMenuButtonsFunc(int passedID) 458 | { 459 | println("menuMediaTileMenuButtonsFunc() with "+passedID); 460 | 461 | switch(passedID) //this is the button object id number, not the typeID 462 | { 463 | case 0: //video 464 | selectInput("Select MOV, AVI, or similar:", "fileSelectVideoFile"); 465 | break; 466 | 467 | case 1: //GIF 468 | println("GIF Not yet enabled"); 469 | break; 470 | 471 | case 2: //Image 472 | selectInput("Select JPG, GIF, PNG, TIFF, or similar:", "fileSelectImageFile"); 473 | break; 474 | 475 | case 3: //Syphon/Spout 476 | //don't really want to create the spout receiver before selection of sender, but no other option since can't detect a selectSender() cancel 477 | createMediaContentObj("Spout "+workingTileID, cTypeIDSpout, 0, ""); //create new object if adding 478 | guiOverlayMenus[OverlayMenuID].initMenu(); 479 | break; 480 | 481 | case 4: //Generated 482 | createMediaContentObj("Generated "+workingTileID, cTypeIDGenerated, 0, ""); //create new object if adding 483 | guiOverlayMenus[OverlayMenuID].initMenu(); //the GUI elements for the generated content are initialized here, so just run it 484 | break; 485 | 486 | case 5: //Data File 487 | selectInput("Select Recorded File, TXT", "fileSelectDataFile"); 488 | break; 489 | 490 | case 6: //External Data 491 | createMediaContentObj("ExternalData "+workingTileID, cTypeIDExtData, 0, ""); //create new object if adding 492 | guiOverlayMenus[OverlayMenuID].initMenu(); //the GUI elements for the generated content are initialized here, so just run it 493 | break; 494 | } //end switch 495 | 496 | 497 | for (int i = 0; i != menuMediaTileMenuButtons.length; i++) 498 | { 499 | menuMediaTileMenuButtons[i].selected = false; 500 | } //end for() 501 | 502 | //in case it was a generated that was changed, this gets rid of the object and opens the slot 503 | DisposeGeneratedObjects(); 504 | } //end func 505 | 506 | //====================================================================================================== 507 | 508 | void mainIntensityFunc() 509 | { 510 | MasterIntensity = (float)mainIntensityFader.value / 100; //convert to float 511 | } 512 | 513 | //====================================================================================================== 514 | 515 | void mediaContentSliderFunc() 516 | { 517 | if(DefinedMediaTiles <= cSoftwareMaxViewedTiles-2) mediaContentScrollBar.max = 0; 518 | else mediaContentScrollBar.max = DefinedMediaTiles-cSoftwareMaxViewedTiles+1; 519 | 520 | if(mediaContentScrollBar.max >= (cSoftwareMaxMediaTiles-cSoftwareMaxViewedTiles)) mediaContentScrollBar.max = cSoftwareMaxMediaTiles-cSoftwareMaxViewedTiles-1; //limit to max tiles 521 | //println("mediaContentSliderFunc() "+mediaContentScrollBar.max); 522 | } 523 | 524 | //====================================================================================================== 525 | 526 | void mainCrossFaderFunc() 527 | { 528 | // println("mainCrossFaderFunc()"); 529 | CrossFaderValue = (float)mainCrossFader.value / 100; //convert to float 530 | } 531 | 532 | //====================================================================================================== 533 | 534 | void crossHardCutAcallBack() 535 | { 536 | CrossFaderValue = 0; 537 | mainCrossFader.value = int(mainCrossFader.max*CrossFaderValue); //update GUI element 538 | } 539 | 540 | //====================================================================================================== 541 | 542 | void crossHardCutBcallBack() 543 | { 544 | CrossFaderValue = 1; 545 | mainCrossFader.value = int(mainCrossFader.max*CrossFaderValue); //update GUI element 546 | } 547 | 548 | //====================================================================================================== 549 | //====================================================================================================== 550 | -------------------------------------------------------------------------------- /AllPixMatrix/keyPressed.pde: -------------------------------------------------------------------------------- 1 | 2 | //====================================================================================================================== 3 | 4 | void keyPressed() 5 | { 6 | 7 | //------------------------------------------------------------------------------------------------ 8 | 9 | if (key == ESC) //overide ESC 10 | { 11 | println("Escape key disabled"); 12 | deselectTextField(); 13 | CloseOverLayMenu(); 14 | key = 0; //have to alter it or if it gets to the end of the function with key=escape it closes the application 15 | return; //double up preventing escape for closing application 16 | } 17 | 18 | //------------------------------------------------------------------------------------------------ 19 | 20 | if (NumberInputFieldActive == true) 21 | { 22 | 23 | if (key == ENTER || key == RETURN) 24 | { 25 | NumberInputFieldActive = false; 26 | method(numberInputFieldPtr.callBack); 27 | return; 28 | } //end enter/return if 29 | else if (key == BACKSPACE) 30 | { 31 | try { 32 | println("Trying"); 33 | numberInputFieldPtr.label = numberInputFieldPtr.label.substring(0, numberInputFieldPtr.label.length()-1); 34 | } 35 | catch(Exception e) { 36 | } 37 | return; 38 | } 39 | 40 | if (numberInputFieldPtr.inputMethod == 0) 41 | { 42 | if (numberInputFieldPtr.label.length() > numberInputFieldPtr.maxValue) return; 43 | //Makes sure its a valid character otherwise it will be stored(but not seen) in .label as well 44 | if ((byte)key > 0 && (byte)key < 127) numberInputFieldPtr.label = ""+numberInputFieldPtr.label + char(key); 45 | else println("KEY IGNORED"); //DEBUG 46 | return; 47 | } 48 | else 49 | { 50 | if (key=='1' || key== '2' || key=='3' || key=='4' || key=='5' || key=='6' || key=='7' || key=='8' || key=='9' || key=='0' || key=='-' || (key =='.' && numberInputFieldPtr.inputMethod == 3)) 51 | { 52 | numberInputFieldPtr.label = ""+numberInputFieldPtr.label + char(key); 53 | return; 54 | } 55 | } 56 | return; 57 | } //end NumberInputFieldActive if() 58 | 59 | //------------------------------------------------------------------------------------------------ 60 | 61 | 62 | if (TextFieldActive == true) 63 | { 64 | if (key == ENTER || key == RETURN) 65 | { 66 | TextFieldActive = false; 67 | method(textFieldPtr.callBack); 68 | return; 69 | } //end enter/return if 70 | else if (key == BACKSPACE) 71 | { 72 | try { 73 | println("Trying"); 74 | textFieldPtr.label = textFieldPtr.label.substring(0, textFieldPtr.label.length()-1); 75 | } 76 | catch(Exception e) { 77 | } 78 | return; 79 | } 80 | 81 | 82 | if (textFieldPtr.inputMethod == 0) 83 | { 84 | if (textFieldPtr.label.length() > textFieldPtr.maxValue) return; 85 | //Makes sure its a valid character otherwise it will be stored(but not seen) in .label as well 86 | if ((byte)key > 0 && (byte)key < 127) textFieldPtr.label = ""+textFieldPtr.label + char(key); 87 | else println("KEY IGNORED"); //DEBUG 88 | return; 89 | } else 90 | { 91 | if (key=='1' || key== '2' || key=='3' || key=='4' || key=='5' || key=='6' || key=='7' || key=='8' || key=='9' || key=='0' || key=='-' || (key =='.' && textFieldPtr.inputMethod == 3)) 92 | { 93 | textFieldPtr.label = ""+textFieldPtr.label + char(key); 94 | return; 95 | } 96 | } 97 | 98 | 99 | if (key == ENTER || key == RETURN) 100 | { 101 | TextFieldActive = false; 102 | method(textFieldPtr.callBack); 103 | } //end enter/return if 104 | return; 105 | } //end NumberInputFieldActive if() 106 | 107 | //------------------------------------------------------------------------------------------------ 108 | 109 | try { //if not yet selected these codes could error 110 | if (key == CODED) 111 | { 112 | switch(keyCode) 113 | { 114 | case UP: 115 | if (DropDownPointer.selStr > 0) DropDownPointer.selStr--; 116 | method(DropDownPointer.callBack); //update 117 | break; 118 | 119 | case DOWN: 120 | if (DropDownPointer.selStr < (DropDownPointer.numStrs-1) ) DropDownPointer.selStr++; 121 | method(DropDownPointer.callBack); //update 122 | break; 123 | case RIGHT: 124 | if (SliderPointer.value < SliderPointer.max) SliderPointer.setValue(SliderPointer.value+1); 125 | break; 126 | 127 | case LEFT: 128 | if (SliderPointer.value > SliderPointer.min) SliderPointer.setValue(SliderPointer.value-1); 129 | break; 130 | } 131 | } //end coded if() 132 | } 133 | catch(Exception e) { println("No Dropdown or slider selected"); } 134 | 135 | 136 | }//end keyPressed() 137 | 138 | //====================================================================================================================== 139 | -------------------------------------------------------------------------------- /AllPixMatrix/mousePressed.pde: -------------------------------------------------------------------------------- 1 | 2 | //====================================================================================================================== 3 | 4 | void mousePressed() 5 | { 6 | mouseXS = round((float)mouseX / SF); //update scaled mouseX & Y, allows window resizing to work 7 | mouseYS = round((float)mouseY / SF); 8 | 9 | if (mouseButton == RIGHT) 10 | { 11 | println("X: "+mouseX+" Y: "+mouseY); 12 | 13 | //--------------------------------------------------------- 14 | for (int i = 0; i != feedLayersTileButtonsA.length; i++) 15 | { 16 | if (feedLayersTileButtonsA[i].over()) 17 | { 18 | println("Right clicked layer Tile Button A "+i); 19 | contentLayerA[i].mediaIDNum = 0; //clear content from tile 20 | return; 21 | } //end over() if 22 | } //end for 23 | 24 | //--------------------------------------------------------- 25 | for (int i = 0; i != feedLayersTileButtonsB.length; i++) 26 | { 27 | if (feedLayersTileButtonsB[i].over()) 28 | { 29 | println("Right clicked layer Tile Button B "+i); 30 | contentLayerB[i].mediaIDNum = 0; //clear content from tile 31 | return; 32 | } //end over() if 33 | } //end for 34 | //--------------------------------------------------------- 35 | 36 | SelectFeedID = 0; //else clear any layer selection if right click with no target 37 | } //end right click 38 | else 39 | { 40 | //regular left click 41 | pressHoldTimer = millis(); //resets timer for mousePress button holding 42 | allowMousePressHold = true; 43 | 44 | //--------------------------------------------------------- 45 | 46 | //If a drop down is open handle first, to prevent click-throughs to other elements 47 | if (GlobalDDOpen == true) 48 | { 49 | //handle before anything 50 | if (DropDownPointer.overOpen()) 51 | { 52 | println("Pressed Open DropDown "+DropDownPointer.getValue()); 53 | method(DropDownPointer.callBack); 54 | } else 55 | { 56 | //else a click was detected that wasn't on the open drop down, close it and leave 57 | DropDownPointer.selected = false; 58 | GlobalDDOpen = false; 59 | } 60 | return; //whether it was a click on the open drop down, or somewhere not on the drop down, leave now, no other clicks should be detected 61 | } 62 | //--------------------------------------------------------- 63 | 64 | if (mousePressLeftHandler()) return; //doesn't matter if it returns true or false 65 | 66 | //nothing detected a mouse press 67 | allowMousePressHold = false; //clear this 68 | 69 | SelectFeedID = 0; //else clear any layer selection if right click with no target 70 | 71 | //--------------------------------------------------------- 72 | } //end left click else 73 | } //end mousePressed 74 | 75 | //====================================================================================================================== 76 | 77 | boolean mousePressLeftHandler() //this function is created so it can be called from places other than mousePressed() event 78 | { 79 | //--------------------------------------------------------- 80 | 81 | allowMousePressHold = false; //DEBUG - keep it for now 82 | 83 | //--------------------------------------------------------- 84 | 85 | if (guiColorSelectorMenu.menuOpen == true) 86 | { 87 | if (menuColorSelSliderRed.over()) return true; 88 | 89 | if (menuColorSelSliderGreen.over()) return true; 90 | if (menuColorSelSliderBlue.over()) return true; 91 | if (menuColorSelSliderWhite.over()) return true; 92 | if (menuColorSelSliderAlpha.over()) return true; 93 | 94 | if (menuColorSelNIFRed.over()) return true; 95 | if (menuColorSelNIFGreen.over()) return true; 96 | if (menuColorSelNIFBlue.over()) return true; 97 | if (menuColorSelNIFWhite.over()) return true; 98 | if (menuColorSelNIFAlpha.over()) return true; 99 | 100 | if (menuColorSelClose.over()) 101 | { 102 | guiColorSelectorMenu.closeMenu(); 103 | return true; 104 | } 105 | 106 | deselectTextField(); //handle deselecting previous field if applicable(); 107 | 108 | //check if selected from image 109 | if (guiColorSelectorMenu.overPicker()) 110 | { 111 | println("Over Picker"); 112 | loadPixels(); 113 | 114 | color c = get(mouseXS, mouseYS); 115 | 116 | guiColorSelectorMenu.red = (int)red(c); 117 | guiColorSelectorMenu.green = (int)green(c); 118 | guiColorSelectorMenu.blue = (int)blue(c); 119 | //can't get white or alpha from color - manually enter 120 | guiColorSelectorMenu.updateColorGUIElements(); 121 | } 122 | 123 | if (guiColorSelectorMenu.over() == false) guiColorSelectorMenu.closeMenu(); 124 | 125 | return false; 126 | } else if (guiColorSelectorMenu.menuOpen == true && guiColorSelectorMenu.over() == false) return false; 127 | 128 | //--------------------------------------------------------- 129 | 130 | if (OverlayMenuID > 0) 131 | { 132 | if (guiOverlayMenus[OverlayMenuID].mousePressed()) return true; //no need to check over() 133 | if (menuCloseButton.over()) CloseOverLayMenu(); //close the open menu 134 | deselectTextField(); //handle deselecting previous field if applicable(); 135 | if (guiOverlayMenus[OverlayMenuID].forceOverride == 0) return false; 136 | return false; 137 | } 138 | 139 | //--------------------------------------------------------- 140 | 141 | for (int i = 0; i != feedLayersBlendModeDDB.length; i++) 142 | { 143 | if (feedLayersBlendModeDDA[i].over()) 144 | { 145 | contentLayerA[i].focusContentLayer(); 146 | return true; 147 | } 148 | } //end for() 149 | 150 | //--------------------------------------------------------- 151 | 152 | for (int i = 0; i != feedLayersBlendModeDDB.length; i++) 153 | { 154 | if (feedLayersBlendModeDDB[i].over()) 155 | { 156 | contentLayerB[i].focusContentLayer(); 157 | return true; 158 | } 159 | } //end for() 160 | 161 | //--------------------------------------------------------- 162 | 163 | for (int i = 0; i != feedLayersTileButtonsA.length; i++) 164 | { 165 | if (feedLayersTileButtonsA[i].over()) 166 | { 167 | println("Over layer Tile Button A "+i); 168 | contentLayerA[i].selectContentLayer("A", i); 169 | return true; 170 | } //end over() if 171 | } //end for 172 | 173 | //--------------------------------------------------------- 174 | 175 | for (int i = 0; i != feedLayersTileButtonsB.length; i++) 176 | { 177 | if (feedLayersTileButtonsB[i].over()) 178 | { 179 | println("Over layer Tile Button B "+i); 180 | contentLayerB[i].selectContentLayer("B", i); 181 | return true; 182 | } //end over() if 183 | } //end for 184 | 185 | //--------------------------------------------------------- 186 | 187 | for (int i = 0; i != feedLayersEffectsButtonsA.length; i++) 188 | { 189 | if (feedLayersEffectsButtonsA[i].over()) 190 | { 191 | println("Over effects Button A "+i); 192 | contentLayerA[i].selectContentLayer("A", i); 193 | OpenOverlayMenu(cOverlayEffectsMenu, 0+i); //0 is for FeedA 194 | return true; 195 | } //end over() if 196 | } //end for 197 | 198 | //--------------------------------------------------------- 199 | 200 | for (int i = 0; i != feedLayersEffectsButtonsB.length; i++) 201 | { 202 | if (feedLayersEffectsButtonsB[i].over()) 203 | { 204 | println("Over effects Button B "+i); 205 | contentLayerB[i].selectContentLayer("B", i); 206 | OpenOverlayMenu(cOverlayEffectsMenu, 100+i); //0 is for FeedA 207 | return true; 208 | } //end over() if 209 | } //end for 210 | 211 | //--------------------------------------------------------- 212 | 213 | for (int i = 0; i != feedLayersOptionsButtonsA.length; i++) 214 | { 215 | if (feedLayersOptionsButtonsA[i].over()) 216 | { 217 | println("Over media option Button A "+i); 218 | contentLayerA[i].selectContentLayer("A", i); 219 | return true; 220 | } //end over() if 221 | } //end for 222 | 223 | 224 | //--------------------------------------------------------- 225 | 226 | for (int i = 0; i != feedLayersOptionsButtonsB.length; i++) 227 | { 228 | if (feedLayersOptionsButtonsB[i].over()) 229 | { 230 | println("Over media option Button B "+i); 231 | contentLayerB[i].selectContentLayer("B", i); 232 | return true; 233 | } //end over() if 234 | } //end for 235 | 236 | //--------------------------------------------------------- 237 | 238 | for (int i = 0; i != feedLayersOpacitySliderA.length; i++) 239 | { 240 | if (feedLayersOpacitySliderA[i].over()) 241 | { 242 | contentLayerA[i].focusContentLayer(); 243 | return true; 244 | } 245 | } //end for 246 | 247 | //--------------------------------------------------------- 248 | 249 | for (int i = 0; i != feedLayersOpacitySliderB.length; i++) 250 | { 251 | if (feedLayersOpacitySliderB[i].over()) 252 | { 253 | contentLayerB[i].focusContentLayer(); 254 | return true; 255 | } 256 | } //end for 257 | 258 | //--------------------------------------------------------- 259 | 260 | for (int i = 0; i != feedLayersPlayPauseA.length; i++) 261 | { 262 | if (feedLayersPlayPauseA[i].over()) 263 | { 264 | println("Over media play/pause - Feed A "+i); 265 | if (feedLayersPlayPauseA[i].selected == true) mediaContentTile[contentLayerA[i].mediaIDNum].setPlayMode(1); //pause 266 | else mediaContentTile[contentLayerA[i].mediaIDNum].setPlayMode(0); //play 267 | return true; 268 | } //end over() if 269 | } //end for 270 | 271 | //--------------------------------------------------------- 272 | 273 | for (int i = 0; i != feedLayersPlayPauseB.length; i++) 274 | { 275 | if (feedLayersPlayPauseB[i].over()) 276 | { 277 | println("Over media play/pause - Feed B "+i); 278 | if (feedLayersPlayPauseB[i].selected == true) mediaContentTile[contentLayerB[i].mediaIDNum].setPlayMode(1); //pause 279 | else mediaContentTile[contentLayerB[i].mediaIDNum].setPlayMode(0); //play 280 | return true; 281 | } //end over() if 282 | } //end for 283 | 284 | 285 | for (int i = 0; i != feedLayersSpeedNIFA.length; i++) 286 | { 287 | if (feedLayersSpeedNIFA[i].over()) 288 | { 289 | contentLayerA[i].focusContentLayer(); 290 | return true; 291 | } 292 | } //end for 293 | 294 | 295 | for (int i = 0; i != feedLayersSpeedNIFB.length; i++) 296 | { 297 | if (feedLayersSpeedNIFB[i].over()) 298 | { 299 | contentLayerB[i].focusContentLayer(); 300 | return true; 301 | } 302 | } //end for 303 | 304 | //------------------------ START COMMON ELEMENTS --------------------------------- 305 | 306 | for (int i = 0; i != mediaTileSelectionButtons.length; i++) 307 | { 308 | if (mediaTileSelectionButtons[i].over()) 309 | { 310 | //println("Over content selection Button "+i+" ScrollBar Offset: "+(mediaContentScrollBar.value+i)+" DefinedMediaTiles: "+DefinedMediaTiles); 311 | if ((mediaContentScrollBar.value+i) == DefinedMediaTiles) 312 | { 313 | //its a click on a tile one after the last one, indicating add source 314 | println("open media content menu to add. With "+(DefinedMediaTiles+1)); 315 | OpenOverlayMenu(cOverlayMediaTileMenu, DefinedMediaTiles+1); 316 | } 317 | else if ((mediaContentScrollBar.value+i) < DefinedMediaTiles) 318 | { 319 | if (SelectFeedID > 0) 320 | { 321 | FillContentLayer((mediaContentScrollBar.value+i+1)); 322 | return true; 323 | } 324 | 325 | println("Open menu to edit tile media content. Button "+i+" ScrollBar Offset: "+(mediaContentScrollBar.value+i)); 326 | 327 | OpenOverlayMenu(cOverlayMediaTileMenu, (mediaContentScrollBar.value+i+1)); 328 | } 329 | else 330 | { 331 | println("Clicked media content button not available"); 332 | } 333 | return true; 334 | } //end over() if 335 | } //end for 336 | 337 | //--------------------------------------------------------- 338 | 339 | if (mainBlendModeDD.over()) return true; 340 | 341 | //--------------------------------------------------------- 342 | 343 | if (crossHardCutA.over()) 344 | { 345 | crossHardCutAcallBack(); 346 | return true; 347 | } 348 | 349 | if (crossHardCutB.over()) 350 | { 351 | crossHardCutBcallBack(); 352 | return true; 353 | } 354 | 355 | if (crossAutoA.over()) 356 | { 357 | //start timed cross fader fade 358 | return true; 359 | } 360 | 361 | if (crossAutoB.over()) 362 | { 363 | //start timed cross fader fade 364 | return true; 365 | } 366 | 367 | //--------------------------------------------------------- 368 | 369 | if (feedPlayPauseA.over()) 370 | { 371 | //pause all Feed A layers 372 | if (feedPlayPauseA.selected == true) SetFeedAPausePlay(1); //0 = play, 1 = pause 373 | else SetFeedAPausePlay(0);//0 = play, 1 = pause 374 | } 375 | 376 | if (feedPlayPauseB.over()) 377 | { 378 | //pause all Feed B layers 379 | if (feedPlayPauseB.selected == true) SetFeedBPausePlay(1); //0 = play, 1 = pause 380 | else SetFeedBPausePlay(0);//0 = play, 1 = pause 381 | } 382 | 383 | //--------------------------------------------------------- 384 | 385 | if (recordToFileButton.over()) 386 | { 387 | println("recordToFileButton() Recording: "+recordToFileButton.selected); 388 | //toggling the .selected boolean is what starts/stops recording 389 | 390 | if (recordToFileButton.selected == true) 391 | { 392 | //ensures it will always have a unique, easily traced file name 393 | //use any text editor to remove frames or combine multiple recorded files into a single file. 394 | RecorderFileName = "recorded-"+matrix.width+"x"+matrix.height+"-"+hour()+"-"+minute()+"-"+second()+"-date-"+day()+"-"+month()+"-"+year(); 395 | } 396 | } 397 | 398 | //--------------------------------------------------------- 399 | 400 | if (openMainMenuButton.over()) OpenOverlayMenu(cOverlayMainMenu, 0); 401 | 402 | //--------------------------------------------------------- 403 | 404 | if (mediaContentScrollBar.over()) return true; 405 | 406 | //--------------------------------------------------------- 407 | 408 | if (mainCrossFader.over()) return true; 409 | 410 | //--------------------------------------------------------- 411 | 412 | if (mainIntensityFader.over()) return true; 413 | 414 | //--------------------------------------------------------- 415 | 416 | if (intensitySliderA.over()) return true; 417 | 418 | //--------------------------------------------------------- 419 | 420 | if (intensitySliderB.over()) return true; 421 | 422 | //--------------------------------------------------------- 423 | 424 | return false; 425 | }//end func 426 | 427 | 428 | void mouseReleased() 429 | { 430 | //Update scaled mouse everytime before the values are used 431 | mouseXS = round((float)mouseX / SF); 432 | mouseYS = round((float)mouseY / SF); 433 | 434 | pressHoldRollingTimer = cMousePressHoldBaseTime; //reset mousePressed hold down timer 435 | 436 | GlobalDragging = false; //incase a slider is being dragged 437 | } //end mouseReleased 438 | 439 | //====================================================================================================================== 440 | 441 | void mouseDragged() 442 | { 443 | //The mouseDragged() function is called once every time the mouse moves while a mouse button is pressed. (If a button is not being pressed, mouseMoved() is called instead.) 444 | //println("MouseDragging"); 445 | //allowMousePressHold = false; 446 | //if(GlobalDragging == true) redraw(); 447 | } 448 | 449 | //====================================================================================================================== 450 | 451 | void mouseMoved() 452 | { 453 | mouseXS = round((float)mouseX / SF); 454 | mouseYS = round((float)mouseY / SF); 455 | 456 | //cursor(HAND); //think it caused misc errors 457 | 458 | //--------------------------------------------------------- 459 | 460 | if (software.mouseOverEnabled == true) 461 | { 462 | //Mouse Over Functions 463 | // Fairly ineffiecent, it will detect any object, even those not shown, so it will always redraw on mouse moved 464 | 465 | for (int i = 0; i != DropDownList.size(); i++) 466 | { 467 | //DropDownListPointer = DropDownList.get(i); // An ArrayList doesn't know what it is storing so we have to cast the object coming out 468 | //if (DropDownListPointer.mouseOver()) return; //no other way to highlight, have to redraw 469 | //if (DropDownListPointer.mouseOverOpen()) return; //no other way to highlight, have to redraw 470 | 471 | if (DropDownList.get(i).mouseOver()) return; //no other way to highlight, have to redraw 472 | if (DropDownList.get(i).mouseOverOpen()) return; //no other way to highlight, have to redraw 473 | } //end for 474 | 475 | //--------------------------------------------------------- 476 | 477 | if (GlobalDDOpen == true) return; //if a drop down is open, don't bother mousing over any other elements, just leave 478 | 479 | //--------------------------------------------------------- 480 | 481 | for (int i = 0; i != ButtonList.size(); i++) 482 | { 483 | // An ArrayList doesn't know what it is storing so we have to cast the object coming out 484 | //if(i == 0) println(ButtonList.size()); 485 | PointerButton = ButtonList.get(i); 486 | if (PointerButton.mouseOver()) return; 487 | } //end for 488 | 489 | //--------------------------------------------------------- 490 | 491 | /* 492 | for (int i =0; i != TextFieldList.size(); i++) 493 | { 494 | TextFieldListPointer = TextFieldList.get(i); 495 | if(TextFieldListPointer.mouseOver()) redraw(); //no other way to highlight, have to redraw 496 | } 497 | 498 | for (int i =0; i != CheckBoxList.size(); i++) 499 | { 500 | CheckBoxListPointer = CheckBoxList.get(i); 501 | if(CheckBoxListPointer.mouseOver()) redraw(); //no other way to highlight, have to redraw 502 | } 503 | */ 504 | } //end sEnableMouseOver if() 505 | 506 | // cursor(ARROW); 507 | } //end mouseMoved 508 | 509 | //====================================================================================================================== 510 | 511 | void mouseWheel(MouseEvent event) 512 | { 513 | //println("mouseWheel()"); 514 | mouseXS = round((float)mouseX / SF); 515 | mouseYS = round((float)mouseY / SF); 516 | 517 | if (OverlayMenuID == 0) 518 | { 519 | //no overlay menu is open 520 | if (mouseXS > 0 && mouseXS < cDefaultGUIWidth && mouseYS > 650 && mouseYS < cDefaultGUIHeight) 521 | { 522 | //println("mouseWheel() - Over media content menu area"); 523 | if (event.getCount() > 0 && mediaContentScrollBar.value > 0) mediaContentScrollBar.value--; 524 | else if (event.getCount() < 0 && mediaContentScrollBar.value < mediaContentScrollBar.max) mediaContentScrollBar.value++; 525 | mediaContentSliderFunc(); 526 | } 527 | } 528 | 529 | //also want to do the intensity and opacity sliders, along with main mixer in the future 530 | } //end mousewheel 531 | -------------------------------------------------------------------------------- /AllPixMatrix/nled-allpixmatrix-manual.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NLED/allpixmatrix/7a5106489cb6e2a822f058f42959be3130607eea/AllPixMatrix/nled-allpixmatrix-manual.pdf -------------------------------------------------------------------------------- /AllPixMatrix/recorded/recorded-12x14-15-37-49-date-29-10-2018.txt: -------------------------------------------------------------------------------- 1 | 0,0,14,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,23,0,0,0,0,0,0,0,0,0,0,0,3,0,0,36,0,0,43,0,0,0,0,0,47,0,0,0,0,0,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,0,0,46,0,0,46,0,0,27,0,0,25,0,0,0,0,0,0,0,0,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,0,0,0,0,0,0,0,0,6,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,3,0,0,48,0,0,0,0,0,0,0,0,56,0,0,54,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,25,0,0,31,0,0,9,0,0,0,0,0,30,0,0,39,0,0,28,0,0,17,0,0,3,0,0,0,0,0,0,0,0,19,0,0,8,0,0,0,0,0,31,0,0,23,0,0,18,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,43,0,0,0,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,0,0,40,0,0,51,0,0,56,0,0,0,0,0,28,0,0,0,0,0,2,0,0,0,0,0,0,0,0,10,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 2 | 0,0,20,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,0,45,0,0,0,0,0,41,0,0,0,0,0,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,0,0,49,0,0,41,0,0,25,0,0,20,0,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,0,0,0,0,0,0,0,0,6,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,0,0,0,0,0,0,0,0,32,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,50,0,0,0,0,0,0,0,0,56,0,0,54,0,0,17,0,0,0,0,0,0,0,0,0,0,0,2,0,0,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,22,0,0,23,0,0,1,0,0,0,0,0,30,0,0,44,0,0,23,0,0,13,0,0,0,0,0,0,0,0,0,0,0,17,0,0,0,0,0,0,0,0,38,0,0,23,0,0,25,0,0,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,0,0,0,0,0,0,0,0,45,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,41,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,37,0,0,6,0,0,46,0,0,50,0,0,0,0,0,35,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 3 | 0,0,5,0,0,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,0,0,12,0,0,0,0,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,44,0,0,37,0,0,22,0,0,0,0,0,0,0,0,0,0,0,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,41,0,0,6,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,39,0,0,0,0,0,0,0,0,54,0,0,54,0,0,19,0,0,29,0,0,6,0,0,27,0,0,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,0,0,32,0,0,6,0,0,0,0,0,0,0,0,9,0,0,42,0,0,14,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,0,0,24,0,0,49,0,0,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,0,0,0,0,0,0,0,0,35,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,29,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,0,0,0,0,0,7,0,0,40,0,0,0,0,0,35,0,0,20,0,0,0,0,0,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 4 | 0,0,19,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,0,0,12,0,0,0,0,0,0,0,0,0,0,0,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,0,0,47,0,0,29,0,0,9,0,0,0,0,0,0,0,0,0,0,0,4,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,22,0,0,38,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,47,0,0,51,0,0,19,0,0,25,0,0,45,0,0,36,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,0,0,3,0,0,35,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,11,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 5 | 0,0,18,0,0,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,23,0,0,0,0,0,0,0,0,0,0,0,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,0,0,38,0,0,44,0,0,11,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,7,0,0,27,0,0,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,0,0,24,0,0,20,0,0,25,0,0,38,0,0,17,0,0,9,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,0,0,17,0,0,0,0,0,0,0,0,0,0,0,7,0,0,43,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,25,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0,0,42,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0, 6 | 0,0,15,0,0,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,0,0,24,0,0,0,0,0,0,0,0,0,0,0,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,0,0,31,0,0,47,0,0,14,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,6,0,0,16,0,0,19,0,0,31,0,0,28,0,0,17,0,0,21,0,0,8,0,0,0,0,0,0,0,0,0,0,0,15,0,0,19,0,0,0,0,0,0,0,0,0,0,0,27,0,0,38,0,0,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,35,0,0,0,0,0,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,0,0,0,0,0,26,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,0,0,42,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,0,0,0,0,0,35,0,0,1,0,0,0,0,0,0, 7 | -------------------------------------------------------------------------------- /AllPixMatrix/software.ini: -------------------------------------------------------------------------------- 1 | CONFIGDIR 28x28-apa102-panel 16x16-square 8x32-test 2 | GUIWIDTH 1366 3 | GUIHEIGHT 768 4 | MOUSEOVER true 5 | MIDIENABLE false 6 | MIDIPORT 0 7 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Northern Lights Electronic Design, LLC 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | Original Author: Jeffrey Nygaard 24 | Copyright 2018 25 | Company: Northern Lights Electronic Design, LLC 26 | Contact: JNygaard@NLEDShop.com 27 | Date Updated: December 19, 2018 28 | Software Version: v.1b 29 | Webpage: www.NLEDShop.com/nledallpixmatrix 30 | Written in Processing v3.4 - www.Processing.org 31 | 32 | ====================================================================================================================================== 33 | 34 | What It Does: 35 | The software uses many media types such as images, animated GIFs, videos(many codecs), Spout/Syphon, external data reception(like Glediator) and software 36 | generated content. It converts or maintains the media to low resolution, that will display well on low resolution LED matrices. Small scale LED matrices 37 | require low resolution media, as scaling down larger standard sized media results in poor looking images once down scaled. The different types of 38 | media content can be mixed together in different ways, and have effects and filters applied to them. The resulting output is transmitted out to a serial 39 | port(like a FTDI or USB enabled microcontroller) which converts it to a pixel chipset protocol and sends it to the pixels. 40 | 41 | Description: 42 | This program was written for use with my projects and products, but hope it will be useful to others as well. I am frequently asked about how best to 43 | create content for low-resolution pixel matrices. There are a few choices out there, but none that are feature rich and open source. This software was 44 | kept simple as possible with the ability to easily modify and add to it. Processing has many inbuilt graphics functions that made it a good choice for 45 | this type of software. 46 | 47 | Compatible Controllers: There are many ways to receive the output from this software. 48 | NLED Pixel Controller Micro - Serial 49 | NLED Pixel Controller Mini - Serial 50 | NLED Pixel Controller Ion - Aurora USB or Serial 51 | NLED Pixel Controller Electron - Aurora USB or Serial 52 | More NLED Controllers will be available soon 53 | 54 | Currently no Arduino library, but should work with any Gleidator compatible sketches. If someone wants to write one, I can link it. 55 | Previously I have had reports that USB enabled Arduinos may not work with the default USB stack. I think this is because the default USB stack 56 | can not handle the data volume. So the stack may need to be adjusted or rewritten. 57 | 58 | Maximum Size matrix: 512x512 - not tested or know if it would actually work. But software would support it. 59 | 60 | Other Required Software: 61 | NLED Patcher for creating matrix patch files - https://www.nledshop.com/nledpatcher/ 62 | 63 | ====================================================================================================================================== 64 | 65 | Changes v.1a to v.1b: 66 | - Added Artnet output support, ID#3, use the OUTPUTPORT line on matrix-output.ini to set the IP address 67 | - Overhauled the the application timing. No longer uses frameRate(1000) for timing 68 | - Threads off the media updating, layer mixing, and final mixing. - Creates a few issues 69 | - The mixing function's color min/max causes graphical GUI glitches and CPU usage has increased 70 | - Now output transmission packet rate is a lot tighter and regular. 71 | - Fixed the display "Output Rate(mS)" as it was showing incorrect time 72 | - Numerous variable optimizations 73 | 74 | Changes BETA 0.99 to v.1a 75 | - numerous GUI fixes 76 | - Star fieild 'twinkle' changed to z-distance 77 | - Updated media crop/resize options 78 | - Centered matrix preview grids 79 | - Numerous fixes to prevent stalls/freezes when loading external data streams 80 | - Fixed per layer pausing and feed pausing 81 | - Fixed issues with re-loading config files during application runtime 82 | - Renamed numerous variables and objects with more refined naming schemes 83 | - Added option to record to file for string or binary/raw formated files 84 | 85 | 86 | ====================================================================================================================================== 87 | 88 | See AllPixMatrix.pde for additional notes and details 89 | 90 | -------------------------------------------------------------------------------- /allpixmatrix-layout-definition.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NLED/allpixmatrix/7a5106489cb6e2a822f058f42959be3130607eea/allpixmatrix-layout-definition.jpg -------------------------------------------------------------------------------- /nled-allpixmatrix-manual.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NLED/allpixmatrix/7a5106489cb6e2a822f058f42959be3130607eea/nled-allpixmatrix-manual.pdf --------------------------------------------------------------------------------