From 3bad816475b2c5b9405ec330a4caacbc06c8b00e Mon Sep 17 00:00:00 2001 From: Conor Russomanno Date: Mon, 19 Dec 2016 23:49:10 -0500 Subject: [PATCH] deleted extra libraries, embellished Ganglion Imp Check and finished Cyton Channel Setting Controller --- CodeMap.png | Bin 174575 -> 0 bytes OpenBCI_GUI/ControlPanel.pde | 234 +- OpenBCI_GUI/GanglionSync.pde | 4 +- OpenBCI_GUI/HardwareSettingsController.pde | 65 +- OpenBCI_GUI/HardwareSync.pde | 88 +- OpenBCI_GUI/Interactivity.pde | 16 +- .../SavedData/OpenBCI-2016-12-08_21-16-33.jpg | Bin 132913 -> 0 bytes OpenBCI_GUI/W_Template.pde | 3 +- OpenBCI_GUI/W_TimeSeries.pde | 19 +- OpenBCI_GUI/W_accelerometer.pde | 8 + OpenBCI_GUI/W_ganglionImpedance.pde | 59 +- .../ControlP5accordion/ControlP5accordion.pde | 286 - .../ControlP5background.pde | 188 - .../ControlP5background/sketch.properties | 2 - .../ControlP5bang/ControlP5bang.pde | 231 - .../ControlP5button/ControlP5button.pde | 267 - .../ControlP5button/data/button_a.png | Bin 1254 -> 0 bytes .../ControlP5button/data/button_b.png | Bin 1284 -> 0 bytes .../ControlP5button/data/button_c.png | Bin 1246 -> 0 bytes .../ControlP5buttonBar/ControlP5buttonBar.pde | 207 - .../ControlP5canvas/ControlP5canvas.pde | 89 - .../ControlP5chart/ControlP5chart.pde | 243 - .../ControlP5checkBox/ControlP5checkBox.pde | 242 - .../ControlP5colorPicker.pde | 186 - .../ControlP5colorWheel.pde | 203 - .../ControlP5controlTimer.pde | 63 - .../ControlP5controllerProperties.pde | 165 - .../hello.properties.json | 22 - .../ControlP5dropdownList.pde | 311 - .../ControlP5group/ControlP5group.pde | 235 - .../ControlP5icon/ControlP5icon.pde | 218 - .../ControlP5icon/fontawesome-webfont.ttf | Bin 112160 -> 0 bytes .../ControlP5knob/ControlP5knob.pde | 260 - .../ControlP5listBox/ControlP5listBox.pde | 319 - .../ControlP5matrix/ControlP5matrix.pde | 296 - .../ControlP5multilist/ControlP5multiList.pde | 101 - .../ControlP5numberbox/ControlP5numberbox.pde | 214 - .../ControlP5radioButton.pde | 238 - .../ControlP5range/ControlP5range.pde | 244 - .../ControlP5scrollableList.pde | 261 - .../ControlP5slider/ControlP5slider.pde | 297 - .../ControlP5slider2D/ControlP5slider2D.pde | 238 - .../controllers/ControlP5tab/ControlP5tab.pde | 236 - .../ControlP5textarea/ControlP5textarea.pde | 229 - .../ControlP5textfield/ControlP5textfield.pde | 257 - .../ControlP5textlabel/ControlP5textlabel.pde | 211 - .../ControlP5toggle/ControlP5toggle.pde | 239 - .../ControlP5tooltip/ControlP5tooltip.pde | 116 - .../ControlP5window/ControlP5window.pde | 82 - .../ControlP5CustomMatrix.pde | 99 - .../ControlP5MenuList/ControlP5MenuList.pde | 187 - .../ControlP5SliderList.pde | 257 - .../ControlP5editableNumberbox.pde | 112 - .../ControlP5graphics/ControlP5graphics.pde | 50 - .../experimental/MidiMapper/MidiMapper.pde | 123 - .../experimental/MidiMapper/MidiSimple.java | 107 - .../ControlP5AutoDetectFields.pde | 58 - .../ControlP5ControllerInsideClass.pde | 33 - .../ControlP5canvasDrawIntoCanvas.pde | 72 - .../ControlP5chartsCombined.pde | 252 - .../ControlP5console/ControlP5console.pde | 71 - .../ControlP5controllerOnTop3D.pde | 148 - .../extra/ControlP5frame/ControlP5frame.pde | 112 - .../ControlP5frameRate/ControlP5frameRate.pde | 199 - .../extra/ControlP5frames/ControlP5frames.pde | 134 - .../ControlP5groupCanvas.pde | 51 - .../ControlP5imageButton.pde | 38 - .../ControlP5imageButton/data/Arrow-Left.png | Bin 1062 -> 0 bytes .../ControlP5imageButton/data/Arrow-Right.png | Bin 1040 -> 0 bytes .../ControlP5imageButton/data/Refresh.png | Bin 1546 -> 0 bytes .../extra/ControlP5key/ControlP5key.pde | 50 - .../ControlP5listBoxClear.pde | 74 - .../ControlP5mouseWheel.pde | 94 - .../ControlP5pointer/ControlP5pointer.pde | 75 - .../ControlP5propertiesSets.pde | 133 - .../ControlP5propertiesSets/default.json | 17 - .../extra/ControlP5propertiesSets/setA.json | 5 - .../ControlP5renderIntoPGraphics.pde | 51 - .../extra/ControlP5style/ControlP5style.pde | 110 - .../ControlP5textfieldAdvanced.pde | 114 - .../ControlP5withPeasyCam.pde | 58 - .../ControlP5annotation.pde | 166 - .../use/ControlP5basics/ControlP5basics.pde | 92 - .../ControlP5beginEnd/ControlP5beginEnd.pde | 1 - .../ControlP5behavior/ControlP5behavior.pde | 125 - .../ControlP5bringToFront.pde | 55 - .../ControlP5callback/ControlP5callback.pde | 178 - .../ControlP5controlEvent.pde | 119 - .../ControlP5controlFont.pde | 134 - .../ControlP5customView.pde | 101 - .../ControlP5extendController.pde | 163 - .../ControlP5listenerForSingleController.pde | 47 - .../ControlP5mouseover/ControlP5mouseover.pde | 98 - .../use/ControlP5plugTo/ControlP5plugTo.pde | 109 - .../ControlP5propertiesCustom.pde | 106 - .../use/ControlP5propertiesCustom/hello.json | 22 - .../use/ControlP5quick/ControlP5quick.pde | 81 - .../ControlP5sliderSetValue.pde | 54 - .../ControlP5snapshot/ControlP5snapshot.pde | 165 - .../ControlP5workingWithIDs.pde | 62 - .../libraries/controlP5/library.properties | 11 - .../libraries/controlP5/library/controlP5.jar | Bin 266506 -> 0 bytes .../controlP5/reference/allclasses-frame.html | 90 - .../reference/allclasses-noframe.html | 90 - .../controlP5/reference/constant-values.html | 1348 ---- .../reference/controlP5/Accordion.html | 874 --- .../reference/controlP5/Background.html | 308 - .../controlP5/reference/controlP5/Bang.html | 864 --- .../reference/controlP5/BitFont.html | 402 -- .../reference/controlP5/BoundingBox.html | 337 - .../controlP5/reference/controlP5/Button.html | 1113 ---- .../reference/controlP5/ButtonBar.html | 564 -- .../controlP5/reference/controlP5/CColor.html | 507 -- .../reference/controlP5/CDrawable.html | 221 - .../controlP5/reference/controlP5/CP.html | 492 -- .../reference/controlP5/CallbackEvent.html | 445 -- .../reference/controlP5/CallbackListener.html | 407 -- .../controlP5/reference/controlP5/Canvas.html | 559 -- .../controlP5/Chart.ChartViewArea.html | 287 - .../controlP5/Chart.ChartViewBar.html | 287 - .../controlP5/Chart.ChartViewBarCentered.html | 287 - .../controlP5/Chart.ChartViewLine.html | 287 - .../controlP5/Chart.ChartViewPie.html | 287 - .../controlP5/reference/controlP5/Chart.html | 1587 ----- .../reference/controlP5/ChartData.html | 346 -- .../reference/controlP5/ChartDataSet.html | 403 -- .../reference/controlP5/CheckBox.html | 1420 ----- .../reference/controlP5/ColorPicker.html | 799 --- .../reference/controlP5/ColorWheel.html | 720 --- .../reference/controlP5/ControlBehavior.html | 527 -- .../controlP5/ControlBroadcaster.html | 482 -- .../reference/controlP5/ControlElement.html | 445 -- .../reference/controlP5/ControlEvent.html | 826 --- .../reference/controlP5/ControlFont.html | 605 -- .../reference/controlP5/ControlGroup.html | 842 --- .../reference/controlP5/ControlKey.html | 237 - .../reference/controlP5/ControlListener.html | 292 - .../reference/controlP5/ControlP5.html | 2719 -------- .../reference/controlP5/ControlP5Base.html | 1542 ----- .../controlP5/ControlP5Constants.html | 2515 -------- .../reference/controlP5/ControlP5Legacy.html | 2689 -------- .../reference/controlP5/ControlTimer.html | 431 -- .../controlP5/ControlWindow.Pointer.html | 445 -- .../reference/controlP5/ControlWindow.html | 1245 ---- .../reference/controlP5/Controller.html | 3807 ------------ .../reference/controlP5/ControllerGroup.html | 2124 ------- .../controlP5/ControllerInterface.html | 1071 ---- .../reference/controlP5/ControllerList.html | 345 -- .../reference/controlP5/ControllerPlug.html | 416 -- .../ControllerProperties.JSONFormat.html | 298 - ...ControllerProperties.SerializedFormat.html | 298 - .../controlP5/ControllerProperties.html | 944 --- .../controlP5/ControllerProperty.html | 306 - .../reference/controlP5/ControllerStyle.html | 802 --- .../reference/controlP5/ControllerView.html | 240 - .../DropdownList.DropdownListView.html | 287 - .../reference/controlP5/DropdownList.html | 865 --- .../reference/controlP5/FrameRate.html | 311 - .../controlP5/reference/controlP5/Group.html | 494 -- .../controlP5/reference/controlP5/Icon.html | 870 --- .../controlP5/reference/controlP5/Knob.html | 1476 ----- .../controlP5/reference/controlP5/Label.html | 1307 ---- .../controlP5/ListBox.ListBoxView.html | 287 - .../reference/controlP5/ListBox.html | 1173 ---- .../reference/controlP5/ListBoxItem.html | 455 -- .../controlP5/reference/controlP5/Matrix.html | 1290 ---- .../reference/controlP5/MultiList.html | 831 --- .../reference/controlP5/MultiListButton.html | 622 -- .../reference/controlP5/Numberbox.html | 1141 ---- .../reference/controlP5/Pointer.html | 341 -- .../reference/controlP5/Println.html | 305 - .../controlP5/reference/controlP5/Radio.html | 316 - .../reference/controlP5/RadioButton.html | 1489 ----- .../controlP5/reference/controlP5/Range.html | 1486 ----- .../ScrollableList.ScrollableListView.html | 287 - .../reference/controlP5/ScrollableList.html | 1134 ---- .../controlP5/reference/controlP5/Slider.html | 1582 ----- .../reference/controlP5/Slider2D.html | 1162 ---- .../controlP5/reference/controlP5/Spacer.html | 319 - .../controlP5/reference/controlP5/Tab.html | 874 --- .../reference/controlP5/Textarea.html | 1305 ---- .../controlP5/Textfield.InputFilter.html | 364 -- .../reference/controlP5/Textfield.html | 1169 ---- .../reference/controlP5/Textlabel.html | 876 --- .../reference/controlP5/TickMark.html | 330 - .../controlP5/reference/controlP5/Toggle.html | 1063 ---- .../reference/controlP5/Tooltip.html | 796 --- .../reference/controlP5/package-frame.html | 100 - .../reference/controlP5/package-summary.html | 604 -- .../reference/controlP5/package-tree.html | 264 - .../controlP5/reference/help-doc.html | 212 - .../controlP5/reference/index-all.html | 5449 ----------------- .../libraries/controlP5/reference/index.html | 71 - .../controlP5/reference/overview-tree.html | 268 - .../controlP5/reference/package-list | 1 - .../reference/resources/background.gif | Bin 2313 -> 0 bytes .../controlP5/reference/resources/tab.gif | Bin 291 -> 0 bytes .../reference/resources/titlebar.gif | Bin 10701 -> 0 bytes .../reference/resources/titlebar_end.gif | Bin 849 -> 0 bytes .../libraries/controlP5/reference/script.js | 30 - .../controlP5/reference/serialized-form.html | 331 - .../controlP5/reference/stylesheet.css | 561 -- .../controlP5/src/controlP5/Accordion.java | 285 - .../controlP5/src/controlP5/Background.java | 37 - .../controlP5/src/controlP5/Bang.java | 205 - .../controlP5/src/controlP5/BitFont.java | 203 - .../controlP5/src/controlP5/Button.java | 316 - .../controlP5/src/controlP5/ButtonBar.java | 244 - .../controlP5/src/controlP5/CColor.java | 206 - .../controlP5/src/controlP5/CDrawable.java | 37 - .../libraries/controlP5/src/controlP5/CP.java | 380 -- .../src/controlP5/CallbackEvent.java | 65 - .../src/controlP5/CallbackListener.java | 41 - .../controlP5/src/controlP5/Canvas.java | 124 - .../controlP5/src/controlP5/Chart.java | 561 -- .../controlP5/src/controlP5/ChartData.java | 72 - .../controlP5/src/controlP5/ChartDataSet.java | 95 - .../controlP5/src/controlP5/CheckBox.java | 615 -- .../controlP5/src/controlP5/ColorPalette.java | 33 - .../controlP5/src/controlP5/ColorPicker.java | 259 - .../controlP5/src/controlP5/ColorWheel.java | 599 -- .../src/controlP5/ControlBehavior.java | 106 - .../src/controlP5/ControlBroadcaster.java | 407 -- .../src/controlP5/ControlElement.java | 48 - .../controlP5/src/controlP5/ControlEvent.java | 339 - .../controlP5/src/controlP5/ControlFont.java | 293 - .../controlP5/src/controlP5/ControlGroup.java | 199 - .../controlP5/src/controlP5/ControlKey.java | 31 - .../src/controlP5/ControlListener.java | 52 - .../controlP5/src/controlP5/ControlP5.java | 1455 ----- .../src/controlP5/ControlP5Base.java | 794 --- .../src/controlP5/ControlP5Constants.java | 187 - .../src/controlP5/ControlP5Legacy.java | 705 --- .../controlP5/src/controlP5/ControlTimer.java | 150 - .../src/controlP5/ControlWindow.java | 978 --- .../src/controlP5/ControlWindowCanvas.java | 34 - .../controlP5/src/controlP5/Controller.java | 2225 ------- .../src/controlP5/ControllerAutomator.java | 354 -- .../src/controlP5/ControllerDisplay.java | 52 - .../src/controlP5/ControllerGroup.java | 970 --- .../src/controlP5/ControllerInterface.java | 175 - .../src/controlP5/ControllerLayout.java | 179 - .../controlP5/ControllerLayoutElement.java | 52 - .../src/controlP5/ControllerList.java | 97 - .../src/controlP5/ControllerPlug.java | 273 - .../src/controlP5/ControllerProperties.java | 924 --- .../src/controlP5/ControllerProperty.java | 176 - .../src/controlP5/ControllerStyle.java | 153 - .../src/controlP5/ControllerView.java | 50 - .../controlP5/src/controlP5/DropdownList.java | 466 -- .../src/controlP5/FieldChangedListener.java | 134 - .../controlP5/src/controlP5/FrameRate.java | 58 - .../controlP5/src/controlP5/Group.java | 43 - .../controlP5/src/controlP5/Icon.java | 405 -- .../controlP5/src/controlP5/Knob.java | 572 -- .../controlP5/src/controlP5/Label.java | 542 -- .../controlP5/src/controlP5/ListBox.java | 469 -- .../controlP5/src/controlP5/Matrix.java | 422 -- .../controlP5/src/controlP5/MultiList.java | 270 - .../src/controlP5/MultiListButton.java | 226 - .../src/controlP5/MultiListInterface.java | 48 - .../controlP5/src/controlP5/Numberbox.java | 302 - .../controlP5/src/controlP5/Pad.java | 31 - .../controlP5/src/controlP5/Pointer.java | 47 - .../controlP5/src/controlP5/Println.java | 108 - .../controlP5/src/controlP5/Radio.java | 39 - .../controlP5/src/controlP5/RadioButton.java | 643 -- .../controlP5/src/controlP5/Range.java | 519 -- .../src/controlP5/ScrollableList.java | 483 -- .../controlP5/src/controlP5/Slider.java | 648 -- .../controlP5/src/controlP5/Slider2D.java | 287 - .../controlP5/src/controlP5/Spacer.java | 67 - .../libraries/controlP5/src/controlP5/TODO | 92 - .../controlP5/src/controlP5/Tab.java | 228 - .../controlP5/src/controlP5/Textarea.java | 447 -- .../controlP5/src/controlP5/Textfield.java | 476 -- .../controlP5/src/controlP5/Textlabel.java | 243 - .../controlP5/src/controlP5/TickMark.java | 94 - .../controlP5/src/controlP5/Toggle.java | 274 - .../controlP5/src/controlP5/Tooltip.java | 390 -- .../controlP5/src/controlP5/changeLog.txt | 867 --- .../controlP5/src/controlP5/package.html | 16 - .../Blank2DCanvas/BasicSpiral/BasicSpiral.pde | 65 - .../Blank2DCanvas/Butterfly/Butterfly.pde | 70 - .../RollingGraph_Alternative.pde | 92 - .../Blank2DCanvas/ScatterPlot/ScatterPlot.pde | 85 - .../examples/Blank2DCanvas/Shapes/Shapes.pde | 76 - .../examples/Graph2D/Basic1/Basic1.pde | 60 - .../examples/Graph2D/Basic2/Basic2.pde | 83 - .../examples/Graph2D/Basic3/Basic3.pde | 88 - .../Graph2D/RollingGraph/RollingGraph.pde | 62 - .../Graph2D/TraceEffects/TraceEffects.pde | 91 - .../gwoptics/examples/Graph3D/Basic/Basic.pde | 60 - .../ColourMap_Camera/ColourMap_Camera.pde | 106 - .../Graph3D/DynamicWave/DynamicWave.pde | 59 - .../Graph3D/SquareMesh/SquareMesh.pde | 34 - .../ScatterPlot_1_Basic.pde | 59 - .../ScatterPlot_2_Labels.pde | 69 - .../ScatterPlot_3_Custom_Point.pde | 79 - .../ScatterPlot_4_Advanced.pde | 113 - .../libraries/gwoptics/library.properties | 46 - .../libraries/gwoptics/library/gwoptics.jar | Bin 83070 -> 0 bytes .../gwoptics/reference/allclasses-frame.html | 149 - .../reference/allclasses-noframe.html | 149 - .../gwoptics/reference/constant-values.html | 144 - .../gwoptics/reference/deprecated-list.html | 144 - .../gwoptics/reference/help-doc.html | 217 - .../gwoptics/reference/index-all.html | 1938 ------ .../libraries/gwoptics/reference/index.html | 73 - .../org/gwoptics/ArgumentException.html | 249 - .../gwoptics/reference/org/gwoptics/Logo.html | 363 -- .../reference/org/gwoptics/LogoSize.html | 445 -- .../reference/org/gwoptics/ValueType.html | 347 -- .../reference/org/gwoptics/Version.html | 261 - .../org/gwoptics/gaussbeams/GaussMode.html | 1477 ----- .../gwoptics/gaussbeams/package-frame.html | 32 - .../gwoptics/gaussbeams/package-summary.html | 156 - .../org/gwoptics/gaussbeams/package-tree.html | 151 - .../org/gwoptics/graphics/GWColour.html | 679 -- .../org/gwoptics/graphics/IRenderable.html | 242 - .../org/gwoptics/graphics/Renderable.html | 327 - .../gwoptics/graphics/camera/Camera3D.html | 736 --- .../graphics/camera/package-frame.html | 32 - .../graphics/camera/package-summary.html | 156 - .../graphics/camera/package-tree.html | 152 - .../graphics/colourmap/ColourmapNode.html | 370 -- .../graphics/colourmap/EquationColourmap.html | 436 -- .../graphics/colourmap/IColourmap.html | 319 - .../colourmap/IColourmapEquation.html | 218 - .../MapNeedsGeneratingException.html | 248 - .../graphics/colourmap/RGBColourmap.html | 558 -- .../graphics/colourmap/package-frame.html | 60 - .../graphics/colourmap/package-summary.html | 201 - .../graphics/colourmap/package-tree.html | 166 - .../colourmap/presets/CoolColourmap.html | 260 - .../colourmap/presets/FlipColourmap.html | 264 - .../colourmap/presets/GrayScaleColourmap.html | 260 - .../colourmap/presets/HotColourmap.html | 260 - .../colourmap/presets/PresetColourmaps.html | 264 - .../graphics/colourmap/presets/Presets.html | 368 -- .../colourmap/presets/WarmColourmap.html | 259 - .../colourmap/presets/package-frame.html | 53 - .../colourmap/presets/package-summary.html | 194 - .../colourmap/presets/package-tree.html | 167 - .../graphics/graph2D/Axis2D.Alignment.html | 370 -- .../org/gwoptics/graphics/graph2D/Axis2D.html | 1272 ---- .../gwoptics/graphics/graph2D/Graph2D.html | 1122 ---- .../gwoptics/graphics/graph2D/IGraph2D.html | 257 - .../gwoptics/graphics/graph2D/LabelPos.html | 362 -- .../graph2D/backgrounds/GridBackground.html | 420 -- .../backgrounds/IGraph2DBackground.html | 248 - .../backgrounds/SolidColourBackground.html | 381 -- .../graph2D/backgrounds/package-frame.html | 45 - .../graph2D/backgrounds/package-summary.html | 173 - .../graph2D/backgrounds/package-tree.html | 161 - .../graph2D/effects/AxisColourmapEffect.html | 310 - .../graph2D/effects/ITraceColourEffect.html | 285 - .../graph2D/effects/XAxisColourmapEffect.html | 282 - .../graph2D/effects/YAxisColourmapEffect.html | 282 - .../graph2D/effects/package-frame.html | 47 - .../graph2D/effects/package-summary.html | 177 - .../graph2D/effects/package-tree.html | 159 - .../graphics/graph2D/package-frame.html | 58 - .../graphics/graph2D/package-summary.html | 194 - .../graphics/graph2D/package-tree.html | 171 - .../traces/Blank2DTrace.PlotRenderer.html | 310 - .../graphics/graph2D/traces/Blank2DTrace.html | 484 -- .../graph2D/traces/IGraph2DTrace.html | 355 -- .../graph2D/traces/ILine2DEquation.html | 225 - .../graphics/graph2D/traces/Line2DTrace.html | 705 --- ...e2DTrace.RollingTraceTooFastException.html | 252 - .../graph2D/traces/RollingLine2DTrace.html | 510 -- .../traces/ScatterTrace.IScatterPoint.html | 213 - .../traces/ScatterTrace.LABELPOSITION.html | 371 -- .../graphics/graph2D/traces/ScatterTrace.html | 582 -- .../graph2D/traces/Trace2DException.html | 239 - .../graph2D/traces/UpdatingLine2DTrace.html | 421 -- .../graph2D/traces/package-frame.html | 77 - .../graph2D/traces/package-summary.html | 226 - .../graphics/graph2D/traces/package-tree.html | 181 - .../org/gwoptics/graphics/graph3D/Axis3D.html | 1047 ---- .../graphics/graph3D/IGraph3DCallback.html | 244 - .../graphics/graph3D/SquareGridMesh.html | 587 -- .../graphics/graph3D/SurfaceGraph3D.html | 1163 ---- .../graphics/graph3D/SurfaceTrace3D.html | 579 -- .../graphics/graph3D/package-frame.html | 49 - .../graphics/graph3D/package-summary.html | 185 - .../graphics/graph3D/package-tree.html | 160 - .../org/gwoptics/graphics/package-frame.html | 45 - .../gwoptics/graphics/package-summary.html | 176 - .../org/gwoptics/graphics/package-tree.html | 157 - .../gwoptics/graphicsutils/graphicsUtils.html | 275 - .../gwoptics/graphicsutils/package-frame.html | 32 - .../graphicsutils/package-summary.html | 156 - .../gwoptics/graphicsutils/package-tree.html | 151 - .../org/gwoptics/mathutils/Complex.html | 1255 ---- .../org/gwoptics/mathutils/TrigLookup.html | 295 - .../org/gwoptics/mathutils/VectorUtils.html | 261 - .../org/gwoptics/mathutils/mathUtils.html | 367 -- .../org/gwoptics/mathutils/package-frame.html | 38 - .../gwoptics/mathutils/package-summary.html | 170 - .../org/gwoptics/mathutils/package-tree.html | 151 - .../reference/org/gwoptics/package-frame.html | 58 - .../org/gwoptics/package-summary.html | 195 - .../reference/org/gwoptics/package-tree.html | 171 - .../org/gwoptics/testing/ButterFly.html | 425 -- .../org/gwoptics/testing/Graph2DTest.html | 425 -- .../testing/RollingLine2DTraceTest.html | 423 -- .../gwoptics/testing/ScatterTraceTest.html | 425 -- .../gwoptics/testing/Scatter_label_test.html | 425 -- .../org/gwoptics/testing/package-frame.html | 40 - .../org/gwoptics/testing/package-summary.html | 171 - .../org/gwoptics/testing/package-tree.html | 164 - .../gwoptics/reference/overview-frame.html | 68 - .../gwoptics/reference/overview-summary.html | 206 - .../gwoptics/reference/overview-tree.html | 213 - .../libraries/gwoptics/reference/package-list | 14 - .../gwoptics/reference/resources/inherit.gif | Bin 57 -> 0 bytes .../gwoptics/reference/serialized-form.html | 434 -- .../gwoptics/reference/stylesheet.css | 310 - OpenBCI_GUI/libraries/gwoptics/src/LICENSE | 459 -- .../gwoptics/src/data/Arial-BoldMT-12.vlw | Bin 22872 -> 0 bytes .../gwoptics/src/data/CourierNew36.vlw | Bin 114920 -> 0 bytes .../libraries/gwoptics/src/data/Verdana48.vlw | Bin 268708 -> 0 bytes .../libraries/gwoptics/src/data/Verdana72.vlw | Bin 577010 -> 0 bytes .../src/data/gwoptics_org_logo_20px.png | Bin 1599 -> 0 bytes .../src/data/gwoptics_org_logo_25px.png | Bin 2033 -> 0 bytes .../src/data/gwoptics_org_logo_30px.png | Bin 2548 -> 0 bytes .../src/data/gwoptics_org_logo_35px.png | Bin 3107 -> 0 bytes .../src/data/gwoptics_org_logo_40px.png | Bin 3553 -> 0 bytes .../src/data/gwoptics_org_logo_50px.png | Bin 4626 -> 0 bytes .../src/data/gwoptics_org_logo_60px.png | Bin 5755 -> 0 bytes .../src/data/gwoptics_org_logo_80px.png | Bin 7970 -> 0 bytes .../data/gwoptics_org_logo_shadow_20px.png | Bin 4089 -> 0 bytes .../data/gwoptics_org_logo_shadow_25px.png | Bin 5785 -> 0 bytes .../data/gwoptics_org_logo_shadow_30px.png | Bin 7823 -> 0 bytes .../data/gwoptics_org_logo_shadow_35px.png | Bin 9932 -> 0 bytes .../data/gwoptics_org_logo_shadow_40px.png | Bin 12252 -> 0 bytes .../data/gwoptics_org_logo_shadow_50px.png | Bin 17354 -> 0 bytes .../data/gwoptics_org_logo_shadow_60px.png | Bin 22915 -> 0 bytes .../data/gwoptics_org_logo_shadow_80px.png | Bin 35451 -> 0 bytes .../src/org/gwoptics/ArgumentException.java | 38 - .../gwoptics/src/org/gwoptics/Logo.java | 116 - .../gwoptics/src/org/gwoptics/LogoSize.java | 93 - .../gwoptics/src/org/gwoptics/ValueType.java | 37 - .../gwoptics/src/org/gwoptics/Version.java | 55 - .../org/gwoptics/gaussbeams/GaussMode.java | 776 --- .../src/org/gwoptics/graphics/GWColour.java | 219 - .../org/gwoptics/graphics/IRenderable.java | 40 - .../src/org/gwoptics/graphics/Renderable.java | 54 - .../gwoptics/graphics/camera/Camera3D.java | 339 - .../graphics/colourmap/ColourmapNode.java | 76 - .../graphics/colourmap/EquationColourmap.java | 163 - .../graphics/colourmap/IColourmap.java | 77 - .../colourmap/IColourmapEquation.java | 40 - .../MapNeedsGeneratingException.java | 37 - .../graphics/colourmap/RGBColourmap.java | 290 - .../colourmap/presets/CoolColourmap.java | 63 - .../colourmap/presets/FlipColourmap.java | 82 - .../colourmap/presets/GrayScaleColourmap.java | 63 - .../colourmap/presets/HotColourmap.java | 65 - .../colourmap/presets/PresetColourmaps.java | 59 - .../graphics/colourmap/presets/Presets.java | 31 - .../colourmap/presets/WarmColourmap.java | 62 - .../org/gwoptics/graphics/graph2D/Axis2D.java | 864 --- .../gwoptics/graphics/graph2D/Graph2D.java | 409 -- .../gwoptics/graphics/graph2D/IGraph2D.java | 43 - .../gwoptics/graphics/graph2D/LabelPos.java | 37 - .../graph2D/backgrounds/GridBackground.java | 113 - .../backgrounds/IGraph2DBackground.java | 32 - .../backgrounds/SolidColourBackground.java | 84 - .../graph2D/effects/AxisColourmapEffect.java | 77 - .../graph2D/effects/ITraceColourEffect.java | 71 - .../graph2D/effects/XAxisColourmapEffect.java | 70 - .../graph2D/effects/YAxisColourmapEffect.java | 70 - .../graphics/graph2D/traces/Blank2DTrace.java | 164 - .../graph2D/traces/IGraph2DTrace.java | 82 - .../graph2D/traces/ILine2DEquation.java | 47 - .../graphics/graph2D/traces/Line2DTrace.java | 401 -- .../graph2D/traces/RollingLine2DTrace.java | 365 -- .../graphics/graph2D/traces/ScatterTrace.java | 330 - .../graph2D/traces/Trace2DException.java | 30 - .../graph2D/traces/UpdatingLine2DTrace.java | 265 - .../org/gwoptics/graphics/graph3D/Axis3D.java | 477 -- .../graphics/graph3D/IGraph3DCallback.java | 65 - .../graphics/graph3D/SquareGridMesh.java | 251 - .../graphics/graph3D/SurfaceGraph3D.java | 575 -- .../graphics/graph3D/SurfaceTrace3D.java | 283 - .../gwoptics/graphicsutils/graphicsUtils.java | 72 - .../src/org/gwoptics/mathutils/Complex.java | 797 --- .../org/gwoptics/mathutils/TrigLookup.java | 105 - .../org/gwoptics/mathutils/VectorUtils.java | 75 - .../src/org/gwoptics/mathutils/mathUtils.java | 354 -- .../src/org/gwoptics/testing/ButterFly.java | 79 - .../src/org/gwoptics/testing/Graph2DTest.java | 59 - .../testing/RollingLine2DTraceTest.java | 113 - .../gwoptics/testing/ScatterTraceTest.java | 75 - .../gwoptics/testing/Scatter_label_test.java | 128 - OpenBCI_GUI/libraries/minim/README.md | 70 - OpenBCI_GUI/libraries/minim/changelog.txt | 63 - .../minim/documentation/abs_class_abs.html | 80 - .../minim/documentation/abs_field_audio.html | 55 - .../abs_method_channelcount.html | 57 - .../abs_method_getlastvalues.html | 58 - .../minim/documentation/abs_method_patch.html | 132 - .../documentation/abs_method_printinputs.html | 57 - .../documentation/abs_method_samplerate.html | 57 - .../abs_method_setchannelcount.html | 64 - .../abs_method_setsamplerate.html | 62 - .../minim/documentation/abs_method_tick.html | 65 - .../documentation/abs_method_unpatch.html | 67 - .../minim/documentation/adsr_class_adsr.html | 250 - .../minim/documentation/adsr_field_audio.html | 58 - .../adsr_method_channelcount.html | 57 - .../adsr_method_getlastvalues.html | 58 - .../documentation/adsr_method_noteoff.html | 171 - .../documentation/adsr_method_noteon.html | 171 - .../documentation/adsr_method_patch.html | 132 - .../adsr_method_printinputs.html | 57 - .../documentation/adsr_method_samplerate.html | 57 - .../adsr_method_setchannelcount.html | 64 - .../adsr_method_setparameters.html | 75 - .../adsr_method_setsamplerate.html | 62 - .../minim/documentation/adsr_method_tick.html | 65 - .../documentation/adsr_method_unpatch.html | 67 - .../adsr_method_unpatchafterrelease.html | 179 - .../audiobuffer_audiobuffer.html | 69 - .../documentation/audiobuffer_method_get.html | 113 - .../audiobuffer_method_level.html | 108 - .../audiobuffer_method_size.html | 58 - .../audiobuffer_method_toarray.html | 60 - .../audioinput_class_audioinput.html | 212 - .../documentation/audioinput_field_left.html | 132 - .../documentation/audioinput_field_mix.html | 133 - .../documentation/audioinput_field_right.html | 133 - .../audioinput_method_addlistener.html | 201 - .../audioinput_method_buffersize.html | 136 - .../audioinput_method_close.html | 57 - .../audioinput_method_disablemonitoring.html | 127 - .../audioinput_method_enablemonitoring.html | 122 - .../audioinput_method_getbalance.html | 63 - .../audioinput_method_getcontrol.html | 57 - .../audioinput_method_getformat.html | 126 - .../audioinput_method_getgain.html | 68 - .../audioinput_method_getpan.html | 63 - .../audioinput_method_getvolume.html | 61 - .../audioinput_method_ismonitoring.html | 123 - .../audioinput_method_ismuted.html | 59 - .../documentation/audioinput_method_mute.html | 59 - .../audioinput_method_removelistener.html | 200 - .../audioinput_method_samplerate.html | 57 - .../audioinput_method_setbalance.html | 66 - .../audioinput_method_setgain.html | 65 - .../audioinput_method_setpan.html | 66 - .../audioinput_method_setvolume.html | 65 - .../audioinput_method_shiftbalance.html | 68 - .../audioinput_method_shiftgain.html | 68 - .../audioinput_method_shiftpan.html | 68 - .../audioinput_method_shiftvolume.html | 68 - .../documentation/audioinput_method_type.html | 58 - .../audioinput_method_unmute.html | 59 - .../audiolistener_audiolistener.html | 202 - .../audiolistener_method_samples.html | 205 - .../audiometadata_class_audiometadata.html | 156 - .../audiometadata_method_album.html | 58 - .../audiometadata_method_author.html | 58 - .../audiometadata_method_comment.html | 58 - .../audiometadata_method_composer.html | 58 - .../audiometadata_method_copyright.html | 58 - .../audiometadata_method_date.html | 58 - .../audiometadata_method_disc.html | 58 - .../audiometadata_method_encoded.html | 58 - .../audiometadata_method_filename.html | 58 - .../audiometadata_method_genre.html | 58 - .../audiometadata_method_length.html | 58 - .../audiometadata_method_lyrics.html | 58 - .../audiometadata_method_orchestra.html | 58 - .../audiometadata_method_publisher.html | 58 - ...audiometadata_method_sampleframecount.html | 58 - .../audiometadata_method_title.html | 58 - .../audiometadata_method_track.html | 61 - .../audiooutput_class_audiooutput.html | 267 - .../documentation/audiooutput_field_left.html | 132 - .../documentation/audiooutput_field_mix.html | 133 - .../audiooutput_field_right.html | 133 - .../audiooutput_method_addlistener.html | 201 - .../audiooutput_method_buffersize.html | 136 - .../audiooutput_method_close.html | 64 - .../audiooutput_method_getbalance.html | 63 - .../audiooutput_method_getcontrol.html | 57 - .../audiooutput_method_getdurationfactor.html | 58 - .../audiooutput_method_getformat.html | 126 - .../audiooutput_method_getgain.html | 68 - .../audiooutput_method_getnoteoffset.html | 143 - .../audiooutput_method_getpan.html | 63 - .../audiooutput_method_gettempo.html | 144 - .../audiooutput_method_getvolume.html | 61 - .../audiooutput_method_ismuted.html | 59 - .../audiooutput_method_mute.html | 59 - .../audiooutput_method_pausenotes.html | 149 - .../audiooutput_method_playnote.html | 193 - .../audiooutput_method_removelistener.html | 200 - .../audiooutput_method_resumenotes.html | 143 - .../audiooutput_method_samplerate.html | 57 - .../audiooutput_method_setbalance.html | 66 - .../audiooutput_method_setdurationfactor.html | 68 - .../audiooutput_method_setgain.html | 65 - .../audiooutput_method_setnoteoffset.html | 155 - .../audiooutput_method_setpan.html | 66 - .../audiooutput_method_settempo.html | 152 - .../audiooutput_method_setvolume.html | 65 - .../audiooutput_method_shiftbalance.html | 68 - .../audiooutput_method_shiftgain.html | 68 - .../audiooutput_method_shiftpan.html | 68 - .../audiooutput_method_shiftvolume.html | 68 - .../audiooutput_method_type.html | 58 - .../audiooutput_method_unmute.html | 59 - .../audioplayer_class_audioplayer.html | 224 - .../documentation/audioplayer_field_left.html | 132 - .../documentation/audioplayer_field_mix.html | 133 - .../audioplayer_field_right.html | 133 - .../audioplayer_method_addlistener.html | 201 - .../audioplayer_method_buffersize.html | 136 - .../audioplayer_method_close.html | 68 - .../documentation/audioplayer_method_cue.html | 121 - .../audioplayer_method_getbalance.html | 63 - .../audioplayer_method_getcontrol.html | 57 - .../audioplayer_method_getformat.html | 126 - .../audioplayer_method_getgain.html | 68 - .../audioplayer_method_getmetadata.html | 117 - .../audioplayer_method_getpan.html | 63 - .../audioplayer_method_getvolume.html | 61 - .../audioplayer_method_islooping.html | 114 - .../audioplayer_method_ismuted.html | 59 - .../audioplayer_method_isplaying.html | 113 - .../audioplayer_method_length.html | 112 - .../audioplayer_method_loop.html | 127 - .../audioplayer_method_loopcount.html | 113 - .../audioplayer_method_mute.html | 59 - .../audioplayer_method_pause.html | 104 - .../audioplayer_method_play.html | 141 - .../audioplayer_method_position.html | 111 - .../audioplayer_method_removelistener.html | 200 - .../audioplayer_method_rewind.html | 104 - .../audioplayer_method_samplerate.html | 57 - .../audioplayer_method_setbalance.html | 66 - .../audioplayer_method_setgain.html | 65 - .../audioplayer_method_setlooppoints.html | 133 - .../audioplayer_method_setpan.html | 66 - .../audioplayer_method_setvolume.html | 65 - .../audioplayer_method_shiftbalance.html | 68 - .../audioplayer_method_shiftgain.html | 68 - .../audioplayer_method_shiftpan.html | 68 - .../audioplayer_method_shiftvolume.html | 68 - .../audioplayer_method_skip.html | 130 - .../audioplayer_method_type.html | 58 - .../audioplayer_method_unmute.html | 59 - .../audiorecorder_class_audiorecorder.html | 176 - .../audiorecorder_method_beginrecord.html | 171 - .../audiorecorder_method_endrecord.html | 169 - .../audiorecorder_method_isrecording.html | 169 - .../audiorecorder_method_save.html | 179 - .../audiorecorder_method_setrecordsource.html | 67 - .../audiosample_class_audiosample.html | 226 - .../documentation/audiosample_field_left.html | 132 - .../documentation/audiosample_field_mix.html | 133 - .../audiosample_field_right.html | 133 - .../audiosample_method_addlistener.html | 201 - .../audiosample_method_buffersize.html | 136 - .../audiosample_method_close.html | 64 - .../audiosample_method_getbalance.html | 63 - .../audiosample_method_getchannel.html | 108 - .../audiosample_method_getcontrol.html | 57 - .../audiosample_method_getformat.html | 126 - .../audiosample_method_getgain.html | 68 - .../audiosample_method_getmetadata.html | 119 - .../audiosample_method_getpan.html | 63 - .../audiosample_method_getvolume.html | 61 - .../audiosample_method_ismuted.html | 59 - .../audiosample_method_length.html | 58 - .../audiosample_method_mute.html | 59 - .../audiosample_method_removelistener.html | 200 - .../audiosample_method_samplerate.html | 57 - .../audiosample_method_setbalance.html | 66 - .../audiosample_method_setgain.html | 65 - .../audiosample_method_setpan.html | 66 - .../audiosample_method_setvolume.html | 65 - .../audiosample_method_shiftbalance.html | 68 - .../audiosample_method_shiftgain.html | 68 - .../audiosample_method_shiftpan.html | 68 - .../audiosample_method_shiftvolume.html | 68 - .../audiosample_method_stop.html | 58 - .../audiosample_method_trigger.html | 143 - .../audiosample_method_type.html | 58 - .../audiosample_method_unmute.html | 59 - .../documentation/balance_class_balance.html | 221 - .../documentation/balance_field_audio.html | 57 - .../documentation/balance_field_balance.html | 57 - .../balance_method_channelcount.html | 57 - .../balance_method_getlastvalues.html | 58 - .../documentation/balance_method_patch.html | 132 - .../balance_method_printinputs.html | 57 - .../balance_method_samplerate.html | 57 - .../balance_method_setbalance.html | 64 - .../balance_method_setchannelcount.html | 64 - .../balance_method_setsamplerate.html | 62 - .../documentation/balance_method_tick.html | 65 - .../documentation/balance_method_unpatch.html | 67 - .../beatdetect_class_beatdetect.html | 206 - .../beatdetect_field_freq_energy.html | 182 - .../beatdetect_field_sound_energy.html | 98 - .../beatdetect_method_dectectsize.html | 57 - .../beatdetect_method_detect.html | 111 - .../beatdetect_method_detectmode.html | 65 - .../beatdetect_method_detectsize.html | 59 - ...etect_method_getdetectcenterfrequency.html | 64 - .../beatdetect_method_ishat.html | 189 - .../beatdetect_method_iskick.html | 189 - .../beatdetect_method_isonset.html | 109 - .../beatdetect_method_isrange.html | 74 - .../beatdetect_method_issnare.html | 189 - .../beatdetect_method_setsensitivity.html | 196 - .../bitcrush_class_bitcrush.html | 230 - .../documentation/bitcrush_field_audio.html | 57 - .../documentation/bitcrush_field_bitrate.html | 176 - .../documentation/bitcrush_field_bitres.html | 177 - .../bitcrush_method_channelcount.html | 57 - .../bitcrush_method_getlastvalues.html | 58 - .../documentation/bitcrush_method_patch.html | 132 - .../bitcrush_method_printinputs.html | 57 - .../bitcrush_method_samplerate.html | 57 - .../bitcrush_method_setbitres.html | 64 - .../bitcrush_method_setchannelcount.html | 64 - .../bitcrush_method_setsamplerate.html | 62 - .../documentation/bitcrush_method_tick.html | 65 - .../bitcrush_method_unpatch.html | 67 - .../documentation/bypass_class_bypass.html | 225 - .../documentation/bypass_method_activate.html | 167 - .../bypass_method_channelcount.html | 57 - .../bypass_method_deactivate.html | 168 - .../bypass_method_getlastvalues.html | 58 - .../documentation/bypass_method_isactive.html | 166 - .../documentation/bypass_method_patch.html | 132 - .../bypass_method_printinputs.html | 57 - .../bypass_method_samplerate.html | 57 - .../bypass_method_setchannelcount.html | 64 - .../bypass_method_setsamplerate.html | 62 - .../documentation/bypass_method_tick.html | 65 - .../documentation/bypass_method_ugen.html | 166 - .../documentation/bypass_method_unpatch.html | 67 - .../constant_class_constant.html | 156 - .../constant_method_channelcount.html | 57 - .../constant_method_getlastvalues.html | 58 - .../documentation/constant_method_patch.html | 132 - .../constant_method_printinputs.html | 57 - .../constant_method_samplerate.html | 57 - .../constant_method_setchannelcount.html | 64 - .../constant_method_setconstant.html | 135 - .../constant_method_setsamplerate.html | 62 - .../documentation/constant_method_tick.html | 65 - .../constant_method_unpatch.html | 67 - .../minim/documentation/damp_class_damp.html | 269 - .../minim/documentation/damp_field_audio.html | 57 - .../documentation/damp_method_activate.html | 192 - .../damp_method_channelcount.html | 57 - .../damp_method_getlastvalues.html | 58 - .../documentation/damp_method_patch.html | 132 - .../damp_method_printinputs.html | 57 - .../documentation/damp_method_samplerate.html | 57 - .../damp_method_setattacktime.html | 63 - .../damp_method_setchannelcount.html | 64 - .../damp_method_setdamptime.html | 63 - .../damp_method_setdamptimefromduration.html | 200 - .../damp_method_setsamplerate.html | 62 - .../minim/documentation/damp_method_tick.html | 65 - .../documentation/damp_method_unpatch.html | 67 - .../damp_method_unpatchafterdamp.html | 200 - ...ultinstrument_class_defaultinstrument.html | 135 - .../defaultinstrument_method_noteoff.html | 62 - .../defaultinstrument_method_noteon.html | 66 - .../documentation/delay_class_delay.html | 199 - .../documentation/delay_field_audio.html | 56 - .../documentation/delay_field_delamp.html | 148 - .../documentation/delay_field_deltime.html | 147 - .../delay_method_channelcount.html | 57 - .../delay_method_getlastvalues.html | 58 - .../documentation/delay_method_patch.html | 132 - .../delay_method_printinputs.html | 57 - .../delay_method_samplerate.html | 57 - .../delay_method_setchannelcount.html | 64 - .../documentation/delay_method_setdelamp.html | 156 - .../delay_method_setdeltime.html | 155 - .../delay_method_setsamplerate.html | 62 - .../documentation/delay_method_tick.html | 65 - .../documentation/delay_method_unpatch.html | 67 - ...velopefollower_class_envelopefollower.html | 182 - .../envelopefollower_field_audio.html | 56 - .../envelopefollower_method_channelcount.html | 57 - ...envelopefollower_method_getlastvalues.html | 58 - .../envelopefollower_method_patch.html | 132 - .../envelopefollower_method_printinputs.html | 57 - .../envelopefollower_method_samplerate.html | 57 - ...velopefollower_method_setchannelcount.html | 64 - ...envelopefollower_method_setsamplerate.html | 62 - .../envelopefollower_method_tick.html | 65 - .../envelopefollower_method_unpatch.html | 67 - .../minim/documentation/fft_class_fft.html | 338 - .../documentation/fft_field_bartlett.html | 164 - .../documentation/fft_field_bartletthann.html | 164 - .../documentation/fft_field_blackman.html | 164 - .../minim/documentation/fft_field_cosine.html | 164 - .../minim/documentation/fft_field_gauss.html | 164 - .../documentation/fft_field_hamming.html | 164 - .../minim/documentation/fft_field_hann.html | 164 - .../documentation/fft_field_lanczos.html | 164 - .../minim/documentation/fft_field_none.html | 165 - .../documentation/fft_field_triangular.html | 164 - .../documentation/fft_method_avgsize.html | 58 - .../documentation/fft_method_calcavg.html | 66 - .../documentation/fft_method_forward.html | 130 - .../documentation/fft_method_freqtoindex.html | 244 - .../fft_method_getaveragebandwidth.html | 246 - .../fft_method_getaveragecenterfrequency.html | 243 - .../documentation/fft_method_getavg.html | 63 - .../documentation/fft_method_getband.html | 121 - .../fft_method_getbandwidth.html | 60 - .../documentation/fft_method_getfreq.html | 63 - .../fft_method_getspectrumimaginary.html | 58 - .../fft_method_getspectrumreal.html | 58 - .../documentation/fft_method_indextofreq.html | 63 - .../documentation/fft_method_inverse.html | 74 - .../documentation/fft_method_linaverages.html | 245 - .../documentation/fft_method_logaverages.html | 253 - .../documentation/fft_method_noaverages.html | 58 - .../documentation/fft_method_scaleband.html | 142 - .../documentation/fft_method_scalefreq.html | 139 - .../documentation/fft_method_setband.html | 148 - .../documentation/fft_method_setfreq.html | 131 - .../documentation/fft_method_specsize.html | 118 - .../documentation/fft_method_timesize.html | 58 - .../documentation/fft_method_window.html | 175 - .../fileplayer_class_fileplayer.html | 215 - .../fileplayer_method_channelcount.html | 57 - .../fileplayer_method_close.html | 59 - .../documentation/fileplayer_method_cue.html | 68 - .../fileplayer_method_getlastvalues.html | 58 - .../fileplayer_method_getmetadata.html | 59 - .../fileplayer_method_getstream.html | 60 - .../fileplayer_method_islooping.html | 60 - .../fileplayer_method_isplaying.html | 157 - .../fileplayer_method_length.html | 60 - .../documentation/fileplayer_method_loop.html | 166 - .../fileplayer_method_loopcount.html | 59 - .../fileplayer_method_patch.html | 132 - .../fileplayer_method_pause.html | 155 - .../documentation/fileplayer_method_play.html | 162 - .../fileplayer_method_position.html | 59 - .../fileplayer_method_printinputs.html | 57 - .../fileplayer_method_rewind.html | 58 - .../fileplayer_method_samplerate.html | 57 - .../fileplayer_method_setchannelcount.html | 64 - .../fileplayer_method_setlooppoints.html | 66 - .../fileplayer_method_setsamplerate.html | 62 - .../documentation/fileplayer_method_skip.html | 67 - .../documentation/fileplayer_method_tick.html | 65 - .../fileplayer_method_unpatch.html | 67 - .../documentation/flanger_class_flanger.html | 220 - .../documentation/flanger_field_audio.html | 149 - .../documentation/flanger_field_delay.html | 150 - .../documentation/flanger_field_depth.html | 149 - .../documentation/flanger_field_dry.html | 149 - .../documentation/flanger_field_feedback.html | 149 - .../documentation/flanger_field_rate.html | 149 - .../documentation/flanger_field_wet.html | 149 - .../flanger_method_channelcount.html | 57 - .../flanger_method_getlastvalues.html | 58 - .../documentation/flanger_method_patch.html | 132 - .../flanger_method_printinputs.html | 57 - .../flanger_method_samplerate.html | 57 - .../flanger_method_setchannelcount.html | 64 - .../flanger_method_setsamplerate.html | 62 - .../documentation/flanger_method_tick.html | 65 - .../documentation/flanger_method_unpatch.html | 67 - .../frequency_class_frequency.html | 154 - .../documentation/frequency_method_ashz.html | 144 - .../frequency_method_asmidinote.html | 143 - .../frequency_method_ofhertz.html | 148 - .../frequency_method_ofmidinote.html | 148 - .../frequency_method_ofpitch.html | 148 - .../frequency_method_setashz.html | 64 - .../minim/documentation/gain_class_gain.html | 185 - .../minim/documentation/gain_field_audio.html | 57 - .../minim/documentation/gain_field_gain.html | 58 - .../gain_method_channelcount.html | 57 - .../gain_method_getlastvalues.html | 58 - .../documentation/gain_method_patch.html | 132 - .../gain_method_printinputs.html | 57 - .../documentation/gain_method_samplerate.html | 57 - .../gain_method_setchannelcount.html | 64 - .../gain_method_setsamplerate.html | 62 - .../documentation/gain_method_setvalue.html | 146 - .../minim/documentation/gain_method_tick.html | 65 - .../documentation/gain_method_unpatch.html | 67 - ...granulaterandom_class_granulaterandom.html | 302 - .../granulaterandom_field_audio.html | 55 - .../granulaterandom_field_fadelenmax.html | 55 - .../granulaterandom_field_fadelenmin.html | 55 - .../granulaterandom_field_grainlenmax.html | 55 - .../granulaterandom_field_grainlenmin.html | 55 - .../granulaterandom_field_spacelenmax.html | 55 - .../granulaterandom_field_spacelenmin.html | 55 - .../granulaterandom_method_channelcount.html | 57 - .../granulaterandom_method_getlastvalues.html | 58 - .../granulaterandom_method_patch.html | 132 - .../granulaterandom_method_printinputs.html | 57 - .../granulaterandom_method_samplerate.html | 57 - ...anulaterandom_method_setallparameters.html | 77 - ...aterandom_method_setalltimeparameters.html | 73 - ...ranulaterandom_method_setchannelcount.html | 64 - .../granulaterandom_method_setsamplerate.html | 62 - .../granulaterandom_method_tick.html | 65 - .../granulaterandom_method_unpatch.html | 67 - ...granulatesteady_class_granulatesteady.html | 264 - .../granulatesteady_field_audio.html | 55 - .../granulatesteady_field_fadelen.html | 55 - .../granulatesteady_field_grainlen.html | 55 - .../granulatesteady_field_spacelen.html | 55 - .../granulatesteady_method_channelcount.html | 57 - .../granulatesteady_method_getlastvalues.html | 58 - .../granulatesteady_method_patch.html | 132 - .../granulatesteady_method_printinputs.html | 57 - .../granulatesteady_method_reset.html | 59 - .../granulatesteady_method_samplerate.html | 57 - ...anulatesteady_method_setallparameters.html | 71 - ...atesteady_method_setalltimeparameters.html | 67 - ...ranulatesteady_method_setchannelcount.html | 64 - .../granulatesteady_method_setsamplerate.html | 62 - .../granulatesteady_method_tick.html | 65 - .../granulatesteady_method_unpatch.html | 67 - .../minim/documentation/images/index.gif | Bin 534 -> 0 bytes .../minim/documentation/images/proxml.gif | Bin 897 -> 0 bytes .../libraries/minim/documentation/index.html | 89 - .../minim/documentation/index_analysis.html | 95 - .../minim/documentation/index_ugens.html | 277 - .../documentation/instrument_instrument.html | 145 - .../instrument_method_noteoff.html | 147 - .../instrument_method_noteon.html | 153 - .../minim/documentation/line_class_line.html | 276 - .../documentation/line_method_activate.html | 67 - .../line_method_channelcount.html | 57 - .../line_method_getlastvalues.html | 58 - .../documentation/line_method_isatend.html | 57 - .../documentation/line_method_patch.html | 132 - .../line_method_printinputs.html | 57 - .../documentation/line_method_samplerate.html | 57 - .../line_method_setchannelcount.html | 64 - .../documentation/line_method_setendamp.html | 64 - .../line_method_setlinetime.html | 62 - .../line_method_setsamplerate.html | 62 - .../minim/documentation/line_method_tick.html | 65 - .../documentation/line_method_unpatch.html | 67 - .../liveinput_class_liveinput.html | 145 - .../liveinput_method_channelcount.html | 57 - .../documentation/liveinput_method_close.html | 58 - .../liveinput_method_getlastvalues.html | 58 - .../documentation/liveinput_method_patch.html | 132 - .../liveinput_method_printinputs.html | 57 - .../liveinput_method_samplerate.html | 57 - .../liveinput_method_setchannelcount.html | 64 - .../liveinput_method_setsamplerate.html | 62 - .../documentation/liveinput_method_tick.html | 65 - .../liveinput_method_unpatch.html | 67 - .../documentation/midi2hz_class_midi2hz.html | 170 - .../midi2hz_field_midinotein.html | 57 - .../midi2hz_method_channelcount.html | 57 - .../midi2hz_method_getlastvalues.html | 58 - .../documentation/midi2hz_method_patch.html | 132 - .../midi2hz_method_printinputs.html | 57 - .../midi2hz_method_samplerate.html | 57 - .../midi2hz_method_setchannelcount.html | 64 - .../midi2hz_method_setmidinotein.html | 64 - .../midi2hz_method_setsamplerate.html | 62 - .../documentation/midi2hz_method_tick.html | 65 - .../documentation/midi2hz_method_unpatch.html | 67 - .../documentation/minim_class_minim.html | 250 - .../minim/documentation/minim_field_aifc.html | 54 - .../minim/documentation/minim_field_aiff.html | 54 - .../minim/documentation/minim_field_au.html | 54 - .../minim_field_loop_continuously.html | 54 - .../minim/documentation/minim_field_mono.html | 54 - .../minim/documentation/minim_field_snd.html | 54 - .../documentation/minim_field_stereo.html | 54 - .../minim/documentation/minim_field_wav.html | 54 - .../minim_method_createrecorder.html | 162 - .../minim_method_createsample.html | 156 - .../documentation/minim_method_debugoff.html | 57 - .../documentation/minim_method_debugon.html | 57 - .../minim_method_getinputstream.html | 70 - .../documentation/minim_method_getlinein.html | 142 - .../minim_method_getlineout.html | 185 - .../documentation/minim_method_loadfile.html | 147 - .../minim_method_loadfileintobuffer.html | 158 - .../minim_method_loadfilestream.html | 249 - .../minim_method_loadsample.html | 153 - .../minim_method_setinputmixer.html | 64 - .../minim_method_setoutputmixer.html | 65 - .../documentation/minim_method_stop.html | 61 - ...moogfilter.type_class_moogfilter.type.html | 145 - .../moogfilter.type_field_bp.html | 55 - .../moogfilter.type_field_hp.html | 55 - .../moogfilter.type_field_lp.html | 55 - .../moogfilter.type_method_valueof.html | 57 - .../moogfilter.type_method_values.html | 57 - .../moogfilter_class_moogfilter.html | 198 - .../documentation/moogfilter_field_audio.html | 57 - .../moogfilter_field_frequency.html | 141 - .../moogfilter_field_resonance.html | 140 - .../documentation/moogfilter_field_type.html | 139 - .../moogfilter_method_channelcount.html | 57 - .../moogfilter_method_getlastvalues.html | 58 - .../moogfilter_method_patch.html | 132 - .../moogfilter_method_printinputs.html | 57 - .../moogfilter_method_samplerate.html | 57 - .../moogfilter_method_setchannelcount.html | 64 - .../moogfilter_method_setsamplerate.html | 62 - .../documentation/moogfilter_method_tick.html | 65 - .../moogfilter_method_unpatch.html | 67 - ...hannelbuffer_class_multichannelbuffer.html | 183 - ...ltichannelbuffer_method_getbuffersize.html | 57 - .../multichannelbuffer_method_getchannel.html | 65 - ...ichannelbuffer_method_getchannelcount.html | 57 - .../multichannelbuffer_method_getsample.html | 72 - .../multichannelbuffer_method_set.html | 64 - ...ltichannelbuffer_method_setbuffersize.html | 64 - .../multichannelbuffer_method_setchannel.html | 68 - ...ichannelbuffer_method_setchannelcount.html | 64 - .../multichannelbuffer_method_setsample.html | 67 - .../multiplier_class_multiplier.html | 165 - .../multiplier_field_amplitude.html | 56 - .../documentation/multiplier_field_audio.html | 57 - .../multiplier_method_channelcount.html | 57 - .../multiplier_method_getlastvalues.html | 58 - .../multiplier_method_patch.html | 132 - .../multiplier_method_printinputs.html | 57 - .../multiplier_method_samplerate.html | 57 - .../multiplier_method_setchannelcount.html | 64 - .../multiplier_method_setsamplerate.html | 62 - .../multiplier_method_setvalue.html | 136 - .../documentation/multiplier_method_tick.html | 65 - .../multiplier_method_unpatch.html | 67 - .../noise.tint_class_noise.tint.html | 133 - .../documentation/noise.tint_field_brown.html | 54 - .../documentation/noise.tint_field_pink.html | 54 - .../documentation/noise.tint_field_red.html | 54 - .../documentation/noise.tint_field_white.html | 54 - .../noise.tint_method_valueof.html | 57 - .../noise.tint_method_values.html | 57 - .../documentation/noise_class_noise.html | 236 - .../documentation/noise_field_amplitude.html | 55 - .../documentation/noise_field_offset.html | 55 - .../noise_method_channelcount.html | 57 - .../noise_method_getlastvalues.html | 58 - .../documentation/noise_method_gettint.html | 60 - .../documentation/noise_method_patch.html | 132 - .../noise_method_printinputs.html | 57 - .../noise_method_samplerate.html | 57 - .../noise_method_setchannelcount.html | 64 - .../noise_method_setsamplerate.html | 62 - .../documentation/noise_method_settint.html | 65 - .../documentation/noise_method_tick.html | 65 - .../documentation/noise_method_unpatch.html | 67 - .../documentation/oscil_class_oscil.html | 253 - .../documentation/oscil_field_amplitude.html | 163 - .../documentation/oscil_field_frequency.html | 137 - .../documentation/oscil_field_offset.html | 137 - .../documentation/oscil_field_phase.html | 179 - .../oscil_method_channelcount.html | 57 - .../oscil_method_getlastvalues.html | 58 - .../oscil_method_getwaveform.html | 159 - .../documentation/oscil_method_patch.html | 132 - .../oscil_method_printinputs.html | 57 - .../documentation/oscil_method_reset.html | 187 - .../oscil_method_samplerate.html | 57 - .../oscil_method_setamplitude.html | 167 - .../oscil_method_setchannelcount.html | 64 - .../oscil_method_setfrequency.html | 171 - .../documentation/oscil_method_setphase.html | 67 - .../oscil_method_setsamplerate.html | 62 - .../oscil_method_setwaveform.html | 164 - .../documentation/oscil_method_tick.html | 65 - .../documentation/oscil_method_unpatch.html | 67 - .../minim/documentation/pan_class_pan.html | 214 - .../minim/documentation/pan_field_pan.html | 172 - .../pan_method_channelcount.html | 57 - .../pan_method_getlastvalues.html | 58 - .../minim/documentation/pan_method_patch.html | 132 - .../documentation/pan_method_printinputs.html | 57 - .../documentation/pan_method_samplerate.html | 57 - .../pan_method_setchannelcount.html | 64 - .../documentation/pan_method_setpan.html | 66 - .../pan_method_setsamplerate.html | 62 - .../minim/documentation/pan_method_tick.html | 65 - .../documentation/pan_method_unpatch.html | 67 - .../reciprocal_class_reciprocal.html | 95 - .../reciprocal_field_denominator.html | 54 - .../reciprocal_method_channelcount.html | 57 - .../reciprocal_method_getlastvalues.html | 58 - .../reciprocal_method_patch.html | 132 - .../reciprocal_method_printinputs.html | 57 - .../reciprocal_method_samplerate.html | 57 - .../reciprocal_method_setchannelcount.html | 64 - .../reciprocal_method_setreciprocal.html | 62 - .../reciprocal_method_setsamplerate.html | 62 - .../documentation/reciprocal_method_tick.html | 65 - .../reciprocal_method_unpatch.html | 67 - .../documentation/sampler_class_sampler.html | 305 - .../sampler_field_amplitude.html | 56 - .../documentation/sampler_field_attack.html | 57 - .../documentation/sampler_field_begin.html | 55 - .../documentation/sampler_field_end.html | 55 - .../documentation/sampler_field_looping.html | 54 - .../documentation/sampler_field_rate.html | 54 - .../sampler_method_channelcount.html | 57 - .../sampler_method_getlastvalues.html | 58 - .../documentation/sampler_method_patch.html | 132 - .../sampler_method_printinputs.html | 57 - .../sampler_method_samplerate.html | 57 - .../sampler_method_setchannelcount.html | 64 - .../sampler_method_setsample.html | 66 - .../sampler_method_setsamplerate.html | 62 - .../documentation/sampler_method_stop.html | 58 - .../documentation/sampler_method_tick.html | 65 - .../documentation/sampler_method_trigger.html | 61 - .../documentation/sampler_method_unpatch.html | 67 - .../minim/documentation/sink_class_sink.html | 162 - .../sink_method_channelcount.html | 57 - .../documentation/sink_method_generate.html | 59 - .../sink_method_getlastvalues.html | 58 - .../documentation/sink_method_patch.html | 132 - .../sink_method_printinputs.html | 57 - .../documentation/sink_method_samplerate.html | 57 - .../sink_method_setchannelcount.html | 64 - .../sink_method_setsamplerate.html | 62 - .../minim/documentation/sink_method_tick.html | 65 - .../documentation/sink_method_unpatch.html | 67 - .../minim/documentation/stylesheet.css | 169 - .../documentation/summer_class_summer.html | 137 - .../summer_method_channelcount.html | 57 - .../documentation/summer_method_generate.html | 59 - .../summer_method_getlastvalues.html | 58 - .../documentation/summer_method_patch.html | 132 - .../summer_method_printinputs.html | 57 - .../summer_method_samplerate.html | 57 - .../summer_method_setchannelcount.html | 64 - .../summer_method_setsamplerate.html | 62 - .../documentation/summer_method_tick.html | 65 - .../documentation/summer_method_unpatch.html | 67 - .../tickrate_class_tickrate.html | 204 - .../documentation/tickrate_field_value.html | 163 - .../tickrate_method_channelcount.html | 57 - .../tickrate_method_getlastvalues.html | 58 - .../tickrate_method_isinterpolating.html | 58 - .../documentation/tickrate_method_patch.html | 132 - .../tickrate_method_printinputs.html | 57 - .../tickrate_method_samplerate.html | 57 - .../tickrate_method_setchannelcount.html | 64 - .../tickrate_method_setinterpolation.html | 180 - .../tickrate_method_setsamplerate.html | 62 - .../documentation/tickrate_method_tick.html | 65 - .../tickrate_method_unpatch.html | 67 - .../ugen.inputtype_class_ugen.inputtype.html | 49 - .../ugen.inputtype_field_audio.html | 54 - .../ugen.inputtype_field_control.html | 54 - .../ugen.inputtype_method_valueof.html | 57 - .../ugen.inputtype_method_values.html | 57 - .../ugen.ugeninput_class_ugen.ugeninput.html | 159 - .../ugen.ugeninput_method_channelcount.html | 57 - ...ugen.ugeninput_method_getincomingugen.html | 60 - .../ugen.ugeninput_method_getinputtype.html | 57 - ...ugeninput_method_getinputtypeasstring.html | 57 - .../ugen.ugeninput_method_getlastvalue.html | 58 - .../ugen.ugeninput_method_getlastvalues.html | 57 - .../ugen.ugeninput_method_getouterugen.html | 59 - .../ugen.ugeninput_method_ispatched.html | 57 - .../ugen.ugeninput_method_printinput.html | 57 - ...ugen.ugeninput_method_setchannelcount.html | 64 - ...ugen.ugeninput_method_setincomingugen.html | 64 - .../ugen.ugeninput_method_setlastvalue.html | 71 - .../minim/documentation/ugen_class_ugen.html | 198 - .../ugen_method_channelcount.html | 57 - .../ugen_method_getlastvalues.html | 58 - .../documentation/ugen_method_patch.html | 132 - .../ugen_method_printinputs.html | 57 - .../documentation/ugen_method_samplerate.html | 57 - .../ugen_method_setchannelcount.html | 64 - .../ugen_method_setsamplerate.html | 62 - .../minim/documentation/ugen_method_tick.html | 65 - .../documentation/ugen_method_unpatch.html | 67 - .../documentation/vocoder_class_vocoder.html | 176 - .../documentation/vocoder_field_audio.html | 58 - .../vocoder_field_modulator.html | 57 - .../vocoder_method_channelcount.html | 57 - .../vocoder_method_getlastvalues.html | 58 - .../documentation/vocoder_method_patch.html | 132 - .../vocoder_method_printinputs.html | 57 - .../vocoder_method_samplerate.html | 57 - .../vocoder_method_setchannelcount.html | 64 - .../vocoder_method_setsamplerate.html | 62 - .../documentation/vocoder_method_tick.html | 65 - .../documentation/vocoder_method_unpatch.html | 67 - .../documentation/waveform_method_value.html | 72 - .../documentation/waveform_waveform.html | 56 - .../documentation/waves_class_waves.html | 302 - .../documentation/waves_field_phasor.html | 57 - .../waves_field_quarterpulse.html | 157 - .../minim/documentation/waves_field_saw.html | 157 - .../minim/documentation/waves_field_sine.html | 157 - .../documentation/waves_field_square.html | 157 - .../documentation/waves_field_triangle.html | 157 - .../minim/documentation/waves_method_add.html | 277 - .../documentation/waves_method_pulse.html | 70 - .../waves_method_randomnharms.html | 67 - .../waves_method_randomnoddharms.html | 67 - .../waves_method_randomnoise.html | 60 - .../minim/documentation/waves_method_saw.html | 71 - .../documentation/waves_method_sawh.html | 68 - .../documentation/waves_method_square.html | 70 - .../documentation/waves_method_squareh.html | 68 - .../documentation/waves_method_triangle.html | 70 - .../documentation/waves_method_triangleh.html | 68 - .../waveshaper_class_waveshaper.html | 299 - .../documentation/waveshaper_field_audio.html | 55 - .../waveshaper_field_mapamplitude.html | 55 - .../waveshaper_field_outamplitude.html | 55 - .../waveshaper_method_channelcount.html | 57 - .../waveshaper_method_getlastvalues.html | 58 - .../waveshaper_method_patch.html | 132 - .../waveshaper_method_printinputs.html | 57 - .../waveshaper_method_samplerate.html | 57 - .../waveshaper_method_setchannelcount.html | 64 - .../waveshaper_method_setsamplerate.html | 62 - .../documentation/waveshaper_method_tick.html | 65 - .../waveshaper_method_unpatch.html | 67 - .../wavetable_class_wavetable.html | 242 - .../wavetable_method_addnoise.html | 184 - .../documentation/wavetable_method_flip.html | 186 - .../documentation/wavetable_method_get.html | 64 - .../wavetable_method_getwaveform.html | 58 - .../wavetable_method_invert.html | 59 - .../wavetable_method_normalize.html | 181 - .../wavetable_method_offset.html | 64 - .../wavetable_method_rectify.html | 178 - .../documentation/wavetable_method_scale.html | 63 - .../documentation/wavetable_method_set.html | 68 - .../wavetable_method_setwaveform.html | 65 - .../documentation/wavetable_method_size.html | 60 - .../wavetable_method_smooth.html | 183 - .../documentation/wavetable_method_value.html | 187 - .../documentation/wavetable_method_warp.html | 199 - ...blegenerator_class_wavetablegenerator.html | 63 - .../wavetablegenerator_method_gen10.html | 71 - .../wavetablegenerator_method_gen7.html | 79 - .../wavetablegenerator_method_gen9.html | 84 - .../windowfunction_class_windowfunction.html | 193 - .../windowfunction_method_apply.html | 69 - .../windowfunction_method_generatecurve.html | 62 - .../AddAndRemoveAudioListener.pde | 137 - .../AddAndRemoveAudioListener/data/groove.mp3 | Bin 433788 -> 0 bytes .../AudioSampleGetChannel.pde | 45 - .../AudioSampleGetChannel/data/jingle.mp3 | Bin 154366 -> 0 bytes .../PrintControls/PrintControls.pde | 26 - .../getSetBalance/getSetBalance.pde | 58 - .../Controller/getSetBalance/waveform.pde | 76 - .../Controller/getSetGain/getSetGain.pde | 59 - .../Controller/getSetGain/waveform.pde | 76 - .../Controller/getSetPan/getSetPan.pde | 60 - .../Controller/getSetPan/waveform.pde | 76 - .../Controller/getSetVolume/getSetVolume.pde | 60 - .../Controller/getSetVolume/waveform.pde | 76 - .../Controller/hasControl/hasControl.pde | 82 - .../Advanced/Controller/muting/muting.pde | 71 - .../Advanced/Controller/muting/waveform.pde | 76 - .../Advanced/Controller/shifting/shifting.pde | 94 - .../Advanced/Controller/shifting/waveform.pde | 76 - .../CreateAudioSample/CreateAudioSample.pde | 78 - .../CueAnAudioPlayer/CueAnAudioPlayer.pde | 53 - .../Advanced/CueAnAudioPlayer/data/groove.mp3 | Bin 433788 -> 0 bytes .../Advanced/DrumMachine/DrumMachine.pde | 165 - .../examples/Advanced/DrumMachine/data/BD.wav | Bin 28106 -> 0 bytes .../Advanced/DrumMachine/data/CHH.wav | Bin 7196 -> 0 bytes .../examples/Advanced/DrumMachine/data/SD.wav | Bin 8220 -> 0 bytes .../GetAudioFormat/GetAudioFormat.pde | 67 - .../GetAudioFormat/data/CourierNewPSMT-12.vlw | Bin 20170 -> 0 bytes .../Advanced/MidiSequencer/MidiSequencer.pde | 221 - .../Advanced/MidiSequencer/data/bassline.MID | Bin 645 -> 0 bytes .../MidiSynthesizer/MidiSynthesizer.pde | 227 - .../RecordAndPlayback/RecordAndPlayback.pde | 112 - .../examples/Advanced/Scrubbing/Scrubbing.pde | 71 - .../examples/Advanced/Scrubbing/button.pde | 255 - .../Advanced/Scrubbing/data/fair1939.wav | Bin 290338 -> 0 bytes .../Advanced/loadFileIntoBuffer/data/SD.mp3 | Bin 6268 -> 0 bytes .../Advanced/loadFileIntoBuffer/data/SD.wav | Bin 8220 -> 0 bytes .../loadFileIntoBuffer/loadFileIntoBuffer.pde | 92 - .../Advanced/setInputMixer/setInputMixer.pde | 146 - .../setOutputMixer/setOutputMixer.pde | 160 - .../examples/Analysis/FFT/Inverse/Inverse.pde | 95 - .../Analysis/FFT/ScaleBand/ScaleBand.pde | 75 - .../Analysis/FFT/ScaleFreq/ScaleFreq.pde | 74 - .../examples/Analysis/FFT/SetBand/SetBand.pde | 81 - .../examples/Analysis/FFT/SetFreq/SetFreq.pde | 65 - .../examples/Analysis/FFT/Windows/Windows.pde | 108 - .../Analysis/FFT/Windows/data/jingle.mp3 | Bin 154366 -> 0 bytes .../FrequencyEnergyBeatDetection.pde | 129 - .../data/marcus_kellis_theme.mp3 | Bin 3050972 -> 0 bytes .../SoundEnergyBeatDetection.pde | 44 - .../data/marcus_kellis_theme.mp3 | Bin 3050972 -> 0 bytes .../Analysis/SoundSpectrum/SoundSpectrum.pde | 180 - .../SoundSpectrum/data/ArialMT-12.vlw | Bin 21244 -> 0 bytes .../Analysis/SoundSpectrum/data/jingle.mp3 | Bin 154366 -> 0 bytes .../Analysis/offlineAnalysis/data/jingle.mp3 | Bin 154366 -> 0 bytes .../offlineAnalysis/offlineAnalysis.pde | 178 - .../examples/AudioPlayer/loop/data/groove.mp3 | Bin 433788 -> 0 bytes .../minim/examples/AudioPlayer/loop/loop.pde | 40 - .../AudioPlayer/loopNum/data/groove.mp3 | Bin 433788 -> 0 bytes .../examples/AudioPlayer/loopNum/loopNum.pde | 55 - .../AudioPlayer/pause/data/groove.mp3 | Bin 433788 -> 0 bytes .../examples/AudioPlayer/pause/pause.pde | 47 - .../AudioPlayer/rewind/data/groove.mp3 | Bin 433788 -> 0 bytes .../examples/AudioPlayer/rewind/rewind.pde | 47 - .../setLoopPoints/data/ArialMT-14.vlw | Bin 25185 -> 0 bytes .../AudioPlayer/setLoopPoints/data/groove.mp3 | Bin 433788 -> 0 bytes .../setLoopPoints/setLoopPoints.pde | 69 - .../examples/AudioPlayer/skip/data/groove.mp3 | Bin 433788 -> 0 bytes .../minim/examples/AudioPlayer/skip/skip.pde | 64 - .../Basics/AnalyzeSound/AnalyzeSound.pde | 58 - .../Basics/AnalyzeSound/data/jingle.mp3 | Bin 154366 -> 0 bytes .../CreateAnInstrument/CreateAnInstrument.pde | 85 - .../DrawWaveformAndLevel.pde | 49 - .../DrawWaveformAndLevel/data/groove.mp3 | Bin 433788 -> 0 bytes .../Basics/GetMetaData/GetMetaData.pde | 58 - .../Basics/GetMetaData/data/groove.mp3 | Bin 436477 -> 0 bytes .../Basics/GetMetaData/data/serif.vlw | Bin 22500 -> 0 bytes .../Basics/MonitorInput/MonitorInput.pde | 61 - .../PatchingAnInput/PatchingAnInput.pde | 56 - .../examples/Basics/PlayAFile/PlayAFile.pde | 77 - .../examples/Basics/PlayAFile/data/groove.mp3 | Bin 433788 -> 0 bytes .../RecordAudioInput/RecordAudioInput.pde | 87 - .../RecordAudioOutput/RecordAudioOutput.pde | 93 - .../Basics/SequenceSound/SequenceSound.pde | 85 - .../SynthesizeSound/SynthesizeSound.pde | 100 - .../Basics/TriggerASample/TriggerASample.pde | 84 - .../Basics/TriggerASample/data/BD.mp3 | Bin 6047 -> 0 bytes .../Basics/TriggerASample/data/SD.wav | Bin 8220 -> 0 bytes .../Synthesis/ADSRExample/ADSRExample.pde | 113 - .../BandPassFilter/BandPassFilter.pde | 64 - .../Synthesis/BandPassFilter/data/groove.mp3 | Bin 433788 -> 0 bytes .../ChebyshevFilter/ChebyshevFilter.pde | 290 - .../Synthesis/ChebyshevFilter/data/groove.mp3 | Bin 433788 -> 0 bytes .../HighPassSPFilter/HighPassSPFilter.pde | 54 - .../HighPassSPFilter/data/groove.mp3 | Bin 433788 -> 0 bytes .../LowPassConvolve/LowPassConvolve.pde | 51 - .../Synthesis/LowPassConvolve/data/groove.mp3 | Bin 433788 -> 0 bytes .../LowPassFSFilter/LowPassFSFilter.pde | 52 - .../Synthesis/LowPassFSFilter/data/groove.mp3 | Bin 433788 -> 0 bytes .../LowPassSPFilter/LowPassSPFilter.pde | 52 - .../Synthesis/LowPassSPFilter/data/groove.mp3 | Bin 433788 -> 0 bytes .../NotchFilterExample/NotchFilterExample.pde | 60 - .../NotchFilterExample/data/groove.mp3 | Bin 433788 -> 0 bytes .../WavetableMethods/WavetableMethods.pde | 120 - .../algorithmicCompExample.pde | 104 - .../peanutsSentencer.pde | 115 - .../peanutsSyllableInstrument.pde | 99 - .../balanceExample/balanceExample.pde | 121 - .../bitCrushBeatExample/KickInstrument.pde | 34 - .../bitCrushBeatExample/SnareInstrument.pde | 35 - .../bitCrushBeatExample.pde | 106 - .../bitCrushExample/bitCrushExample.pde | 119 - .../Synthesis/bypassExample/bypassExample.pde | 108 - .../compositionExample/brapInstrument.pde | 65 - .../compositionExample/compositionExample.pde | 355 -- .../compositionExample/nowNowInstrument.pde | 82 - .../compositionExample/pooWahInstrument.pde | 73 - .../constantExample/constantExample.pde | 72 - .../dampExample/applet/dampExample.java | 165 - .../Synthesis/dampExample/dampExample.pde | 134 - .../defaultInstrumentExample.pde | 68 - .../Synthesis/delayExample/delayExample.pde | 90 - .../envelopeFollowerExample.pde | 84 - .../filePlayerExample/data/groove.mp3 | Bin 433788 -> 0 bytes .../filePlayerExample/filePlayerExample.pde | 98 - .../Synthesis/filterExample/filterExample.pde | 84 - .../flangerExample/flangerExample.pde | 93 - .../frequencyExample/frequencyExample.pde | 85 - .../frequencyModulation.pde | 81 - .../Synthesis/gainExample/data/groove.mp3 | Bin 433788 -> 0 bytes .../Synthesis/gainExample/gainExample.pde | 84 - .../granulateRandomExample.pde | 166 - .../granulateSteadyExample.pde | 144 - .../FollowInstrument.pde | 79 - .../LeaderInstrument.pde | 57 - .../instrCommunicationExample.pde | 75 - .../Synthesis/lineExample/lineExample.pde | 181 - .../liveInputExample/liveInputExample.pde | 61 - .../maxInstrExample/NumberInstrument.pde | 55 - .../maxInstrExample/maxInstrExample.pde | 69 - .../midiFreqExample/MidiSlideInstrument.pde | 52 - .../midiFreqExample/SlideInstrument.pde | 51 - .../midiFreqExample/midiFreqExample.pde | 70 - .../midiFreqKeyboardExample.pde | 79 - .../moogFilterExample/moogFilterExample.pde | 84 - .../WobbleInstrument.pde | 49 - .../multipleOutputsExample.pde | 48 - .../multiplierExample/multiplierExample.pde | 71 - .../Synthesis/noiseExample/noiseExample.pde | 130 - .../noiseTintExample/noiseTintExample.pde | 86 - .../nonInstrSimpleExample.pde | 24 - .../oscilEnvExample/oscilEnvExample.pde | 107 - .../Synthesis/oscilExample/oscilExample.pde | 91 - .../oscilPhaseExample/oscilPhaseExample.pde | 124 - .../Synthesis/panExample/panExample.pde | 116 - .../pitchNameExample/pitchNameExample.pde | 129 - .../pitchNameExample/pitchNameInstrument.pde | 45 - .../NoiseInstrument.pde | 99 - .../realtimeControlExample.pde | 66 - .../Synthesis/summerExample/summerExample.pde | 60 - .../tickRateExample/data/again_loop.aif | Bin 1159946 -> 0 bytes .../tickRateExample/tickRateExample.pde | 105 - .../vocoderExample/vocoderExample.pde | 73 - .../waveShaperExample/waveShaperExample.pde | 186 - .../waveformExample/waveformExample.pde | 196 - .../libraries/minim/library.properties | 11 - .../libraries/minim/library/export.txt | 1 - .../libraries/minim/library/jl1.0.1.jar | Bin 276656 -> 0 bytes .../libraries/minim/library/jsminim.jar | Bin 64471 -> 0 bytes OpenBCI_GUI/libraries/minim/library/minim.jar | Bin 137335 -> 0 bytes .../libraries/minim/library/mp3spi1.9.5.jar | Bin 24696 -> 0 bytes .../libraries/minim/library/tritonus_aos.jar | Bin 10401 -> 0 bytes .../minim/library/tritonus_share.jar | Bin 102673 -> 0 bytes OpenBCI_GUI/libraries/minim/license.txt | 165 - .../minim/src/ddf/minim/AudioBuffer.java | 82 - .../minim/src/ddf/minim/AudioEffect.java | 61 - .../minim/src/ddf/minim/AudioInput.java | 174 - .../minim/src/ddf/minim/AudioListener.java | 71 - .../minim/src/ddf/minim/AudioMetaData.java | 243 - .../minim/src/ddf/minim/AudioOutput.java | 541 -- .../minim/src/ddf/minim/AudioPlayer.java | 374 -- .../minim/src/ddf/minim/AudioRecorder.java | 169 - .../minim/src/ddf/minim/AudioSample.java | 128 - .../minim/src/ddf/minim/AudioSignal.java | 58 - .../minim/src/ddf/minim/AudioSnippet.java | 146 - .../minim/src/ddf/minim/AudioSource.java | 309 - .../minim/src/ddf/minim/BasicAudioOut.java | 117 - .../minim/src/ddf/minim/Controller.java | 656 -- .../minim/src/ddf/minim/Effectable.java | 154 - .../minim/src/ddf/minim/EffectsChain.java | 254 - .../minim/src/ddf/minim/MAudioBuffer.java | 134 - .../libraries/minim/src/ddf/minim/Minim.java | 1014 --- .../src/ddf/minim/MultiChannelBuffer.java | 229 - .../minim/src/ddf/minim/NoteManager.java | 183 - .../minim/src/ddf/minim/Playable.java | 154 - .../minim/src/ddf/minim/Polyphonic.java | 148 - .../minim/src/ddf/minim/Recordable.java | 84 - .../minim/src/ddf/minim/SignalChain.java | 303 - .../minim/src/ddf/minim/SignalSplitter.java | 120 - .../minim/src/ddf/minim/StereoBuffer.java | 59 - .../libraries/minim/src/ddf/minim/UGen.java | 676 -- .../minim/src/ddf/minim/UGenSignal.java | 64 - .../minim/analysis/BartlettHannWindow.java | 47 - .../ddf/minim/analysis/BartlettWindow.java | 47 - .../src/ddf/minim/analysis/BeatDetect.java | 688 --- .../ddf/minim/analysis/BlackmanWindow.java | 65 - .../src/ddf/minim/analysis/CosineWindow.java | 46 - .../minim/src/ddf/minim/analysis/DFT.java | 151 - .../minim/src/ddf/minim/analysis/FFT.java | 404 -- .../ddf/minim/analysis/FourierTransform.java | 940 --- .../src/ddf/minim/analysis/GaussWindow.java | 67 - .../src/ddf/minim/analysis/HammingWindow.java | 48 - .../src/ddf/minim/analysis/HannWindow.java | 46 - .../src/ddf/minim/analysis/LanczosWindow.java | 48 - .../ddf/minim/analysis/RectangularWindow.java | 48 - .../ddf/minim/analysis/TriangularWindow.java | 48 - .../ddf/minim/analysis/WindowFunction.java | 122 - .../minim/src/ddf/minim/analysis/package.html | 76 - .../minim/src/ddf/minim/effects/BandPass.java | 81 - .../src/ddf/minim/effects/ChebFilter.java | 405 -- .../src/ddf/minim/effects/Convolver.java | 142 - .../src/ddf/minim/effects/HighPassSP.java | 49 - .../src/ddf/minim/effects/IIRFilter.java | 228 - .../src/ddf/minim/effects/LowPassFS.java | 64 - .../src/ddf/minim/effects/LowPassSP.java | 51 - .../src/ddf/minim/effects/NotchFilter.java | 76 - .../ddf/minim/effects/WavetableEnvelope.java | 110 - .../ddf/minim/javasound/BasicMetaData.java | 51 - .../minim/javasound/FloatSampleBuffer.java | 1181 ---- .../ddf/minim/javasound/FloatSampleTools.java | 880 --- .../src/ddf/minim/javasound/JSAudioInput.java | 182 - .../ddf/minim/javasound/JSAudioOutput.java | 176 - .../ddf/minim/javasound/JSAudioRecording.java | 360 -- .../minim/javasound/JSAudioRecordingClip.java | 161 - .../ddf/minim/javasound/JSAudioSample.java | 61 - .../javasound/JSBaseAudioRecordingStream.java | 716 --- .../javasound/JSBufferedSampleRecorder.java | 224 - .../javasound/JSMPEGAudioRecordingStream.java | 40 - .../src/ddf/minim/javasound/JSMinim.java | 880 --- .../javasound/JSPCMAudioRecordingStream.java | 34 - .../javasound/JSStreamingSampleRecorder.java | 186 - .../src/ddf/minim/javasound/MP3MetaData.java | 111 - .../minim/javasound/MpegAudioFileReader.java | 895 --- .../MpegAudioFileReaderWorkaround.java | 124 - .../src/ddf/minim/javasound/SampleSignal.java | 139 - .../minim/src/ddf/minim/package.html | 68 - .../src/ddf/minim/signals/Oscillator.java | 442 -- .../src/ddf/minim/signals/PinkNoise.java | 171 - .../src/ddf/minim/signals/PulseWave.java | 82 - .../minim/src/ddf/minim/signals/SawWave.java | 50 - .../minim/src/ddf/minim/signals/SineWave.java | 51 - .../src/ddf/minim/signals/SquareWave.java | 51 - .../src/ddf/minim/signals/TriangleWave.java | 51 - .../src/ddf/minim/signals/WhiteNoise.java | 120 - .../minim/src/ddf/minim/spi/AudioOut.java | 72 - .../src/ddf/minim/spi/AudioRecording.java | 121 - .../ddf/minim/spi/AudioRecordingStream.java | 119 - .../src/ddf/minim/spi/AudioResource.java | 52 - .../minim/src/ddf/minim/spi/AudioStream.java | 54 - .../ddf/minim/spi/MinimServiceProvider.java | 160 - .../src/ddf/minim/spi/SampleRecorder.java | 69 - .../minim/tests/AudioRecordingStreamLoop.java | 80 - .../src/ddf/minim/tests/MP3Decoding.java | 62 - .../ddf/minim/tests/MultipleAudioPlayers.java | 62 - .../minim/src/ddf/minim/ugens/ADSR.java | 389 -- .../minim/src/ddf/minim/ugens/Abs.java | 36 - .../minim/src/ddf/minim/ugens/Balance.java | 91 - .../minim/src/ddf/minim/ugens/BitCrush.java | 140 - .../minim/src/ddf/minim/ugens/Bypass.java | 165 - .../minim/src/ddf/minim/ugens/Constant.java | 64 - .../minim/src/ddf/minim/ugens/Damp.java | 310 - .../ddf/minim/ugens/DefaultInstrument.java | 97 - .../minim/src/ddf/minim/ugens/Delay.java | 245 - .../src/ddf/minim/ugens/EnvelopeFollower.java | 122 - .../minim/src/ddf/minim/ugens/FilePlayer.java | 390 -- .../minim/src/ddf/minim/ugens/Flanger.java | 243 - .../minim/src/ddf/minim/ugens/Frequency.java | 266 - .../minim/src/ddf/minim/ugens/Gain.java | 96 - .../src/ddf/minim/ugens/GranulateRandom.java | 335 - .../src/ddf/minim/ugens/GranulateSteady.java | 253 - .../minim/src/ddf/minim/ugens/Instrument.java | 51 - .../minim/src/ddf/minim/ugens/Line.java | 183 - .../minim/src/ddf/minim/ugens/LiveInput.java | 56 - .../minim/src/ddf/minim/ugens/Midi2Hz.java | 73 - .../minim/src/ddf/minim/ugens/MoogFilter.java | 226 - .../minim/src/ddf/minim/ugens/Multiplier.java | 88 - .../minim/src/ddf/minim/ugens/Noise.java | 243 - .../minim/src/ddf/minim/ugens/Oscil.java | 391 -- .../minim/src/ddf/minim/ugens/Pan.java | 155 - .../minim/src/ddf/minim/ugens/Reciprocal.java | 69 - .../minim/src/ddf/minim/ugens/Sampler.java | 308 - .../minim/src/ddf/minim/ugens/Sink.java | 33 - .../minim/src/ddf/minim/ugens/Summer.java | 193 - .../minim/src/ddf/minim/ugens/TickRate.java | 205 - .../minim/src/ddf/minim/ugens/Vocoder.java | 191 - .../minim/src/ddf/minim/ugens/WaveShaper.java | 148 - .../minim/src/ddf/minim/ugens/Waveform.java | 37 - .../minim/src/ddf/minim/ugens/Waves.java | 417 -- .../minim/src/ddf/minim/ugens/Wavetable.java | 402 -- .../ddf/minim/ugens/WavetableGenerator.java | 199 - .../minim/src/ddf/minim/ugens/package.html | 258 - README.md | 9 +- .../Blank2DCanvas/BasicSpiral/BasicSpiral.pde | 65 - .../Blank2DCanvas/Butterfly/Butterfly.pde | 70 - .../RollingGraph_Alternative.pde | 92 - .../Blank2DCanvas/ScatterPlot/ScatterPlot.pde | 85 - .../examples/Blank2DCanvas/Shapes/Shapes.pde | 76 - .../examples/Graph2D/Basic1/Basic1.pde | 60 - .../examples/Graph2D/Basic2/Basic2.pde | 83 - .../examples/Graph2D/Basic3/Basic3.pde | 88 - .../Graph2D/RollingGraph/RollingGraph.pde | 62 - .../Graph2D/TraceEffects/TraceEffects.pde | 91 - .../gwoptics/examples/Graph3D/Basic/Basic.pde | 60 - .../ColourMap_Camera/ColourMap_Camera.pde | 106 - .../Graph3D/DynamicWave/DynamicWave.pde | 59 - .../Graph3D/SquareMesh/SquareMesh.pde | 34 - .../ScatterPlot_1_Basic.pde | 59 - .../ScatterPlot_2_Labels.pde | 69 - .../ScatterPlot_3_Custom_Point.pde | 79 - .../ScatterPlot_4_Advanced.pde | 113 - libraries/gwoptics/library.properties | 46 - libraries/gwoptics/library/gwoptics.jar | Bin 513583 -> 0 bytes .../gwoptics/reference/allclasses-frame.html | 149 - .../reference/allclasses-noframe.html | 149 - .../gwoptics/reference/constant-values.html | 144 - .../gwoptics/reference/deprecated-list.html | 144 - libraries/gwoptics/reference/help-doc.html | 217 - libraries/gwoptics/reference/index-all.html | 1938 ------ libraries/gwoptics/reference/index.html | 73 - .../org/gwoptics/ArgumentException.html | 249 - .../gwoptics/reference/org/gwoptics/Logo.html | 363 -- .../reference/org/gwoptics/LogoSize.html | 445 -- .../reference/org/gwoptics/ValueType.html | 347 -- .../reference/org/gwoptics/Version.html | 261 - .../org/gwoptics/gaussbeams/GaussMode.html | 1477 ----- .../gwoptics/gaussbeams/package-frame.html | 32 - .../gwoptics/gaussbeams/package-summary.html | 156 - .../org/gwoptics/gaussbeams/package-tree.html | 151 - .../org/gwoptics/graphics/GWColour.html | 679 -- .../org/gwoptics/graphics/IRenderable.html | 242 - .../org/gwoptics/graphics/Renderable.html | 327 - .../gwoptics/graphics/camera/Camera3D.html | 736 --- .../graphics/camera/package-frame.html | 32 - .../graphics/camera/package-summary.html | 156 - .../graphics/camera/package-tree.html | 152 - .../graphics/colourmap/ColourmapNode.html | 370 -- .../graphics/colourmap/EquationColourmap.html | 436 -- .../graphics/colourmap/IColourmap.html | 319 - .../colourmap/IColourmapEquation.html | 218 - .../MapNeedsGeneratingException.html | 248 - .../graphics/colourmap/RGBColourmap.html | 558 -- .../graphics/colourmap/package-frame.html | 60 - .../graphics/colourmap/package-summary.html | 201 - .../graphics/colourmap/package-tree.html | 166 - .../colourmap/presets/CoolColourmap.html | 260 - .../colourmap/presets/FlipColourmap.html | 264 - .../colourmap/presets/GrayScaleColourmap.html | 260 - .../colourmap/presets/HotColourmap.html | 260 - .../colourmap/presets/PresetColourmaps.html | 264 - .../graphics/colourmap/presets/Presets.html | 368 -- .../colourmap/presets/WarmColourmap.html | 259 - .../colourmap/presets/package-frame.html | 53 - .../colourmap/presets/package-summary.html | 194 - .../colourmap/presets/package-tree.html | 167 - .../graphics/graph2D/Axis2D.Alignment.html | 370 -- .../org/gwoptics/graphics/graph2D/Axis2D.html | 1272 ---- .../gwoptics/graphics/graph2D/Graph2D.html | 1122 ---- .../gwoptics/graphics/graph2D/IGraph2D.html | 257 - .../gwoptics/graphics/graph2D/LabelPos.html | 362 -- .../graph2D/backgrounds/GridBackground.html | 420 -- .../backgrounds/IGraph2DBackground.html | 248 - .../backgrounds/SolidColourBackground.html | 381 -- .../graph2D/backgrounds/package-frame.html | 45 - .../graph2D/backgrounds/package-summary.html | 173 - .../graph2D/backgrounds/package-tree.html | 161 - .../graph2D/effects/AxisColourmapEffect.html | 310 - .../graph2D/effects/ITraceColourEffect.html | 285 - .../graph2D/effects/XAxisColourmapEffect.html | 282 - .../graph2D/effects/YAxisColourmapEffect.html | 282 - .../graph2D/effects/package-frame.html | 47 - .../graph2D/effects/package-summary.html | 177 - .../graph2D/effects/package-tree.html | 159 - .../graphics/graph2D/package-frame.html | 58 - .../graphics/graph2D/package-summary.html | 194 - .../graphics/graph2D/package-tree.html | 171 - .../traces/Blank2DTrace.PlotRenderer.html | 310 - .../graphics/graph2D/traces/Blank2DTrace.html | 484 -- .../graph2D/traces/IGraph2DTrace.html | 355 -- .../graph2D/traces/ILine2DEquation.html | 225 - .../graphics/graph2D/traces/Line2DTrace.html | 705 --- ...e2DTrace.RollingTraceTooFastException.html | 252 - .../graph2D/traces/RollingLine2DTrace.html | 510 -- .../traces/ScatterTrace.IScatterPoint.html | 213 - .../traces/ScatterTrace.LABELPOSITION.html | 371 -- .../graphics/graph2D/traces/ScatterTrace.html | 582 -- .../graph2D/traces/Trace2DException.html | 239 - .../graph2D/traces/UpdatingLine2DTrace.html | 421 -- .../graph2D/traces/package-frame.html | 77 - .../graph2D/traces/package-summary.html | 226 - .../graphics/graph2D/traces/package-tree.html | 181 - .../org/gwoptics/graphics/graph3D/Axis3D.html | 1047 ---- .../graphics/graph3D/IGraph3DCallback.html | 244 - .../graphics/graph3D/SquareGridMesh.html | 587 -- .../graphics/graph3D/SurfaceGraph3D.html | 1163 ---- .../graphics/graph3D/SurfaceTrace3D.html | 579 -- .../graphics/graph3D/package-frame.html | 49 - .../graphics/graph3D/package-summary.html | 185 - .../graphics/graph3D/package-tree.html | 160 - .../org/gwoptics/graphics/package-frame.html | 45 - .../gwoptics/graphics/package-summary.html | 176 - .../org/gwoptics/graphics/package-tree.html | 157 - .../gwoptics/graphicsutils/graphicsUtils.html | 275 - .../gwoptics/graphicsutils/package-frame.html | 32 - .../graphicsutils/package-summary.html | 156 - .../gwoptics/graphicsutils/package-tree.html | 151 - .../org/gwoptics/mathutils/Complex.html | 1255 ---- .../org/gwoptics/mathutils/TrigLookup.html | 295 - .../org/gwoptics/mathutils/VectorUtils.html | 261 - .../org/gwoptics/mathutils/mathUtils.html | 367 -- .../org/gwoptics/mathutils/package-frame.html | 38 - .../gwoptics/mathutils/package-summary.html | 170 - .../org/gwoptics/mathutils/package-tree.html | 151 - .../reference/org/gwoptics/package-frame.html | 58 - .../org/gwoptics/package-summary.html | 195 - .../reference/org/gwoptics/package-tree.html | 171 - .../org/gwoptics/testing/ButterFly.html | 425 -- .../org/gwoptics/testing/Graph2DTest.html | 425 -- .../testing/RollingLine2DTraceTest.html | 423 -- .../gwoptics/testing/ScatterTraceTest.html | 425 -- .../gwoptics/testing/Scatter_label_test.html | 425 -- .../org/gwoptics/testing/package-frame.html | 40 - .../org/gwoptics/testing/package-summary.html | 171 - .../org/gwoptics/testing/package-tree.html | 164 - .../gwoptics/reference/overview-frame.html | 68 - .../gwoptics/reference/overview-summary.html | 206 - .../gwoptics/reference/overview-tree.html | 213 - libraries/gwoptics/reference/package-list | 14 - .../gwoptics/reference/resources/inherit.gif | Bin 57 -> 0 bytes .../gwoptics/reference/serialized-form.html | 434 -- libraries/gwoptics/reference/stylesheet.css | 310 - libraries/gwoptics/src/LICENSE | 459 -- .../gwoptics/src/data/Arial-BoldMT-12.vlw | Bin 22872 -> 0 bytes libraries/gwoptics/src/data/CourierNew36.vlw | Bin 114920 -> 0 bytes libraries/gwoptics/src/data/Verdana48.vlw | Bin 268708 -> 0 bytes libraries/gwoptics/src/data/Verdana72.vlw | Bin 577010 -> 0 bytes .../src/data/gwoptics_org_logo_20px.png | Bin 1599 -> 0 bytes .../src/data/gwoptics_org_logo_25px.png | Bin 2033 -> 0 bytes .../src/data/gwoptics_org_logo_30px.png | Bin 2548 -> 0 bytes .../src/data/gwoptics_org_logo_35px.png | Bin 3107 -> 0 bytes .../src/data/gwoptics_org_logo_40px.png | Bin 3553 -> 0 bytes .../src/data/gwoptics_org_logo_50px.png | Bin 4626 -> 0 bytes .../src/data/gwoptics_org_logo_60px.png | Bin 5755 -> 0 bytes .../src/data/gwoptics_org_logo_80px.png | Bin 7970 -> 0 bytes .../data/gwoptics_org_logo_shadow_20px.png | Bin 4089 -> 0 bytes .../data/gwoptics_org_logo_shadow_25px.png | Bin 5785 -> 0 bytes .../data/gwoptics_org_logo_shadow_30px.png | Bin 7823 -> 0 bytes .../data/gwoptics_org_logo_shadow_35px.png | Bin 9932 -> 0 bytes .../data/gwoptics_org_logo_shadow_40px.png | Bin 12252 -> 0 bytes .../data/gwoptics_org_logo_shadow_50px.png | Bin 17354 -> 0 bytes .../data/gwoptics_org_logo_shadow_60px.png | Bin 22915 -> 0 bytes .../data/gwoptics_org_logo_shadow_80px.png | Bin 35451 -> 0 bytes .../src/org/gwoptics/ArgumentException.java | 38 - libraries/gwoptics/src/org/gwoptics/Logo.java | 116 - .../gwoptics/src/org/gwoptics/LogoSize.java | 93 - .../gwoptics/src/org/gwoptics/ValueType.java | 37 - .../gwoptics/src/org/gwoptics/Version.java | 55 - .../org/gwoptics/gaussbeams/GaussMode.java | 776 --- .../src/org/gwoptics/graphics/GWColour.java | 219 - .../org/gwoptics/graphics/IRenderable.java | 40 - .../src/org/gwoptics/graphics/Renderable.java | 54 - .../gwoptics/graphics/camera/Camera3D.java | 339 - .../graphics/colourmap/ColourmapNode.java | 76 - .../graphics/colourmap/EquationColourmap.java | 163 - .../graphics/colourmap/IColourmap.java | 77 - .../colourmap/IColourmapEquation.java | 40 - .../MapNeedsGeneratingException.java | 37 - .../graphics/colourmap/RGBColourmap.java | 290 - .../colourmap/presets/CoolColourmap.java | 63 - .../colourmap/presets/FlipColourmap.java | 82 - .../colourmap/presets/GrayScaleColourmap.java | 63 - .../colourmap/presets/HotColourmap.java | 65 - .../colourmap/presets/PresetColourmaps.java | 59 - .../graphics/colourmap/presets/Presets.java | 31 - .../colourmap/presets/WarmColourmap.java | 62 - .../org/gwoptics/graphics/graph2D/Axis2D.java | 864 --- .../gwoptics/graphics/graph2D/Graph2D.java | 409 -- .../gwoptics/graphics/graph2D/IGraph2D.java | 43 - .../gwoptics/graphics/graph2D/LabelPos.java | 37 - .../graph2D/backgrounds/GridBackground.java | 113 - .../backgrounds/IGraph2DBackground.java | 32 - .../backgrounds/SolidColourBackground.java | 84 - .../graph2D/effects/AxisColourmapEffect.java | 77 - .../graph2D/effects/ITraceColourEffect.java | 71 - .../graph2D/effects/XAxisColourmapEffect.java | 70 - .../graph2D/effects/YAxisColourmapEffect.java | 70 - .../graphics/graph2D/traces/Blank2DTrace.java | 164 - .../graph2D/traces/IGraph2DTrace.java | 82 - .../graph2D/traces/ILine2DEquation.java | 47 - .../graphics/graph2D/traces/Line2DTrace.java | 401 -- .../graph2D/traces/RollingLine2DTrace.java | 365 -- .../graphics/graph2D/traces/ScatterTrace.java | 330 - .../graph2D/traces/Trace2DException.java | 30 - .../graph2D/traces/UpdatingLine2DTrace.java | 265 - .../org/gwoptics/graphics/graph3D/Axis3D.java | 477 -- .../graphics/graph3D/IGraph3DCallback.java | 65 - .../graphics/graph3D/SquareGridMesh.java | 251 - .../graphics/graph3D/SurfaceGraph3D.java | 575 -- .../graphics/graph3D/SurfaceTrace3D.java | 283 - .../gwoptics/graphicsutils/graphicsUtils.java | 72 - .../src/org/gwoptics/mathutils/Complex.java | 797 --- .../org/gwoptics/mathutils/TrigLookup.java | 105 - .../org/gwoptics/mathutils/VectorUtils.java | 75 - .../src/org/gwoptics/mathutils/mathUtils.java | 354 -- .../src/org/gwoptics/testing/ButterFly.java | 79 - .../src/org/gwoptics/testing/Graph2DTest.java | 59 - .../testing/RollingLine2DTraceTest.java | 113 - .../gwoptics/testing/ScatterTraceTest.java | 75 - .../gwoptics/testing/Scatter_label_test.java | 128 - 1783 files changed, 345 insertions(+), 322338 deletions(-) delete mode 100644 CodeMap.png delete mode 100644 OpenBCI_GUI/SavedData/OpenBCI-2016-12-08_21-16-33.jpg delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5accordion/ControlP5accordion.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5background/ControlP5background.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5background/sketch.properties delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5bang/ControlP5bang.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5button/ControlP5button.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5button/data/button_a.png delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5button/data/button_b.png delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5button/data/button_c.png delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5buttonBar/ControlP5buttonBar.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5canvas/ControlP5canvas.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5chart/ControlP5chart.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5checkBox/ControlP5checkBox.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5colorPicker/ControlP5colorPicker.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5colorWheel/ControlP5colorWheel.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5controlTimer/ControlP5controlTimer.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5controllerProperties/ControlP5controllerProperties.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5controllerProperties/hello.properties.json delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5dropdownList/ControlP5dropdownList.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5group/ControlP5group.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5icon/ControlP5icon.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5icon/fontawesome-webfont.ttf delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5knob/ControlP5knob.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5listBox/ControlP5listBox.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5matrix/ControlP5matrix.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5multilist/ControlP5multiList.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5numberbox/ControlP5numberbox.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5radioButton/ControlP5radioButton.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5range/ControlP5range.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5scrollableList/ControlP5scrollableList.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5slider/ControlP5slider.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5slider2D/ControlP5slider2D.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5tab/ControlP5tab.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5textarea/ControlP5textarea.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5textfield/ControlP5textfield.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5textlabel/ControlP5textlabel.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5toggle/ControlP5toggle.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5tooltip/ControlP5tooltip.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5window/ControlP5window.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/experimental/ControlP5CustomMatrix/ControlP5CustomMatrix.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/experimental/ControlP5MenuList/ControlP5MenuList.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/experimental/ControlP5SliderList/ControlP5SliderList.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/experimental/ControlP5editableNumberbox/ControlP5editableNumberbox.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/experimental/ControlP5graphics/ControlP5graphics.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/experimental/MidiMapper/MidiMapper.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/experimental/MidiMapper/MidiSimple.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5AutoDetectFields/ControlP5AutoDetectFields.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5ControllerInsideClass/ControlP5ControllerInsideClass.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5canvasDrawIntoCanvas/ControlP5canvasDrawIntoCanvas.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5chartsCombined/ControlP5chartsCombined.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5console/ControlP5console.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5controllerOnTop3D/ControlP5controllerOnTop3D.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5frame/ControlP5frame.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5frameRate/ControlP5frameRate.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5frames/ControlP5frames.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5groupCanvas/ControlP5groupCanvas.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5imageButton/ControlP5imageButton.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5imageButton/data/Arrow-Left.png delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5imageButton/data/Arrow-Right.png delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5imageButton/data/Refresh.png delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5key/ControlP5key.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5listBoxClear/ControlP5listBoxClear.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5mouseWheel/ControlP5mouseWheel.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5pointer/ControlP5pointer.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5propertiesSets/ControlP5propertiesSets.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5propertiesSets/default.json delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5propertiesSets/setA.json delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5renderIntoPGraphics/ControlP5renderIntoPGraphics.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5style/ControlP5style.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5textfieldAdvanced/ControlP5textfieldAdvanced.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5withPeasyCam/ControlP5withPeasyCam.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/use/ControlP5annotation/ControlP5annotation.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/use/ControlP5basics/ControlP5basics.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/use/ControlP5beginEnd/ControlP5beginEnd.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/use/ControlP5behavior/ControlP5behavior.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/use/ControlP5bringToFront/ControlP5bringToFront.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/use/ControlP5callback/ControlP5callback.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/use/ControlP5controlEvent/ControlP5controlEvent.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/use/ControlP5controlFont/ControlP5controlFont.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/use/ControlP5customView/ControlP5customView.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/use/ControlP5extendController/ControlP5extendController.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/use/ControlP5listenerForSingleController/ControlP5listenerForSingleController.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/use/ControlP5mouseover/ControlP5mouseover.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/use/ControlP5plugTo/ControlP5plugTo.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/use/ControlP5propertiesCustom/ControlP5propertiesCustom.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/use/ControlP5propertiesCustom/hello.json delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/use/ControlP5quick/ControlP5quick.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/use/ControlP5sliderSetValue/ControlP5sliderSetValue.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/use/ControlP5snapshot/ControlP5snapshot.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/examples/use/ControlP5workingWithIDs/ControlP5workingWithIDs.pde delete mode 100644 OpenBCI_GUI/libraries/controlP5/library.properties delete mode 100644 OpenBCI_GUI/libraries/controlP5/library/controlP5.jar delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/allclasses-frame.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/allclasses-noframe.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/constant-values.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/Accordion.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/Background.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/Bang.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/BitFont.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/BoundingBox.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/Button.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/ButtonBar.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/CColor.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/CDrawable.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/CP.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/CallbackEvent.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/CallbackListener.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/Canvas.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/Chart.ChartViewArea.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/Chart.ChartViewBar.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/Chart.ChartViewBarCentered.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/Chart.ChartViewLine.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/Chart.ChartViewPie.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/Chart.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/ChartData.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/ChartDataSet.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/CheckBox.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/ColorPicker.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/ColorWheel.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/ControlBehavior.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/ControlBroadcaster.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/ControlElement.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/ControlEvent.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/ControlFont.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/ControlGroup.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/ControlKey.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/ControlListener.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/ControlP5.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/ControlP5Base.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/ControlP5Constants.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/ControlP5Legacy.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/ControlTimer.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/ControlWindow.Pointer.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/ControlWindow.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/Controller.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/ControllerGroup.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/ControllerInterface.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/ControllerList.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/ControllerPlug.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/ControllerProperties.JSONFormat.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/ControllerProperties.SerializedFormat.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/ControllerProperties.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/ControllerProperty.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/ControllerStyle.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/ControllerView.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/DropdownList.DropdownListView.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/DropdownList.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/FrameRate.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/Group.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/Icon.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/Knob.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/Label.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/ListBox.ListBoxView.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/ListBox.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/ListBoxItem.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/Matrix.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/MultiList.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/MultiListButton.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/Numberbox.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/Pointer.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/Println.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/Radio.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/RadioButton.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/Range.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/ScrollableList.ScrollableListView.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/ScrollableList.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/Slider.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/Slider2D.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/Spacer.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/Tab.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/Textarea.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/Textfield.InputFilter.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/Textfield.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/Textlabel.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/TickMark.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/Toggle.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/Tooltip.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/package-frame.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/package-summary.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/controlP5/package-tree.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/help-doc.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/index-all.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/index.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/overview-tree.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/package-list delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/resources/background.gif delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/resources/tab.gif delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/resources/titlebar.gif delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/resources/titlebar_end.gif delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/script.js delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/serialized-form.html delete mode 100644 OpenBCI_GUI/libraries/controlP5/reference/stylesheet.css delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/Accordion.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/Background.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/Bang.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/BitFont.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/Button.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/ButtonBar.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/CColor.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/CDrawable.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/CP.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/CallbackEvent.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/CallbackListener.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/Canvas.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/Chart.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/ChartData.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/ChartDataSet.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/CheckBox.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/ColorPalette.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/ColorPicker.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/ColorWheel.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/ControlBehavior.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/ControlBroadcaster.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/ControlElement.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/ControlEvent.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/ControlFont.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/ControlGroup.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/ControlKey.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/ControlListener.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/ControlP5.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/ControlP5Base.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/ControlP5Constants.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/ControlP5Legacy.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/ControlTimer.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/ControlWindow.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/ControlWindowCanvas.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/Controller.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/ControllerAutomator.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/ControllerDisplay.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/ControllerGroup.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/ControllerInterface.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/ControllerLayout.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/ControllerLayoutElement.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/ControllerList.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/ControllerPlug.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/ControllerProperties.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/ControllerProperty.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/ControllerStyle.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/ControllerView.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/DropdownList.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/FieldChangedListener.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/FrameRate.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/Group.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/Icon.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/Knob.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/Label.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/ListBox.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/Matrix.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/MultiList.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/MultiListButton.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/MultiListInterface.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/Numberbox.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/Pad.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/Pointer.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/Println.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/Radio.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/RadioButton.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/Range.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/ScrollableList.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/Slider.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/Slider2D.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/Spacer.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/TODO delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/Tab.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/Textarea.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/Textfield.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/Textlabel.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/TickMark.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/Toggle.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/Tooltip.java delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/changeLog.txt delete mode 100644 OpenBCI_GUI/libraries/controlP5/src/controlP5/package.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/examples/Blank2DCanvas/BasicSpiral/BasicSpiral.pde delete mode 100644 OpenBCI_GUI/libraries/gwoptics/examples/Blank2DCanvas/Butterfly/Butterfly.pde delete mode 100644 OpenBCI_GUI/libraries/gwoptics/examples/Blank2DCanvas/RollingGraph_Alternative/RollingGraph_Alternative.pde delete mode 100644 OpenBCI_GUI/libraries/gwoptics/examples/Blank2DCanvas/ScatterPlot/ScatterPlot.pde delete mode 100644 OpenBCI_GUI/libraries/gwoptics/examples/Blank2DCanvas/Shapes/Shapes.pde delete mode 100644 OpenBCI_GUI/libraries/gwoptics/examples/Graph2D/Basic1/Basic1.pde delete mode 100644 OpenBCI_GUI/libraries/gwoptics/examples/Graph2D/Basic2/Basic2.pde delete mode 100644 OpenBCI_GUI/libraries/gwoptics/examples/Graph2D/Basic3/Basic3.pde delete mode 100644 OpenBCI_GUI/libraries/gwoptics/examples/Graph2D/RollingGraph/RollingGraph.pde delete mode 100644 OpenBCI_GUI/libraries/gwoptics/examples/Graph2D/TraceEffects/TraceEffects.pde delete mode 100644 OpenBCI_GUI/libraries/gwoptics/examples/Graph3D/Basic/Basic.pde delete mode 100644 OpenBCI_GUI/libraries/gwoptics/examples/Graph3D/ColourMap_Camera/ColourMap_Camera.pde delete mode 100644 OpenBCI_GUI/libraries/gwoptics/examples/Graph3D/DynamicWave/DynamicWave.pde delete mode 100644 OpenBCI_GUI/libraries/gwoptics/examples/Graph3D/SquareMesh/SquareMesh.pde delete mode 100644 OpenBCI_GUI/libraries/gwoptics/examples/ScatterTrace/ScatterPlot_1_Basic/ScatterPlot_1_Basic.pde delete mode 100644 OpenBCI_GUI/libraries/gwoptics/examples/ScatterTrace/ScatterPlot_2_Labels/ScatterPlot_2_Labels.pde delete mode 100644 OpenBCI_GUI/libraries/gwoptics/examples/ScatterTrace/ScatterPlot_3_Custom_Point/ScatterPlot_3_Custom_Point.pde delete mode 100644 OpenBCI_GUI/libraries/gwoptics/examples/ScatterTrace/ScatterPlot_4_Advanced/ScatterPlot_4_Advanced.pde delete mode 100644 OpenBCI_GUI/libraries/gwoptics/library.properties delete mode 100644 OpenBCI_GUI/libraries/gwoptics/library/gwoptics.jar delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/allclasses-frame.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/allclasses-noframe.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/constant-values.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/deprecated-list.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/help-doc.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/index-all.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/index.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/ArgumentException.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/Logo.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/LogoSize.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/ValueType.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/Version.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/gaussbeams/GaussMode.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/gaussbeams/package-frame.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/gaussbeams/package-summary.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/gaussbeams/package-tree.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/GWColour.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/IRenderable.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/Renderable.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/camera/Camera3D.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/camera/package-frame.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/camera/package-summary.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/camera/package-tree.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/colourmap/ColourmapNode.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/colourmap/EquationColourmap.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/colourmap/IColourmap.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/colourmap/IColourmapEquation.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/colourmap/MapNeedsGeneratingException.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/colourmap/RGBColourmap.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/colourmap/package-frame.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/colourmap/package-summary.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/colourmap/package-tree.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/colourmap/presets/CoolColourmap.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/colourmap/presets/FlipColourmap.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/colourmap/presets/GrayScaleColourmap.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/colourmap/presets/HotColourmap.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/colourmap/presets/PresetColourmaps.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/colourmap/presets/Presets.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/colourmap/presets/WarmColourmap.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/colourmap/presets/package-frame.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/colourmap/presets/package-summary.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/colourmap/presets/package-tree.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/Axis2D.Alignment.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/Axis2D.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/Graph2D.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/IGraph2D.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/LabelPos.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/backgrounds/GridBackground.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/backgrounds/IGraph2DBackground.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/backgrounds/SolidColourBackground.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/backgrounds/package-frame.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/backgrounds/package-summary.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/backgrounds/package-tree.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/effects/AxisColourmapEffect.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/effects/ITraceColourEffect.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/effects/XAxisColourmapEffect.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/effects/YAxisColourmapEffect.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/effects/package-frame.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/effects/package-summary.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/effects/package-tree.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/package-frame.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/package-summary.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/package-tree.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/traces/Blank2DTrace.PlotRenderer.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/traces/Blank2DTrace.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/traces/IGraph2DTrace.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/traces/ILine2DEquation.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/traces/Line2DTrace.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/traces/RollingLine2DTrace.RollingTraceTooFastException.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/traces/RollingLine2DTrace.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/traces/ScatterTrace.IScatterPoint.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/traces/ScatterTrace.LABELPOSITION.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/traces/ScatterTrace.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/traces/Trace2DException.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/traces/UpdatingLine2DTrace.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/traces/package-frame.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/traces/package-summary.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/traces/package-tree.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/graph3D/Axis3D.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/graph3D/IGraph3DCallback.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/graph3D/SquareGridMesh.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/graph3D/SurfaceGraph3D.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/graph3D/SurfaceTrace3D.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/graph3D/package-frame.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/graph3D/package-summary.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/graph3D/package-tree.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/package-frame.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/package-summary.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphics/package-tree.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphicsutils/graphicsUtils.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphicsutils/package-frame.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphicsutils/package-summary.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/graphicsutils/package-tree.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/mathutils/Complex.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/mathutils/TrigLookup.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/mathutils/VectorUtils.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/mathutils/mathUtils.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/mathutils/package-frame.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/mathutils/package-summary.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/mathutils/package-tree.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/package-frame.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/package-summary.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/package-tree.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/testing/ButterFly.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/testing/Graph2DTest.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/testing/RollingLine2DTraceTest.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/testing/ScatterTraceTest.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/testing/Scatter_label_test.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/testing/package-frame.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/testing/package-summary.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/org/gwoptics/testing/package-tree.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/overview-frame.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/overview-summary.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/overview-tree.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/package-list delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/resources/inherit.gif delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/serialized-form.html delete mode 100644 OpenBCI_GUI/libraries/gwoptics/reference/stylesheet.css delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/LICENSE delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/data/Arial-BoldMT-12.vlw delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/data/CourierNew36.vlw delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/data/Verdana48.vlw delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/data/Verdana72.vlw delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/data/gwoptics_org_logo_20px.png delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/data/gwoptics_org_logo_25px.png delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/data/gwoptics_org_logo_30px.png delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/data/gwoptics_org_logo_35px.png delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/data/gwoptics_org_logo_40px.png delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/data/gwoptics_org_logo_50px.png delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/data/gwoptics_org_logo_60px.png delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/data/gwoptics_org_logo_80px.png delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/data/gwoptics_org_logo_shadow_20px.png delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/data/gwoptics_org_logo_shadow_25px.png delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/data/gwoptics_org_logo_shadow_30px.png delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/data/gwoptics_org_logo_shadow_35px.png delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/data/gwoptics_org_logo_shadow_40px.png delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/data/gwoptics_org_logo_shadow_50px.png delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/data/gwoptics_org_logo_shadow_60px.png delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/data/gwoptics_org_logo_shadow_80px.png delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/org/gwoptics/ArgumentException.java delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/org/gwoptics/Logo.java delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/org/gwoptics/LogoSize.java delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/org/gwoptics/ValueType.java delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/org/gwoptics/Version.java delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/org/gwoptics/gaussbeams/GaussMode.java delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/org/gwoptics/graphics/GWColour.java delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/org/gwoptics/graphics/IRenderable.java delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/org/gwoptics/graphics/Renderable.java delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/org/gwoptics/graphics/camera/Camera3D.java delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/org/gwoptics/graphics/colourmap/ColourmapNode.java delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/org/gwoptics/graphics/colourmap/EquationColourmap.java delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/org/gwoptics/graphics/colourmap/IColourmap.java delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/org/gwoptics/graphics/colourmap/IColourmapEquation.java delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/org/gwoptics/graphics/colourmap/MapNeedsGeneratingException.java delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/org/gwoptics/graphics/colourmap/RGBColourmap.java delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/org/gwoptics/graphics/colourmap/presets/CoolColourmap.java delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/org/gwoptics/graphics/colourmap/presets/FlipColourmap.java delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/org/gwoptics/graphics/colourmap/presets/GrayScaleColourmap.java delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/org/gwoptics/graphics/colourmap/presets/HotColourmap.java delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/org/gwoptics/graphics/colourmap/presets/PresetColourmaps.java delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/org/gwoptics/graphics/colourmap/presets/Presets.java delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/org/gwoptics/graphics/colourmap/presets/WarmColourmap.java delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/org/gwoptics/graphics/graph2D/Axis2D.java delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/org/gwoptics/graphics/graph2D/Graph2D.java delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/org/gwoptics/graphics/graph2D/IGraph2D.java delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/org/gwoptics/graphics/graph2D/LabelPos.java delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/org/gwoptics/graphics/graph2D/backgrounds/GridBackground.java delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/org/gwoptics/graphics/graph2D/backgrounds/IGraph2DBackground.java delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/org/gwoptics/graphics/graph2D/backgrounds/SolidColourBackground.java delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/org/gwoptics/graphics/graph2D/effects/AxisColourmapEffect.java delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/org/gwoptics/graphics/graph2D/effects/ITraceColourEffect.java delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/org/gwoptics/graphics/graph2D/effects/XAxisColourmapEffect.java delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/org/gwoptics/graphics/graph2D/effects/YAxisColourmapEffect.java delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/org/gwoptics/graphics/graph2D/traces/Blank2DTrace.java delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/org/gwoptics/graphics/graph2D/traces/IGraph2DTrace.java delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/org/gwoptics/graphics/graph2D/traces/ILine2DEquation.java delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/org/gwoptics/graphics/graph2D/traces/Line2DTrace.java delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/org/gwoptics/graphics/graph2D/traces/RollingLine2DTrace.java delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/org/gwoptics/graphics/graph2D/traces/ScatterTrace.java delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/org/gwoptics/graphics/graph2D/traces/Trace2DException.java delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/org/gwoptics/graphics/graph2D/traces/UpdatingLine2DTrace.java delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/org/gwoptics/graphics/graph3D/Axis3D.java delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/org/gwoptics/graphics/graph3D/IGraph3DCallback.java delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/org/gwoptics/graphics/graph3D/SquareGridMesh.java delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/org/gwoptics/graphics/graph3D/SurfaceGraph3D.java delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/org/gwoptics/graphics/graph3D/SurfaceTrace3D.java delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/org/gwoptics/graphicsutils/graphicsUtils.java delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/org/gwoptics/mathutils/Complex.java delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/org/gwoptics/mathutils/TrigLookup.java delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/org/gwoptics/mathutils/VectorUtils.java delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/org/gwoptics/mathutils/mathUtils.java delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/org/gwoptics/testing/ButterFly.java delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/org/gwoptics/testing/Graph2DTest.java delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/org/gwoptics/testing/RollingLine2DTraceTest.java delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/org/gwoptics/testing/ScatterTraceTest.java delete mode 100644 OpenBCI_GUI/libraries/gwoptics/src/org/gwoptics/testing/Scatter_label_test.java delete mode 100644 OpenBCI_GUI/libraries/minim/README.md delete mode 100644 OpenBCI_GUI/libraries/minim/changelog.txt delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/abs_class_abs.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/abs_field_audio.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/abs_method_channelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/abs_method_getlastvalues.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/abs_method_patch.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/abs_method_printinputs.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/abs_method_samplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/abs_method_setchannelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/abs_method_setsamplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/abs_method_tick.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/abs_method_unpatch.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/adsr_class_adsr.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/adsr_field_audio.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/adsr_method_channelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/adsr_method_getlastvalues.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/adsr_method_noteoff.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/adsr_method_noteon.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/adsr_method_patch.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/adsr_method_printinputs.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/adsr_method_samplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/adsr_method_setchannelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/adsr_method_setparameters.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/adsr_method_setsamplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/adsr_method_tick.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/adsr_method_unpatch.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/adsr_method_unpatchafterrelease.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiobuffer_audiobuffer.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiobuffer_method_get.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiobuffer_method_level.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiobuffer_method_size.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiobuffer_method_toarray.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioinput_class_audioinput.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioinput_field_left.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioinput_field_mix.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioinput_field_right.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioinput_method_addlistener.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioinput_method_buffersize.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioinput_method_close.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioinput_method_disablemonitoring.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioinput_method_enablemonitoring.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioinput_method_getbalance.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioinput_method_getcontrol.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioinput_method_getformat.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioinput_method_getgain.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioinput_method_getpan.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioinput_method_getvolume.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioinput_method_ismonitoring.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioinput_method_ismuted.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioinput_method_mute.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioinput_method_removelistener.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioinput_method_samplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioinput_method_setbalance.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioinput_method_setgain.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioinput_method_setpan.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioinput_method_setvolume.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioinput_method_shiftbalance.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioinput_method_shiftgain.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioinput_method_shiftpan.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioinput_method_shiftvolume.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioinput_method_type.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioinput_method_unmute.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiolistener_audiolistener.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiolistener_method_samples.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiometadata_class_audiometadata.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiometadata_method_album.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiometadata_method_author.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiometadata_method_comment.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiometadata_method_composer.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiometadata_method_copyright.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiometadata_method_date.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiometadata_method_disc.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiometadata_method_encoded.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiometadata_method_filename.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiometadata_method_genre.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiometadata_method_length.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiometadata_method_lyrics.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiometadata_method_orchestra.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiometadata_method_publisher.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiometadata_method_sampleframecount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiometadata_method_title.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiometadata_method_track.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiooutput_class_audiooutput.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiooutput_field_left.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiooutput_field_mix.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiooutput_field_right.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiooutput_method_addlistener.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiooutput_method_buffersize.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiooutput_method_close.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiooutput_method_getbalance.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiooutput_method_getcontrol.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiooutput_method_getdurationfactor.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiooutput_method_getformat.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiooutput_method_getgain.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiooutput_method_getnoteoffset.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiooutput_method_getpan.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiooutput_method_gettempo.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiooutput_method_getvolume.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiooutput_method_ismuted.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiooutput_method_mute.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiooutput_method_pausenotes.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiooutput_method_playnote.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiooutput_method_removelistener.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiooutput_method_resumenotes.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiooutput_method_samplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiooutput_method_setbalance.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiooutput_method_setdurationfactor.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiooutput_method_setgain.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiooutput_method_setnoteoffset.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiooutput_method_setpan.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiooutput_method_settempo.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiooutput_method_setvolume.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiooutput_method_shiftbalance.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiooutput_method_shiftgain.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiooutput_method_shiftpan.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiooutput_method_shiftvolume.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiooutput_method_type.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiooutput_method_unmute.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioplayer_class_audioplayer.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioplayer_field_left.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioplayer_field_mix.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioplayer_field_right.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioplayer_method_addlistener.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioplayer_method_buffersize.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioplayer_method_close.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioplayer_method_cue.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioplayer_method_getbalance.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioplayer_method_getcontrol.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioplayer_method_getformat.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioplayer_method_getgain.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioplayer_method_getmetadata.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioplayer_method_getpan.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioplayer_method_getvolume.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioplayer_method_islooping.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioplayer_method_ismuted.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioplayer_method_isplaying.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioplayer_method_length.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioplayer_method_loop.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioplayer_method_loopcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioplayer_method_mute.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioplayer_method_pause.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioplayer_method_play.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioplayer_method_position.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioplayer_method_removelistener.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioplayer_method_rewind.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioplayer_method_samplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioplayer_method_setbalance.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioplayer_method_setgain.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioplayer_method_setlooppoints.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioplayer_method_setpan.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioplayer_method_setvolume.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioplayer_method_shiftbalance.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioplayer_method_shiftgain.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioplayer_method_shiftpan.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioplayer_method_shiftvolume.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioplayer_method_skip.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioplayer_method_type.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audioplayer_method_unmute.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiorecorder_class_audiorecorder.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiorecorder_method_beginrecord.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiorecorder_method_endrecord.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiorecorder_method_isrecording.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiorecorder_method_save.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiorecorder_method_setrecordsource.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiosample_class_audiosample.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiosample_field_left.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiosample_field_mix.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiosample_field_right.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiosample_method_addlistener.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiosample_method_buffersize.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiosample_method_close.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiosample_method_getbalance.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiosample_method_getchannel.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiosample_method_getcontrol.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiosample_method_getformat.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiosample_method_getgain.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiosample_method_getmetadata.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiosample_method_getpan.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiosample_method_getvolume.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiosample_method_ismuted.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiosample_method_length.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiosample_method_mute.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiosample_method_removelistener.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiosample_method_samplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiosample_method_setbalance.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiosample_method_setgain.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiosample_method_setpan.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiosample_method_setvolume.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiosample_method_shiftbalance.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiosample_method_shiftgain.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiosample_method_shiftpan.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiosample_method_shiftvolume.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiosample_method_stop.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiosample_method_trigger.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiosample_method_type.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/audiosample_method_unmute.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/balance_class_balance.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/balance_field_audio.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/balance_field_balance.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/balance_method_channelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/balance_method_getlastvalues.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/balance_method_patch.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/balance_method_printinputs.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/balance_method_samplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/balance_method_setbalance.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/balance_method_setchannelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/balance_method_setsamplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/balance_method_tick.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/balance_method_unpatch.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/beatdetect_class_beatdetect.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/beatdetect_field_freq_energy.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/beatdetect_field_sound_energy.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/beatdetect_method_dectectsize.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/beatdetect_method_detect.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/beatdetect_method_detectmode.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/beatdetect_method_detectsize.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/beatdetect_method_getdetectcenterfrequency.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/beatdetect_method_ishat.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/beatdetect_method_iskick.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/beatdetect_method_isonset.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/beatdetect_method_isrange.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/beatdetect_method_issnare.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/beatdetect_method_setsensitivity.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/bitcrush_class_bitcrush.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/bitcrush_field_audio.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/bitcrush_field_bitrate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/bitcrush_field_bitres.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/bitcrush_method_channelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/bitcrush_method_getlastvalues.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/bitcrush_method_patch.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/bitcrush_method_printinputs.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/bitcrush_method_samplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/bitcrush_method_setbitres.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/bitcrush_method_setchannelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/bitcrush_method_setsamplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/bitcrush_method_tick.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/bitcrush_method_unpatch.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/bypass_class_bypass.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/bypass_method_activate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/bypass_method_channelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/bypass_method_deactivate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/bypass_method_getlastvalues.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/bypass_method_isactive.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/bypass_method_patch.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/bypass_method_printinputs.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/bypass_method_samplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/bypass_method_setchannelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/bypass_method_setsamplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/bypass_method_tick.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/bypass_method_ugen.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/bypass_method_unpatch.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/constant_class_constant.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/constant_method_channelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/constant_method_getlastvalues.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/constant_method_patch.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/constant_method_printinputs.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/constant_method_samplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/constant_method_setchannelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/constant_method_setconstant.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/constant_method_setsamplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/constant_method_tick.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/constant_method_unpatch.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/damp_class_damp.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/damp_field_audio.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/damp_method_activate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/damp_method_channelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/damp_method_getlastvalues.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/damp_method_patch.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/damp_method_printinputs.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/damp_method_samplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/damp_method_setattacktime.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/damp_method_setchannelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/damp_method_setdamptime.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/damp_method_setdamptimefromduration.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/damp_method_setsamplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/damp_method_tick.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/damp_method_unpatch.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/damp_method_unpatchafterdamp.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/defaultinstrument_class_defaultinstrument.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/defaultinstrument_method_noteoff.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/defaultinstrument_method_noteon.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/delay_class_delay.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/delay_field_audio.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/delay_field_delamp.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/delay_field_deltime.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/delay_method_channelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/delay_method_getlastvalues.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/delay_method_patch.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/delay_method_printinputs.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/delay_method_samplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/delay_method_setchannelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/delay_method_setdelamp.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/delay_method_setdeltime.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/delay_method_setsamplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/delay_method_tick.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/delay_method_unpatch.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/envelopefollower_class_envelopefollower.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/envelopefollower_field_audio.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/envelopefollower_method_channelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/envelopefollower_method_getlastvalues.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/envelopefollower_method_patch.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/envelopefollower_method_printinputs.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/envelopefollower_method_samplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/envelopefollower_method_setchannelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/envelopefollower_method_setsamplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/envelopefollower_method_tick.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/envelopefollower_method_unpatch.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/fft_class_fft.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/fft_field_bartlett.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/fft_field_bartletthann.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/fft_field_blackman.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/fft_field_cosine.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/fft_field_gauss.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/fft_field_hamming.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/fft_field_hann.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/fft_field_lanczos.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/fft_field_none.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/fft_field_triangular.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/fft_method_avgsize.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/fft_method_calcavg.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/fft_method_forward.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/fft_method_freqtoindex.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/fft_method_getaveragebandwidth.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/fft_method_getaveragecenterfrequency.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/fft_method_getavg.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/fft_method_getband.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/fft_method_getbandwidth.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/fft_method_getfreq.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/fft_method_getspectrumimaginary.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/fft_method_getspectrumreal.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/fft_method_indextofreq.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/fft_method_inverse.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/fft_method_linaverages.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/fft_method_logaverages.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/fft_method_noaverages.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/fft_method_scaleband.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/fft_method_scalefreq.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/fft_method_setband.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/fft_method_setfreq.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/fft_method_specsize.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/fft_method_timesize.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/fft_method_window.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/fileplayer_class_fileplayer.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/fileplayer_method_channelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/fileplayer_method_close.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/fileplayer_method_cue.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/fileplayer_method_getlastvalues.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/fileplayer_method_getmetadata.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/fileplayer_method_getstream.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/fileplayer_method_islooping.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/fileplayer_method_isplaying.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/fileplayer_method_length.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/fileplayer_method_loop.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/fileplayer_method_loopcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/fileplayer_method_patch.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/fileplayer_method_pause.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/fileplayer_method_play.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/fileplayer_method_position.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/fileplayer_method_printinputs.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/fileplayer_method_rewind.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/fileplayer_method_samplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/fileplayer_method_setchannelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/fileplayer_method_setlooppoints.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/fileplayer_method_setsamplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/fileplayer_method_skip.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/fileplayer_method_tick.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/fileplayer_method_unpatch.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/flanger_class_flanger.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/flanger_field_audio.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/flanger_field_delay.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/flanger_field_depth.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/flanger_field_dry.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/flanger_field_feedback.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/flanger_field_rate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/flanger_field_wet.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/flanger_method_channelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/flanger_method_getlastvalues.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/flanger_method_patch.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/flanger_method_printinputs.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/flanger_method_samplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/flanger_method_setchannelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/flanger_method_setsamplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/flanger_method_tick.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/flanger_method_unpatch.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/frequency_class_frequency.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/frequency_method_ashz.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/frequency_method_asmidinote.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/frequency_method_ofhertz.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/frequency_method_ofmidinote.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/frequency_method_ofpitch.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/frequency_method_setashz.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/gain_class_gain.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/gain_field_audio.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/gain_field_gain.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/gain_method_channelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/gain_method_getlastvalues.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/gain_method_patch.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/gain_method_printinputs.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/gain_method_samplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/gain_method_setchannelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/gain_method_setsamplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/gain_method_setvalue.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/gain_method_tick.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/gain_method_unpatch.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/granulaterandom_class_granulaterandom.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/granulaterandom_field_audio.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/granulaterandom_field_fadelenmax.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/granulaterandom_field_fadelenmin.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/granulaterandom_field_grainlenmax.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/granulaterandom_field_grainlenmin.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/granulaterandom_field_spacelenmax.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/granulaterandom_field_spacelenmin.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/granulaterandom_method_channelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/granulaterandom_method_getlastvalues.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/granulaterandom_method_patch.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/granulaterandom_method_printinputs.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/granulaterandom_method_samplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/granulaterandom_method_setallparameters.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/granulaterandom_method_setalltimeparameters.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/granulaterandom_method_setchannelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/granulaterandom_method_setsamplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/granulaterandom_method_tick.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/granulaterandom_method_unpatch.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/granulatesteady_class_granulatesteady.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/granulatesteady_field_audio.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/granulatesteady_field_fadelen.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/granulatesteady_field_grainlen.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/granulatesteady_field_spacelen.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/granulatesteady_method_channelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/granulatesteady_method_getlastvalues.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/granulatesteady_method_patch.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/granulatesteady_method_printinputs.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/granulatesteady_method_reset.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/granulatesteady_method_samplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/granulatesteady_method_setallparameters.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/granulatesteady_method_setalltimeparameters.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/granulatesteady_method_setchannelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/granulatesteady_method_setsamplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/granulatesteady_method_tick.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/granulatesteady_method_unpatch.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/images/index.gif delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/images/proxml.gif delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/index.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/index_analysis.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/index_ugens.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/instrument_instrument.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/instrument_method_noteoff.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/instrument_method_noteon.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/line_class_line.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/line_method_activate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/line_method_channelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/line_method_getlastvalues.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/line_method_isatend.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/line_method_patch.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/line_method_printinputs.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/line_method_samplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/line_method_setchannelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/line_method_setendamp.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/line_method_setlinetime.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/line_method_setsamplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/line_method_tick.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/line_method_unpatch.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/liveinput_class_liveinput.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/liveinput_method_channelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/liveinput_method_close.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/liveinput_method_getlastvalues.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/liveinput_method_patch.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/liveinput_method_printinputs.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/liveinput_method_samplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/liveinput_method_setchannelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/liveinput_method_setsamplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/liveinput_method_tick.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/liveinput_method_unpatch.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/midi2hz_class_midi2hz.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/midi2hz_field_midinotein.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/midi2hz_method_channelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/midi2hz_method_getlastvalues.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/midi2hz_method_patch.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/midi2hz_method_printinputs.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/midi2hz_method_samplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/midi2hz_method_setchannelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/midi2hz_method_setmidinotein.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/midi2hz_method_setsamplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/midi2hz_method_tick.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/midi2hz_method_unpatch.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/minim_class_minim.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/minim_field_aifc.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/minim_field_aiff.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/minim_field_au.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/minim_field_loop_continuously.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/minim_field_mono.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/minim_field_snd.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/minim_field_stereo.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/minim_field_wav.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/minim_method_createrecorder.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/minim_method_createsample.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/minim_method_debugoff.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/minim_method_debugon.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/minim_method_getinputstream.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/minim_method_getlinein.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/minim_method_getlineout.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/minim_method_loadfile.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/minim_method_loadfileintobuffer.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/minim_method_loadfilestream.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/minim_method_loadsample.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/minim_method_setinputmixer.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/minim_method_setoutputmixer.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/minim_method_stop.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/moogfilter.type_class_moogfilter.type.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/moogfilter.type_field_bp.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/moogfilter.type_field_hp.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/moogfilter.type_field_lp.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/moogfilter.type_method_valueof.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/moogfilter.type_method_values.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/moogfilter_class_moogfilter.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/moogfilter_field_audio.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/moogfilter_field_frequency.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/moogfilter_field_resonance.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/moogfilter_field_type.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/moogfilter_method_channelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/moogfilter_method_getlastvalues.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/moogfilter_method_patch.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/moogfilter_method_printinputs.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/moogfilter_method_samplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/moogfilter_method_setchannelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/moogfilter_method_setsamplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/moogfilter_method_tick.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/moogfilter_method_unpatch.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/multichannelbuffer_class_multichannelbuffer.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/multichannelbuffer_method_getbuffersize.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/multichannelbuffer_method_getchannel.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/multichannelbuffer_method_getchannelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/multichannelbuffer_method_getsample.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/multichannelbuffer_method_set.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/multichannelbuffer_method_setbuffersize.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/multichannelbuffer_method_setchannel.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/multichannelbuffer_method_setchannelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/multichannelbuffer_method_setsample.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/multiplier_class_multiplier.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/multiplier_field_amplitude.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/multiplier_field_audio.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/multiplier_method_channelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/multiplier_method_getlastvalues.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/multiplier_method_patch.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/multiplier_method_printinputs.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/multiplier_method_samplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/multiplier_method_setchannelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/multiplier_method_setsamplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/multiplier_method_setvalue.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/multiplier_method_tick.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/multiplier_method_unpatch.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/noise.tint_class_noise.tint.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/noise.tint_field_brown.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/noise.tint_field_pink.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/noise.tint_field_red.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/noise.tint_field_white.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/noise.tint_method_valueof.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/noise.tint_method_values.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/noise_class_noise.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/noise_field_amplitude.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/noise_field_offset.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/noise_method_channelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/noise_method_getlastvalues.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/noise_method_gettint.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/noise_method_patch.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/noise_method_printinputs.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/noise_method_samplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/noise_method_setchannelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/noise_method_setsamplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/noise_method_settint.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/noise_method_tick.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/noise_method_unpatch.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/oscil_class_oscil.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/oscil_field_amplitude.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/oscil_field_frequency.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/oscil_field_offset.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/oscil_field_phase.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/oscil_method_channelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/oscil_method_getlastvalues.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/oscil_method_getwaveform.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/oscil_method_patch.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/oscil_method_printinputs.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/oscil_method_reset.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/oscil_method_samplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/oscil_method_setamplitude.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/oscil_method_setchannelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/oscil_method_setfrequency.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/oscil_method_setphase.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/oscil_method_setsamplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/oscil_method_setwaveform.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/oscil_method_tick.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/oscil_method_unpatch.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/pan_class_pan.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/pan_field_pan.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/pan_method_channelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/pan_method_getlastvalues.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/pan_method_patch.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/pan_method_printinputs.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/pan_method_samplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/pan_method_setchannelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/pan_method_setpan.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/pan_method_setsamplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/pan_method_tick.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/pan_method_unpatch.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/reciprocal_class_reciprocal.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/reciprocal_field_denominator.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/reciprocal_method_channelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/reciprocal_method_getlastvalues.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/reciprocal_method_patch.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/reciprocal_method_printinputs.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/reciprocal_method_samplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/reciprocal_method_setchannelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/reciprocal_method_setreciprocal.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/reciprocal_method_setsamplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/reciprocal_method_tick.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/reciprocal_method_unpatch.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/sampler_class_sampler.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/sampler_field_amplitude.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/sampler_field_attack.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/sampler_field_begin.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/sampler_field_end.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/sampler_field_looping.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/sampler_field_rate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/sampler_method_channelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/sampler_method_getlastvalues.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/sampler_method_patch.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/sampler_method_printinputs.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/sampler_method_samplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/sampler_method_setchannelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/sampler_method_setsample.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/sampler_method_setsamplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/sampler_method_stop.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/sampler_method_tick.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/sampler_method_trigger.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/sampler_method_unpatch.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/sink_class_sink.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/sink_method_channelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/sink_method_generate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/sink_method_getlastvalues.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/sink_method_patch.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/sink_method_printinputs.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/sink_method_samplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/sink_method_setchannelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/sink_method_setsamplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/sink_method_tick.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/sink_method_unpatch.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/stylesheet.css delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/summer_class_summer.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/summer_method_channelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/summer_method_generate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/summer_method_getlastvalues.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/summer_method_patch.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/summer_method_printinputs.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/summer_method_samplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/summer_method_setchannelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/summer_method_setsamplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/summer_method_tick.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/summer_method_unpatch.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/tickrate_class_tickrate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/tickrate_field_value.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/tickrate_method_channelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/tickrate_method_getlastvalues.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/tickrate_method_isinterpolating.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/tickrate_method_patch.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/tickrate_method_printinputs.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/tickrate_method_samplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/tickrate_method_setchannelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/tickrate_method_setinterpolation.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/tickrate_method_setsamplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/tickrate_method_tick.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/tickrate_method_unpatch.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/ugen.inputtype_class_ugen.inputtype.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/ugen.inputtype_field_audio.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/ugen.inputtype_field_control.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/ugen.inputtype_method_valueof.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/ugen.inputtype_method_values.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/ugen.ugeninput_class_ugen.ugeninput.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/ugen.ugeninput_method_channelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/ugen.ugeninput_method_getincomingugen.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/ugen.ugeninput_method_getinputtype.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/ugen.ugeninput_method_getinputtypeasstring.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/ugen.ugeninput_method_getlastvalue.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/ugen.ugeninput_method_getlastvalues.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/ugen.ugeninput_method_getouterugen.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/ugen.ugeninput_method_ispatched.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/ugen.ugeninput_method_printinput.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/ugen.ugeninput_method_setchannelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/ugen.ugeninput_method_setincomingugen.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/ugen.ugeninput_method_setlastvalue.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/ugen_class_ugen.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/ugen_method_channelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/ugen_method_getlastvalues.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/ugen_method_patch.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/ugen_method_printinputs.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/ugen_method_samplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/ugen_method_setchannelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/ugen_method_setsamplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/ugen_method_tick.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/ugen_method_unpatch.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/vocoder_class_vocoder.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/vocoder_field_audio.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/vocoder_field_modulator.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/vocoder_method_channelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/vocoder_method_getlastvalues.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/vocoder_method_patch.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/vocoder_method_printinputs.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/vocoder_method_samplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/vocoder_method_setchannelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/vocoder_method_setsamplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/vocoder_method_tick.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/vocoder_method_unpatch.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/waveform_method_value.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/waveform_waveform.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/waves_class_waves.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/waves_field_phasor.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/waves_field_quarterpulse.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/waves_field_saw.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/waves_field_sine.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/waves_field_square.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/waves_field_triangle.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/waves_method_add.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/waves_method_pulse.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/waves_method_randomnharms.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/waves_method_randomnoddharms.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/waves_method_randomnoise.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/waves_method_saw.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/waves_method_sawh.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/waves_method_square.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/waves_method_squareh.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/waves_method_triangle.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/waves_method_triangleh.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/waveshaper_class_waveshaper.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/waveshaper_field_audio.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/waveshaper_field_mapamplitude.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/waveshaper_field_outamplitude.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/waveshaper_method_channelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/waveshaper_method_getlastvalues.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/waveshaper_method_patch.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/waveshaper_method_printinputs.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/waveshaper_method_samplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/waveshaper_method_setchannelcount.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/waveshaper_method_setsamplerate.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/waveshaper_method_tick.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/waveshaper_method_unpatch.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/wavetable_class_wavetable.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/wavetable_method_addnoise.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/wavetable_method_flip.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/wavetable_method_get.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/wavetable_method_getwaveform.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/wavetable_method_invert.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/wavetable_method_normalize.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/wavetable_method_offset.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/wavetable_method_rectify.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/wavetable_method_scale.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/wavetable_method_set.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/wavetable_method_setwaveform.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/wavetable_method_size.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/wavetable_method_smooth.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/wavetable_method_value.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/wavetable_method_warp.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/wavetablegenerator_class_wavetablegenerator.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/wavetablegenerator_method_gen10.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/wavetablegenerator_method_gen7.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/wavetablegenerator_method_gen9.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/windowfunction_class_windowfunction.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/windowfunction_method_apply.html delete mode 100644 OpenBCI_GUI/libraries/minim/documentation/windowfunction_method_generatecurve.html delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Advanced/AddAndRemoveAudioListener/AddAndRemoveAudioListener.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Advanced/AddAndRemoveAudioListener/data/groove.mp3 delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Advanced/AudioSampleGetChannel/AudioSampleGetChannel.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Advanced/AudioSampleGetChannel/data/jingle.mp3 delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Advanced/Controller/PrintControls/PrintControls.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Advanced/Controller/getSetBalance/getSetBalance.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Advanced/Controller/getSetBalance/waveform.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Advanced/Controller/getSetGain/getSetGain.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Advanced/Controller/getSetGain/waveform.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Advanced/Controller/getSetPan/getSetPan.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Advanced/Controller/getSetPan/waveform.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Advanced/Controller/getSetVolume/getSetVolume.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Advanced/Controller/getSetVolume/waveform.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Advanced/Controller/hasControl/hasControl.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Advanced/Controller/muting/muting.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Advanced/Controller/muting/waveform.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Advanced/Controller/shifting/shifting.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Advanced/Controller/shifting/waveform.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Advanced/CreateAudioSample/CreateAudioSample.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Advanced/CueAnAudioPlayer/CueAnAudioPlayer.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Advanced/CueAnAudioPlayer/data/groove.mp3 delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Advanced/DrumMachine/DrumMachine.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Advanced/DrumMachine/data/BD.wav delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Advanced/DrumMachine/data/CHH.wav delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Advanced/DrumMachine/data/SD.wav delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Advanced/GetAudioFormat/GetAudioFormat.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Advanced/GetAudioFormat/data/CourierNewPSMT-12.vlw delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Advanced/MidiSequencer/MidiSequencer.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Advanced/MidiSequencer/data/bassline.MID delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Advanced/MidiSynthesizer/MidiSynthesizer.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Advanced/RecordAndPlayback/RecordAndPlayback.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Advanced/Scrubbing/Scrubbing.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Advanced/Scrubbing/button.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Advanced/Scrubbing/data/fair1939.wav delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Advanced/loadFileIntoBuffer/data/SD.mp3 delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Advanced/loadFileIntoBuffer/data/SD.wav delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Advanced/loadFileIntoBuffer/loadFileIntoBuffer.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Advanced/setInputMixer/setInputMixer.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Advanced/setOutputMixer/setOutputMixer.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Analysis/FFT/Inverse/Inverse.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Analysis/FFT/ScaleBand/ScaleBand.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Analysis/FFT/ScaleFreq/ScaleFreq.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Analysis/FFT/SetBand/SetBand.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Analysis/FFT/SetFreq/SetFreq.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Analysis/FFT/Windows/Windows.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Analysis/FFT/Windows/data/jingle.mp3 delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Analysis/FrequencyEnergyBeatDetection/FrequencyEnergyBeatDetection.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Analysis/FrequencyEnergyBeatDetection/data/marcus_kellis_theme.mp3 delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Analysis/SoundEnergyBeatDetection/SoundEnergyBeatDetection.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Analysis/SoundEnergyBeatDetection/data/marcus_kellis_theme.mp3 delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Analysis/SoundSpectrum/SoundSpectrum.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Analysis/SoundSpectrum/data/ArialMT-12.vlw delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Analysis/SoundSpectrum/data/jingle.mp3 delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Analysis/offlineAnalysis/data/jingle.mp3 delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Analysis/offlineAnalysis/offlineAnalysis.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/AudioPlayer/loop/data/groove.mp3 delete mode 100644 OpenBCI_GUI/libraries/minim/examples/AudioPlayer/loop/loop.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/AudioPlayer/loopNum/data/groove.mp3 delete mode 100644 OpenBCI_GUI/libraries/minim/examples/AudioPlayer/loopNum/loopNum.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/AudioPlayer/pause/data/groove.mp3 delete mode 100644 OpenBCI_GUI/libraries/minim/examples/AudioPlayer/pause/pause.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/AudioPlayer/rewind/data/groove.mp3 delete mode 100644 OpenBCI_GUI/libraries/minim/examples/AudioPlayer/rewind/rewind.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/AudioPlayer/setLoopPoints/data/ArialMT-14.vlw delete mode 100644 OpenBCI_GUI/libraries/minim/examples/AudioPlayer/setLoopPoints/data/groove.mp3 delete mode 100644 OpenBCI_GUI/libraries/minim/examples/AudioPlayer/setLoopPoints/setLoopPoints.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/AudioPlayer/skip/data/groove.mp3 delete mode 100644 OpenBCI_GUI/libraries/minim/examples/AudioPlayer/skip/skip.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Basics/AnalyzeSound/AnalyzeSound.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Basics/AnalyzeSound/data/jingle.mp3 delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Basics/CreateAnInstrument/CreateAnInstrument.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Basics/DrawWaveformAndLevel/DrawWaveformAndLevel.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Basics/DrawWaveformAndLevel/data/groove.mp3 delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Basics/GetMetaData/GetMetaData.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Basics/GetMetaData/data/groove.mp3 delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Basics/GetMetaData/data/serif.vlw delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Basics/MonitorInput/MonitorInput.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Basics/PatchingAnInput/PatchingAnInput.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Basics/PlayAFile/PlayAFile.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Basics/PlayAFile/data/groove.mp3 delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Basics/RecordAudioInput/RecordAudioInput.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Basics/RecordAudioOutput/RecordAudioOutput.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Basics/SequenceSound/SequenceSound.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Basics/SynthesizeSound/SynthesizeSound.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Basics/TriggerASample/TriggerASample.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Basics/TriggerASample/data/BD.mp3 delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Basics/TriggerASample/data/SD.wav delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/ADSRExample/ADSRExample.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/BandPassFilter/BandPassFilter.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/BandPassFilter/data/groove.mp3 delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/ChebyshevFilter/ChebyshevFilter.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/ChebyshevFilter/data/groove.mp3 delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/HighPassSPFilter/HighPassSPFilter.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/HighPassSPFilter/data/groove.mp3 delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/LowPassConvolve/LowPassConvolve.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/LowPassConvolve/data/groove.mp3 delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/LowPassFSFilter/LowPassFSFilter.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/LowPassFSFilter/data/groove.mp3 delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/LowPassSPFilter/LowPassSPFilter.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/LowPassSPFilter/data/groove.mp3 delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/NotchFilterExample/NotchFilterExample.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/NotchFilterExample/data/groove.mp3 delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/WavetableMethods/WavetableMethods.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/algorithmicCompExample/algorithmicCompExample.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/algorithmicCompExample/peanutsSentencer.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/algorithmicCompExample/peanutsSyllableInstrument.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/balanceExample/balanceExample.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/bitCrushBeatExample/KickInstrument.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/bitCrushBeatExample/SnareInstrument.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/bitCrushBeatExample/bitCrushBeatExample.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/bitCrushExample/bitCrushExample.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/bypassExample/bypassExample.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/compositionExample/brapInstrument.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/compositionExample/compositionExample.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/compositionExample/nowNowInstrument.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/compositionExample/pooWahInstrument.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/constantExample/constantExample.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/dampExample/applet/dampExample.java delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/dampExample/dampExample.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/defaultInstrumentExample/defaultInstrumentExample.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/delayExample/delayExample.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/envelopeFollowerExample/envelopeFollowerExample.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/filePlayerExample/data/groove.mp3 delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/filePlayerExample/filePlayerExample.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/filterExample/filterExample.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/flangerExample/flangerExample.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/frequencyExample/frequencyExample.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/frequencyModulation/frequencyModulation.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/gainExample/data/groove.mp3 delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/gainExample/gainExample.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/granulateRandomExample/granulateRandomExample.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/granulateSteadyExample/granulateSteadyExample.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/instrCommunicationExample/FollowInstrument.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/instrCommunicationExample/LeaderInstrument.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/instrCommunicationExample/instrCommunicationExample.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/lineExample/lineExample.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/liveInputExample/liveInputExample.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/maxInstrExample/NumberInstrument.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/maxInstrExample/maxInstrExample.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/midiFreqExample/MidiSlideInstrument.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/midiFreqExample/SlideInstrument.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/midiFreqExample/midiFreqExample.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/midiFreqKeyboardExample/midiFreqKeyboardExample.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/moogFilterExample/moogFilterExample.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/multipleOutputsExample/WobbleInstrument.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/multipleOutputsExample/multipleOutputsExample.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/multiplierExample/multiplierExample.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/noiseExample/noiseExample.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/noiseTintExample/noiseTintExample.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/nonInstrSimpleExample/nonInstrSimpleExample.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/oscilEnvExample/oscilEnvExample.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/oscilExample/oscilExample.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/oscilPhaseExample/oscilPhaseExample.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/panExample/panExample.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/pitchNameExample/pitchNameExample.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/pitchNameExample/pitchNameInstrument.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/realtimeControlExample/NoiseInstrument.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/realtimeControlExample/realtimeControlExample.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/summerExample/summerExample.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/tickRateExample/data/again_loop.aif delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/tickRateExample/tickRateExample.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/vocoderExample/vocoderExample.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/waveShaperExample/waveShaperExample.pde delete mode 100644 OpenBCI_GUI/libraries/minim/examples/Synthesis/waveformExample/waveformExample.pde delete mode 100644 OpenBCI_GUI/libraries/minim/library.properties delete mode 100644 OpenBCI_GUI/libraries/minim/library/export.txt delete mode 100644 OpenBCI_GUI/libraries/minim/library/jl1.0.1.jar delete mode 100644 OpenBCI_GUI/libraries/minim/library/jsminim.jar delete mode 100644 OpenBCI_GUI/libraries/minim/library/minim.jar delete mode 100644 OpenBCI_GUI/libraries/minim/library/mp3spi1.9.5.jar delete mode 100644 OpenBCI_GUI/libraries/minim/library/tritonus_aos.jar delete mode 100644 OpenBCI_GUI/libraries/minim/library/tritonus_share.jar delete mode 100644 OpenBCI_GUI/libraries/minim/license.txt delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/AudioBuffer.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/AudioEffect.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/AudioInput.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/AudioListener.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/AudioMetaData.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/AudioOutput.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/AudioPlayer.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/AudioRecorder.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/AudioSample.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/AudioSignal.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/AudioSnippet.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/AudioSource.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/BasicAudioOut.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/Controller.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/Effectable.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/EffectsChain.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/MAudioBuffer.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/Minim.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/MultiChannelBuffer.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/NoteManager.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/Playable.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/Polyphonic.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/Recordable.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/SignalChain.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/SignalSplitter.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/StereoBuffer.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/UGen.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/UGenSignal.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/analysis/BartlettHannWindow.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/analysis/BartlettWindow.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/analysis/BeatDetect.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/analysis/BlackmanWindow.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/analysis/CosineWindow.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/analysis/DFT.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/analysis/FFT.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/analysis/FourierTransform.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/analysis/GaussWindow.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/analysis/HammingWindow.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/analysis/HannWindow.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/analysis/LanczosWindow.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/analysis/RectangularWindow.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/analysis/TriangularWindow.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/analysis/WindowFunction.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/analysis/package.html delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/effects/BandPass.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/effects/ChebFilter.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/effects/Convolver.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/effects/HighPassSP.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/effects/IIRFilter.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/effects/LowPassFS.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/effects/LowPassSP.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/effects/NotchFilter.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/effects/WavetableEnvelope.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/javasound/BasicMetaData.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/javasound/FloatSampleBuffer.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/javasound/FloatSampleTools.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/javasound/JSAudioInput.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/javasound/JSAudioOutput.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/javasound/JSAudioRecording.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/javasound/JSAudioRecordingClip.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/javasound/JSAudioSample.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/javasound/JSBaseAudioRecordingStream.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/javasound/JSBufferedSampleRecorder.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/javasound/JSMPEGAudioRecordingStream.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/javasound/JSMinim.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/javasound/JSPCMAudioRecordingStream.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/javasound/JSStreamingSampleRecorder.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/javasound/MP3MetaData.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/javasound/MpegAudioFileReader.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/javasound/MpegAudioFileReaderWorkaround.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/javasound/SampleSignal.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/package.html delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/signals/Oscillator.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/signals/PinkNoise.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/signals/PulseWave.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/signals/SawWave.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/signals/SineWave.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/signals/SquareWave.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/signals/TriangleWave.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/signals/WhiteNoise.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/spi/AudioOut.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/spi/AudioRecording.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/spi/AudioRecordingStream.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/spi/AudioResource.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/spi/AudioStream.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/spi/MinimServiceProvider.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/spi/SampleRecorder.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/tests/AudioRecordingStreamLoop.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/tests/MP3Decoding.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/tests/MultipleAudioPlayers.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/ugens/ADSR.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/ugens/Abs.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/ugens/Balance.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/ugens/BitCrush.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/ugens/Bypass.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/ugens/Constant.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/ugens/Damp.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/ugens/DefaultInstrument.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/ugens/Delay.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/ugens/EnvelopeFollower.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/ugens/FilePlayer.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/ugens/Flanger.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/ugens/Frequency.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/ugens/Gain.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/ugens/GranulateRandom.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/ugens/GranulateSteady.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/ugens/Instrument.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/ugens/Line.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/ugens/LiveInput.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/ugens/Midi2Hz.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/ugens/MoogFilter.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/ugens/Multiplier.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/ugens/Noise.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/ugens/Oscil.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/ugens/Pan.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/ugens/Reciprocal.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/ugens/Sampler.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/ugens/Sink.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/ugens/Summer.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/ugens/TickRate.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/ugens/Vocoder.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/ugens/WaveShaper.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/ugens/Waveform.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/ugens/Waves.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/ugens/Wavetable.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/ugens/WavetableGenerator.java delete mode 100644 OpenBCI_GUI/libraries/minim/src/ddf/minim/ugens/package.html delete mode 100755 libraries/gwoptics/examples/Blank2DCanvas/BasicSpiral/BasicSpiral.pde delete mode 100755 libraries/gwoptics/examples/Blank2DCanvas/Butterfly/Butterfly.pde delete mode 100755 libraries/gwoptics/examples/Blank2DCanvas/RollingGraph_Alternative/RollingGraph_Alternative.pde delete mode 100755 libraries/gwoptics/examples/Blank2DCanvas/ScatterPlot/ScatterPlot.pde delete mode 100755 libraries/gwoptics/examples/Blank2DCanvas/Shapes/Shapes.pde delete mode 100755 libraries/gwoptics/examples/Graph2D/Basic1/Basic1.pde delete mode 100755 libraries/gwoptics/examples/Graph2D/Basic2/Basic2.pde delete mode 100755 libraries/gwoptics/examples/Graph2D/Basic3/Basic3.pde delete mode 100755 libraries/gwoptics/examples/Graph2D/RollingGraph/RollingGraph.pde delete mode 100755 libraries/gwoptics/examples/Graph2D/TraceEffects/TraceEffects.pde delete mode 100755 libraries/gwoptics/examples/Graph3D/Basic/Basic.pde delete mode 100755 libraries/gwoptics/examples/Graph3D/ColourMap_Camera/ColourMap_Camera.pde delete mode 100755 libraries/gwoptics/examples/Graph3D/DynamicWave/DynamicWave.pde delete mode 100755 libraries/gwoptics/examples/Graph3D/SquareMesh/SquareMesh.pde delete mode 100755 libraries/gwoptics/examples/ScatterTrace/ScatterPlot_1_Basic/ScatterPlot_1_Basic.pde delete mode 100755 libraries/gwoptics/examples/ScatterTrace/ScatterPlot_2_Labels/ScatterPlot_2_Labels.pde delete mode 100755 libraries/gwoptics/examples/ScatterTrace/ScatterPlot_3_Custom_Point/ScatterPlot_3_Custom_Point.pde delete mode 100755 libraries/gwoptics/examples/ScatterTrace/ScatterPlot_4_Advanced/ScatterPlot_4_Advanced.pde delete mode 100755 libraries/gwoptics/library.properties delete mode 100755 libraries/gwoptics/library/gwoptics.jar delete mode 100755 libraries/gwoptics/reference/allclasses-frame.html delete mode 100755 libraries/gwoptics/reference/allclasses-noframe.html delete mode 100755 libraries/gwoptics/reference/constant-values.html delete mode 100755 libraries/gwoptics/reference/deprecated-list.html delete mode 100755 libraries/gwoptics/reference/help-doc.html delete mode 100755 libraries/gwoptics/reference/index-all.html delete mode 100755 libraries/gwoptics/reference/index.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/ArgumentException.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/Logo.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/LogoSize.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/ValueType.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/Version.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/gaussbeams/GaussMode.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/gaussbeams/package-frame.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/gaussbeams/package-summary.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/gaussbeams/package-tree.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/GWColour.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/IRenderable.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/Renderable.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/camera/Camera3D.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/camera/package-frame.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/camera/package-summary.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/camera/package-tree.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/colourmap/ColourmapNode.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/colourmap/EquationColourmap.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/colourmap/IColourmap.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/colourmap/IColourmapEquation.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/colourmap/MapNeedsGeneratingException.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/colourmap/RGBColourmap.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/colourmap/package-frame.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/colourmap/package-summary.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/colourmap/package-tree.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/colourmap/presets/CoolColourmap.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/colourmap/presets/FlipColourmap.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/colourmap/presets/GrayScaleColourmap.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/colourmap/presets/HotColourmap.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/colourmap/presets/PresetColourmaps.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/colourmap/presets/Presets.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/colourmap/presets/WarmColourmap.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/colourmap/presets/package-frame.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/colourmap/presets/package-summary.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/colourmap/presets/package-tree.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/Axis2D.Alignment.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/Axis2D.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/Graph2D.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/IGraph2D.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/LabelPos.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/backgrounds/GridBackground.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/backgrounds/IGraph2DBackground.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/backgrounds/SolidColourBackground.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/backgrounds/package-frame.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/backgrounds/package-summary.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/backgrounds/package-tree.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/effects/AxisColourmapEffect.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/effects/ITraceColourEffect.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/effects/XAxisColourmapEffect.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/effects/YAxisColourmapEffect.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/effects/package-frame.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/effects/package-summary.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/effects/package-tree.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/package-frame.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/package-summary.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/package-tree.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/traces/Blank2DTrace.PlotRenderer.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/traces/Blank2DTrace.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/traces/IGraph2DTrace.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/traces/ILine2DEquation.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/traces/Line2DTrace.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/traces/RollingLine2DTrace.RollingTraceTooFastException.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/traces/RollingLine2DTrace.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/traces/ScatterTrace.IScatterPoint.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/traces/ScatterTrace.LABELPOSITION.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/traces/ScatterTrace.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/traces/Trace2DException.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/traces/UpdatingLine2DTrace.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/traces/package-frame.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/traces/package-summary.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/graph2D/traces/package-tree.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/graph3D/Axis3D.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/graph3D/IGraph3DCallback.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/graph3D/SquareGridMesh.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/graph3D/SurfaceGraph3D.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/graph3D/SurfaceTrace3D.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/graph3D/package-frame.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/graph3D/package-summary.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/graph3D/package-tree.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/package-frame.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/package-summary.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphics/package-tree.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphicsutils/graphicsUtils.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphicsutils/package-frame.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphicsutils/package-summary.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/graphicsutils/package-tree.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/mathutils/Complex.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/mathutils/TrigLookup.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/mathutils/VectorUtils.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/mathutils/mathUtils.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/mathutils/package-frame.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/mathutils/package-summary.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/mathutils/package-tree.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/package-frame.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/package-summary.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/package-tree.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/testing/ButterFly.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/testing/Graph2DTest.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/testing/RollingLine2DTraceTest.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/testing/ScatterTraceTest.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/testing/Scatter_label_test.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/testing/package-frame.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/testing/package-summary.html delete mode 100755 libraries/gwoptics/reference/org/gwoptics/testing/package-tree.html delete mode 100755 libraries/gwoptics/reference/overview-frame.html delete mode 100755 libraries/gwoptics/reference/overview-summary.html delete mode 100755 libraries/gwoptics/reference/overview-tree.html delete mode 100755 libraries/gwoptics/reference/package-list delete mode 100755 libraries/gwoptics/reference/resources/inherit.gif delete mode 100755 libraries/gwoptics/reference/serialized-form.html delete mode 100755 libraries/gwoptics/reference/stylesheet.css delete mode 100755 libraries/gwoptics/src/LICENSE delete mode 100755 libraries/gwoptics/src/data/Arial-BoldMT-12.vlw delete mode 100755 libraries/gwoptics/src/data/CourierNew36.vlw delete mode 100755 libraries/gwoptics/src/data/Verdana48.vlw delete mode 100755 libraries/gwoptics/src/data/Verdana72.vlw delete mode 100755 libraries/gwoptics/src/data/gwoptics_org_logo_20px.png delete mode 100755 libraries/gwoptics/src/data/gwoptics_org_logo_25px.png delete mode 100755 libraries/gwoptics/src/data/gwoptics_org_logo_30px.png delete mode 100755 libraries/gwoptics/src/data/gwoptics_org_logo_35px.png delete mode 100755 libraries/gwoptics/src/data/gwoptics_org_logo_40px.png delete mode 100755 libraries/gwoptics/src/data/gwoptics_org_logo_50px.png delete mode 100755 libraries/gwoptics/src/data/gwoptics_org_logo_60px.png delete mode 100755 libraries/gwoptics/src/data/gwoptics_org_logo_80px.png delete mode 100755 libraries/gwoptics/src/data/gwoptics_org_logo_shadow_20px.png delete mode 100755 libraries/gwoptics/src/data/gwoptics_org_logo_shadow_25px.png delete mode 100755 libraries/gwoptics/src/data/gwoptics_org_logo_shadow_30px.png delete mode 100755 libraries/gwoptics/src/data/gwoptics_org_logo_shadow_35px.png delete mode 100755 libraries/gwoptics/src/data/gwoptics_org_logo_shadow_40px.png delete mode 100755 libraries/gwoptics/src/data/gwoptics_org_logo_shadow_50px.png delete mode 100755 libraries/gwoptics/src/data/gwoptics_org_logo_shadow_60px.png delete mode 100755 libraries/gwoptics/src/data/gwoptics_org_logo_shadow_80px.png delete mode 100755 libraries/gwoptics/src/org/gwoptics/ArgumentException.java delete mode 100755 libraries/gwoptics/src/org/gwoptics/Logo.java delete mode 100755 libraries/gwoptics/src/org/gwoptics/LogoSize.java delete mode 100755 libraries/gwoptics/src/org/gwoptics/ValueType.java delete mode 100755 libraries/gwoptics/src/org/gwoptics/Version.java delete mode 100755 libraries/gwoptics/src/org/gwoptics/gaussbeams/GaussMode.java delete mode 100755 libraries/gwoptics/src/org/gwoptics/graphics/GWColour.java delete mode 100755 libraries/gwoptics/src/org/gwoptics/graphics/IRenderable.java delete mode 100755 libraries/gwoptics/src/org/gwoptics/graphics/Renderable.java delete mode 100755 libraries/gwoptics/src/org/gwoptics/graphics/camera/Camera3D.java delete mode 100755 libraries/gwoptics/src/org/gwoptics/graphics/colourmap/ColourmapNode.java delete mode 100755 libraries/gwoptics/src/org/gwoptics/graphics/colourmap/EquationColourmap.java delete mode 100755 libraries/gwoptics/src/org/gwoptics/graphics/colourmap/IColourmap.java delete mode 100755 libraries/gwoptics/src/org/gwoptics/graphics/colourmap/IColourmapEquation.java delete mode 100755 libraries/gwoptics/src/org/gwoptics/graphics/colourmap/MapNeedsGeneratingException.java delete mode 100755 libraries/gwoptics/src/org/gwoptics/graphics/colourmap/RGBColourmap.java delete mode 100755 libraries/gwoptics/src/org/gwoptics/graphics/colourmap/presets/CoolColourmap.java delete mode 100755 libraries/gwoptics/src/org/gwoptics/graphics/colourmap/presets/FlipColourmap.java delete mode 100755 libraries/gwoptics/src/org/gwoptics/graphics/colourmap/presets/GrayScaleColourmap.java delete mode 100755 libraries/gwoptics/src/org/gwoptics/graphics/colourmap/presets/HotColourmap.java delete mode 100755 libraries/gwoptics/src/org/gwoptics/graphics/colourmap/presets/PresetColourmaps.java delete mode 100755 libraries/gwoptics/src/org/gwoptics/graphics/colourmap/presets/Presets.java delete mode 100755 libraries/gwoptics/src/org/gwoptics/graphics/colourmap/presets/WarmColourmap.java delete mode 100755 libraries/gwoptics/src/org/gwoptics/graphics/graph2D/Axis2D.java delete mode 100755 libraries/gwoptics/src/org/gwoptics/graphics/graph2D/Graph2D.java delete mode 100755 libraries/gwoptics/src/org/gwoptics/graphics/graph2D/IGraph2D.java delete mode 100755 libraries/gwoptics/src/org/gwoptics/graphics/graph2D/LabelPos.java delete mode 100755 libraries/gwoptics/src/org/gwoptics/graphics/graph2D/backgrounds/GridBackground.java delete mode 100755 libraries/gwoptics/src/org/gwoptics/graphics/graph2D/backgrounds/IGraph2DBackground.java delete mode 100755 libraries/gwoptics/src/org/gwoptics/graphics/graph2D/backgrounds/SolidColourBackground.java delete mode 100755 libraries/gwoptics/src/org/gwoptics/graphics/graph2D/effects/AxisColourmapEffect.java delete mode 100755 libraries/gwoptics/src/org/gwoptics/graphics/graph2D/effects/ITraceColourEffect.java delete mode 100755 libraries/gwoptics/src/org/gwoptics/graphics/graph2D/effects/XAxisColourmapEffect.java delete mode 100755 libraries/gwoptics/src/org/gwoptics/graphics/graph2D/effects/YAxisColourmapEffect.java delete mode 100755 libraries/gwoptics/src/org/gwoptics/graphics/graph2D/traces/Blank2DTrace.java delete mode 100755 libraries/gwoptics/src/org/gwoptics/graphics/graph2D/traces/IGraph2DTrace.java delete mode 100755 libraries/gwoptics/src/org/gwoptics/graphics/graph2D/traces/ILine2DEquation.java delete mode 100755 libraries/gwoptics/src/org/gwoptics/graphics/graph2D/traces/Line2DTrace.java delete mode 100755 libraries/gwoptics/src/org/gwoptics/graphics/graph2D/traces/RollingLine2DTrace.java delete mode 100755 libraries/gwoptics/src/org/gwoptics/graphics/graph2D/traces/ScatterTrace.java delete mode 100755 libraries/gwoptics/src/org/gwoptics/graphics/graph2D/traces/Trace2DException.java delete mode 100755 libraries/gwoptics/src/org/gwoptics/graphics/graph2D/traces/UpdatingLine2DTrace.java delete mode 100755 libraries/gwoptics/src/org/gwoptics/graphics/graph3D/Axis3D.java delete mode 100755 libraries/gwoptics/src/org/gwoptics/graphics/graph3D/IGraph3DCallback.java delete mode 100755 libraries/gwoptics/src/org/gwoptics/graphics/graph3D/SquareGridMesh.java delete mode 100755 libraries/gwoptics/src/org/gwoptics/graphics/graph3D/SurfaceGraph3D.java delete mode 100755 libraries/gwoptics/src/org/gwoptics/graphics/graph3D/SurfaceTrace3D.java delete mode 100755 libraries/gwoptics/src/org/gwoptics/graphicsutils/graphicsUtils.java delete mode 100755 libraries/gwoptics/src/org/gwoptics/mathutils/Complex.java delete mode 100755 libraries/gwoptics/src/org/gwoptics/mathutils/TrigLookup.java delete mode 100755 libraries/gwoptics/src/org/gwoptics/mathutils/VectorUtils.java delete mode 100755 libraries/gwoptics/src/org/gwoptics/mathutils/mathUtils.java delete mode 100755 libraries/gwoptics/src/org/gwoptics/testing/ButterFly.java delete mode 100755 libraries/gwoptics/src/org/gwoptics/testing/Graph2DTest.java delete mode 100755 libraries/gwoptics/src/org/gwoptics/testing/RollingLine2DTraceTest.java delete mode 100755 libraries/gwoptics/src/org/gwoptics/testing/ScatterTraceTest.java delete mode 100755 libraries/gwoptics/src/org/gwoptics/testing/Scatter_label_test.java diff --git a/CodeMap.png b/CodeMap.png deleted file mode 100644 index 0803102472dff2b5409612bc1c2cb69ffd4bd1d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 174575 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",fontInfo.buttonLabel_size); + popOut = new Button(x+padding + (w-padding*4), y + padding, 20,20,">",fontInfo.buttonLabel_size); serialList = new MenuList(cp5, "serialList", w - padding*2, 72, p4); // println(w-padding*2); @@ -1307,7 +1373,7 @@ class DataLogBox { textAlign(LEFT, TOP); text("DATA LOG FILE", x + padding, y + padding); textFont(p4, 14);; - text("File Name", x + padding, y + padding*2 + 18); + text("File Name", x + padding, y + padding*2 + 14); popStyle(); cp5.get(Textfield.class, "fileName").setPosition(x + 90, y + 32); autoFileName.but_y = y + 66; @@ -1319,6 +1385,80 @@ class DataLogBox { } }; +class DataLogBoxGanglion { + int x, y, w, h, padding; //size and position + String fileName; + //text field for inputing text + //create/open/closefile button + String fileStatus; + boolean isFileOpen; //true if file has been activated and is ready to write to + //String port status; + + DataLogBoxGanglion(int _x, int _y, int _w, int _h, int _padding) { + x = _x; + y = _y; + w = _w; + h = 127; // Added 24 + + padding = _padding; + //instantiate button + //figure out default file name (from Chip's code) + isFileOpen = false; //set to true on button push + fileStatus = "NO FILE CREATED"; + + //button to autogenerate file name based on time/date + autoFileNameGanglion = new Button (x + padding, y + 66, w-(padding*2), 24, "AUTOGENERATE FILE NAME", fontInfo.buttonLabel_size); + outputODFGanglion = new Button (x + padding, y + padding*2 + 18 + 58, (w-padding*3)/2, 24, "OpenBCI", fontInfo.buttonLabel_size); + if (outputDataSource == OUTPUT_SOURCE_ODF) outputODFGanglion.color_notPressed = isSelected_color; //make it appear like this one is already selected + outputBDFGanglion = new Button (x + padding*2 + (w-padding*3)/2, y + padding*2 + 18 + 58, (w-padding*3)/2, 24, "BDF+", fontInfo.buttonLabel_size); + if (outputDataSource == OUTPUT_SOURCE_BDF) outputODFGanglion.color_notPressed = isSelected_color; //make it appear like this one is already selected + + + cp5.addTextfield("fileNameGanglion") + .setPosition(x + 90, y + 32) + .setCaptionLabel("") + .setSize(157, 26) + .setFont(f2) + .setFocus(false) + .setColor(color(26, 26, 26)) + .setColorBackground(color(255, 255, 255)) // text field bg color + .setColorValueLabel(color(0, 0, 0)) // text color + .setColorForeground(isSelected_color) // border color when not selected + .setColorActive(isSelected_color) // border color when selected + .setColorCursor(color(26, 26, 26)) + .setText(getDateString()) + .align(5, 10, 20, 40) + .onDoublePress(cb) + .setAutoClear(true); + + //clear text field on double click + } + + public void update() { + } + + public void draw() { + pushStyle(); + fill(boxColor); + stroke(boxStrokeColor); + strokeWeight(1); + rect(x, y, w, h); + fill(bgColor); + textFont(h3, 16); + textAlign(LEFT, TOP); + text("DATA LOG FILE", x + padding, y + padding); + textFont(p4, 14);; + text("File Name", x + padding, y + padding*2 + 14); + popStyle(); + cp5.get(Textfield.class, "fileNameGanglion").setPosition(x + 90, y + 32); + autoFileNameGanglion.but_y = y + 66; + autoFileNameGanglion.draw(); + outputODFGanglion.but_y = y + padding*2 + 18 + 58; + outputODFGanglion.draw(); + outputBDFGanglion.but_y = y + padding*2 + 18 + 58; + outputBDFGanglion.draw(); + } +}; + class ChannelCountBox { int x, y, w, h, padding; //size and position @@ -1350,11 +1490,11 @@ class ChannelCountBox { fill(bgColor); textFont(h3, 16); textAlign(LEFT, TOP); - text("CHANNEL COUNT", x + padding, y + padding); + text("CHANNEL COUNT ", x + padding, y + padding); fill(bgColor); //set color to green textFont(h3, 16); textAlign(LEFT, TOP); - text("(" + str(nchan) + ")", x + padding + 142, y + padding); // print the channel count in green next to the box title + text(" (" + str(nchan) + ")", x + padding + 142, y + padding); // print the channel count in green next to the box title popStyle(); chanButton8.draw(); @@ -1399,7 +1539,7 @@ class SyntheticChannelCountBox { fill(bgColor); //set color to green textFont(h3, 16); textAlign(LEFT, TOP); - text("(" + str(nchan) + ")", x + padding + 142, y + padding); // print the channel count in green next to the box title + text(" (" + str(nchan) + ")", x + padding + 142, y + padding); // print the channel count in green next to the box title popStyle(); synthChanButton4.draw(); @@ -2091,6 +2231,8 @@ public class MenuList extends controlP5.Controller { menu = createGraphics(getWidth(),getHeight()); menuFont = p4; + getValueLabel().setSize(14); + getCaptionLabel().setSize(14); setView(new ControllerView() { diff --git a/OpenBCI_GUI/GanglionSync.pde b/OpenBCI_GUI/GanglionSync.pde index 0e8e7ed..6aa6c2d 100644 --- a/OpenBCI_GUI/GanglionSync.pde +++ b/OpenBCI_GUI/GanglionSync.pde @@ -318,7 +318,7 @@ class OpenBCI_Ganglion { ganglion.copyDataPacketTo(dataPacketBuff[curDataPacketInd]); // Resets isNewDataPacketAvailable to false switch (outputDataSource) { case OUTPUT_SOURCE_ODF: - fileoutput_odf.writeRawData_dataPacket(dataPacketBuff[curDataPacketInd], ganglion.get_scale_fac_uVolts_per_count(), 0); + fileoutput_odf.writeRawData_dataPacket(dataPacketBuff[curDataPacketInd], ganglion.get_scale_fac_uVolts_per_count(), get_scale_fac_accel_G_per_count()); break; case OUTPUT_SOURCE_BDF: // curBDFDataPacketInd = curDataPacketInd; @@ -488,7 +488,7 @@ class OpenBCI_Ganglion { } else { boolean willAddToDeviceList = true; for (int i = 0; i < numberOfDevices; i++) { - if (deviceList[i] == ganglionLocalName) { + if (ganglionLocalName.equals(deviceList[i])) { willAddToDeviceList = false; break; } diff --git a/OpenBCI_GUI/HardwareSettingsController.pde b/OpenBCI_GUI/HardwareSettingsController.pde index 5bd29ab..ba4ddce 100644 --- a/OpenBCI_GUI/HardwareSettingsController.pde +++ b/OpenBCI_GUI/HardwareSettingsController.pde @@ -446,6 +446,49 @@ class HardwareSettingsController{ } } + void mousePressed(){ + if (isVisible) { + for (int i = 0; i < nchan; i++) { //When [i][j] button is clicked + for (int j = 1; j < numSettingsPerChannel; j++) { + if (channelSettingButtons[i][j].isMouseHere()) { + //increment [i][j] channelSettingValue by, until it reaches max values per setting [j], + channelSettingButtons[i][j].wasPressed = true; + channelSettingButtons[i][j].isActive = true; + } + } + } + } + } + + void mouseReleased(){ + if (isVisible) { + for (int i = 0; i < nchan; i++) { //When [i][j] button is clicked + for (int j = 1; j < numSettingsPerChannel; j++) { + if (channelSettingButtons[i][j].isMouseHere() && channelSettingButtons[i][j].wasPressed == true) { + if (channelSettingValues[i][j] < maxValuesPerSetting[j]) { + channelSettingValues[i][j]++; //increment [i][j] channelSettingValue by, until it reaches max values per setting [j], + } else { + channelSettingValues[i][j] = '0'; + } + // if you're not currently writing a channel and not waiting to rewrite after you've finished mashing the button + if (!openBCI.get_isWritingChannel() && rewriteChannelWhenDoneWriting == false) { + initChannelWrite(i);//write new ADS1299 channel row values to OpenBCI + } else { //else wait until a the current write has finished and then write again ... this is to not overwrite the wrong values while writing a channel + verbosePrint("CONGRATULATIONS, YOU'RE MASHING BUTTONS!"); + rewriteChannelWhenDoneWriting = true; + channelToWriteWhenDoneWriting = i; + } + } + + // if(!channelSettingButtons[i][j].isMouseHere()){ + channelSettingButtons[i][j].isActive = false; + channelSettingButtons[i][j].wasPressed = false; + // } + } + } + } + } + void screenResized(int _x, int _y, int _w, int _h, int _channelBarHeight){ x = _x; y = _y; @@ -506,17 +549,17 @@ class HardwareSettingsController{ // // //if dataSource is coming from OpenBCI, allow user to interact with channel controller // if (eegDataSource == DATASOURCE_NORMAL_W_AUX) { - // if (showFullController) { - // for (int i = 0; i < nchan; i++) { //When [i][j] button is clicked - // for (int j = 1; j < numSettingsPerChannel; j++) { - // if (channelSettingButtons[i][j].isMouseHere()) { - // //increment [i][j] channelSettingValue by, until it reaches max values per setting [j], - // channelSettingButtons[i][j].wasPressed = true; - // channelSettingButtons[i][j].isActive = true; - // } - // } - // } - // } + // if (showFullController) { + // for (int i = 0; i < nchan; i++) { //When [i][j] button is clicked + // for (int j = 1; j < numSettingsPerChannel; j++) { + // if (channelSettingButtons[i][j].isMouseHere()) { + // //increment [i][j] channelSettingValue by, until it reaches max values per setting [j], + // channelSettingButtons[i][j].wasPressed = true; + // channelSettingButtons[i][j].isActive = true; + // } + // } + // } + // } // } // //on/off button and Imp buttons can always be clicked/released // for (int i = 0; i < nchan; i++) { diff --git a/OpenBCI_GUI/HardwareSync.pde b/OpenBCI_GUI/HardwareSync.pde index 0cfa3a7..54ee196 100644 --- a/OpenBCI_GUI/HardwareSync.pde +++ b/OpenBCI_GUI/HardwareSync.pde @@ -424,25 +424,20 @@ class OpenBCI_ADS1299 { public int closeSDFile() { println("Closing any open SD file. Writing 'j' to OpenBCI."); - if (serial_openBCI != null) serial_openBCI.write("j"); // tell the SD file to close if one is open... + if (isSerialPortOpen()) serial_openBCI.write("j"); // tell the SD file to close if one is open... delay(100); //make sure 'j' gets sent to the board return 0; } public int closeSerialPort() { // if (serial_openBCI != null) { - println("OpenBCI_ADS1299: closeSerialPort: d"); portIsOpen = false; - println("OpenBCI_ADS1299: closeSerialPort: e"); - println("OpenBCI_ADS1299: closeSerialPort: e2"); if(serial_openBCI != null){ serial_openBCI.stop(); - println("OpenBCI_ADS1299: closeSerialPort: f"); } serial_openBCI = null; - println("OpenBCI_ADS1299: closeSerialPort: g"); state = STATE_NOCOM; - println("OpenBCI_ADS1299: closeSerialPort: h"); + println("OpenBCI_ADS1299: closeSerialPort: closed"); return 0; } @@ -550,13 +545,13 @@ class OpenBCI_ADS1299 { } public void sendChar(char val) { - if (serial_openBCI != null) { + if (isSerialPortOpen()) { serial_openBCI.write(key);//send the value as ascii (with a newline character?) } } void startDataTransfer(){ - if (serial_openBCI != null) { + if (isSerialPortOpen()) { serial_openBCI.clear(); // clear anything in the com port's buffer // stopDataTransfer(); changeState(STATE_NORMAL); // make sure it's now interpretting as binary @@ -566,7 +561,7 @@ class OpenBCI_ADS1299 { } public void stopDataTransfer() { - if (serial_openBCI != null) { + if (isSerialPortOpen()) { serial_openBCI.clear(); // clear anything in the com port's buffer openBCI.changeState(STATE_STOPPED); // make sure it's now interpretting as binary println("OpenBCI_ADS1299: startDataTransfer(): writing \'" + command_stop + "\' to the serial port..."); @@ -590,7 +585,7 @@ class OpenBCI_ADS1299 { } public void printRegisters() { - if (serial_openBCI != null) { + if (isSerialPortOpen()) { println("OpenBCI_ADS1299: printRegisters(): Writing ? to OpenBCI..."); openBCI.serial_openBCI.write('?'); } @@ -601,7 +596,14 @@ class OpenBCI_ADS1299 { public int read(boolean echoChar) { //println("OpenBCI_ADS1299: read(): State: " + state); //get the byte - byte inByte = byte(serial_openBCI.read()); + byte inByte; + if (isSerialPortOpen()) { + inByte = byte(serial_openBCI.read()); + } else { + println("Serial port not open aborting."); + return 0; + } + //write the most recent char to the console // If the GUI is in streaming mode then echoChar will be false @@ -638,27 +640,13 @@ class OpenBCI_ADS1299 { //if the last three chars are $$$, it means we are moving on to the next stage of initialization if(prev3chars[0] == EOT[0] && prev3chars[1] == EOT[1] && prev3chars[2] == EOT[2]){ - verbosePrint(" > EOT detected..."); + // verbosePrint(" > EOT detected..."); // Added for V2 system down rejection line if(hardwareSyncStep == 0) { // Failure: Communications timeout - Device failed to poll Host$$$ if (potentialFailureMessage.equals(failureMessage)) { - // changeState(STATE_NOCOM); - // serial_openBCI = null; - output("Failed to establish communication with Cyton, please ensure Cyton is powered on and Board/Dongle are on the same radio channel!"); - // portIsOpen = false; - systemMode = 0; - initSystemButton.setString("START SYSTEM"); - controlPanel.open(); - prevState_millis = 0; - timeOfInit = 0; closeLogFile(); - closeSerialPort(); - serial_openBCI = null; - println(); - println("--------------------------------------------------------------------------------------------------------"); - } else { - println("not failure"); + return 0; } } // hardwareSyncStep++; @@ -827,7 +815,7 @@ class OpenBCI_ADS1299 { //activate or deactivate an EEG channel...channel counting is zero through nchan-1 public void changeChannelState(int Ichan,boolean activate) { - if (serial_openBCI != null) { + if (isSerialPortOpen()) { // if ((Ichan >= 0) && (Ichan < command_activate_channel.length)) { if ((Ichan >= 0)) { if (activate) { @@ -845,7 +833,7 @@ class OpenBCI_ADS1299 { //deactivate an EEG channel...channel counting is zero through nchan-1 public void deactivateChannel(int Ichan) { - if (serial_openBCI != null) { + if (isSerialPortOpen()) { if ((Ichan >= 0) && (Ichan < command_deactivate_channel.length)) { serial_openBCI.write(command_deactivate_channel[Ichan]); } @@ -854,7 +842,7 @@ class OpenBCI_ADS1299 { //activate an EEG channel...channel counting is zero through nchan-1 public void activateChannel(int Ichan) { - if (serial_openBCI != null) { + if (isSerialPortOpen()) { if ((Ichan >= 0) && (Ichan < command_activate_channel.length)) { serial_openBCI.write(command_activate_channel[Ichan]); } @@ -870,44 +858,6 @@ class OpenBCI_ADS1299 { } } - // ---- DEPRECATED ---- - // public void changeImpedanceState(int Ichan,boolean activate,int code_P_N_Both) { - // //println("OpenBCI_ADS1299: changeImpedanceState: Ichan " + Ichan + ", activate " + activate + ", code_P_N_Both " + code_P_N_Both); - // if (serial_openBCI != null) { - // if ((Ichan >= 0) && (Ichan < command_activate_leadoffP_channel.length)) { - // if (activate) { - // if ((code_P_N_Both == 0) || (code_P_N_Both == 2)) { - // //activate the P channel - // serial_openBCI.write(command_activate_leadoffP_channel[Ichan]); - // } else if ((code_P_N_Both == 1) || (code_P_N_Both == 2)) { - // //activate the N channel - // serial_openBCI.write(command_activate_leadoffN_channel[Ichan]); - // } - // } else { - // if ((code_P_N_Both == 0) || (code_P_N_Both == 2)) { - // //deactivate the P channel - // serial_openBCI.write(command_deactivate_leadoffP_channel[Ichan]); - // } else if ((code_P_N_Both == 1) || (code_P_N_Both == 2)) { - // //deactivate the N channel - // serial_openBCI.write(command_deactivate_leadoffN_channel[Ichan]); - // } - // } - // } - // } - // } - - // public void setBiasAutoState(boolean isAuto) { - // if (serial_openBCI != null) { - // if (isAuto) { - // println("OpenBCI_ADS1299: setBiasAutoState: setting bias to AUTO"); - // serial_openBCI.write(command_biasAuto); - // } else { - // println("OpenBCI_ADS1299: setBiasAutoState: setting bias to REF ONLY"); - // serial_openBCI.write(command_biasFixed); - // } - // } - // } - private int interpret24bitAsInt32(byte[] byteArray) { //little endian int newInt = ( diff --git a/OpenBCI_GUI/Interactivity.pde b/OpenBCI_GUI/Interactivity.pde index d8efe78..fd86c05 100644 --- a/OpenBCI_GUI/Interactivity.pde +++ b/OpenBCI_GUI/Interactivity.pde @@ -81,14 +81,14 @@ void parseKey(char val) { // wmVisible = !wmVisible; break; case ':': - if(isGanglion && eegDataSource == DATASOURCE_GANGLION){ - println("Start/stop impedance check..."); - if(ganglion.isCheckingImpedance()){ - ganglion.impedanceStop(); - } else { - ganglion.impedanceStart(); - } - } + // if(isGanglion && eegDataSource == DATASOURCE_GANGLION){ + // println("Start/stop impedance check..."); + // if(ganglion.isCheckingImpedance()){ + // ganglion.impedanceStop(); + // } else { + // ganglion.impedanceStart(); + // } + // } break; case '{': if(colorScheme == COLOR_SCHEME_DEFAULT){ diff --git a/OpenBCI_GUI/SavedData/OpenBCI-2016-12-08_21-16-33.jpg b/OpenBCI_GUI/SavedData/OpenBCI-2016-12-08_21-16-33.jpg deleted file mode 100644 index 214d916b38df1665f324127df480285c89b2eb87..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 132913 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

R5>d%1gZ>a!+I3>D=K*Kt>zL4(e{6 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 L6}+$J`=|c^sTa=> diff --git a/OpenBCI_GUI/W_Template.pde b/OpenBCI_GUI/W_Template.pde index f2ff1b5..9e14cf4 100644 --- a/OpenBCI_GUI/W_Template.pde +++ b/OpenBCI_GUI/W_Template.pde @@ -81,9 +81,10 @@ class W_template extends Widget { } - //add custom classes functions here + //add custom functions here void customFunction(){ //this is a fake function... replace it with something relevant to this widget + } }; diff --git a/OpenBCI_GUI/W_TimeSeries.pde b/OpenBCI_GUI/W_TimeSeries.pde index 187ce39..06971e4 100644 --- a/OpenBCI_GUI/W_TimeSeries.pde +++ b/OpenBCI_GUI/W_TimeSeries.pde @@ -214,10 +214,15 @@ class W_timeSeries extends Widget { } } - for(int i = 0; i < channelBars.length; i++){ - channelBars[i].mousePressed(); + if(hsc.isVisible){ + hsc.mousePressed(); + } else { + for(int i = 0; i < channelBars.length; i++){ + channelBars[i].mousePressed(); + } } + } void mouseReleased(){ @@ -240,11 +245,13 @@ class W_timeSeries extends Widget { hardwareSettingsButton.setIsActive(false); } - for(int i = 0; i < channelBars.length; i++){ - channelBars[i].mouseReleased(); + if(hsc.isVisible){ + hsc.mouseReleased(); + } else { + for(int i = 0; i < channelBars.length; i++){ + channelBars[i].mouseReleased(); + } } - - } }; diff --git a/OpenBCI_GUI/W_accelerometer.pde b/OpenBCI_GUI/W_accelerometer.pde index 6950499..fc733d8 100644 --- a/OpenBCI_GUI/W_accelerometer.pde +++ b/OpenBCI_GUI/W_accelerometer.pde @@ -197,6 +197,14 @@ class W_accelerometer extends Widget { rect(AccelWindowX, AccelWindowY, AccelWindowWidth, AccelWindowHeight); line(AccelWindowX, AccelWindowY + AccelWindowHeight/2, AccelWindowX+AccelWindowWidth, AccelWindowY + AccelWindowHeight/2); //midline + fill(50); + textFont(p5, 12); + textAlign(CENTER,CENTER); + text("+4g", AccelWindowX+AccelWindowWidth + 12, AccelWindowY); + text("0g", AccelWindowX+AccelWindowWidth + 12, AccelWindowY + AccelWindowHeight/2); + text("-4g", AccelWindowX+AccelWindowWidth + 12, AccelWindowY + AccelWindowHeight); + + fill(graphBG); // pulse window background stroke(graphStroke); ellipse(PolarWindowX,PolarWindowY,PolarWindowWidth,PolarWindowHeight); diff --git a/OpenBCI_GUI/W_ganglionImpedance.pde b/OpenBCI_GUI/W_ganglionImpedance.pde index 80c8649..4f26c86 100644 --- a/OpenBCI_GUI/W_ganglionImpedance.pde +++ b/OpenBCI_GUI/W_ganglionImpedance.pde @@ -15,6 +15,9 @@ class W_ganglionImpedance extends Widget { //to see all core variables/methods of the Widget class, refer to Widget.pde //put your custom variables here... + Button startStopCheck; + int padding = 24; + W_ganglionImpedance(PApplet _parent){ super(_parent); //calls the parent CONSTRUCTOR method of Widget (DON'T REMOVE) @@ -25,6 +28,9 @@ class W_ganglionImpedance extends Widget { addDropdown("Dropdown2", "Drop 2", Arrays.asList("C", "D", "E"), 1); addDropdown("Dropdown3", "Drop 3", Arrays.asList("F", "G", "H", "I"), 3); + startStopCheck = new Button (x + padding, y + padding, 200, navHeight, "Start Impedance Check", 12); + startStopCheck.setFont(p4, 14); + } void update(){ @@ -39,11 +45,8 @@ class W_ganglionImpedance extends Widget { //put your code here... //remember to refer to x,y,w,h which are the positioning variables of the Widget class pushStyle(); - // textFont(h1,24); - // fill(bgColor); - // textAlign(CENTER,CENTER); - // text(widgetTitle, x + w/2, y + h/2); - // fill(0); + + startStopCheck.draw(); // //without dividing by 2 // for(int i = 0; i < ganglion.impedanceArray.length; i++){ @@ -58,15 +61,36 @@ class W_ganglionImpedance extends Widget { //divide by 2 ... we do this assuming that the D_G (driven ground) electrode is "comprable in impedance" to the electrode being used. fill(bgColor); - textFont(p5, 12); + textFont(p4, 14); for(int i = 0; i < ganglion.impedanceArray.length; i++){ String toPrint; + float adjustedImpedance = ganglion.impedanceArray[i]/2.0; if(i == 0){ - toPrint = "Reference Impedance = " + ganglion.impedanceArray[i]/2.0 + " k\u2126"; + toPrint = "Reference Impedance \u2248 " + adjustedImpedance + " k\u2126"; } else { - toPrint = "Channel[" + i + "] Impedance = " + ganglion.impedanceArray[i]/2.0 + " k\u2126"; + toPrint = "Channel[" + i + "] Impedance \u2248 " + adjustedImpedance + " k\u2126"; } - text(toPrint, x + 10, y + 60 + 20*(i)); + text(toPrint, x + padding + 40, y + padding*2 + 12 + startStopCheck.but_dy + padding*(i)); + + pushStyle(); + stroke(bgColor); + //change the fill color based on the signal quality... + if(adjustedImpedance <= 0){ //no data yet... + fill(255); + } else if(adjustedImpedance > 0 && adjustedImpedance <= 10){ //very good signal quality + fill(49, 113, 89); //dark green + } else if(adjustedImpedance > 10 && adjustedImpedance <= 50){ //good signal quality + fill(184, 220, 105); //yellow green + } else if(adjustedImpedance > 50 && adjustedImpedance <= 100){ //acceptable signal quality + fill(221, 178, 13); //yellow + } else if(adjustedImpedance > 100 && adjustedImpedance <= 150){ //questionable signal quality + fill(253, 94, 52); //orange + } else if(adjustedImpedance > 150){ //bad signal quality + fill(224, 56, 45); //red + } + + ellipse(x + padding + 10, y + padding*2 + 7 + startStopCheck.but_dy + padding*(i), padding/2, padding/2); + popStyle(); } // // no longer need to do this because the math was moved to the firmware... @@ -89,6 +113,7 @@ class W_ganglionImpedance extends Widget { super.screenResized(); //calls the parent screenResized() method of Widget (DON'T REMOVE) //put your code here... + startStopCheck.setPos(x + padding, y + padding); } @@ -96,6 +121,9 @@ class W_ganglionImpedance extends Widget { super.mousePressed(); //calls the parent mousePressed() method of Widget (DON'T REMOVE) //put your code here... + if(startStopCheck.isMouseHere()){ + startStopCheck.setIsActive(true); + } } @@ -103,6 +131,19 @@ class W_ganglionImpedance extends Widget { super.mouseReleased(); //calls the parent mouseReleased() method of Widget (DON'T REMOVE) //put your code here... + if(startStopCheck.isActive && startStopCheck.isMouseHere()){ + if(isGanglion && eegDataSource == DATASOURCE_GANGLION){ + println("Start/stop impedance check..."); + if(ganglion.isCheckingImpedance()){ + ganglion.impedanceStop(); + startStopCheck.but_txt = "Start Impedance Check"; + } else { + ganglion.impedanceStart(); + startStopCheck.but_txt = "Stop Impedance Check"; + } + } + } + startStopCheck.setIsActive(false); } diff --git a/OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5accordion/ControlP5accordion.pde b/OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5accordion/ControlP5accordion.pde deleted file mode 100644 index 81d395d..0000000 --- a/OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5accordion/ControlP5accordion.pde +++ /dev/null @@ -1,286 +0,0 @@ -/** - * ControlP5 Accordion - * arrange controller groups in an accordion like style. - * - * find a list of public methods available for the Accordion Controller - * at the bottom of this sketch. In the example below 3 groups with controllers - * are created and added to an accordion controller. Furthermore several key - * combinations are mapped to control individual settings of the accordion. - * An accordion comes in 2 modes, Accordion.SINGLE and Accordion.MULTI where the - * latter allows to open multiple groups of an accordion and the SINGLE mode only - * allows 1 group to be opened at a time. - * - * by Andreas Schlegel, 2012 - * www.sojamo.de/libraries/controlp5 - * - */ - -import controlP5.*; - -ControlP5 cp5; - -Accordion accordion; - -color c = color(0, 160, 100); - -void setup() { - size(400, 600); - noStroke(); - smooth(); - gui(); -} - -void gui() { - - cp5 = new ControlP5(this); - - // group number 1, contains 2 bangs - Group g1 = cp5.addGroup("myGroup1") - .setBackgroundColor(color(0, 64)) - .setBackgroundHeight(150) - ; - - cp5.addBang("bang") - .setPosition(10,20) - .setSize(100,100) - .moveTo(g1) - .plugTo(this,"shuffle"); - ; - - // group number 2, contains a radiobutton - Group g2 = cp5.addGroup("myGroup2") - .setBackgroundColor(color(0, 64)) - .setBackgroundHeight(150) - ; - - cp5.addRadioButton("radio") - .setPosition(10,20) - .setItemWidth(20) - .setItemHeight(20) - .addItem("black", 0) - .addItem("red", 1) - .addItem("green", 2) - .addItem("blue", 3) - .addItem("grey", 4) - .setColorLabel(color(255)) - .activate(2) - .moveTo(g2) - ; - - // group number 3, contains a bang and a slider - Group g3 = cp5.addGroup("myGroup3") - .setBackgroundColor(color(0, 64)) - .setBackgroundHeight(150) - ; - - cp5.addBang("shuffle") - .setPosition(10,20) - .setSize(40,50) - .moveTo(g3) - ; - - cp5.addSlider("hello") - .setPosition(60,20) - .setSize(100,20) - .setRange(100,500) - .setValue(100) - .moveTo(g3) - ; - - cp5.addSlider("world") - .setPosition(60,50) - .setSize(100,20) - .setRange(100,500) - .setValue(200) - .moveTo(g3) - ; - - // create a new accordion - // add g1, g2, and g3 to the accordion. - accordion = cp5.addAccordion("acc") - .setPosition(40,40) - .setWidth(200) - .addItem(g1) - .addItem(g2) - .addItem(g3) - ; - - cp5.mapKeyFor(new ControlKey() {public void keyEvent() {accordion.open(0,1,2);}}, 'o'); - cp5.mapKeyFor(new ControlKey() {public void keyEvent() {accordion.close(0,1,2);}}, 'c'); - cp5.mapKeyFor(new ControlKey() {public void keyEvent() {accordion.setWidth(300);}}, '1'); - cp5.mapKeyFor(new ControlKey() {public void keyEvent() {accordion.setPosition(0,0);accordion.setItemHeight(190);}}, '2'); - cp5.mapKeyFor(new ControlKey() {public void keyEvent() {accordion.setCollapseMode(ControlP5.ALL);}}, '3'); - cp5.mapKeyFor(new ControlKey() {public void keyEvent() {accordion.setCollapseMode(ControlP5.SINGLE);}}, '4'); - cp5.mapKeyFor(new ControlKey() {public void keyEvent() {cp5.remove("myGroup1");}}, '0'); - - accordion.open(0,1,2); - - // use Accordion.MULTI to allow multiple group - // to be open at a time. - accordion.setCollapseMode(Accordion.MULTI); - - // when in SINGLE mode, only 1 accordion - // group can be open at a time. - // accordion.setCollapseMode(Accordion.SINGLE); -} - - -void radio(int theC) { - switch(theC) { - case(0):c=color(0,200);break; - case(1):c=color(255,0,0,200);break; - case(2):c=color(0, 200, 140,200);break; - case(3):c=color(0, 128, 255,200);break; - case(4):c=color(50,128);break; - } -} - - -void shuffle() { - c = color(random(255),random(255),random(255),random(128,255)); -} - - -void draw() { - background(220); - - fill(c); - - float s1 = cp5.getController("hello").getValue(); - ellipse(200,400,s1,s1); - - float s2 = cp5.getController("world").getValue(); - ellipse(300,100,s2,s2); -} - - - - - -/* -a list of all methods available for the Accordion Controller -use ControlP5.printPublicMethodsFor(Accordion.class); -to print the following list into the console. - -You can find further details about class Accordion in the javadoc. - -Format: -ClassName : returnType methodName(parameter type) - - -controlP5.Accordion : Accordion addItem(ControlGroup) -controlP5.Accordion : Accordion close() -controlP5.Accordion : Accordion open() -controlP5.Accordion : Accordion remove(ControllerInterface) -controlP5.Accordion : Accordion removeItem(ControlGroup) -controlP5.Accordion : Accordion setCollapseMode(int) -controlP5.Accordion : Accordion setItemHeight(int) -controlP5.Accordion : Accordion setMinItemHeight(int) -controlP5.Accordion : Accordion setWidth(int) -controlP5.Accordion : Accordion updateItems() -controlP5.Accordion : int getItemHeight() -controlP5.Accordion : int getMinItemHeight() -controlP5.ControlGroup : Accordion activateEvent(boolean) -controlP5.ControlGroup : Accordion addListener(ControlListener) -controlP5.ControlGroup : Accordion removeListener(ControlListener) -controlP5.ControlGroup : Accordion setBackgroundColor(int) -controlP5.ControlGroup : Accordion setBackgroundHeight(int) -controlP5.ControlGroup : Accordion setBarHeight(int) -controlP5.ControlGroup : Accordion setSize(int, int) -controlP5.ControlGroup : Accordion updateInternalEvents(PApplet) -controlP5.ControlGroup : String getInfo() -controlP5.ControlGroup : String toString() -controlP5.ControlGroup : int getBackgroundHeight() -controlP5.ControlGroup : int getBarHeight() -controlP5.ControlGroup : int listenerSize() -controlP5.ControllerGroup : Accordion add(ControllerInterface) -controlP5.ControllerGroup : Accordion addListener(ControlListener) -controlP5.ControllerGroup : Accordion bringToFront() -controlP5.ControllerGroup : Accordion bringToFront(ControllerInterface) -controlP5.ControllerGroup : Accordion close() -controlP5.ControllerGroup : Accordion disableCollapse() -controlP5.ControllerGroup : Accordion enableCollapse() -controlP5.ControllerGroup : Accordion hide() -controlP5.ControllerGroup : Accordion hideArrow() -controlP5.ControllerGroup : Accordion hideBar() -controlP5.ControllerGroup : Accordion moveTo(ControlWindow) -controlP5.ControllerGroup : Accordion moveTo(PApplet) -controlP5.ControllerGroup : Accordion open() -controlP5.ControllerGroup : Accordion registerProperty(String) -controlP5.ControllerGroup : Accordion registerProperty(String, String) -controlP5.ControllerGroup : Accordion remove(CDrawable) -controlP5.ControllerGroup : Accordion remove(ControllerInterface) -controlP5.ControllerGroup : Accordion removeCanvas(Canvas) -controlP5.ControllerGroup : Accordion removeListener(ControlListener) -controlP5.ControllerGroup : Accordion removeProperty(String) -controlP5.ControllerGroup : Accordion removeProperty(String, String) -controlP5.ControllerGroup : Accordion setAddress(String) -controlP5.ControllerGroup : Accordion setArrayValue(float[]) -controlP5.ControllerGroup : Accordion setArrayValue(int, float) -controlP5.ControllerGroup : Accordion setCaptionLabel(String) -controlP5.ControllerGroup : Accordion setColor(CColor) -controlP5.ControllerGroup : Accordion setColorActive(int) -controlP5.ControllerGroup : Accordion setColorBackground(int) -controlP5.ControllerGroup : Accordion setColorForeground(int) -controlP5.ControllerGroup : Accordion setColorLabel(int) -controlP5.ControllerGroup : Accordion setColorValue(int) -controlP5.ControllerGroup : Accordion setHeight(int) -controlP5.ControllerGroup : Accordion setId(int) -controlP5.ControllerGroup : Accordion setLabel(String) -controlP5.ControllerGroup : Accordion setMouseOver(boolean) -controlP5.ControllerGroup : Accordion setMoveable(boolean) -controlP5.ControllerGroup : Accordion setOpen(boolean) -controlP5.ControllerGroup : Accordion setPosition(float, float) -controlP5.ControllerGroup : Accordion setPosition(float[]) -controlP5.ControllerGroup : Accordion setSize(int, int) -controlP5.ControllerGroup : Accordion setStringValue(String) -controlP5.ControllerGroup : Accordion setTitle(String) -controlP5.ControllerGroup : Accordion setUpdate(boolean) -controlP5.ControllerGroup : Accordion setValue(float) -controlP5.ControllerGroup : Accordion setVisible(boolean) -controlP5.ControllerGroup : Accordion setWidth(int) -controlP5.ControllerGroup : Accordion show() -controlP5.ControllerGroup : Accordion showArrow() -controlP5.ControllerGroup : Accordion showBar() -controlP5.ControllerGroup : Accordion update() -controlP5.ControllerGroup : Accordion updateAbsolutePosition() -controlP5.ControllerGroup : CColor getColor() -controlP5.ControllerGroup : Canvas addCanvas(Canvas) -controlP5.ControllerGroup : ControlWindow getWindow() -controlP5.ControllerGroup : Controller getController(String) -controlP5.ControllerGroup : ControllerProperty getProperty(String) -controlP5.ControllerGroup : ControllerProperty getProperty(String, String) -controlP5.ControllerGroup : Label getCaptionLabel() -controlP5.ControllerGroup : Label getValueLabel() -controlP5.ControllerGroup : String getAddress() -controlP5.ControllerGroup : String getInfo() -controlP5.ControllerGroup : String getName() -controlP5.ControllerGroup : String getStringValue() -controlP5.ControllerGroup : String toString() -controlP5.ControllerGroup : Tab getTab() -controlP5.ControllerGroup : boolean isBarVisible() -controlP5.ControllerGroup : boolean isCollapse() -controlP5.ControllerGroup : boolean isMouseOver() -controlP5.ControllerGroup : boolean isMoveable() -controlP5.ControllerGroup : boolean isOpen() -controlP5.ControllerGroup : boolean isUpdate() -controlP5.ControllerGroup : boolean isVisible() -controlP5.ControllerGroup : boolean setMousePressed(boolean) -controlP5.ControllerGroup : float getArrayValue(int) -controlP5.ControllerGroup : float getValue() -controlP5.ControllerGroup : float[] getArrayValue() -controlP5.ControllerGroup : float[] getPosition() -controlP5.ControllerGroup : int getHeight() -controlP5.ControllerGroup : int getId() -controlP5.ControllerGroup : int getWidth() -controlP5.ControllerGroup : int listenerSize() -controlP5.ControllerGroup : void controlEvent(ControlEvent) -controlP5.ControllerGroup : void remove() -java.lang.Object : String toString() -java.lang.Object : boolean equals(Object) - -created: 2015/03/24 12:25:32 - -*/ - - diff --git a/OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5background/ControlP5background.pde b/OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5background/ControlP5background.pde deleted file mode 100644 index 11a974c..0000000 --- a/OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5background/ControlP5background.pde +++ /dev/null @@ -1,188 +0,0 @@ -/** -* ControlP5 Background -* -* -* find a list of public methods available for the Group Controller -* at the bottom of this sketch. -* -* by Andreas Schlegel, 2014 -* www.sojamo.de/libraries/controlp5 -* -*/ - -import controlP5.*; - -ControlP5 cp5; -int v1; -boolean lines = true; - -void setup() { - size(800, 400); - noStroke(); - cp5 = new ControlP5(this); - - cp5.begin(cp5.addBackground("abc")); - - cp5.addSlider("v1") - .setPosition(10, 20) - .setSize(200, 20) - .setRange(100, 300) - .setValue(250) - ; - - cp5.addToggle("lines") - .setPosition(10,50) - .setSize(80,20) - .setMode(Toggle.SWITCH) - ; - - cp5.end(); - -} - -void draw() { - background(200, 200, 200); - - pushMatrix(); - - pushMatrix(); - fill(255, 255, 0); - rect(v1, 100, 60, 200); - fill(0, 255, 110); - rect(40, v1, 320, 40); - translate(200, 200); - rotate(map(v1, 100, 300, -PI, PI)); - fill(255, 0, 128); - rect(0, 0, 100, 100); - popMatrix(); - - if(lines) { - translate(600, 100); - for (int i=0; i<20; i++) { - pushMatrix(); - fill(255); - translate(0, i*10); - rotate(map(v1+i, 0, 300, -PI, PI)); - rect(-150, 0, 300, 4); - popMatrix(); - } - } - - popMatrix(); -} - -/* -a list of all methods available for the Background Controller -use ControlP5.printPublicMethodsFor(Background.class); -to print the following list into the console. - -You can find further details about class Background in the javadoc. - -Format: -ClassName : returnType methodName(parameter type) - - -controlP5.ControlGroup : Background activateEvent(boolean) -controlP5.ControlGroup : Background addListener(ControlListener) -controlP5.ControlGroup : Background removeListener(ControlListener) -controlP5.ControlGroup : Background setBackgroundColor(int) -controlP5.ControlGroup : Background setBackgroundHeight(int) -controlP5.ControlGroup : Background setBarHeight(int) -controlP5.ControlGroup : Background setSize(int, int) -controlP5.ControlGroup : Background updateInternalEvents(PApplet) -controlP5.ControlGroup : String getInfo() -controlP5.ControlGroup : String toString() -controlP5.ControlGroup : int getBackgroundHeight() -controlP5.ControlGroup : int getBarHeight() -controlP5.ControlGroup : int listenerSize() -controlP5.ControllerGroup : Background add(ControllerInterface) -controlP5.ControllerGroup : Background addListener(ControlListener) -controlP5.ControllerGroup : Background bringToFront() -controlP5.ControllerGroup : Background bringToFront(ControllerInterface) -controlP5.ControllerGroup : Background close() -controlP5.ControllerGroup : Background disableCollapse() -controlP5.ControllerGroup : Background enableCollapse() -controlP5.ControllerGroup : Background hide() -controlP5.ControllerGroup : Background hideArrow() -controlP5.ControllerGroup : Background hideBar() -controlP5.ControllerGroup : Background moveTo(ControlWindow) -controlP5.ControllerGroup : Background moveTo(PApplet) -controlP5.ControllerGroup : Background open() -controlP5.ControllerGroup : Background registerProperty(String) -controlP5.ControllerGroup : Background registerProperty(String, String) -controlP5.ControllerGroup : Background remove(CDrawable) -controlP5.ControllerGroup : Background remove(ControllerInterface) -controlP5.ControllerGroup : Background removeCanvas(Canvas) -controlP5.ControllerGroup : Background removeListener(ControlListener) -controlP5.ControllerGroup : Background removeProperty(String) -controlP5.ControllerGroup : Background removeProperty(String, String) -controlP5.ControllerGroup : Background setAddress(String) -controlP5.ControllerGroup : Background setArrayValue(float[]) -controlP5.ControllerGroup : Background setArrayValue(int, float) -controlP5.ControllerGroup : Background setCaptionLabel(String) -controlP5.ControllerGroup : Background setColor(CColor) -controlP5.ControllerGroup : Background setColorActive(int) -controlP5.ControllerGroup : Background setColorBackground(int) -controlP5.ControllerGroup : Background setColorForeground(int) -controlP5.ControllerGroup : Background setColorLabel(int) -controlP5.ControllerGroup : Background setColorValue(int) -controlP5.ControllerGroup : Background setHeight(int) -controlP5.ControllerGroup : Background setId(int) -controlP5.ControllerGroup : Background setLabel(String) -controlP5.ControllerGroup : Background setMouseOver(boolean) -controlP5.ControllerGroup : Background setMoveable(boolean) -controlP5.ControllerGroup : Background setOpen(boolean) -controlP5.ControllerGroup : Background setPosition(float, float) -controlP5.ControllerGroup : Background setPosition(float[]) -controlP5.ControllerGroup : Background setSize(int, int) -controlP5.ControllerGroup : Background setStringValue(String) -controlP5.ControllerGroup : Background setTitle(String) -controlP5.ControllerGroup : Background setUpdate(boolean) -controlP5.ControllerGroup : Background setValue(float) -controlP5.ControllerGroup : Background setVisible(boolean) -controlP5.ControllerGroup : Background setWidth(int) -controlP5.ControllerGroup : Background show() -controlP5.ControllerGroup : Background showArrow() -controlP5.ControllerGroup : Background showBar() -controlP5.ControllerGroup : Background update() -controlP5.ControllerGroup : Background updateAbsolutePosition() -controlP5.ControllerGroup : CColor getColor() -controlP5.ControllerGroup : Canvas addCanvas(Canvas) -controlP5.ControllerGroup : ControlWindow getWindow() -controlP5.ControllerGroup : Controller getController(String) -controlP5.ControllerGroup : ControllerProperty getProperty(String) -controlP5.ControllerGroup : ControllerProperty getProperty(String, String) -controlP5.ControllerGroup : Label getCaptionLabel() -controlP5.ControllerGroup : Label getValueLabel() -controlP5.ControllerGroup : String getAddress() -controlP5.ControllerGroup : String getInfo() -controlP5.ControllerGroup : String getName() -controlP5.ControllerGroup : String getStringValue() -controlP5.ControllerGroup : String toString() -controlP5.ControllerGroup : Tab getTab() -controlP5.ControllerGroup : boolean isBarVisible() -controlP5.ControllerGroup : boolean isCollapse() -controlP5.ControllerGroup : boolean isMouseOver() -controlP5.ControllerGroup : boolean isMoveable() -controlP5.ControllerGroup : boolean isOpen() -controlP5.ControllerGroup : boolean isUpdate() -controlP5.ControllerGroup : boolean isVisible() -controlP5.ControllerGroup : boolean setMousePressed(boolean) -controlP5.ControllerGroup : float getArrayValue(int) -controlP5.ControllerGroup : float getValue() -controlP5.ControllerGroup : float[] getArrayValue() -controlP5.ControllerGroup : float[] getPosition() -controlP5.ControllerGroup : int getHeight() -controlP5.ControllerGroup : int getId() -controlP5.ControllerGroup : int getWidth() -controlP5.ControllerGroup : int listenerSize() -controlP5.ControllerGroup : void controlEvent(ControlEvent) -controlP5.ControllerGroup : void remove() -java.lang.Object : String toString() -java.lang.Object : boolean equals(Object) - -created: 2015/03/24 12:25:35 - -*/ - - diff --git a/OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5background/sketch.properties b/OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5background/sketch.properties deleted file mode 100644 index 8630fa2..0000000 --- a/OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5background/sketch.properties +++ /dev/null @@ -1,2 +0,0 @@ -mode.id=processing.mode.java.JavaMode -mode=Java diff --git a/OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5bang/ControlP5bang.pde b/OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5bang/ControlP5bang.pde deleted file mode 100644 index c84e786..0000000 --- a/OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5bang/ControlP5bang.pde +++ /dev/null @@ -1,231 +0,0 @@ -/** - * ControlP5 Bang - * A bang triggers an event that can be received by a function named after the bang. - * By default a bang is triggered when pressed, this can be changed to 'release' - * using theBang.setTriggerEvent(Bang.RELEASE). - * - * find a list of public methods available for the Bang Controller - * at the bottom of this sketch. - * - * by Andreas Schlegel, 2012 - * www.sojamo.de/libraries/controlp5 - * - */ - -import controlP5.*; - -ControlP5 cp5; - -int myColorBackground = color(0, 0, 0); - -color[] col = new color[] { - color(100), color(150), color(200), color(250) -}; - - -void setup() { - size(400, 600); - noStroke(); - cp5 = new ControlP5(this); - for (int i=0;ic-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxKsVXI%s|1+P|wiV z#N6CmN5ROz&_Lh7NZ-&%*U;R`*vQJjKmiJrfVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8EkR}&8R-I5=oVMzl_XZ^<`pZ$OmImpPAEg{v+u2}(t{7puX=A(aKG z`a!A1`K3k4z=%sz23b{L-^Aq1JP;qO z-q+X4Gq1QLF)umQ)5TT^Xo6m5W{Q=eo28qhlaaHDqlKxVp{t>#k+YkVi=&gXqqDh_ zv#}9OuSMv>2~2MaLaz%>y`ZF!TL84#CABECEH%ZgC_h&L>}9J=+-`BiX&zK> z3U0SJ;nb@Sbc{YIVv!;mCIn19ASOK70y*%6pPC0u?M1+3{WGCLjDdkM%G1R$q~g|_ z8T-8s2Z*$v?|r#8tz=pQ|AT;93Gx3S=IP<0f-+G$tZN^r{9>|e*1zDHv2|l5(?Qou z)y_rhx3e8Ny7W8Cxq@>Od^qFn>YkS?GR?DVyvO2DB+%{t$$hbW zchNPuv?s5wSXO^27IU(FJV&zOuxoMH1T{~hD9)S0fE zdcx)3^p`(U%{)vM*W7V<9~F5R= zjGFpLD^Ojzb+`Gxi08>){{${rzxjdv*`A{j5M=*Z_W(oFZtj=d#Wz Gp$P!=M83NK diff --git a/OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5button/data/button_b.png b/OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5button/data/button_b.png deleted file mode 100644 index 8b52af8647a2d9728d8f8193a17aaa106f027ce8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1284 zcmeAS@N?(olHy`uVBq!ia0vp^Mj*_=1SBWM%0B~Ak|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+n3Xa^B1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxKsVXI%s|1+P|wiV z#N6CmN5ROz&_Lh7NZ-&%*U;R`*vQJjKmiJrfVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8EkR}&8R-I5=oVMzl_XZ^<`pZ$OmImpPAEg{v+u2}(t{7puX=A(aKG z`a!A1`K3k4z=%sz23b{L-^Aq1JP;qO z-q+X4Gq1QLF)umQ)5TT^Xo6m5W{Q=eo28qhlaYmqqlKxVp{t>#k+YkVi=&gXqqDh_ zv#}9OuSMv>2~2MaLa!xGy`ZF!TL84#CABECEH%ZgC_h&L>}9J=+-@<$X&zK> z3U0TU6-QX z_x*gi%bz1FDLqlz<=n6T|LrI6n0|TrW&OgW8G*Vd+a-T79q#G%N_0Crhl6Lco>r^m zRBn!}R>`lYbv40m_sYWR`+p{DvrXJw_y4c$;}ef|s!#j- z_j|s8W%i>+%i7=R6PHg{JNN7B^YH8UUViq|QNPXd%KG*5`SF|k^k$Y-Fsil%+>eZ{ zUUtrM-yA3B6))Gk-(T-zYf^u&Q}nClW$E3}U4Lw%>)h&PLFV@jKHu^TSoHtt^6S}pISXxigDtm| p-M2BZVl#ZT1`(=a=a@JQ819(V{V)1)HXT$hdAjc-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxKsVXI%s|1+P|wiV z#N6CmN5ROz&_Lh7NZ-&%*U;R`*vQJjKmiJrfVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8EkR}&8R-I5=oVMzl_XZ^<`pZ$OmImpPAEg{v+u2}(t{7puX=A(aKG z`a!A1`K3k4z=%sz23b{L-^Aq1JP;qO z-q+X4Gq1QLF)umQ)5TT^Xo6m5W{Q=Cshg{rn}w-~qlKBFp{t>#k+YkVi=&gXqqDh_ zv#}9OuSMv>2~2MaLa!N4y`ZF!TL84#CABECEH%ZgC_h&L>}9J=+-@<(X&zK> z3U0TU;MA)Rbc{YIVv!;mCIn19ASOK70y*%6pPC0u?M1+3U0?q7JOcw`kf)1dNX4x; zH_rMUau8tuaCcdWbJYd*4=-*@EN+PNso}KEcyzRdxvR$Hhyz!YLxuR`!xdXLvzldV zw^e*(*ggA9;HJU;h`HF1{z`*zr~KTHdlf zmJ#<}o>@>MQYN=kKrC|KOXe+lM%JsJh{s>w{yN%4SO47V$}}C0f+b(W)AWr`Gam{| z+xK^6n~(O1YLhE9IH7dFqXHzUlp*X?f*~R?KbVFAdXL7=6_>?R)u;eF|Hy zMYb({YQAjCy$O#c)vgtBeq8NyZ$?l@#D&++UwSh0bj32YPi?C&=ZmatK7BEQ&uvGU zl8vj;Or@x+QV!qRZ>CH$x0ad~R5atwoyU0*uYa1%UHo&}cbjcN1|3gR_8qP%I{N5$ zwNYJT+Vyuk4O1PLZ?F2lp>B@l-%K@_hnMeTm0+;vuYX_NJMRdn#PM|Xb6Mw<&;$Sp C#=da? diff --git a/OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5buttonBar/ControlP5buttonBar.pde b/OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5buttonBar/ControlP5buttonBar.pde deleted file mode 100644 index 8b9f07a..0000000 --- a/OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5buttonBar/ControlP5buttonBar.pde +++ /dev/null @@ -1,207 +0,0 @@ -/** - * ControlP5 ButtonBar - * - * work-in-progress - * - * by Andreas Schlegel, 2012 - * www.sojamo.de/libraries/controlp5 - * - */ - - -import controlP5.*; - -ControlP5 cp5; - - -void setup() { - size(400, 400); - cp5 = new ControlP5(this); - ButtonBar b = cp5.addButtonBar("bar") - .setPosition(0, 0) - .setSize(400, 20) - .addItems(split("a b c d e f g h i j"," ")) - ; - println(b.getItem("a")); - b.changeItem("a","text","first"); - b.changeItem("b","text","second"); - b.changeItem("c","text","third"); - b.onMove(new CallbackListener(){ - public void controlEvent(CallbackEvent ev) { - ButtonBar bar = (ButtonBar)ev.getController(); - println("hello ",bar.hover()); - } - }); -} - -void bar(int n) { - println("bar clicked, item-value:", n); -} - -void draw() { - background(220); -} - -/* -a list of all methods available for the ButtonBar Controller -use ControlP5.printPublicMethodsFor(ButtonBar.class); -to print the following list into the console. - -You can find further details about class ButtonBar in the javadoc. - -Format: -ClassName : returnType methodName(parameter type) - - -controlP5.ButtonBar : ButtonBar addItem(String, Object) -controlP5.ButtonBar : ButtonBar addItems(List) -controlP5.ButtonBar : ButtonBar addItems(Map) -controlP5.ButtonBar : ButtonBar addItems(String[]) -controlP5.ButtonBar : ButtonBar clear() -controlP5.ButtonBar : ButtonBar removeItem(String) -controlP5.ButtonBar : ButtonBar removeItems(List) -controlP5.ButtonBar : ButtonBar setItems(List) -controlP5.ButtonBar : ButtonBar setItems(Map) -controlP5.ButtonBar : ButtonBar setItems(String[]) -controlP5.ButtonBar : List getItems() -controlP5.ButtonBar : Map getItem(String) -controlP5.ButtonBar : int hover() -controlP5.ButtonBar : void changeItem(String, String, Object) -controlP5.ButtonBar : void onClick() -controlP5.Controller : ButtonBar addCallback(CallbackListener) -controlP5.Controller : ButtonBar addListener(ControlListener) -controlP5.Controller : ButtonBar addListenerFor(int, CallbackListener) -controlP5.Controller : ButtonBar align(int, int, int, int) -controlP5.Controller : ButtonBar bringToFront() -controlP5.Controller : ButtonBar bringToFront(ControllerInterface) -controlP5.Controller : ButtonBar hide() -controlP5.Controller : ButtonBar linebreak() -controlP5.Controller : ButtonBar listen(boolean) -controlP5.Controller : ButtonBar lock() -controlP5.Controller : ButtonBar onChange(CallbackListener) -controlP5.Controller : ButtonBar onClick(CallbackListener) -controlP5.Controller : ButtonBar onDoublePress(CallbackListener) -controlP5.Controller : ButtonBar onDrag(CallbackListener) -controlP5.Controller : ButtonBar onDraw(ControllerView) -controlP5.Controller : ButtonBar onEndDrag(CallbackListener) -controlP5.Controller : ButtonBar onEnter(CallbackListener) -controlP5.Controller : ButtonBar onLeave(CallbackListener) -controlP5.Controller : ButtonBar onMove(CallbackListener) -controlP5.Controller : ButtonBar onPress(CallbackListener) -controlP5.Controller : ButtonBar onRelease(CallbackListener) -controlP5.Controller : ButtonBar onReleaseOutside(CallbackListener) -controlP5.Controller : ButtonBar onStartDrag(CallbackListener) -controlP5.Controller : ButtonBar onWheel(CallbackListener) -controlP5.Controller : ButtonBar plugTo(Object) -controlP5.Controller : ButtonBar plugTo(Object, String) -controlP5.Controller : ButtonBar plugTo(Object[]) -controlP5.Controller : ButtonBar plugTo(Object[], String) -controlP5.Controller : ButtonBar registerProperty(String) -controlP5.Controller : ButtonBar registerProperty(String, String) -controlP5.Controller : ButtonBar registerTooltip(String) -controlP5.Controller : ButtonBar removeBehavior() -controlP5.Controller : ButtonBar removeCallback() -controlP5.Controller : ButtonBar removeCallback(CallbackListener) -controlP5.Controller : ButtonBar removeListener(ControlListener) -controlP5.Controller : ButtonBar removeListenerFor(int, CallbackListener) -controlP5.Controller : ButtonBar removeListenersFor(int) -controlP5.Controller : ButtonBar removeProperty(String) -controlP5.Controller : ButtonBar removeProperty(String, String) -controlP5.Controller : ButtonBar setArrayValue(float[]) -controlP5.Controller : ButtonBar setArrayValue(int, float) -controlP5.Controller : ButtonBar setBehavior(ControlBehavior) -controlP5.Controller : ButtonBar setBroadcast(boolean) -controlP5.Controller : ButtonBar setCaptionLabel(String) -controlP5.Controller : ButtonBar setColor(CColor) -controlP5.Controller : ButtonBar setColorActive(int) -controlP5.Controller : ButtonBar setColorBackground(int) -controlP5.Controller : ButtonBar setColorCaptionLabel(int) -controlP5.Controller : ButtonBar setColorForeground(int) -controlP5.Controller : ButtonBar setColorLabel(int) -controlP5.Controller : ButtonBar setColorValue(int) -controlP5.Controller : ButtonBar setColorValueLabel(int) -controlP5.Controller : ButtonBar setDecimalPrecision(int) -controlP5.Controller : ButtonBar setDefaultValue(float) -controlP5.Controller : ButtonBar setHeight(int) -controlP5.Controller : ButtonBar setId(int) -controlP5.Controller : ButtonBar setImage(PImage) -controlP5.Controller : ButtonBar setImage(PImage, int) -controlP5.Controller : ButtonBar setImages(PImage, PImage, PImage) -controlP5.Controller : ButtonBar setImages(PImage, PImage, PImage, PImage) -controlP5.Controller : ButtonBar setLabel(String) -controlP5.Controller : ButtonBar setLabelVisible(boolean) -controlP5.Controller : ButtonBar setLock(boolean) -controlP5.Controller : ButtonBar setMax(float) -controlP5.Controller : ButtonBar setMin(float) -controlP5.Controller : ButtonBar setMouseOver(boolean) -controlP5.Controller : ButtonBar setMoveable(boolean) -controlP5.Controller : ButtonBar setPosition(float, float) -controlP5.Controller : ButtonBar setPosition(float[]) -controlP5.Controller : ButtonBar setSize(PImage) -controlP5.Controller : ButtonBar setSize(int, int) -controlP5.Controller : ButtonBar setStringValue(String) -controlP5.Controller : ButtonBar setUpdate(boolean) -controlP5.Controller : ButtonBar setValue(float) -controlP5.Controller : ButtonBar setValueLabel(String) -controlP5.Controller : ButtonBar setValueSelf(float) -controlP5.Controller : ButtonBar setView(ControllerView) -controlP5.Controller : ButtonBar setVisible(boolean) -controlP5.Controller : ButtonBar setWidth(int) -controlP5.Controller : ButtonBar show() -controlP5.Controller : ButtonBar unlock() -controlP5.Controller : ButtonBar unplugFrom(Object) -controlP5.Controller : ButtonBar unplugFrom(Object[]) -controlP5.Controller : ButtonBar unregisterTooltip() -controlP5.Controller : ButtonBar update() -controlP5.Controller : ButtonBar updateSize() -controlP5.Controller : CColor getColor() -controlP5.Controller : ControlBehavior getBehavior() -controlP5.Controller : ControlWindow getControlWindow() -controlP5.Controller : ControlWindow getWindow() -controlP5.Controller : ControllerProperty getProperty(String) -controlP5.Controller : ControllerProperty getProperty(String, String) -controlP5.Controller : ControllerView getView() -controlP5.Controller : Label getCaptionLabel() -controlP5.Controller : Label getValueLabel() -controlP5.Controller : List getControllerPlugList() -controlP5.Controller : Pointer getPointer() -controlP5.Controller : String getAddress() -controlP5.Controller : String getInfo() -controlP5.Controller : String getName() -controlP5.Controller : String getStringValue() -controlP5.Controller : String toString() -controlP5.Controller : Tab getTab() -controlP5.Controller : boolean isActive() -controlP5.Controller : boolean isBroadcast() -controlP5.Controller : boolean isInside() -controlP5.Controller : boolean isLabelVisible() -controlP5.Controller : boolean isListening() -controlP5.Controller : boolean isLock() -controlP5.Controller : boolean isMouseOver() -controlP5.Controller : boolean isMousePressed() -controlP5.Controller : boolean isMoveable() -controlP5.Controller : boolean isUpdate() -controlP5.Controller : boolean isVisible() -controlP5.Controller : float getArrayValue(int) -controlP5.Controller : float getDefaultValue() -controlP5.Controller : float getMax() -controlP5.Controller : float getMin() -controlP5.Controller : float getValue() -controlP5.Controller : float[] getAbsolutePosition() -controlP5.Controller : float[] getArrayValue() -controlP5.Controller : float[] getPosition() -controlP5.Controller : int getDecimalPrecision() -controlP5.Controller : int getHeight() -controlP5.Controller : int getId() -controlP5.Controller : int getWidth() -controlP5.Controller : int listenerSize() -controlP5.Controller : void remove() -controlP5.Controller : void setView(ControllerView, int) -java.lang.Object : String toString() -java.lang.Object : boolean equals(Object) - -created: 2015/03/24 12:20:51 - -*/ - - diff --git a/OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5canvas/ControlP5canvas.pde b/OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5canvas/ControlP5canvas.pde deleted file mode 100644 index 7bfa71b..0000000 --- a/OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5canvas/ControlP5canvas.pde +++ /dev/null @@ -1,89 +0,0 @@ -/** - * ControlP5 Canvas - * The ControlWindowCanvas allow you to add custom graphics to - * the default controlP5 renderer or a controlWindow rednerer. - * - * find a list of public methods available for the Canvas Controller - * at the bottom of this sketch's source code - * - * by Andreas Schlegel, 2011 - * www.sojamo.de/libraries/controlp5 - * - */ - - -import controlP5.*; - -ControlP5 cp5; - -ControlWindow controlWindow; - -Canvas cc; - -// MyCanvas, your Canvas render class -class MyCanvas extends Canvas { - - int y; - int mx = 0; - int my = 0; - public void setup(PGraphics pg) { - y = 200; - } - - public void update(PApplet p) { - mx = p.mouseX; - my = p.mouseY; - } - - public void draw(PGraphics pg) { - // renders a square with randomly changing colors - // make changes here. - pg.fill(100); - pg.rect(mx-20, y-20, 240, 30); - pg.fill(255); - pg.text("This text is drawn by MyCanvas", mx,y); - } -} - - -void setup() { - size(400, 400); - frameRate(30); - cp5 = new ControlP5(this); - - // create a control window canvas and add it to - // the previously created control window. - cc = new MyCanvas(); - cc.pre(); // use cc.post(); to draw on top of existing controllers. - cp5.addCanvas(cc); // add the canvas to cp5 -} - -void draw() { - background(0); - fill(60); - rect(100, 100, 200, 200); -} - - -/* -a list of all methods available for the Canvas Controller -use ControlP5.printPublicMethodsFor(Canvas.class); -to print the following list into the console. - -You can find further details about class Canvas in the javadoc. - -Format: -ClassName : returnType methodName(parameter type) - - -controlP5.Canvas : void moveTo(ControlWindow) -controlP5.Canvas : void setup(PGraphics) -controlP5.Canvas : void update(PApplet) -java.lang.Object : String toString() -java.lang.Object : boolean equals(Object) - -created: 2015/03/24 12:20:53 - -*/ - - diff --git a/OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5chart/ControlP5chart.pde b/OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5chart/ControlP5chart.pde deleted file mode 100644 index 7d97672..0000000 --- a/OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5chart/ControlP5chart.pde +++ /dev/null @@ -1,243 +0,0 @@ -/** -* ControlP5 Chart -* -* find a list of public methods available for the Chart Controller -* at the bottom of this sketch. -* -* by Andreas Schlegel, 2014 -* www.sojamo.de/libraries/controlp5 -* -*/ - - -import controlP5.*; - -ControlP5 cp5; - -Chart myChart; - -void setup() { - size(800, 400); - cp5 = new ControlP5(this); - myChart = cp5.addChart("dataflow") - .setPosition(50, 50) - .setSize(200, 100) - .setRange(-20, 20) - .setView(Chart.LINE) // use Chart.LINE, Chart.PIE, Chart.AREA, Chart.BAR_CENTERED - .setStrokeWeight(1.5) - .setColorCaptionLabel(color(40)) - ; - - myChart.addDataSet("incoming"); - myChart.setData("incoming", new float[100]); - - -} - - -void draw() { - background(200); - // unshift: add data from left to right (first in) - //myChart.unshift("incoming", (sin(frameCount*0.1)*20)); - - // push: add data from right to left (last in) - myChart.push("incoming", (sin(frameCount*0.1)*10)); -} - - - - - - - -/* -a list of all methods available for the Chart Controller -use ControlP5.printPublicMethodsFor(Chart.class); -to print the following list into the console. - -You can find further details about class Chart in the javadoc. - -Format: -ClassName : returnType methodName(parameter type) - - -controlP5.Chart : Chart addData(ChartData) -controlP5.Chart : Chart addData(ChartDataSet, float) -controlP5.Chart : Chart addData(String, ChartData) -controlP5.Chart : Chart addData(String, float) -controlP5.Chart : Chart addData(float) -controlP5.Chart : Chart addDataSet(String) -controlP5.Chart : Chart addFirst(String, float) -controlP5.Chart : Chart addFirst(float) -controlP5.Chart : Chart addLast(String, float) -controlP5.Chart : Chart addLast(float) -controlP5.Chart : Chart push(String, float) -controlP5.Chart : Chart push(float) -controlP5.Chart : Chart removeData(ChartData) -controlP5.Chart : Chart removeData(String, ChartData) -controlP5.Chart : Chart removeData(String, int) -controlP5.Chart : Chart removeData(int) -controlP5.Chart : Chart removeDataSet(String) -controlP5.Chart : Chart removeFirst() -controlP5.Chart : Chart removeFirst(String) -controlP5.Chart : Chart removeLast() -controlP5.Chart : Chart removeLast(String) -controlP5.Chart : Chart setData(String, int, ChartData) -controlP5.Chart : Chart setData(int, ChartData) -controlP5.Chart : Chart setDataSet(ChartDataSet) -controlP5.Chart : Chart setDataSet(String, ChartDataSet) -controlP5.Chart : Chart setRange(float, float) -controlP5.Chart : Chart setResolution(int) -controlP5.Chart : Chart setStrokeWeight(float) -controlP5.Chart : Chart setValue(float) -controlP5.Chart : Chart setView(int) -controlP5.Chart : Chart unshift(String, float) -controlP5.Chart : Chart unshift(float) -controlP5.Chart : ChartData getData(String, int) -controlP5.Chart : ChartDataSet getDataSet(String) -controlP5.Chart : LinkedHashMap getDataSet() -controlP5.Chart : String getInfo() -controlP5.Chart : String toString() -controlP5.Chart : float getStrokeWeight() -controlP5.Chart : float[] getValuesFrom(String) -controlP5.Chart : int getResolution() -controlP5.Chart : int size() -controlP5.Chart : void onEnter() -controlP5.Chart : void onLeave() -controlP5.Controller : CColor getColor() -controlP5.Controller : Chart addCallback(CallbackListener) -controlP5.Controller : Chart addListener(ControlListener) -controlP5.Controller : Chart addListenerFor(int, CallbackListener) -controlP5.Controller : Chart align(int, int, int, int) -controlP5.Controller : Chart bringToFront() -controlP5.Controller : Chart bringToFront(ControllerInterface) -controlP5.Controller : Chart hide() -controlP5.Controller : Chart linebreak() -controlP5.Controller : Chart listen(boolean) -controlP5.Controller : Chart lock() -controlP5.Controller : Chart onChange(CallbackListener) -controlP5.Controller : Chart onClick(CallbackListener) -controlP5.Controller : Chart onDoublePress(CallbackListener) -controlP5.Controller : Chart onDrag(CallbackListener) -controlP5.Controller : Chart onDraw(ControllerView) -controlP5.Controller : Chart onEndDrag(CallbackListener) -controlP5.Controller : Chart onEnter(CallbackListener) -controlP5.Controller : Chart onLeave(CallbackListener) -controlP5.Controller : Chart onMove(CallbackListener) -controlP5.Controller : Chart onPress(CallbackListener) -controlP5.Controller : Chart onRelease(CallbackListener) -controlP5.Controller : Chart onReleaseOutside(CallbackListener) -controlP5.Controller : Chart onStartDrag(CallbackListener) -controlP5.Controller : Chart onWheel(CallbackListener) -controlP5.Controller : Chart plugTo(Object) -controlP5.Controller : Chart plugTo(Object, String) -controlP5.Controller : Chart plugTo(Object[]) -controlP5.Controller : Chart plugTo(Object[], String) -controlP5.Controller : Chart registerProperty(String) -controlP5.Controller : Chart registerProperty(String, String) -controlP5.Controller : Chart registerTooltip(String) -controlP5.Controller : Chart removeBehavior() -controlP5.Controller : Chart removeCallback() -controlP5.Controller : Chart removeCallback(CallbackListener) -controlP5.Controller : Chart removeListener(ControlListener) -controlP5.Controller : Chart removeListenerFor(int, CallbackListener) -controlP5.Controller : Chart removeListenersFor(int) -controlP5.Controller : Chart removeProperty(String) -controlP5.Controller : Chart removeProperty(String, String) -controlP5.Controller : Chart setArrayValue(float[]) -controlP5.Controller : Chart setArrayValue(int, float) -controlP5.Controller : Chart setBehavior(ControlBehavior) -controlP5.Controller : Chart setBroadcast(boolean) -controlP5.Controller : Chart setCaptionLabel(String) -controlP5.Controller : Chart setColor(CColor) -controlP5.Controller : Chart setColorActive(int) -controlP5.Controller : Chart setColorBackground(int) -controlP5.Controller : Chart setColorCaptionLabel(int) -controlP5.Controller : Chart setColorForeground(int) -controlP5.Controller : Chart setColorLabel(int) -controlP5.Controller : Chart setColorValue(int) -controlP5.Controller : Chart setColorValueLabel(int) -controlP5.Controller : Chart setDecimalPrecision(int) -controlP5.Controller : Chart setDefaultValue(float) -controlP5.Controller : Chart setHeight(int) -controlP5.Controller : Chart setId(int) -controlP5.Controller : Chart setImage(PImage) -controlP5.Controller : Chart setImage(PImage, int) -controlP5.Controller : Chart setImages(PImage, PImage, PImage) -controlP5.Controller : Chart setImages(PImage, PImage, PImage, PImage) -controlP5.Controller : Chart setLabel(String) -controlP5.Controller : Chart setLabelVisible(boolean) -controlP5.Controller : Chart setLock(boolean) -controlP5.Controller : Chart setMax(float) -controlP5.Controller : Chart setMin(float) -controlP5.Controller : Chart setMouseOver(boolean) -controlP5.Controller : Chart setMoveable(boolean) -controlP5.Controller : Chart setPosition(float, float) -controlP5.Controller : Chart setPosition(float[]) -controlP5.Controller : Chart setSize(PImage) -controlP5.Controller : Chart setSize(int, int) -controlP5.Controller : Chart setStringValue(String) -controlP5.Controller : Chart setUpdate(boolean) -controlP5.Controller : Chart setValue(float) -controlP5.Controller : Chart setValueLabel(String) -controlP5.Controller : Chart setValueSelf(float) -controlP5.Controller : Chart setView(ControllerView) -controlP5.Controller : Chart setVisible(boolean) -controlP5.Controller : Chart setWidth(int) -controlP5.Controller : Chart show() -controlP5.Controller : Chart unlock() -controlP5.Controller : Chart unplugFrom(Object) -controlP5.Controller : Chart unplugFrom(Object[]) -controlP5.Controller : Chart unregisterTooltip() -controlP5.Controller : Chart update() -controlP5.Controller : Chart updateSize() -controlP5.Controller : ControlBehavior getBehavior() -controlP5.Controller : ControlWindow getControlWindow() -controlP5.Controller : ControlWindow getWindow() -controlP5.Controller : ControllerProperty getProperty(String) -controlP5.Controller : ControllerProperty getProperty(String, String) -controlP5.Controller : ControllerView getView() -controlP5.Controller : Label getCaptionLabel() -controlP5.Controller : Label getValueLabel() -controlP5.Controller : List getControllerPlugList() -controlP5.Controller : Pointer getPointer() -controlP5.Controller : String getAddress() -controlP5.Controller : String getInfo() -controlP5.Controller : String getName() -controlP5.Controller : String getStringValue() -controlP5.Controller : String toString() -controlP5.Controller : Tab getTab() -controlP5.Controller : boolean isActive() -controlP5.Controller : boolean isBroadcast() -controlP5.Controller : boolean isInside() -controlP5.Controller : boolean isLabelVisible() -controlP5.Controller : boolean isListening() -controlP5.Controller : boolean isLock() -controlP5.Controller : boolean isMouseOver() -controlP5.Controller : boolean isMousePressed() -controlP5.Controller : boolean isMoveable() -controlP5.Controller : boolean isUpdate() -controlP5.Controller : boolean isVisible() -controlP5.Controller : float getArrayValue(int) -controlP5.Controller : float getDefaultValue() -controlP5.Controller : float getMax() -controlP5.Controller : float getMin() -controlP5.Controller : float getValue() -controlP5.Controller : float[] getAbsolutePosition() -controlP5.Controller : float[] getArrayValue() -controlP5.Controller : float[] getPosition() -controlP5.Controller : int getDecimalPrecision() -controlP5.Controller : int getHeight() -controlP5.Controller : int getId() -controlP5.Controller : int getWidth() -controlP5.Controller : int listenerSize() -controlP5.Controller : void remove() -controlP5.Controller : void setView(ControllerView, int) -java.lang.Object : String toString() -java.lang.Object : boolean equals(Object) - -created: 2015/03/24 12:20:54 - -*/ - - diff --git a/OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5checkBox/ControlP5checkBox.pde b/OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5checkBox/ControlP5checkBox.pde deleted file mode 100644 index e29e710..0000000 --- a/OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5checkBox/ControlP5checkBox.pde +++ /dev/null @@ -1,242 +0,0 @@ -/** - * ControlP5 Checkbox - * an example demonstrating the use of a checkbox in controlP5. - * CheckBox extends the RadioButton class. - * to control a checkbox use: - * activate(), deactivate(), activateAll(), deactivateAll(), toggle(), getState() - * - * find a list of public methods available for the Checkbox Controller - * at the bottom of this sketch's source code - * - * by Andreas Schlegel, 2012 - * www.sojamo.de/libraries/controlP5 - * - */ - - -import controlP5.*; - -ControlP5 cp5; - -CheckBox checkbox; - -int myColorBackground; - -void setup() { - size(800, 400); - smooth(); - cp5 = new ControlP5(this); - checkbox = cp5.addCheckBox("checkBox") - .setPosition(100, 200) - .setSize(40, 40) - .setItemsPerRow(3) - .setSpacingColumn(30) - .setSpacingRow(20) - .addItem("0", 0) - .addItem("50", 50) - .addItem("100", 100) - .addItem("150", 150) - .addItem("200", 200) - .addItem("255", 255) - ; -} - -void keyPressed() { - if (key==' ') { - checkbox.deactivateAll(); - } - else { - for (int i=0;i<6;i++) { - // check if key 0-5 have been pressed and toggle - // the checkbox item accordingly. - if (keyCode==(48 + i)) { - // the index of checkbox items start at 0 - checkbox.toggle(i); - println("toggle "+checkbox.getItem(i).getName()); - // also see - // checkbox.activate(index); - // checkbox.deactivate(index); - } - } - } -} - -void draw() { - background(170); - pushMatrix(); - translate(width/2 + 200, height/2); - stroke(255); - strokeWeight(2); - fill(myColorBackground); - ellipse(0,0,200,200); - popMatrix(); -} - -void controlEvent(ControlEvent theEvent) { - if (theEvent.isFrom(checkbox)) { - myColorBackground = 0; - print("got an event from "+checkbox.getName()+"\t\n"); - // checkbox uses arrayValue to store the state of - // individual checkbox-items. usage: - println(checkbox.getArrayValue()); - int col = 0; - for (int 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 zÄ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 V*eEM;|ho{trTA6=?tf diff --git a/OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5knob/ControlP5knob.pde b/OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5knob/ControlP5knob.pde deleted file mode 100644 index d7578f5..0000000 --- a/OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5knob/ControlP5knob.pde +++ /dev/null @@ -1,260 +0,0 @@ -/** -* ControlP5 Knob -* -* -* find a list of public methods available for the Knob Controller -* at the bottom of this sketch. -* -* by Andreas Schlegel, 2012 -* www.sojamo.de/libraries/controlp5 -* -*/ - -import controlP5.*; - - -ControlP5 cp5; - -int myColorBackground = color(0,0,0); -int knobValue = 100; - -Knob myKnobA; -Knob myKnobB; - -void setup() { - size(700,400); - smooth(); - noStroke(); - - cp5 = new ControlP5(this); - - myKnobA = cp5.addKnob("knob") - .setRange(0,255) - .setValue(50) - .setPosition(100,70) - .setRadius(50) - .setDragDirection(Knob.VERTICAL) - ; - - myKnobB = cp5.addKnob("knobValue") - .setRange(0,255) - .setValue(220) - .setPosition(100,210) - .setRadius(50) - .setNumberOfTickMarks(10) - .setTickMarkLength(4) - .snapToTickMarks(true) - .setColorForeground(color(255)) - .setColorBackground(color(0, 160, 100)) - .setColorActive(color(255,255,0)) - .setDragDirection(Knob.HORIZONTAL) - ; -} - -void draw() { - background(myColorBackground); - fill(knobValue); - rect(0,height/2,width,height/2); - fill(0,100); - rect(80,40,140,320); -} - - -void knob(int theValue) { - myColorBackground = color(theValue); - println("a knob event. setting background to "+theValue); -} - - -void keyPressed() { - switch(key) { - case('1'):myKnobA.setValue(180);break; - case('2'):myKnobB.setConstrained(false).hideTickMarks().snapToTickMarks(false);break; - case('3'):myKnobA.shuffle();myKnobB.shuffle();break; - } - -} - -/* -a list of all methods available for the Knob Controller -use ControlP5.printPublicMethodsFor(Knob.class); -to print the following list into the console. - -You can find further details about class Knob in the javadoc. - -Format: -ClassName : returnType methodName(parameter type) - - -controlP5.Controller : CColor getColor() -controlP5.Controller : ControlBehavior getBehavior() -controlP5.Controller : ControlWindow getControlWindow() -controlP5.Controller : ControlWindow getWindow() -controlP5.Controller : ControllerProperty getProperty(String) -controlP5.Controller : ControllerProperty getProperty(String, String) -controlP5.Controller : ControllerView getView() -controlP5.Controller : Knob addCallback(CallbackListener) -controlP5.Controller : Knob addListener(ControlListener) -controlP5.Controller : Knob addListenerFor(int, CallbackListener) -controlP5.Controller : Knob align(int, int, int, int) -controlP5.Controller : Knob bringToFront() -controlP5.Controller : Knob bringToFront(ControllerInterface) -controlP5.Controller : Knob hide() -controlP5.Controller : Knob linebreak() -controlP5.Controller : Knob listen(boolean) -controlP5.Controller : Knob lock() -controlP5.Controller : Knob onChange(CallbackListener) -controlP5.Controller : Knob onClick(CallbackListener) -controlP5.Controller : Knob onDoublePress(CallbackListener) -controlP5.Controller : Knob onDrag(CallbackListener) -controlP5.Controller : Knob onDraw(ControllerView) -controlP5.Controller : Knob onEndDrag(CallbackListener) -controlP5.Controller : Knob onEnter(CallbackListener) -controlP5.Controller : Knob onLeave(CallbackListener) -controlP5.Controller : Knob onMove(CallbackListener) -controlP5.Controller : Knob onPress(CallbackListener) -controlP5.Controller : Knob onRelease(CallbackListener) -controlP5.Controller : Knob onReleaseOutside(CallbackListener) -controlP5.Controller : Knob onStartDrag(CallbackListener) -controlP5.Controller : Knob onWheel(CallbackListener) -controlP5.Controller : Knob plugTo(Object) -controlP5.Controller : Knob plugTo(Object, String) -controlP5.Controller : Knob plugTo(Object[]) -controlP5.Controller : Knob plugTo(Object[], String) -controlP5.Controller : Knob registerProperty(String) -controlP5.Controller : Knob registerProperty(String, String) -controlP5.Controller : Knob registerTooltip(String) -controlP5.Controller : Knob removeBehavior() -controlP5.Controller : Knob removeCallback() -controlP5.Controller : Knob removeCallback(CallbackListener) -controlP5.Controller : Knob removeListener(ControlListener) -controlP5.Controller : Knob removeListenerFor(int, CallbackListener) -controlP5.Controller : Knob removeListenersFor(int) -controlP5.Controller : Knob removeProperty(String) -controlP5.Controller : Knob removeProperty(String, String) -controlP5.Controller : Knob setArrayValue(float[]) -controlP5.Controller : Knob setArrayValue(int, float) -controlP5.Controller : Knob setBehavior(ControlBehavior) -controlP5.Controller : Knob setBroadcast(boolean) -controlP5.Controller : Knob setCaptionLabel(String) -controlP5.Controller : Knob setColor(CColor) -controlP5.Controller : Knob setColorActive(int) -controlP5.Controller : Knob setColorBackground(int) -controlP5.Controller : Knob setColorCaptionLabel(int) -controlP5.Controller : Knob setColorForeground(int) -controlP5.Controller : Knob setColorLabel(int) -controlP5.Controller : Knob setColorValue(int) -controlP5.Controller : Knob setColorValueLabel(int) -controlP5.Controller : Knob setDecimalPrecision(int) -controlP5.Controller : Knob setDefaultValue(float) -controlP5.Controller : Knob setHeight(int) -controlP5.Controller : Knob setId(int) -controlP5.Controller : Knob setImage(PImage) -controlP5.Controller : Knob setImage(PImage, int) -controlP5.Controller : Knob setImages(PImage, PImage, PImage) -controlP5.Controller : Knob setImages(PImage, PImage, PImage, PImage) -controlP5.Controller : Knob setLabel(String) -controlP5.Controller : Knob setLabelVisible(boolean) -controlP5.Controller : Knob setLock(boolean) -controlP5.Controller : Knob setMax(float) -controlP5.Controller : Knob setMin(float) -controlP5.Controller : Knob setMouseOver(boolean) -controlP5.Controller : Knob setMoveable(boolean) -controlP5.Controller : Knob setPosition(float, float) -controlP5.Controller : Knob setPosition(float[]) -controlP5.Controller : Knob setSize(PImage) -controlP5.Controller : Knob setSize(int, int) -controlP5.Controller : Knob setStringValue(String) -controlP5.Controller : Knob setUpdate(boolean) -controlP5.Controller : Knob setValue(float) -controlP5.Controller : Knob setValueLabel(String) -controlP5.Controller : Knob setValueSelf(float) -controlP5.Controller : Knob setView(ControllerView) -controlP5.Controller : Knob setVisible(boolean) -controlP5.Controller : Knob setWidth(int) -controlP5.Controller : Knob show() -controlP5.Controller : Knob unlock() -controlP5.Controller : Knob unplugFrom(Object) -controlP5.Controller : Knob unplugFrom(Object[]) -controlP5.Controller : Knob unregisterTooltip() -controlP5.Controller : Knob update() -controlP5.Controller : Knob updateSize() -controlP5.Controller : Label getCaptionLabel() -controlP5.Controller : Label getValueLabel() -controlP5.Controller : List getControllerPlugList() -controlP5.Controller : Pointer getPointer() -controlP5.Controller : String getAddress() -controlP5.Controller : String getInfo() -controlP5.Controller : String getName() -controlP5.Controller : String getStringValue() -controlP5.Controller : String toString() -controlP5.Controller : Tab getTab() -controlP5.Controller : boolean isActive() -controlP5.Controller : boolean isBroadcast() -controlP5.Controller : boolean isInside() -controlP5.Controller : boolean isLabelVisible() -controlP5.Controller : boolean isListening() -controlP5.Controller : boolean isLock() -controlP5.Controller : boolean isMouseOver() -controlP5.Controller : boolean isMousePressed() -controlP5.Controller : boolean isMoveable() -controlP5.Controller : boolean isUpdate() -controlP5.Controller : boolean isVisible() -controlP5.Controller : float getArrayValue(int) -controlP5.Controller : float getDefaultValue() -controlP5.Controller : float getMax() -controlP5.Controller : float getMin() -controlP5.Controller : float getValue() -controlP5.Controller : float[] getAbsolutePosition() -controlP5.Controller : float[] getArrayValue() -controlP5.Controller : float[] getPosition() -controlP5.Controller : int getDecimalPrecision() -controlP5.Controller : int getHeight() -controlP5.Controller : int getId() -controlP5.Controller : int getWidth() -controlP5.Controller : int listenerSize() -controlP5.Controller : void remove() -controlP5.Controller : void setView(ControllerView, int) -controlP5.Knob : Knob hideTickMarks() -controlP5.Knob : Knob setAngleRange(float) -controlP5.Knob : Knob setConstrained(boolean) -controlP5.Knob : Knob setDragDirection(int) -controlP5.Knob : Knob setMax(float) -controlP5.Knob : Knob setMin(float) -controlP5.Knob : Knob setNumberOfTickMarks(int) -controlP5.Knob : Knob setRadius(float) -controlP5.Knob : Knob setRange(float, float) -controlP5.Knob : Knob setResolution(float) -controlP5.Knob : Knob setScrollSensitivity(float) -controlP5.Knob : Knob setShowAngleRange(boolean) -controlP5.Knob : Knob setSize(int, int) -controlP5.Knob : Knob setStartAngle(float) -controlP5.Knob : Knob setTickMarkLength(int) -controlP5.Knob : Knob setTickMarkWeight(float) -controlP5.Knob : Knob setValue(float) -controlP5.Knob : Knob setViewStyle(int) -controlP5.Knob : Knob showTickMarks() -controlP5.Knob : Knob shuffle() -controlP5.Knob : Knob snapToTickMarks(boolean) -controlP5.Knob : boolean isConstrained() -controlP5.Knob : boolean isShowAngleRange() -controlP5.Knob : boolean isShowTickMarks() -controlP5.Knob : float getAngle() -controlP5.Knob : float getAngleRange() -controlP5.Knob : float getRadius() -controlP5.Knob : float getResolution() -controlP5.Knob : float getStartAngle() -controlP5.Knob : float getTickMarkWeight() -controlP5.Knob : float getValue() -controlP5.Knob : int getDragDirection() -controlP5.Knob : int getNumberOfTickMarks() -controlP5.Knob : int getTickMarkLength() -controlP5.Knob : int getViewStyle() -java.lang.Object : String toString() -java.lang.Object : boolean equals(Object) - -created: 2015/03/24 12:21:10 - -*/ - - diff --git a/OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5listBox/ControlP5listBox.pde b/OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5listBox/ControlP5listBox.pde deleted file mode 100644 index f3cc80a..0000000 --- a/OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5listBox/ControlP5listBox.pde +++ /dev/null @@ -1,319 +0,0 @@ -/** -* -* DEPRECATED, use ScrollableList instead. -* -* ControlP5 ListBox -* -* find a list of public methods available for the ListBox Controller -* at the bottom of this sketch. -* use the scrollwheel, up or down cursors to scroll through -* a listbox when hovering with the mouse. -* -* by Andreas Schlegel, 2012 -* www.sojamo.de/libraries/controlp5 -* -*/ - - -import controlP5.*; - -ControlP5 cp5; - -ListBox l; - -int cnt = 0; - -void setup() { - - size(700, 400); - cp5 = new ControlP5(this); - - // ListBox is DEPRECATED, - // use ScrollableList instead, - // see example ControlP5scrollableList - - - - - - - - - - - - - - - - - l = cp5.addListBox("myList") - .setPosition(100, 100) - .setSize(120, 120) - .setItemHeight(15) - .setBarHeight(15) - .setColorBackground(color(255, 128)) - .setColorActive(color(0)) - .setColorForeground(color(255, 100,0)) - ; - - l.getCaptionLabel().toUpperCase(true); - l.getCaptionLabel().set("A Listbox"); - l.getCaptionLabel().setColor(0xffff0000); - for (int i=0;i<80;i++) { - l.addItem("item "+i, i); - l.getItem("item "+i).put("color", new CColor().setBackground(0xffff0000).setBackground(0xffff8800)); - } - -} - -void keyPressed() { - if (key=='0') { - // will activate the listbox item with value 5 - l.setValue(5); - } - if (key=='1') { - // set the height of a listBox should always be a multiple of itemHeight - l.setHeight(210); - } - else if (key=='2') { - // set the height of a listBox should always be a multiple of itemHeight - l.setHeight(120); - } - else if (key=='3') { - // set the width of a listBox - l.setWidth(200); - } - else if (key=='i') { - // set the height of a listBoxItem, should always be a fraction of the listBox - l.setItemHeight(30); - } - else if (key=='u') { - // set the height of a listBoxItem, should always be a fraction of the listBox - l.setItemHeight(10); - l.setBackgroundColor(color(100, 0, 0)); - } - else if (key=='a') { - int n = (int)(random(100000)); - l.addItem("item "+n, n); - } - else if (key=='d') { - l.removeItem("item "+cnt); - cnt++; - } else if (key=='c') { - l.clear(); - } -} - -void controlEvent(ControlEvent theEvent) { - // ListBox is if type ControlGroup. - // 1 controlEvent will be executed, where the event - // originates from a ControlGroup. therefore - // you need to check the Event with - // if (theEvent.isGroup()) - // to avoid an error message from controlP5. - - if (theEvent.isGroup()) { - // an event from a group e.g. scrollList - println(theEvent.getGroup().getValue()+" from "+theEvent.getGroup()); - } - - if(theEvent.isGroup() && theEvent.getName().equals("myList")){ - int test = (int)theEvent.getGroup().getValue(); - println("test "+test); -} -} - -void draw() { - background(128); - // scroll the scroll List according to the mouseX position - // when holding down SPACE. - if (keyPressed && key==' ') { - //l.scroll(mouseX/((float)width)); // scroll taks values between 0 and 1 - } - if (keyPressed && key==' ') { - l.setWidth(mouseX); - } -} - - - -/* -a list of all methods available for the ListBox Controller -use ControlP5.printPublicMethodsFor(ListBox.class); -to print the following list into the console. - -You can find further details about class ListBox in the javadoc. - -Format: -ClassName : returnType methodName(parameter type) - - -controlP5.Controller : CColor getColor() -controlP5.Controller : ControlBehavior getBehavior() -controlP5.Controller : ControlWindow getControlWindow() -controlP5.Controller : ControlWindow getWindow() -controlP5.Controller : ControllerProperty getProperty(String) -controlP5.Controller : ControllerProperty getProperty(String, String) -controlP5.Controller : ControllerView getView() -controlP5.Controller : Label getCaptionLabel() -controlP5.Controller : Label getValueLabel() -controlP5.Controller : List getControllerPlugList() -controlP5.Controller : ListBox addCallback(CallbackListener) -controlP5.Controller : ListBox addListener(ControlListener) -controlP5.Controller : ListBox addListenerFor(int, CallbackListener) -controlP5.Controller : ListBox align(int, int, int, int) -controlP5.Controller : ListBox bringToFront() -controlP5.Controller : ListBox bringToFront(ControllerInterface) -controlP5.Controller : ListBox hide() -controlP5.Controller : ListBox linebreak() -controlP5.Controller : ListBox listen(boolean) -controlP5.Controller : ListBox lock() -controlP5.Controller : ListBox onChange(CallbackListener) -controlP5.Controller : ListBox onClick(CallbackListener) -controlP5.Controller : ListBox onDoublePress(CallbackListener) -controlP5.Controller : ListBox onDrag(CallbackListener) -controlP5.Controller : ListBox onDraw(ControllerView) -controlP5.Controller : ListBox onEndDrag(CallbackListener) -controlP5.Controller : ListBox onEnter(CallbackListener) -controlP5.Controller : ListBox onLeave(CallbackListener) -controlP5.Controller : ListBox onMove(CallbackListener) -controlP5.Controller : ListBox onPress(CallbackListener) -controlP5.Controller : ListBox onRelease(CallbackListener) -controlP5.Controller : ListBox onReleaseOutside(CallbackListener) -controlP5.Controller : ListBox onStartDrag(CallbackListener) -controlP5.Controller : ListBox onWheel(CallbackListener) -controlP5.Controller : ListBox plugTo(Object) -controlP5.Controller : ListBox plugTo(Object, String) -controlP5.Controller : ListBox plugTo(Object[]) -controlP5.Controller : ListBox plugTo(Object[], String) -controlP5.Controller : ListBox registerProperty(String) -controlP5.Controller : ListBox registerProperty(String, String) -controlP5.Controller : ListBox registerTooltip(String) -controlP5.Controller : ListBox removeBehavior() -controlP5.Controller : ListBox removeCallback() -controlP5.Controller : ListBox removeCallback(CallbackListener) -controlP5.Controller : ListBox removeListener(ControlListener) -controlP5.Controller : ListBox removeListenerFor(int, CallbackListener) -controlP5.Controller : ListBox removeListenersFor(int) -controlP5.Controller : ListBox removeProperty(String) -controlP5.Controller : ListBox removeProperty(String, String) -controlP5.Controller : ListBox setArrayValue(float[]) -controlP5.Controller : ListBox setArrayValue(int, float) -controlP5.Controller : ListBox setBehavior(ControlBehavior) -controlP5.Controller : ListBox setBroadcast(boolean) -controlP5.Controller : ListBox setCaptionLabel(String) -controlP5.Controller : ListBox setColor(CColor) -controlP5.Controller : ListBox setColorActive(int) -controlP5.Controller : ListBox setColorBackground(int) -controlP5.Controller : ListBox setColorCaptionLabel(int) -controlP5.Controller : ListBox setColorForeground(int) -controlP5.Controller : ListBox setColorLabel(int) -controlP5.Controller : ListBox setColorValue(int) -controlP5.Controller : ListBox setColorValueLabel(int) -controlP5.Controller : ListBox setDecimalPrecision(int) -controlP5.Controller : ListBox setDefaultValue(float) -controlP5.Controller : ListBox setHeight(int) -controlP5.Controller : ListBox setId(int) -controlP5.Controller : ListBox setImage(PImage) -controlP5.Controller : ListBox setImage(PImage, int) -controlP5.Controller : ListBox setImages(PImage, PImage, PImage) -controlP5.Controller : ListBox setImages(PImage, PImage, PImage, PImage) -controlP5.Controller : ListBox setLabel(String) -controlP5.Controller : ListBox setLabelVisible(boolean) -controlP5.Controller : ListBox setLock(boolean) -controlP5.Controller : ListBox setMax(float) -controlP5.Controller : ListBox setMin(float) -controlP5.Controller : ListBox setMouseOver(boolean) -controlP5.Controller : ListBox setMoveable(boolean) -controlP5.Controller : ListBox setPosition(float, float) -controlP5.Controller : ListBox setPosition(float[]) -controlP5.Controller : ListBox setSize(PImage) -controlP5.Controller : ListBox setSize(int, int) -controlP5.Controller : ListBox setStringValue(String) -controlP5.Controller : ListBox setUpdate(boolean) -controlP5.Controller : ListBox setValue(float) -controlP5.Controller : ListBox setValueLabel(String) -controlP5.Controller : ListBox setValueSelf(float) -controlP5.Controller : ListBox setView(ControllerView) -controlP5.Controller : ListBox setVisible(boolean) -controlP5.Controller : ListBox setWidth(int) -controlP5.Controller : ListBox show() -controlP5.Controller : ListBox unlock() -controlP5.Controller : ListBox unplugFrom(Object) -controlP5.Controller : ListBox unplugFrom(Object[]) -controlP5.Controller : ListBox unregisterTooltip() -controlP5.Controller : ListBox update() -controlP5.Controller : ListBox updateSize() -controlP5.Controller : Pointer getPointer() -controlP5.Controller : String getAddress() -controlP5.Controller : String getInfo() -controlP5.Controller : String getName() -controlP5.Controller : String getStringValue() -controlP5.Controller : String toString() -controlP5.Controller : Tab getTab() -controlP5.Controller : boolean isActive() -controlP5.Controller : boolean isBroadcast() -controlP5.Controller : boolean isInside() -controlP5.Controller : boolean isLabelVisible() -controlP5.Controller : boolean isListening() -controlP5.Controller : boolean isLock() -controlP5.Controller : boolean isMouseOver() -controlP5.Controller : boolean isMousePressed() -controlP5.Controller : boolean isMoveable() -controlP5.Controller : boolean isUpdate() -controlP5.Controller : boolean isVisible() -controlP5.Controller : float getArrayValue(int) -controlP5.Controller : float getDefaultValue() -controlP5.Controller : float getMax() -controlP5.Controller : float getMin() -controlP5.Controller : float getValue() -controlP5.Controller : float[] getAbsolutePosition() -controlP5.Controller : float[] getArrayValue() -controlP5.Controller : float[] getPosition() -controlP5.Controller : int getDecimalPrecision() -controlP5.Controller : int getHeight() -controlP5.Controller : int getId() -controlP5.Controller : int getWidth() -controlP5.Controller : int listenerSize() -controlP5.Controller : void remove() -controlP5.Controller : void setView(ControllerView, int) -controlP5.ListBox : List getItems() -controlP5.ListBox : ListBox addItem(String, Object) -controlP5.ListBox : ListBox addItems(List) -controlP5.ListBox : ListBox addItems(Map) -controlP5.ListBox : ListBox addItems(String[]) -controlP5.ListBox : ListBox clear() -controlP5.ListBox : ListBox close() -controlP5.ListBox : ListBox open() -controlP5.ListBox : ListBox removeItem(String) -controlP5.ListBox : ListBox removeItems(List) -controlP5.ListBox : ListBox setBackgroundColor(int) -controlP5.ListBox : ListBox setBarHeight(int) -controlP5.ListBox : ListBox setBarVisible(boolean) -controlP5.ListBox : ListBox setItemHeight(int) -controlP5.ListBox : ListBox setItems(List) -controlP5.ListBox : ListBox setItems(Map) -controlP5.ListBox : ListBox setItems(String[]) -controlP5.ListBox : ListBox setOpen(boolean) -controlP5.ListBox : ListBox setScrollSensitivity(float) -controlP5.ListBox : ListBox setType(int) -controlP5.ListBox : Map getItem(String) -controlP5.ListBox : Map getItem(int) -controlP5.ListBox : boolean isBarVisible() -controlP5.ListBox : boolean isOpen() -controlP5.ListBox : int getBackgroundColor() -controlP5.ListBox : int getBarHeight() -controlP5.ListBox : int getHeight() -controlP5.ListBox : void controlEvent(ControlEvent) -controlP5.ListBox : void keyEvent(KeyEvent) -controlP5.ListBox : void setDirection(int) -controlP5.ListBox : void updateItemIndexOffset() -java.lang.Object : String toString() -java.lang.Object : boolean equals(Object) - -created: 2015/03/24 12:21:12 - -*/ - - diff --git a/OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5matrix/ControlP5matrix.pde b/OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5matrix/ControlP5matrix.pde deleted file mode 100644 index cdd0628..0000000 --- a/OpenBCI_GUI/libraries/controlP5/examples/controllers/ControlP5matrix/ControlP5matrix.pde +++ /dev/null @@ -1,296 +0,0 @@ -/** - * ControlP5 Matrix - * - * A matrix can be used for example as a sequencer, a drum machine. - * - * find a list of public methods available for the Matrix Controller - * at the bottom of this sketch. - * - * by Andreas Schlegel, 2012 - * www.sojamo.de/libraries/controlp5 - * - */ - -import controlP5.*; - -ControlP5 cp5; - -Dong[][] d; -int nx = 10; -int ny = 10; - -void setup() { - size(700, 400); - - cp5 = new ControlP5(this); - - cp5.addMatrix("myMatrix") - .setPosition(50, 100) - .setSize(200, 200) - .setGrid(nx, ny) - .setGap(10, 1) - .setInterval(200) - .setMode(ControlP5.MULTIPLES) - .setColorBackground(color(120)) - .setBackground(color(40)) - ; - - cp5.getController("myMatrix").getCaptionLabel().alignX(CENTER); - - // use setMode to change the cell-activation which by - // default is ControlP5.SINGLE_ROW, 1 active cell per row, - // but can be changed to ControlP5.SINGLE_COLUMN or - // ControlP5.MULTIPLES - - d = new Dong[nx][ny]; - for (int x = 0;x presets = new ArrayList(); - int currentPreset = 0; - Thread update; - - CustomMatrix(ControlP5 cp5, String theName) { - super(cp5, theName); - stop(); // stop the default sequencer and - // create our custom sequencer thread. Here we - // check if the sequencer has reached the end and if so - // we updated to the next preset. - update = new Thread(theName) { - public void run( ) { - while ( true ) { - cnt++; - cnt %= _myCellX; - if (cnt==0) { - // we reached the end and go back to start and - // update the preset - next(); - } - trigger(cnt); - try { - sleep( _myInterval ); - } - catch ( InterruptedException e ) { - } - } - } - }; - update.start(); - } - - - void next() { - currentPreset++; - currentPreset %= presets.size(); - setCells(presets.get(currentPreset)); - } - - // initialize some random presets. - void initPresets() { - for (int i=0;i<4;i++) { - presets.add(createPreset(_myCellX, _myCellY)); - } - setCells(presets.get(0)); - } - - // create a random preset - int[][] createPreset(int theX, int theY) { - int[][] preset = new int[theX][theY]; - for (int x=0;x0.5 ? 1:0; - } - } - return preset; - } - -} - diff --git a/OpenBCI_GUI/libraries/controlP5/examples/experimental/ControlP5MenuList/ControlP5MenuList.pde b/OpenBCI_GUI/libraries/controlP5/examples/experimental/ControlP5MenuList/ControlP5MenuList.pde deleted file mode 100644 index 651c1e2..0000000 --- a/OpenBCI_GUI/libraries/controlP5/examples/experimental/ControlP5MenuList/ControlP5MenuList.pde +++ /dev/null @@ -1,187 +0,0 @@ - -/** - * ControlP5 MenuList - * - * A custom Controller, a scrollable Menu List, using a PGraphics buffer. - * Allows custom designs for List Item. - * - * by Andreas Schlegel, 2013 - * www.sojamo.de/libraries/controlp5 - * - */ - -import controlP5.*; -import static controlP5.ControlP5.*; -import java.util.*; -import java.util.Map.Entry; - - -ControlP5 cp5; - -PFont f1, f2; -void setup() { - size(800, 500, P3D ); - f1 = createFont("Helvetica", 20); - f2 = createFont("Helvetica", 12); - - cp5 = new ControlP5( this ); - - - /* create a custom MenuList with name menu, notice that function - * menu will be called when a menu item has been clicked. - */ - MenuList m = new MenuList( cp5, "menu", 200, 368 ); - - m.setPosition(40, 40); - // add some items to our menuList - for (int i=0;i<100;i++) { - m.addItem(makeItem("headline-"+i, "subline", "some copy lorem ipsum ", createImage(50, 50, RGB))); - } -} - -/* a convenience function to build a map that contains our key-value pairs which we will - * then use to render each item of the menuList. - */ -Map makeItem(String theHeadline, String theSubline, String theCopy, PImage theImage) { - Map m = new HashMap(); - m.put("headline", theHeadline); - m.put("subline", theSubline); - m.put("copy", theCopy); - m.put("image", theImage); - return m; -} - -void menu(int i) { - println("got some menu event from item with index "+i); -} - -public void controlEvent(ControlEvent theEvent) { - if(theEvent.isFrom("menu")){ - Map m = ((MenuList)theEvent.getController()).getItem(int(theEvent.getValue())); - println("got a menu event from item : "+m); - } -} - -void draw() { - background( 40 ); -} - - -/* A custom Controller that implements a scrollable menuList. Here the controller - * uses a PGraphics element to render customizable list items. The menuList can be scrolled - * using the scroll-wheel, touchpad, or mouse-drag. Items are triggered by a click. clicking - * the scrollbar to the right makes the list scroll to the item correspoinding to the - * click-location. - */ -class MenuList extends Controller { - - float pos, npos; - int itemHeight = 100; - int scrollerLength = 40; - List< Map> items = new ArrayList< Map>(); - PGraphics menu; - boolean updateMenu; - - MenuList(ControlP5 c, String theName, int theWidth, int theHeight) { - super( c, theName, 0, 0, theWidth, theHeight ); - c.register( this ); - menu = createGraphics(getWidth(), getHeight() ); - - setView(new ControllerView() { - - public void display(PGraphics pg, MenuList t ) { - if (updateMenu) { - updateMenu(); - } - if (inside() ) { - menu.beginDraw(); - int len = -(itemHeight * items.size()) + getHeight(); - int ty = int(map(pos, len, 0, getHeight() - scrollerLength - 2, 2 ) ); - menu.fill(255 ); - menu.rect(getWidth()-4, ty, 4, scrollerLength ); - menu.endDraw(); - } - pg.image(menu, 0, 0); - } - } - ); - updateMenu(); - } - - /* only update the image buffer when necessary - to save some resources */ - void updateMenu() { - int len = -(itemHeight * items.size()) + getHeight(); - npos = constrain(npos, len, 0); - pos += (npos - pos) * 0.1; - menu.beginDraw(); - menu.noStroke(); - menu.background(255, 64 ); - menu.textFont(cp5.getFont().getFont()); - menu.pushMatrix(); - menu.translate( 0, pos ); - menu.pushMatrix(); - - int i0 = PApplet.max( 0, int(map(-pos, 0, itemHeight * items.size(), 0, items.size()))); - int range = ceil((float(getHeight())/float(itemHeight))+1); - int i1 = PApplet.min( items.size(), i0 + range ); - - menu.translate(0, i0*itemHeight); - - for (int i=i0;i0.01 ? true:false; - } - - /* when detecting a click, check if the click happend to the far right, if yes, scroll to that position, - * otherwise do whatever this item of the list is supposed to do. - */ - public void onClick() { - if (getPointer().x()>getWidth()-10) { - npos= -map(getPointer().y(), 0, getHeight(), 0, items.size()*itemHeight); - updateMenu = true; - } - else { - int len = itemHeight * items.size(); - int index = int( map( getPointer().y() - pos, 0, len, 0, items.size() ) ) ; - setValue(index); - } - } - - public void onMove() { - } - - public void onDrag() { - npos += getPointer().dy() * 2; - updateMenu = true; - } - - public void onScroll(int n) { - npos += ( n * 4 ); - updateMenu = true; - } - - void addItem(Map m) { - items.add(m); - updateMenu = true; - } - - Map getItem(int theIndex) { - return items.get(theIndex); - } -} - diff --git a/OpenBCI_GUI/libraries/controlP5/examples/experimental/ControlP5SliderList/ControlP5SliderList.pde b/OpenBCI_GUI/libraries/controlP5/examples/experimental/ControlP5SliderList/ControlP5SliderList.pde deleted file mode 100644 index 88b7536..0000000 --- a/OpenBCI_GUI/libraries/controlP5/examples/experimental/ControlP5SliderList/ControlP5SliderList.pde +++ /dev/null @@ -1,257 +0,0 @@ - -/** - * ControlP5 SilderList - * - * A custom Controller, a scrollable Menu List, using a PGraphics buffer. - * Allows custom designs for List Item. - * - * you will need a controlP5 version >= 2.1.5 - * you can download a copy from - * http://sojamo.de/files/archive/controlP5-2.1.5.zip - * - * by Andreas Schlegel, 2013 - * www.sojamo.de/libraries/controlp5 - * - */ - -import controlP5.*; -import java.util.*; - - -ControlP5 cp5; - -PFont f1; -int NUM = 100; -float[] rotation = new float[NUM]; - - -void setup() { - size(800, 400 ,P3D); - f1 = createFont("Helvetica", 12); - - cp5 = new ControlP5( this ); - - - // create a custom SilderList with name menu, notice that function - // menu will be called when a menu item has been clicked. - - SilderList m = new SilderList( cp5, "menu", 250, 350 ); - - m.setPosition(40, 20); - // add some items to our SilderList - for (int i=0;i makeItem(String theLabel, float theValue, float theMin, float theMax) { - Map m = new HashMap(); - m.put("label", theLabel); - m.put("sliderValue", theValue); - m.put("sliderValueMin", theMin); - m.put("sliderValueMax", theMax); - return m; -} - -void menu(int i) { - println("got some slider-list event from item with index "+i); -} - -public void controlEvent(ControlEvent theEvent) { - if (theEvent.isFrom("menu")) { - int index = int(theEvent.getValue()); - Map m = ((SilderList)theEvent.getController()).getItem(index); - println("got a slider event from item : "+m); - rotation[index] = f(m.get("sliderValue")); - } -} - -void draw() { - background( 220 ); - fill(0, 128, 255); - noStroke(); - pushMatrix(); - translate(width/2, 30 ); - for (int i=0;i { - - float pos, npos; - int itemHeight = 60; - int scrollerLength = 40; - int sliderWidth = 150; - int sliderHeight = 15; - int sliderX = 10; - int sliderY = 25; - - int dragMode = 0; - int dragIndex = -1; - - List< Map> items = new ArrayList< Map>(); - PGraphics menu; - boolean updateMenu; - - SilderList(ControlP5 c, String theName, int theWidth, int theHeight) { - super( c, theName, 0, 0, theWidth, theHeight ); - c.register( this ); - menu = createGraphics(getWidth(), getHeight()); - - setView(new ControllerView() { - - public void display(PGraphics pg, SilderList t ) { - if (updateMenu) { - updateMenu(); - } - if (inside() ) { // draw scrollbar - menu.beginDraw(); - int len = -(itemHeight * items.size()) + getHeight(); - int ty = int(map(pos, len, 0, getHeight() - scrollerLength - 2, 2 ) ); - menu.fill( 128 ); - menu.rect(getWidth()-6, ty, 4, scrollerLength ); - menu.endDraw(); - } - pg.image(menu, 0, 0); - } - } - ); - updateMenu(); - } - - // only update the image buffer when necessary - to save some resources - void updateMenu() { - int len = -(itemHeight * items.size()) + getHeight(); - npos = constrain(npos, len, 0); - pos += (npos - pos) * 0.1; - - /// draw the SliderList - menu.beginDraw(); - menu.noStroke(); - menu.background(240); - menu.textFont(cp5.getFont().getFont()); - menu.pushMatrix(); - menu.translate( 0, int(pos) ); - menu.pushMatrix(); - - int i0 = PApplet.max( 0, int(map(-pos, 0, itemHeight * items.size(), 0, items.size()))); - int range = ceil((float(getHeight())/float(itemHeight))+1); - int i1 = PApplet.min( items.size(), i0 + range ); - - menu.translate(0, i0*itemHeight); - - for (int i=i0;i0.01 ? true:false; - } - - // when detecting a click, check if the click happend to the far right, - // if yes, scroll to that position, otherwise do whatever this item of - // the list is supposed to do. - public void onClick() { - if (getPointer().x()>getWidth()-10) { - npos= -map(getPointer().y(), 0, getHeight(), 0, items.size()*itemHeight); - updateMenu = true; - } - } - - - public void onPress() { - int x = getPointer().x(); - int y = (int)(getPointer().y()-pos)%itemHeight; - boolean withinSlider = within(x, y, sliderX, sliderY, sliderWidth, sliderHeight); - dragMode = withinSlider ? 2:1; - if (dragMode==2) { - dragIndex = getIndex(); - float min = f(items.get(dragIndex).get("sliderValueMin")); - float max = f(items.get(dragIndex).get("sliderValueMax")); - float val = constrain(map(getPointer().x()-sliderX, 0, sliderWidth, min, max), min, max); - items.get(dragIndex).put("sliderValue", val); - setValue(dragIndex); - } - updateMenu = true; - } - - public void onDrag() { - switch(dragMode) { - case(1): // drag and scroll the list - npos += getPointer().dy() * 2; - updateMenu = true; - break; - case(2): // drag slider - float min = f(items.get(dragIndex).get("sliderValueMin")); - float max = f(items.get(dragIndex).get("sliderValueMax")); - float val = constrain(map(getPointer().x()-sliderX, 0, sliderWidth, min, max), min, max); - items.get(dragIndex).put("sliderValue", val); - setValue(dragIndex); - updateMenu = true; - break; - } - } - - public void onScroll(int n) { - npos += ( n * 4 ); - updateMenu = true; - } - - void addItem(Map m) { - items.add(m); - updateMenu = true; - } - - Map getItem(int theIndex) { - return items.get(theIndex); - } - - private int getIndex() { - int len = itemHeight * items.size(); - int index = int( map( getPointer().y() - pos, 0, len, 0, items.size() ) ) ; - return index; - } -} - -public static float f( Object o ) { - return ( o instanceof Number ) ? ( ( Number ) o ).floatValue( ) : Float.MIN_VALUE; -} - -public static boolean within(int theX, int theY, int theX1, int theY1, int theW1, int theH1) { - return (theX>theX1 && theXtheY1 && theY midimapper = new HashMap(); - -void setup() { - - size( 600, 400 ); - - cp5 = new ControlP5( this ); - - cp5.begin(cp5.addTab("a")); - cp5.addSlider("a-1").setPosition(20, 120).setSize(200, 20); - cp5.addSlider("a-2").setPosition(20, 160).setSize(200, 20); - cp5.addSlider("a-3").setPosition(20, 200).setSize(200, 20); - cp5.addToggle("a-4").setPosition(280, 120).setSize(100, 20); - cp5.addButton("a-5").setPosition(280, 160).setSize(100, 20); - cp5.addBang("a-6").setPosition(280, 200).setSize(100, 20); - cp5.end(); - - cp5.begin(cp5.addTab("b")); - cp5.addSlider("b-1").setPosition(20, 120).setSize(200, 20); - cp5.addSlider("b-2").setPosition(20, 160).setSize(200, 20); - cp5.addSlider("b-3").setPosition(20, 200).setSize(200, 20); - cp5.end(); - - final String device = "SLIDER/KNOB"; - - //midimapper.clear(); - - midimapper.put( ref( device, 0 ), "a-1" ); - midimapper.put( ref( device, 1 ), "a-2" ); - midimapper.put( ref( device, 2 ), "a-3" ); - midimapper.put( ref( device, 32 ), "a-4" ); - midimapper.put( ref( device, 48 ), "a-5" ); - midimapper.put( ref( device, 64 ), "a-6" ); - - midimapper.put( ref( device, 16 ), "b-1" ); - midimapper.put( ref( device, 17 ), "b-2" ); - midimapper.put( ref( device, 18 ), "b-3" ); - - boolean DEBUG = false; - - if (DEBUG) { - new MidiSimple( device ); - } - else { - new MidiSimple( device , new Receiver() { - - @Override public void send( MidiMessage msg, long timeStamp ) { - - byte[] b = msg.getMessage(); - - if ( b[ 0 ] != -48 ) { - - Object index = ( midimapper.get( ref( device , b[ 1 ] ) ) ); - - if ( index != null ) { - - Controller c = cp5.getController(index.toString()); - if (c instanceof Slider ) { - float min = c.getMin(); - float max = c.getMax(); - c.setValue(map(b[ 2 ], 0, 127, min, max) ); - } else if ( c instanceof Button ) { - if ( b[ 2 ] > 0 ) { - c.setValue( c.getValue( ) ); - c.setColorBackground( 0xff08a2cf ); - } else { - c.setColorBackground( 0xff003652 ); - } - } else if ( c instanceof Bang ) { - if ( b[ 2 ] > 0 ) { - c.setValue( c.getValue( ) ); - c.setColorForeground( 0xff08a2cf ); - } else { - c.setColorForeground( 0xff00698c ); - } - } else if ( c instanceof Toggle ) { - if ( b[ 2 ] > 0 ) { - ( ( Toggle ) c ).toggle( ); - } - } - } - } - } - - @Override public void close( ) { - } - } - ); - } -} - - -String ref(String theDevice, int theIndex) { - return theDevice+"-"+theIndex; -} - - -void draw() { - background( 0 ); -} - - diff --git a/OpenBCI_GUI/libraries/controlP5/examples/experimental/MidiMapper/MidiSimple.java b/OpenBCI_GUI/libraries/controlP5/examples/experimental/MidiMapper/MidiSimple.java deleted file mode 100644 index f23252f..0000000 --- a/OpenBCI_GUI/libraries/controlP5/examples/experimental/MidiMapper/MidiSimple.java +++ /dev/null @@ -1,107 +0,0 @@ -import java.util.HashMap; -import java.util.Map; - -import javax.sound.midi.MidiDevice; -import javax.sound.midi.MidiMessage; -import javax.sound.midi.MidiSystem; -import javax.sound.midi.MidiUnavailableException; -import javax.sound.midi.Receiver; -import javax.sound.midi.Transmitter; - -public class MidiSimple { - - public MidiSimple( String theDeviceName , Receiver theReceiver ) { - - MidiDevice.Info[] aInfos = MidiSystem.getMidiDeviceInfo(); - for ( int i = 0; i < aInfos.length; i++ ) { - try { - MidiDevice device = MidiSystem.getMidiDevice( aInfos[ i ] ); - boolean bAllowsInput = ( device.getMaxTransmitters() != 0 ); - boolean bAllowsOutput = ( device.getMaxReceivers() != 0 ); - System.out.println( "" + i + " " + ( bAllowsInput ? "IN " : " " ) + ( bAllowsOutput ? "OUT " : " " ) + aInfos[ i ].getName() + ", " + aInfos[ i ].getVendor() + ", " - + aInfos[ i ].getVersion() + ", " + aInfos[ i ].getDescription() ); - } - catch ( MidiUnavailableException e ) { - // device is obviously not available... - // out(e); - } - } - - try { - MidiDevice device; - device = MidiSystem.getMidiDevice( getMidiDeviceInfo( theDeviceName, false ) ); - device.open(); - Transmitter conTrans = device.getTransmitter(); - conTrans.setReceiver( theReceiver ); - } - catch ( MidiUnavailableException e ) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (NullPointerException e) { - System.out.println("No Midi device ( "+theDeviceName+" ) is available."); - } - - } - - public MidiSimple( String theDeviceName ) { - new MidiSimple(theDeviceName , new MidiInputReceiver( theDeviceName ) ); - } - - - public MidiDevice.Info getMidiDeviceInfo( String strDeviceName, boolean bForOutput ) { - MidiDevice.Info[] aInfos = MidiSystem.getMidiDeviceInfo(); - for ( int i = 0; i < aInfos.length; i++ ) { - if ( aInfos[ i ].getName().equals( strDeviceName ) ) { - try { - MidiDevice device = MidiSystem.getMidiDevice( aInfos[ i ] ); - boolean bAllowsInput = ( device.getMaxTransmitters() != 0 ); - boolean bAllowsOutput = ( device.getMaxReceivers() != 0 ); - if ( ( bAllowsOutput && bForOutput ) || ( bAllowsInput && !bForOutput ) ) { - return aInfos[ i ]; - } - } - catch ( MidiUnavailableException e ) { - // TODO: - } - } - } - return null; - } - - class MidiInputReceiver implements Receiver { - public String name; - Map< Byte, String > commandMap = new HashMap< Byte, String >(); - - public MidiInputReceiver( String name ) { - this.name = name; - commandMap.put( ( byte ) -112, "Note On" ); - commandMap.put( ( byte ) -128, "Note Off" ); - commandMap.put( ( byte ) -48, "Channel Pressure" ); - commandMap.put( ( byte ) -80, "Continuous Controller" ); - } - - public void send( MidiMessage msg, long timeStamp ) { - System.out.println( "midi received (" + name + ")" ); - System.out.println( "Timestamp: " + timeStamp ); - byte[] b = msg.getMessage(); - - if ( b[ 0 ] != -48 ) { - // System.out.println("Message length: " + msg.getLength()); - System.out.println( "Note command: " + commandMap.get( b[ 0 ] ) ); - System.out.println( "Which note: " + b[ 1 ] ); - System.out.println( "Note pressure: " + b[ 2 ] ); - System.out.println( "---------------------" ); - } - else { - // System.out.println("Message length: " + msg.getLength()); - System.out.println( "Note command: " + commandMap.get( b[ 0 ] ) ); - System.out.println( "Note Pressure: " + b[ 1 ] ); - System.out.println( "---------------------" ); - } - } - - public void close( ) { - } - } -} - diff --git a/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5AutoDetectFields/ControlP5AutoDetectFields.pde b/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5AutoDetectFields/ControlP5AutoDetectFields.pde deleted file mode 100644 index bd405bb..0000000 --- a/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5AutoDetectFields/ControlP5AutoDetectFields.pde +++ /dev/null @@ -1,58 +0,0 @@ -/** - * ControlP5 Autodetect Fields - * - * test sketch, controller values will automatically be set - * to its corresponding sketch fields. - * - * by Andreas Schlegel, 2011 - * www.sojamo.de/libraries/controlp5 - * - */ - - -import controlP5.*; - -int s1 = 50; -int s2 = 50; - -int nb1 = 50; -int nb2 = 50; - -int k1 = 50; -int k2 = 50; - -boolean t1 = false; -boolean t2 = false; - -int r1 = 20; -int r2 = 50; - -void setup() { - size(400,400); - ControlP5 cp5 = new ControlP5(this); - cp5.addSlider("s1",10,150,10,10,100,15).setLabel("50"); - cp5.addSlider("s2",10,150,20,150,10,100,15).setLabel("20"); - - cp5.addNumberbox("nb1",10,50,100,15).setLabel("50"); - cp5.addNumberbox("nb2",20,150,50,100,15).setLabel("20"); - - cp5.addKnob("k1",10,150,10,150,50).setLabel("50"); - cp5.addKnob("k2",10,150,20,150,150,50).setLabel("20"); - - cp5.addToggle("t1",10,240,100,15).setLabel("false"); - cp5.addToggle("t2",true,150,240,100,15).setLabel("true"); - - cp5.addButton("b1",50,10,280,100,15).setLabel("50"); - cp5.addButton("b2",20,150,280,100,15).setLabel("20"); - - cp5.addRange("r1",10,150,r1,r2,10,320,100,15).setLabel("50"); - -} - -void draw() { - background(0); -} - -void controlEvent(ControlEvent c) { - println(c.getValue()); -} diff --git a/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5ControllerInsideClass/ControlP5ControllerInsideClass.pde b/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5ControllerInsideClass/ControlP5ControllerInsideClass.pde deleted file mode 100644 index 8590f82..0000000 --- a/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5ControllerInsideClass/ControlP5ControllerInsideClass.pde +++ /dev/null @@ -1,33 +0,0 @@ -import controlP5.*; - -ControlP5 cp5; -Test t; -void setup() { - size(400,400); - cp5 = new ControlP5( this ); - t = new Test( "test" ); -} - -void draw() { - background(20); - println( t.value ); -} - -class Test { - - int value; - - Test( String thePrefix ) { - cp5.addSlider( "value-"+thePrefix ) - .setRange( 0, 255 ) - .plugTo( this, "setValue" ) - .setValue( 127 ) - .setLabel("value") - ; - } - - void setValue(int theValue) { - value = theValue; - } -} - diff --git a/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5canvasDrawIntoCanvas/ControlP5canvasDrawIntoCanvas.pde b/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5canvasDrawIntoCanvas/ControlP5canvasDrawIntoCanvas.pde deleted file mode 100644 index 5b9f962..0000000 --- a/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5canvasDrawIntoCanvas/ControlP5canvasDrawIntoCanvas.pde +++ /dev/null @@ -1,72 +0,0 @@ -/** - * ControlP5 DrawIntoCanvas - * - * this example demonstrates how to draw into a Canvas. - * Click and drag the mouse to show and draw into the Canvas. - * - * by Andreas Schlegel, 2011 - * www.sojamo.de/libraries/controlp5 - * - */ - -import controlP5.*; - -ControlP5 cp5; - -Canvas cc; - -// your controlWindowCanvas class -class MyCanvas extends Canvas { - - boolean mousePressed; - int mouseX, mouseY; - public void update(PApplet theApplet) { - mousePressed = theApplet.mousePressed; - mouseX = theApplet.mouseX; - mouseY = theApplet.mouseY; - } - - public void draw(PGraphics theApplet) { - theApplet.background(255); - // a rectangle will be drawn if the mouse has been - // pressed inside the main sketch window. - // mousePressed here refers to the mousePressed - // variable of your main sketch - if(mousePressed) { - theApplet.fill(255,0,0); - theApplet.rect(10,10,100,100); - theApplet.fill(0); - theApplet.ellipse(mouseX,mouseY,20,20); - } - // will draw a rectangle into the controlWindow - // if the mouse has been pressed inside the controlWindow itself. - // theApplet.mousePressed here refers to the - // mousePressed variable of the controlWindow. - if(mousePressed) { - theApplet.fill(0); - theApplet.rect(10,10,100,100); - theApplet.fill(255,0,0); - theApplet.ellipse(mouseX,mouseY,20,20); - } - - } - -} - - -void setup() { - size(400,400); - frameRate(30); - cp5 = new ControlP5(this); - - cc = new MyCanvas(); - cc.pre(); - cp5.addCanvas(cc); - -} - -void draw(){ - background(0); -} - - diff --git a/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5chartsCombined/ControlP5chartsCombined.pde b/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5chartsCombined/ControlP5chartsCombined.pde deleted file mode 100644 index d8a0e79..0000000 --- a/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5chartsCombined/ControlP5chartsCombined.pde +++ /dev/null @@ -1,252 +0,0 @@ -/** -* ControlP5 ControlP5chartsCombined -* -* find a list of public methods available for the Chart Controller -* at the bottom of this sketch. -* -* by Andreas Schlegel, 2012 -* www.sojamo.de/libraries/controlp5 -* -*/ - - -import controlP5.*; - -ControlP5 cp5; - -Chart myChart; - -void setup() { - size(400, 700); - smooth(); - cp5 = new ControlP5(this); - cp5.printPublicMethodsFor(Chart.class); - myChart = cp5.addChart("hello") - .setPosition(50, 50) - .setSize(200, 200) - .setRange(-20, 20) - .setView(Chart.BAR) // use Chart.LINE, Chart.PIE, Chart.AREA, Chart.BAR_CENTERED - ; - - myChart.getColor().setBackground(color(255, 100)); - - - myChart.addDataSet("world"); - myChart.setColors("world", color(255,0,255),color(255,0,0)); - myChart.setData("world", new float[4]); - - myChart.setStrokeWeight(1.5); - - myChart.addDataSet("earth"); - myChart.setColors("earth", color(255), color(0, 255, 0)); - myChart.updateData("earth", 1, 2, 10, 3); - -} - - -void draw() { - background(0); - // unshift: add data from left to right (first in) - myChart.unshift("world", (sin(frameCount*0.01)*10)); - - // push: add data from right to left (last in) - myChart.push("earth", (sin(frameCount*0.1)*10)); -} - - - - - - - -/* -a list of all methods available for the Chart Controller -use ControlP5.printPublicMethodsFor(Chart.class); -to print the following list into the console. - -You can find further details about class Chart in the javadoc. - -Format: -ClassName : returnType methodName(parameter type) - - -controlP5.Chart : Chart addData(ChartData) -controlP5.Chart : Chart addData(ChartDataSet, float) -controlP5.Chart : Chart addData(String, ChartData) -controlP5.Chart : Chart addData(String, float) -controlP5.Chart : Chart addData(float) -controlP5.Chart : Chart addDataSet(String) -controlP5.Chart : Chart addFirst(String, float) -controlP5.Chart : Chart addFirst(float) -controlP5.Chart : Chart addLast(String, float) -controlP5.Chart : Chart addLast(float) -controlP5.Chart : Chart push(String, float) -controlP5.Chart : Chart push(float) -controlP5.Chart : Chart removeData(ChartData) -controlP5.Chart : Chart removeData(String, ChartData) -controlP5.Chart : Chart removeData(String, int) -controlP5.Chart : Chart removeData(int) -controlP5.Chart : Chart removeDataSet(String) -controlP5.Chart : Chart removeFirst() -controlP5.Chart : Chart removeFirst(String) -controlP5.Chart : Chart removeLast() -controlP5.Chart : Chart removeLast(String) -controlP5.Chart : Chart setData(String, int, ChartData) -controlP5.Chart : Chart setData(int, ChartData) -controlP5.Chart : Chart setDataSet(ChartDataSet) -controlP5.Chart : Chart setDataSet(String, ChartDataSet) -controlP5.Chart : Chart setRange(float, float) -controlP5.Chart : Chart setResolution(int) -controlP5.Chart : Chart setStrokeWeight(float) -controlP5.Chart : Chart setValue(float) -controlP5.Chart : Chart setView(int) -controlP5.Chart : Chart unshift(String, float) -controlP5.Chart : Chart unshift(float) -controlP5.Chart : ChartData getData(String, int) -controlP5.Chart : ChartDataSet getDataSet(String) -controlP5.Chart : LinkedHashMap getDataSet() -controlP5.Chart : String getInfo() -controlP5.Chart : String toString() -controlP5.Chart : float getStrokeWeight() -controlP5.Chart : float[] getValuesFrom(String) -controlP5.Chart : int getResolution() -controlP5.Chart : int size() -controlP5.Chart : void onEnter() -controlP5.Chart : void onLeave() -controlP5.Controller : CColor getColor() -controlP5.Controller : Chart addCallback(CallbackListener) -controlP5.Controller : Chart addListener(ControlListener) -controlP5.Controller : Chart addListenerFor(int, CallbackListener) -controlP5.Controller : Chart align(int, int, int, int) -controlP5.Controller : Chart bringToFront() -controlP5.Controller : Chart bringToFront(ControllerInterface) -controlP5.Controller : Chart hide() -controlP5.Controller : Chart linebreak() -controlP5.Controller : Chart listen(boolean) -controlP5.Controller : Chart lock() -controlP5.Controller : Chart onChange(CallbackListener) -controlP5.Controller : Chart onClick(CallbackListener) -controlP5.Controller : Chart onDoublePress(CallbackListener) -controlP5.Controller : Chart onDrag(CallbackListener) -controlP5.Controller : Chart onDraw(ControllerView) -controlP5.Controller : Chart onEndDrag(CallbackListener) -controlP5.Controller : Chart onEnter(CallbackListener) -controlP5.Controller : Chart onLeave(CallbackListener) -controlP5.Controller : Chart onMove(CallbackListener) -controlP5.Controller : Chart onPress(CallbackListener) -controlP5.Controller : Chart onRelease(CallbackListener) -controlP5.Controller : Chart onReleaseOutside(CallbackListener) -controlP5.Controller : Chart onStartDrag(CallbackListener) -controlP5.Controller : Chart onWheel(CallbackListener) -controlP5.Controller : Chart plugTo(Object) -controlP5.Controller : Chart plugTo(Object, String) -controlP5.Controller : Chart plugTo(Object[]) -controlP5.Controller : Chart plugTo(Object[], String) -controlP5.Controller : Chart registerProperty(String) -controlP5.Controller : Chart registerProperty(String, String) -controlP5.Controller : Chart registerTooltip(String) -controlP5.Controller : Chart removeBehavior() -controlP5.Controller : Chart removeCallback() -controlP5.Controller : Chart removeCallback(CallbackListener) -controlP5.Controller : Chart removeListener(ControlListener) -controlP5.Controller : Chart removeListenerFor(int, CallbackListener) -controlP5.Controller : Chart removeListenersFor(int) -controlP5.Controller : Chart removeProperty(String) -controlP5.Controller : Chart removeProperty(String, String) -controlP5.Controller : Chart setArrayValue(float[]) -controlP5.Controller : Chart setArrayValue(int, float) -controlP5.Controller : Chart setBehavior(ControlBehavior) -controlP5.Controller : Chart setBroadcast(boolean) -controlP5.Controller : Chart setCaptionLabel(String) -controlP5.Controller : Chart setColor(CColor) -controlP5.Controller : Chart setColorActive(int) -controlP5.Controller : Chart setColorBackground(int) -controlP5.Controller : Chart setColorCaptionLabel(int) -controlP5.Controller : Chart setColorForeground(int) -controlP5.Controller : Chart setColorLabel(int) -controlP5.Controller : Chart setColorValue(int) -controlP5.Controller : Chart setColorValueLabel(int) -controlP5.Controller : Chart setDecimalPrecision(int) -controlP5.Controller : Chart setDefaultValue(float) -controlP5.Controller : Chart setHeight(int) -controlP5.Controller : Chart setId(int) -controlP5.Controller : Chart setImage(PImage) -controlP5.Controller : Chart setImage(PImage, int) -controlP5.Controller : Chart setImages(PImage, PImage, PImage) -controlP5.Controller : Chart setImages(PImage, PImage, PImage, PImage) -controlP5.Controller : Chart setLabel(String) -controlP5.Controller : Chart setLabelVisible(boolean) -controlP5.Controller : Chart setLock(boolean) -controlP5.Controller : Chart setMax(float) -controlP5.Controller : Chart setMin(float) -controlP5.Controller : Chart setMouseOver(boolean) -controlP5.Controller : Chart setMoveable(boolean) -controlP5.Controller : Chart setPosition(float, float) -controlP5.Controller : Chart setPosition(float[]) -controlP5.Controller : Chart setSize(PImage) -controlP5.Controller : Chart setSize(int, int) -controlP5.Controller : Chart setStringValue(String) -controlP5.Controller : Chart setUpdate(boolean) -controlP5.Controller : Chart setValue(float) -controlP5.Controller : Chart setValueLabel(String) -controlP5.Controller : Chart setValueSelf(float) -controlP5.Controller : Chart setView(ControllerView) -controlP5.Controller : Chart setVisible(boolean) -controlP5.Controller : Chart setWidth(int) -controlP5.Controller : Chart show() -controlP5.Controller : Chart unlock() -controlP5.Controller : Chart unplugFrom(Object) -controlP5.Controller : Chart unplugFrom(Object[]) -controlP5.Controller : Chart unregisterTooltip() -controlP5.Controller : Chart update() -controlP5.Controller : Chart updateSize() -controlP5.Controller : ControlBehavior getBehavior() -controlP5.Controller : ControlWindow getControlWindow() -controlP5.Controller : ControlWindow getWindow() -controlP5.Controller : ControllerProperty getProperty(String) -controlP5.Controller : ControllerProperty getProperty(String, String) -controlP5.Controller : ControllerView getView() -controlP5.Controller : Label getCaptionLabel() -controlP5.Controller : Label getValueLabel() -controlP5.Controller : List getControllerPlugList() -controlP5.Controller : Pointer getPointer() -controlP5.Controller : String getAddress() -controlP5.Controller : String getInfo() -controlP5.Controller : String getName() -controlP5.Controller : String getStringValue() -controlP5.Controller : String toString() -controlP5.Controller : Tab getTab() -controlP5.Controller : boolean isActive() -controlP5.Controller : boolean isBroadcast() -controlP5.Controller : boolean isInside() -controlP5.Controller : boolean isLabelVisible() -controlP5.Controller : boolean isListening() -controlP5.Controller : boolean isLock() -controlP5.Controller : boolean isMouseOver() -controlP5.Controller : boolean isMousePressed() -controlP5.Controller : boolean isMoveable() -controlP5.Controller : boolean isUpdate() -controlP5.Controller : boolean isVisible() -controlP5.Controller : float getArrayValue(int) -controlP5.Controller : float getDefaultValue() -controlP5.Controller : float getMax() -controlP5.Controller : float getMin() -controlP5.Controller : float getValue() -controlP5.Controller : float[] getAbsolutePosition() -controlP5.Controller : float[] getArrayValue() -controlP5.Controller : float[] getPosition() -controlP5.Controller : int getDecimalPrecision() -controlP5.Controller : int getHeight() -controlP5.Controller : int getId() -controlP5.Controller : int getWidth() -controlP5.Controller : int listenerSize() -controlP5.Controller : void remove() -controlP5.Controller : void setView(ControllerView, int) -java.lang.Object : String toString() -java.lang.Object : boolean equals(Object) - -created: 2014/08/16 19:11:34 - -*/ - - diff --git a/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5console/ControlP5console.pde b/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5console/ControlP5console.pde deleted file mode 100644 index c5b5f38..0000000 --- a/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5console/ControlP5console.pde +++ /dev/null @@ -1,71 +0,0 @@ -/** - * ControlP5 Println - * - * - * a console like textarea which captures the output from the System.out stream - * - * by Andreas Schlegel, 2012 - * www.sojamo.de/libraries/controlp5 - * - */ - -import controlP5.*; - -ControlP5 cp5; - -Textarea myTextarea; - -int c = 0; - -Println console; - -void setup() { - size(700, 400); - cp5 = new ControlP5(this); - cp5.enableShortcuts(); - frameRate(50); - myTextarea = cp5.addTextarea("txt") - .setPosition(100, 100) - .setSize(200, 200) - .setFont(createFont("", 10)) - .setLineHeight(14) - .setColor(color(200)) - .setColorBackground(color(0, 100)) - .setColorForeground(color(255, 100)); - ; - - console = cp5.addConsole(myTextarea);// -} - - -void draw() { - background(128); - noStroke(); - ellipseMode(CENTER); - float n = sin(frameCount*0.01)*300; - fill(110, 255,220); - ellipse(width/2, height/2, n , n); - - println(frameCount+"\t"+String.format("%.2f", frameRate)+"\t"+String.format("%.2f", n)); -} - -void keyPressed() { - switch(key) { - case('1'): - console.pause(); - break; - case('2'): - console.play(); - break; - case('3'): - console.setMax(8); - break; - case('4'): - console.setMax(-1); - break; - case('5'): - console.clear(); - break; - } -} - diff --git a/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5controllerOnTop3D/ControlP5controllerOnTop3D.pde b/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5controllerOnTop3D/ControlP5controllerOnTop3D.pde deleted file mode 100644 index cd28d9d..0000000 --- a/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5controllerOnTop3D/ControlP5controllerOnTop3D.pde +++ /dev/null @@ -1,148 +0,0 @@ -/** - * ControlP5 Controller on top of 3D - * demonstrates how to use controlP5 controllers on top of a - * OpenGL 3D scene. - * - * by Andreas Schlegel, 2011 - * www.sojamo.de/libraries/controlP5 - * - */ - - - -import controlP5.*; -import processing.opengl.*; - -ControlP5 cp5; -ControlGroup messageBox; -int messageBoxResult = -1; -String messageBoxString = ""; -float t; - -void setup() { - size(640,480,P3D); - cp5 = new ControlP5(this); - noStroke(); - createMessageBox(); - Button b = cp5.addButton("toggleBox",1,20,20,100,20); - b.setLabel("Toggle Box"); - textFont(createFont("",30)); -} - - -void draw() { - hint(ENABLE_DEPTH_TEST); - pushMatrix(); - if(messageBox.isVisible()) { - background(128); - } else { - background(0); - fill(255); - text(messageBoxString,20,height-40); - } - - translate(width/2,height/2,mouseX); - rotateY(t+=0.1); - fill(255); - rect(-50,-50,100,100); - popMatrix(); - hint(DISABLE_DEPTH_TEST); - // in case yo uare using the camera or you have - // changed the default camera setting, reset the camera - // to default by uncommenting the following line. - // camera(); -} - - - -void toggleBox(int theValue) { - if(messageBox.isVisible()) { - messageBox.hide(); - } else { - messageBox.show(); - } -} - - -void createMessageBox() { - // create a group to store the messageBox elements - messageBox = cp5.addGroup("messageBox",width/2 - 150,100,300); - messageBox.setBackgroundHeight(120); - messageBox.setBackgroundColor(color(0,100)); - messageBox.hideBar(); - - // add a TextLabel to the messageBox. - Textlabel l = cp5.addTextlabel("messageBoxLabel","Some MessageBox text goes here.",20,20); - l.moveTo(messageBox); - - // add a textfield-controller with named-id inputbox - // this controller will be linked to function inputbox() below. - Textfield f = cp5.addTextfield("inputbox",20,36,260,20); - f.getCaptionLabel().setVisible(false); - f.moveTo(messageBox); - f.setColorForeground(color(20)); - f.setColorBackground(color(20)); - f.setColorActive(color(100)); - // add the OK button to the messageBox. - // the name of the button corresponds to function buttonOK - // below and will be triggered when pressing the button. - Button b1 = cp5.addButton("buttonOK",0,65,80,80,24); - b1.moveTo(messageBox); - b1.setColorBackground(color(40)); - b1.setColorActive(color(20)); - // by default setValue would trigger function buttonOK, - // therefore we disable the broadcasting before setting - // the value and enable broadcasting again afterwards. - // same applies to the cancel button below. - b1.setBroadcast(false); - b1.setValue(1); - b1.setBroadcast(true); - b1.setCaptionLabel("OK"); - // centering of a label needs to be done manually - // with marginTop and marginLeft - //b1.captionLabel().style().marginTop = -2; - //b1.captionLabel().style().marginLeft = 26; - - // add the Cancel button to the messageBox. - // the name of the button corresponds to function buttonCancel - // below and will be triggered when pressing the button. - Button b2 = cp5.addButton("buttonCancel",0,155,80,80,24); - b2.moveTo(messageBox); - b2.setBroadcast(false); - b2.setValue(0); - b2.setBroadcast(true); - b2.setCaptionLabel("Cancel"); - b2.setColorBackground(color(40)); - b2.setColorActive(color(20)); - //b2.captionLabel().toUpperCase(false); - // centering of a label needs to be done manually - // with marginTop and marginLeft - //b2.captionLabel().style().marginTop = -2; - //b2.captionLabel().style().marginLeft = 16; -} - -// function buttonOK will be triggered when pressing -// the OK button of the messageBox. -void buttonOK(int theValue) { - println("a button event from button OK."); - messageBoxString = ((Textfield)cp5.getController("inputbox")).getText(); - messageBoxResult = theValue; - messageBox.hide(); -} - - -// function buttonCancel will be triggered when pressing -// the Cancel button of the messageBox. -void buttonCancel(int theValue) { - println("a button event from button Cancel."); - messageBoxResult = theValue; - messageBox.hide(); -} - -// inputbox is called whenever RETURN has been pressed -// in textfield-controller inputbox -void inputbox(String theString) { - println("got something from the inputbox : "+theString); - messageBoxString = theString; - messageBox.hide(); -} diff --git a/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5frame/ControlP5frame.pde b/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5frame/ControlP5frame.pde deleted file mode 100644 index 4bc9a82..0000000 --- a/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5frame/ControlP5frame.pde +++ /dev/null @@ -1,112 +0,0 @@ -/** - * ControlP5 Controlframe - * - * this example shows you how to create separate window to - * display and use controllers with processing 3 - * - * by Andreas Schlegel, 2016 - * www.sojamo.de/libraries/controlp5 - * - */ - -import controlP5.*; - -ControlFrame cf; - -float speed; -float pos; -float c0, c1, c2, c3; -boolean auto; - -void settings() { - size(400, 400, P3D); -} - -void setup() { - cf = new ControlFrame(this, 400, 800, "Controls"); - surface.setLocation(420, 10); - noStroke(); -} - -void draw() { - if (auto) pos += speed; - background(0); - translate(width/2, height/2); - rotateY(pos); - lights(); - fill(c0, c1, c2, c3); - box(100); -} - - - - -class ControlFrame extends PApplet { - - int w, h; - PApplet parent; - ControlP5 cp5; - - public ControlFrame(PApplet _parent, int _w, int _h, String _name) { - super(); - parent = _parent; - w=_w; - h=_h; - PApplet.runSketch(new String[]{this.getClass().getName()}, this); - } - - public void settings() { - size(w, h); - } - - public void setup() { - surface.setLocation(10, 10); - cp5 = new ControlP5(this); - - cp5.addToggle("auto") - .plugTo(parent, "auto") - .setPosition(10, 70) - .setSize(50, 50) - .setValue(true); - - cp5.addKnob("blend") - .plugTo(parent, "c3") - .setPosition(100, 300) - .setSize(200, 200) - .setRange(0, 255) - .setValue(200); - - cp5.addNumberbox("color-red") - .plugTo(parent, "c0") - .setRange(0, 255) - .setValue(255) - .setPosition(100, 10) - .setSize(100, 20); - - cp5.addNumberbox("color-green") - .plugTo(parent, "c1") - .setRange(0, 255) - .setValue(128) - .setPosition(100, 70) - .setSize(100, 20); - - cp5.addNumberbox("color-blue") - .plugTo(parent, "c2") - .setRange(0, 255) - .setValue(0) - .setPosition(100, 130) - .setSize(100, 20); - - cp5.addSlider("speed") - .plugTo(parent, "speed") - .setRange(0, 0.1) - .setValue(0.01) - .setPosition(100, 240) - .setSize(200, 30); - - } - - void draw() { - background(190); - } -} \ No newline at end of file diff --git a/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5frameRate/ControlP5frameRate.pde b/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5frameRate/ControlP5frameRate.pde deleted file mode 100644 index 85aed00..0000000 --- a/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5frameRate/ControlP5frameRate.pde +++ /dev/null @@ -1,199 +0,0 @@ -/** - * ControlP5 FrameRate - * - * - * uses a textlabel to display the current or average - * framerate of the sketch. - * - * by Andreas Schlegel, 2012 - * www.sojamo.de/libraries/controlp5 - * - */ - - -import controlP5.*; - -ControlP5 cp5; - -void setup() { - size(400,500); - frameRate(60); - cp5 = new ControlP5(this); - cp5.addFrameRate().setInterval(10).setPosition(0,height - 10); - -} - -void draw() { - background(129); -} - -/* -a list of all methods available for the FrameRate Controller -use ControlP5.printPublicMethodsFor(FrameRate.class); -to print the following list into the console. - -You can find further details about class FrameRate in the javadoc. - -Format: -ClassName : returnType methodName(parameter type) - - -controlP5.Controller : CColor getColor() -controlP5.Controller : ControlBehavior getBehavior() -controlP5.Controller : ControlWindow getControlWindow() -controlP5.Controller : ControlWindow getWindow() -controlP5.Controller : ControllerProperty getProperty(String) -controlP5.Controller : ControllerProperty getProperty(String, String) -controlP5.Controller : ControllerView getView() -controlP5.Controller : FrameRate addCallback(CallbackListener) -controlP5.Controller : FrameRate addListener(ControlListener) -controlP5.Controller : FrameRate addListenerFor(int, CallbackListener) -controlP5.Controller : FrameRate align(int, int, int, int) -controlP5.Controller : FrameRate bringToFront() -controlP5.Controller : FrameRate bringToFront(ControllerInterface) -controlP5.Controller : FrameRate hide() -controlP5.Controller : FrameRate linebreak() -controlP5.Controller : FrameRate listen(boolean) -controlP5.Controller : FrameRate lock() -controlP5.Controller : FrameRate onChange(CallbackListener) -controlP5.Controller : FrameRate onClick(CallbackListener) -controlP5.Controller : FrameRate onDoublePress(CallbackListener) -controlP5.Controller : FrameRate onDrag(CallbackListener) -controlP5.Controller : FrameRate onDraw(ControllerView) -controlP5.Controller : FrameRate onEndDrag(CallbackListener) -controlP5.Controller : FrameRate onEnter(CallbackListener) -controlP5.Controller : FrameRate onLeave(CallbackListener) -controlP5.Controller : FrameRate onMove(CallbackListener) -controlP5.Controller : FrameRate onPress(CallbackListener) -controlP5.Controller : FrameRate onRelease(CallbackListener) -controlP5.Controller : FrameRate onReleaseOutside(CallbackListener) -controlP5.Controller : FrameRate onStartDrag(CallbackListener) -controlP5.Controller : FrameRate onWheel(CallbackListener) -controlP5.Controller : FrameRate plugTo(Object) -controlP5.Controller : FrameRate plugTo(Object, String) -controlP5.Controller : FrameRate plugTo(Object[]) -controlP5.Controller : FrameRate plugTo(Object[], String) -controlP5.Controller : FrameRate registerProperty(String) -controlP5.Controller : FrameRate registerProperty(String, String) -controlP5.Controller : FrameRate registerTooltip(String) -controlP5.Controller : FrameRate removeBehavior() -controlP5.Controller : FrameRate removeCallback() -controlP5.Controller : FrameRate removeCallback(CallbackListener) -controlP5.Controller : FrameRate removeListener(ControlListener) -controlP5.Controller : FrameRate removeListenerFor(int, CallbackListener) -controlP5.Controller : FrameRate removeListenersFor(int) -controlP5.Controller : FrameRate removeProperty(String) -controlP5.Controller : FrameRate removeProperty(String, String) -controlP5.Controller : FrameRate setArrayValue(float[]) -controlP5.Controller : FrameRate setArrayValue(int, float) -controlP5.Controller : FrameRate setBehavior(ControlBehavior) -controlP5.Controller : FrameRate setBroadcast(boolean) -controlP5.Controller : FrameRate setCaptionLabel(String) -controlP5.Controller : FrameRate setColor(CColor) -controlP5.Controller : FrameRate setColorActive(int) -controlP5.Controller : FrameRate setColorBackground(int) -controlP5.Controller : FrameRate setColorCaptionLabel(int) -controlP5.Controller : FrameRate setColorForeground(int) -controlP5.Controller : FrameRate setColorLabel(int) -controlP5.Controller : FrameRate setColorValue(int) -controlP5.Controller : FrameRate setColorValueLabel(int) -controlP5.Controller : FrameRate setDecimalPrecision(int) -controlP5.Controller : FrameRate setDefaultValue(float) -controlP5.Controller : FrameRate setHeight(int) -controlP5.Controller : FrameRate setId(int) -controlP5.Controller : FrameRate setImage(PImage) -controlP5.Controller : FrameRate setImage(PImage, int) -controlP5.Controller : FrameRate setImages(PImage, PImage, PImage) -controlP5.Controller : FrameRate setImages(PImage, PImage, PImage, PImage) -controlP5.Controller : FrameRate setLabel(String) -controlP5.Controller : FrameRate setLabelVisible(boolean) -controlP5.Controller : FrameRate setLock(boolean) -controlP5.Controller : FrameRate setMax(float) -controlP5.Controller : FrameRate setMin(float) -controlP5.Controller : FrameRate setMouseOver(boolean) -controlP5.Controller : FrameRate setMoveable(boolean) -controlP5.Controller : FrameRate setPosition(float, float) -controlP5.Controller : FrameRate setPosition(float[]) -controlP5.Controller : FrameRate setSize(PImage) -controlP5.Controller : FrameRate setSize(int, int) -controlP5.Controller : FrameRate setStringValue(String) -controlP5.Controller : FrameRate setUpdate(boolean) -controlP5.Controller : FrameRate setValue(float) -controlP5.Controller : FrameRate setValueLabel(String) -controlP5.Controller : FrameRate setValueSelf(float) -controlP5.Controller : FrameRate setView(ControllerView) -controlP5.Controller : FrameRate setVisible(boolean) -controlP5.Controller : FrameRate setWidth(int) -controlP5.Controller : FrameRate show() -controlP5.Controller : FrameRate unlock() -controlP5.Controller : FrameRate unplugFrom(Object) -controlP5.Controller : FrameRate unplugFrom(Object[]) -controlP5.Controller : FrameRate unregisterTooltip() -controlP5.Controller : FrameRate update() -controlP5.Controller : FrameRate updateSize() -controlP5.Controller : Label getCaptionLabel() -controlP5.Controller : Label getValueLabel() -controlP5.Controller : List getControllerPlugList() -controlP5.Controller : Pointer getPointer() -controlP5.Controller : String getAddress() -controlP5.Controller : String getInfo() -controlP5.Controller : String getName() -controlP5.Controller : String getStringValue() -controlP5.Controller : String toString() -controlP5.Controller : Tab getTab() -controlP5.Controller : boolean isActive() -controlP5.Controller : boolean isBroadcast() -controlP5.Controller : boolean isInside() -controlP5.Controller : boolean isLabelVisible() -controlP5.Controller : boolean isListening() -controlP5.Controller : boolean isLock() -controlP5.Controller : boolean isMouseOver() -controlP5.Controller : boolean isMousePressed() -controlP5.Controller : boolean isMoveable() -controlP5.Controller : boolean isUpdate() -controlP5.Controller : boolean isVisible() -controlP5.Controller : float getArrayValue(int) -controlP5.Controller : float getDefaultValue() -controlP5.Controller : float getMax() -controlP5.Controller : float getMin() -controlP5.Controller : float getValue() -controlP5.Controller : float[] getAbsolutePosition() -controlP5.Controller : float[] getArrayValue() -controlP5.Controller : float[] getPosition() -controlP5.Controller : int getDecimalPrecision() -controlP5.Controller : int getHeight() -controlP5.Controller : int getId() -controlP5.Controller : int getWidth() -controlP5.Controller : int listenerSize() -controlP5.Controller : void remove() -controlP5.Controller : void setView(ControllerView, int) -controlP5.FrameRate : FrameRate setInterval(int) -controlP5.FrameRate : void draw(PGraphics) -controlP5.Textlabel : ControllerStyle getStyle() -controlP5.Textlabel : Label get() -controlP5.Textlabel : Textlabel append(String, int) -controlP5.Textlabel : Textlabel setColor(int) -controlP5.Textlabel : Textlabel setFont(ControlFont) -controlP5.Textlabel : Textlabel setFont(PFont) -controlP5.Textlabel : Textlabel setHeight(int) -controlP5.Textlabel : Textlabel setLetterSpacing(int) -controlP5.Textlabel : Textlabel setLineHeight(int) -controlP5.Textlabel : Textlabel setMultiline(boolean) -controlP5.Textlabel : Textlabel setStringValue(String) -controlP5.Textlabel : Textlabel setText(String) -controlP5.Textlabel : Textlabel setValue(String) -controlP5.Textlabel : Textlabel setValue(float) -controlP5.Textlabel : Textlabel setWidth(int) -controlP5.Textlabel : int getLineHeight() -controlP5.Textlabel : void draw() -controlP5.Textlabel : void draw(PApplet) -controlP5.Textlabel : void draw(PGraphics) -controlP5.Textlabel : void draw(int, int) -java.lang.Object : String toString() -java.lang.Object : boolean equals(Object) - -created: 2015/03/24 12:22:02 - -*/ - - diff --git a/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5frames/ControlP5frames.pde b/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5frames/ControlP5frames.pde deleted file mode 100644 index 1c1979d..0000000 --- a/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5frames/ControlP5frames.pde +++ /dev/null @@ -1,134 +0,0 @@ - -import java.awt.*; -import java.awt.event.*; -import controlP5.*; - -private ControlP5 cp5; - -ControlFrame cf1, cf2; - -int bgColor; - -void setup() { - size(400, 400 ,P3D ); - /* add a controlP5 instance for the main sketch window (not required for other ControlFrames to work) */ - cp5 = new ControlP5( this ); - cp5.addSlider( "s2" ); - - - /* Add a controlframe */ - - cf1 = addControlFrame( "hello", 200, 200, 20, 20, color( 100 ) ); - - // add a slider with an EventListener. When dragging the slider, - // variable bgColor will change accordingly. - cf1.control().addSlider( "s1" ).setRange( 0, 255 ).addListener( new ControlListener() { - public void controlEvent( ControlEvent ev ) { - bgColor = color( ev.getValue() ); - } - } - ); - - - /* Add a second controlframe */ - - cf2 = addControlFrame( "world", 200, 200, 20, 240, color( 100 ) ); - - // add a button with an EventListener. When releasing the button, - // variable bgColor will change to color( 255 ); - cf2.control().addButton( "b1" ).addListener( new ControlListener() { - public void controlEvent( ControlEvent ev ) { - bgColor = color( 255 ); - } - } - ); - - cf2.control().addButton( "b2" ).addListener( new ControlListener() { - public void controlEvent(ControlEvent ev) { - bgColor = color( random( 255 ), random( 255 ), random( 255 ) ); - } - } - ); -} - -void draw() { - background( bgColor ); -} - - -/* no changes required below */ - - -ControlFrame addControlFrame(String theName, int theWidth, int theHeight) { - return addControlFrame(theName, theWidth, theHeight, 100, 100, color( 0 ) ); -} - -ControlFrame addControlFrame(String theName, int theWidth, int theHeight, int theX, int theY, int theColor ) { - final Frame f = new Frame( theName ); - final ControlFrame p = new ControlFrame( this, theWidth, theHeight, theColor ); - - f.add( p ); - p.init(); - f.setTitle(theName); - f.setSize( p.w, p.h ); - f.setLocation( theX, theY ); - f.addWindowListener( new WindowAdapter() { - @Override - public void windowClosing(WindowEvent we) { - p.dispose(); - f.dispose(); - } - } - ); - f.setResizable( false ); - f.setVisible( true ); - // sleep a little bit to allow p to call setup. - // otherwise a nullpointerexception might be caused. - try { - Thread.sleep( 100 ); - } - catch(Exception e) { - } - return p; -} - - -// the ControlFrame class extends PApplet, so we -// are creating a new processing applet inside a -// new frame with a controlP5 object loaded -public class ControlFrame extends PApplet { - - int w, h; - - int bg; - - public void setup() { - size(w, h); - frameRate(25); - cp5 = new ControlP5( this ); - } - - public void draw() { - background( bg ); - } - - private ControlFrame() { - } - - public ControlFrame(Object theParent, int theWidth, int theHeight, int theColor) { - parent = theParent; - w = theWidth; - h = theHeight; - bg = theColor; - } - - - public ControlP5 control() { - return this.cp5; - } - - ControlP5 cp5; - - Object parent; -} - diff --git a/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5groupCanvas/ControlP5groupCanvas.pde b/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5groupCanvas/ControlP5groupCanvas.pde deleted file mode 100644 index 73c2bb7..0000000 --- a/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5groupCanvas/ControlP5groupCanvas.pde +++ /dev/null @@ -1,51 +0,0 @@ -/** - * ControlP5 Canvas - * - * by andreas schlegel, 2011 - * www.sojamo.de/libraries/controlp5 - * - */ - -import controlP5.*; - -ControlP5 cp5; - -void setup() { - size(400,600); - smooth(); - - cp5 = new ControlP5(this); - cp5.addGroup("myGroup") - .setLabel("Testing Canvas") - .setPosition(100,200) - .setWidth(200) - .addCanvas(new TestCanvas()) - ; -} - -void draw() { - background(0); -} - - -class TestCanvas extends Canvas { - - float n; - float a; - - public void setup(PGraphics pg) { - println("starting a test canvas."); - n = 1; - } - public void draw(PGraphics pg) { - n += 0.01; - pg.ellipseMode(CENTER); - pg.fill(lerpColor(color(0,100,200),color(0,200,100),map(sin(n),-1,1,0,1))); - pg.rect(0,0,200,200); - pg.fill(255,150); - a+=0.01; - ellipse(100,100,abs(sin(a)*150),abs(sin(a)*150)); - ellipse(40,40,abs(sin(a+0.5)*50),abs(sin(a+0.5)*50)); - ellipse(60,140,abs(cos(a)*80),abs(cos(a)*80)); - } -} diff --git a/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5imageButton/ControlP5imageButton.pde b/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5imageButton/ControlP5imageButton.pde deleted file mode 100644 index 309ea21..0000000 --- a/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5imageButton/ControlP5imageButton.pde +++ /dev/null @@ -1,38 +0,0 @@ -import controlP5.*; - -ControlP5 cp5; - -int myColor = color(0); - - -void setup() { - size(400,600); - cp5 = new ControlP5(this); - - // replace the default controlP5 button with an image. - // button.setImages(defaultImage, rolloverImage, pressedImage); - // use button.updateSize() to adjust the size of the button and - // resize to the dimensions of the defaultImage - - cp5.addButton("buttonA") - .setPosition(175,275) - .setImages(loadImage("Arrow-Left.png"), loadImage("Arrow-Right.png"), loadImage("Refresh.png")) - .updateSize(); -} - -void draw() { - background(myColor); -} - -public void controlEvent(ControlEvent theEvent) { - println(theEvent.getController().getName()); - -} - -// function buttonA will receive changes from -// controller with name buttonA -public void buttonA(int theValue) { - println("a button event from buttonA: "+theValue); - myColor = color(128); -} - diff --git a/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5imageButton/data/Arrow-Left.png b/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5imageButton/data/Arrow-Left.png deleted file mode 100644 index 33ab6ee9a2b267c30ef624d9deb1e25bf6465b4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1062 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 diff --git a/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5key/ControlP5key.pde b/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5key/ControlP5key.pde deleted file mode 100644 index 095b7e4..0000000 --- a/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5key/ControlP5key.pde +++ /dev/null @@ -1,50 +0,0 @@ -/** - * ControlP5 ControlKey - * use ControlKeys to map key combinations to particular events. - * multi-keypress supported. - * - * by Andreas Schlegel, 2012 - * www.sojamo.de/libraries/controlp5 - * - */ - -import controlP5.*; - -ControlP5 cp5; - -int col; -int colEllipse; -boolean visible; - -void setup() { - size(400, 600); - smooth(); - noStroke(); - col = color(0); - colEllipse = color(0,255,90); - cp5 = new ControlP5(this); - - // press key 1 to change background to white - cp5.mapKeyFor(new ControlKey() {public void keyEvent() {col = color(255);}}, '1'); - - // press key 2 to change background to black - cp5.mapKeyFor(new ControlKey() {public void keyEvent() {col = color(0);}}, '2'); - - // press key 1 and ALT to make circles visible - cp5.mapKeyFor(new ControlKey() {public void keyEvent() {visible = true;}}, ALT,'1'); - - // press key 2 and ALT to hide circles - cp5.mapKeyFor(new ControlKey() {public void keyEvent() {visible = false;}}, ALT,'2'); - - // press key 1 and ALT and SHIFT to change the color of circles - cp5.mapKeyFor(new ControlKey() {public void keyEvent() {colEllipse = color(random(255));}}, ALT,'1',SHIFT); -} - -void draw() { - background(col); - if(visible) { - fill(colEllipse); - ellipse(100,100,50,50); - ellipse(150,400,200,200); - } -} diff --git a/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5listBoxClear/ControlP5listBoxClear.pde b/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5listBoxClear/ControlP5listBoxClear.pde deleted file mode 100644 index 177d019..0000000 --- a/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5listBoxClear/ControlP5listBoxClear.pde +++ /dev/null @@ -1,74 +0,0 @@ -import controlP5.*; - -String[][] s = new String[3][]; -ControlP5 controlP5; -ListBox l; - -void setup() { - size(400,400); - controlP5 = new ControlP5(this); - l = controlP5.addListBox("myList",100,100,120,150); - // l.actAsPulldownMenu(true); - l.setItemHeight(23); - - - s[0] = new String[] { - "a","b","c","d" - }; - s[1] = new String[] { - "a","b","c","d","e","f","g","h","i","j","k","l","m","n" - }; - s[2] = new String[] { - "l","m","n" - }; - - for(int i=0;i "+theEvent.getGroup().getValue()); - int n = int(theEvent.getGroup().getValue()); - println("\t\t group:"+(n >> 8 & 0xff)+", item:"+(n >> 0 & 0xff)); - } -} diff --git a/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5mouseWheel/ControlP5mouseWheel.pde b/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5mouseWheel/ControlP5mouseWheel.pde deleted file mode 100644 index 74904e8..0000000 --- a/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5mouseWheel/ControlP5mouseWheel.pde +++ /dev/null @@ -1,94 +0,0 @@ -/** - * ControlP5 KeyEventAndWheel - * - * with controlP5 2.0 all java.awt dependencies have been removed - * as a consequence the option to use the MouseWheel for some controllers - * has been removed. But the following example shows how to manually add - * the mouseWheel support. - * - * With early versions of the processing 2.0 beta releases the keyEvent forwarding - * does not work as expected and needs to be forwarded manually. - * - * by Andreas Schlegel, 2012 - * www.sojamo.de/libraries/controlp5 - * - */ - - -import controlP5.*; -import java.util.*; - -ControlP5 cp5; - -void setup() { - size(700, 300); - cp5 = new ControlP5(this); - - - cp5.addNumberbox("numberbox") - .setPosition(20, 20) - .setSize(100, 20) - ; - - cp5.addSlider("slider") - .setPosition(20, 70) - .setSize(200, 20) - ; - - cp5.addKnob("knob") - .setPosition(20, 120) - .setRadius(50) - ; - - List drops = new ArrayList(); - for(int i=0;i<100;i++) { - drops.add("item "+i); - } - - cp5.addDropdownList("drop") - .setPosition(300, 30) - .setWidth(200) - .addItems(drops) - ; - - cp5.addListBox("list") - .setPosition(520, 30) - .setSize(150,200) - .addItems(drops) - ; - - cp5.addTextarea("area") - .setPosition(300, 150) - .setSize(200,100) - .setLineHeight(10) - .setText("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam feugiat porttitor tempus. Donec hendrerit aliquam mauris, a interdum ante pellentesque et. In dui erat, condimentum et sodales eget, scelerisque quis libero. Nam non nibh vitae enim auctor fringilla sit amet quis magna. Quisque ultricies mi at arcu vulputate imperdiet tristique purus adipiscing. Maecenas pretium odio ac leo aliquam id commodo nulla eleifend. Aenean in pharetra mauris. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla suscipit, nisl vitae eleifend tincidunt, dolor justo sollicitudin nunc, sit amet rhoncus odio purus eu purus. Cras bibendum placerat elementum. Donec in lorem libero. Praesent auctor, felis quis volutpat facilisis, neque turpis tempor nisi, interdum viverra enim purus vel mi. Nam faucibus accumsan lorem, convallis consectetur elit vulputate ut."); - ; - // add mousewheel support, now hover the slide with your mouse - // and use the mousewheel (or trackpad on a macbook) to change the - // value of the slider. - addMouseWheelListener(); -} - - -void draw() { - background(0); -} - - -void controlEvent(ControlEvent event) { - println(event); -} - -// When working in desktop mode, you can add mousewheel support for -// controlP5 by using java.awt.event.MouseWheelListener and -// java.awt.event.MouseWheelEvent - -void addMouseWheelListener() { - frame.addMouseWheelListener(new java.awt.event.MouseWheelListener() { - public void mouseWheelMoved(java.awt.event.MouseWheelEvent e) { - cp5.setMouseWheelRotation(e.getWheelRotation()); - } - } - ); -} - diff --git a/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5pointer/ControlP5pointer.pde b/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5pointer/ControlP5pointer.pde deleted file mode 100644 index a278691..0000000 --- a/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5pointer/ControlP5pointer.pde +++ /dev/null @@ -1,75 +0,0 @@ -/** -* ControlP5 Pointer -* -* Default mouse actions use the Pointer class to trigger events. -* you can manipulate the x and y fields of the Pointer class -* for customizing input events for example when using a -* different input than the mouse. -* Here in this example the mouse coordiates are reveresed. -* -* by Andreas Schlegel, 2012 -* www.sojamo.de/libraries/controlp5 -* -*/ - -import controlP5.*; - -ControlP5 cp5; - -void setup() { - size(400, 600); - - cp5 = new ControlP5(this); - // disable outodraw because we want to draw our - // custom cursor on to of controlP5 - cp5.setAutoDraw(false); - - cp5.addSlider("hello", 0, 100, 50, 40, 40, 100, 20); - - // enable the pointer (and disable the mouse as input) - cp5.getPointer().enable(); - cp5.getPointer().set(width/2, height/2); -} - - -void draw() { - background(cp5.get("hello").getValue()); - // first draw controlP5 - cp5.draw(); - - // the draw our pointer - cp5.getPointer().set(width - mouseX, height - mouseY); - pushMatrix(); - translate(cp5.getPointer().getX(), cp5.getPointer().getY()); - stroke(255); - line(-10,0,10,0); - line(0,-10,0,10); - popMatrix(); - println(cp5.isMouseOver()); -} - -void mousePressed() { - cp5.getPointer().pressed(); -} - -void mouseReleased() { - cp5.getPointer().released(); -} - -/* -a list of all methods available for the Pointer Controller -use ControlP5.printPublicMethodsFor(Pointer.class); -to print the following list into the console. - -You can find further details about class Pointer in the javadoc. - -Format: -ClassName : returnType methodName(parameter type) - - - -created: 2015/03/24 12:22:14 - -*/ - - diff --git a/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5propertiesSets/ControlP5propertiesSets.pde b/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5propertiesSets/ControlP5propertiesSets.pde deleted file mode 100644 index 2c3d1a6..0000000 --- a/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5propertiesSets/ControlP5propertiesSets.pde +++ /dev/null @@ -1,133 +0,0 @@ -/** - * ControlP5 properties sets. - * - * saves/loads controller values into/from properties-file. - * this example shows how to make property sets of controllers that can be loaded and - * saved individually. By default property files come in a serialized format - * with a .ser extension. - * - * - * default properties load/save key combinations are - * alt+shift+l to load properties - * alt+shift+s to save properties - * - * - * find a list of public methods available for the ControllerPropererties Controller - * at the bottom of this sketch's source code - * - * by andreas schlegel, 2011 - * www.sojamo.de/libraries/controlp5 - * - */ - -import controlP5.*; - -ControlP5 cp5; - -public int slider1 = 32; -public int slider2 = 64; -public int slider3 = 128; -public int slider4 = 255; - - -void setup() { - size(400, 600); - cp5 = new ControlP5(this); - - // add a vertical slider - cp5.addSlider("slider1", 0, 255, 20, 100, 128, 20); - cp5.addSlider("slider2", 0, 255, 20, 150, 128, 20); - cp5.addSlider("slider3", 0, 255, 20, 200, 128, 20); - cp5.addSlider("slider4", 0, 255, 20, 250, 128, 20); - - cp5.addButton("b1", 0, 20, 350, 80, 12).setCaptionLabel("save setA"); - cp5.addButton("b2", 0, 101, 350, 80, 12).setCaptionLabel("load setA").setColorBackground(color(0, 100, 50)); - - cp5.addButton("b3", 0, 200, 350, 80, 12).setCaptionLabel("save default"); - cp5.addButton("b4", 0, 281, 350, 80, 12).setCaptionLabel("load default").setColorBackground(color(0, 100, 50)); - - - // add a new properties set 'setA' - cp5.getProperties().addSet("setA"); - - // move controller 'slider' from the default set to setA - // the 3 parameters read like this: move controller(1) from set(2) to set(3) - cp5.getProperties().move(cp5.getController("slider1"), "default", "setA"); - // use copy instead of move to register 'slider' with both sets (default and setA) - - // prints the current list of properties registered and the set(s) they belong to - cp5.getProperties().print(); - - /* by default properties are saved in JSON format, if you want to change to the old default (java's serialized format), un-comment line below*/ - // cp5.getProperties().setFormat(ControlP5.SERIALIZED); -} - -void draw() { - background(0); - - fill(slider1); - rect(250, 100, 100, 20); - - fill(slider2); - rect(250, 150, 100, 20); - - fill(slider3); - rect(250, 200, 100, 20); - - fill(slider4); - rect(250, 250, 100, 20); -} - -void b1(float v) { - cp5.saveProperties("setA", "setA"); -} - -void b2(float v) { - cp5.loadProperties(("setA")); -} - -void b3(float v) { - cp5.saveProperties("default", "default"); -} - -void b4(float v) { - cp5.loadProperties(("default.json")); -} - - - - - -/* - a list of all methods available for the ControllerProperties class - use ControlP5.printPublicMethodsFor(ControllerProperties.class); - to print the following list into the console. - - You can find further details about class ControllerProperties in the javadoc. - - Format: - ClassName : returnType methodName(parameter type) - -controlP5.ControllerProperties : ControllerProperties remove(ControllerInterface) -controlP5.ControllerProperties : ControllerProperties remove(ControllerInterface, String) -controlP5.ControllerProperties : ControllerProperties remove(ControllerInterface, String, String) -controlP5.ControllerProperties : ControllerProperty getProperty(ControllerInterface, String) -controlP5.ControllerProperties : ControllerProperty getProperty(ControllerInterface, String, String) -controlP5.ControllerProperties : ControllerProperty register(ControllerInterface, String) -controlP5.ControllerProperties : ControllerProperty register(ControllerInterface, String, String) -controlP5.ControllerProperties : HashSet addSet(String) -controlP5.ControllerProperties : HashSet getPropertySet(ControllerInterface) -controlP5.ControllerProperties : List get(ControllerInterface) -controlP5.ControllerProperties : Map get() -controlP5.ControllerProperties : String toString() -controlP5.ControllerProperties : boolean load() -controlP5.ControllerProperties : boolean load(String) -controlP5.ControllerProperties : void delete(ControllerProperty) -controlP5.ControllerProperties : void move(ControllerInterface, String, String) -controlP5.ControllerProperties : void move(ControllerProperty, String, String) -controlP5.ControllerProperties : void only(ControllerProperty, String) -controlP5.ControllerProperties : void print() -controlP5.ControllerProperties : void setFormat(Format) -java.lang.Object : String toString() -java.lang.Object : boolean equals(Object) -*/ diff --git a/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5propertiesSets/default.json b/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5propertiesSets/default.json deleted file mode 100644 index 473af1b..0000000 --- a/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5propertiesSets/default.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "/slider3": { - "min": 0, - "max": 255, - "value": 12.750000953674316 - }, - "/slider2": { - "min": 0, - "max": 255, - "value": 130.05001831054688 - }, - "/slider4": { - "min": 0, - "max": 255, - "value": 214.20004272460938 - } -} \ No newline at end of file diff --git a/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5propertiesSets/setA.json b/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5propertiesSets/setA.json deleted file mode 100644 index 8a50c9b..0000000 --- a/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5propertiesSets/setA.json +++ /dev/null @@ -1,5 +0,0 @@ -{"/slider1": { - "min": 0, - "max": 255, - "value": 255 -}} \ No newline at end of file diff --git a/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5renderIntoPGraphics/ControlP5renderIntoPGraphics.pde b/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5renderIntoPGraphics/ControlP5renderIntoPGraphics.pde deleted file mode 100644 index 0c11bc9..0000000 --- a/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5renderIntoPGraphics/ControlP5renderIntoPGraphics.pde +++ /dev/null @@ -1,51 +0,0 @@ -/** -* ControlP5 RenderIntoPGraphics -* -* -* experimental -* -* by Andreas Schlegel, 2013 -* www.sojamo.de/libraries/controlp5 -* -*/ - - -import controlP5.*; - -ControlP5 c1 , c2; -PGraphics panel1 , panel2; - -void setup() { - size( 1024, 500 , P3D ); // - panel1 = createGraphics( 200 , height/2 ); - panel2 = createGraphics( 200 , height/2 ); - c1 = new ControlP5( this ); - c1.enableShortcuts(); - c1.setBackground( color( 0 , 50 ) ); - c1.addButton("hello").setSize(200,20).setPosition( 0 , 0 ); - c1.addButton("world").setSize(200,100).setPosition( 0 , 70 ); - c1.addSlider("slider").setSize(50,20).setPosition( 0 , 40 ); - c1.setGraphics( panel1 , 0 , 0 ); - - c2 = new ControlP5( this ); - c2.enableShortcuts(); - c2.setBackground( color( 0 , 50 ) ); - c2.addButton("hello").setSize(200,20).setPosition( 0 , 0 ); - c2.addButton("world").setSize(200,100).setPosition( 0 , 70 ); - c2.addSlider("slider").setSize(50,20).setPosition( 0 , 40 ); - c2.setGraphics( panel2 , 220 , 0 ); - -} - - -void draw() { - background( 100 , 0 , 0 ); - - /* TODO update mouseevent when using setGraphics */ - c1.setGraphics( panel1 , 100 + int(sin(frameCount*0.1) * 100) , 250 ); -} - - -void controlEvent( ControlEvent ce) { - println(ce); -} diff --git a/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5style/ControlP5style.pde b/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5style/ControlP5style.pde deleted file mode 100644 index 01147c0..0000000 --- a/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5style/ControlP5style.pde +++ /dev/null @@ -1,110 +0,0 @@ -/** -* ControlP5 ControllerStyle -* -* -* find a list of public methods available for the ControllerStyle Controller -* at the bottom of this sketch. -* -* by Andreas Schlegel, 2011 -* www.sojamo.de/libraries/controlp5 -* -*/ - -import controlP5.*; - -ControlP5 cp5; - -float v1 = 50, v2 = 100, v3 = 100, v4 = 100; - -void setup() { - size(400,600); - smooth(); - noStroke(); - cp5 = new ControlP5(this); - - cp5.begin(100,100); - cp5.addSlider("v1",0,255).linebreak(); - cp5.addSlider("v2",0,200).linebreak(); - cp5.addSlider("v3",0,300).linebreak(); - cp5.addSlider("v4",0,400); - cp5.end(); - - // change the caption label for controller v1 and apply styles - cp5.getController("v1").setCaptionLabel("Background"); - style("v1"); - - // change the caption label for controller v2 and apply styles - cp5.getController("v2").setCaptionLabel("Ellipse A"); - style("v2"); - - // change the caption label for controller v3 and apply styles - cp5.getController("v3").setCaptionLabel("Ellipse B"); - style("v3"); - - // change the caption label for controller v3 and apply styles - cp5.getController("v4").setCaptionLabel("Ellipse C"); - style("v4"); - - -} - -void style(String theControllerName) { - Controller c = cp5.getController(theControllerName); - // adjust the height of the controller - c.setHeight(15); - - // add some padding to the caption label background - c.getCaptionLabel().getStyle().setPadding(4,4,3,4); - - // shift the caption label up by 4px - c.getCaptionLabel().getStyle().setMargin(-4,0,0,0); - - // set the background color of the caption label - c.getCaptionLabel().setColorBackground(color(10,20,30,140)); -} - -void draw() { - background(v1); - fill(255,255,220,100); - ellipse(width/2-100, height/2-100,v2 + 50,v2 + 50); - ellipse(width/2+100, height/2,v3,v3); - ellipse(width/2, height/2+100,v4,v4); -} - - - -/* -a list of all methods available for the ControllerStyle Controller -use ControlP5.printPublicMethodsFor(ControllerStyle.class); -to print the following list into the console. - -You can find further details about class ControllerStyle in the javadoc. - -Format: -ClassName : returnType methodName(parameter type) - - - - -controlP5.ControllerStyle : ControllerStyle margin(int) -controlP5.ControllerStyle : ControllerStyle margin(int, int, int, int) -controlP5.ControllerStyle : ControllerStyle moveMargin(int, int, int, int) -controlP5.ControllerStyle : ControllerStyle movePadding(int, int, int, int) -controlP5.ControllerStyle : ControllerStyle padding(int) -controlP5.ControllerStyle : ControllerStyle padding(int, int, int, int) -controlP5.ControllerStyle : ControllerStyle setMargin(int, int, int, int) -controlP5.ControllerStyle : ControllerStyle setMarginBottom(int) -controlP5.ControllerStyle : ControllerStyle setMarginLeft(int) -controlP5.ControllerStyle : ControllerStyle setMarginRight(int) -controlP5.ControllerStyle : ControllerStyle setMarginTop(int) -controlP5.ControllerStyle : ControllerStyle setPadding(int, int, int, int) -controlP5.ControllerStyle : ControllerStyle setPaddingBottom(int) -controlP5.ControllerStyle : ControllerStyle setPaddingLeft(int) -controlP5.ControllerStyle : ControllerStyle setPaddingRight(int) -controlP5.ControllerStyle : ControllerStyle setPaddingTop(int) -java.lang.Object : String toString() -java.lang.Object : boolean equals(Object) - - -*/ - diff --git a/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5textfieldAdvanced/ControlP5textfieldAdvanced.pde b/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5textfieldAdvanced/ControlP5textfieldAdvanced.pde deleted file mode 100644 index 61899bd..0000000 --- a/OpenBCI_GUI/libraries/controlP5/examples/extra/ControlP5textfieldAdvanced/ControlP5textfieldAdvanced.pde +++ /dev/null @@ -1,114 +0,0 @@ -/** - * ControlP5 textfield (advanced) - * - * demonstrates how to use keepFocus, setText, getText, getTextList, - * clear, setAutoClear, isAutoClear and submit. - * - * by andreas schlegel, 2012 - * www.sojamo.de/libraries/controlp5 - * - */ - -import controlP5.*; - -ControlP5 cp5; - -String textValue = ""; - -Textfield myTextfield; - -void setup() { - size(400, 600); - - cp5 = new ControlP5(this); - myTextfield = cp5.addTextfield("textinput") - .setPosition(100, 200) - .setSize(200, 20) - .setFocus(true) - ; - - cp5.addTextfield("textValue") - .setPosition(100, 300) - .setSize(200, 20) - ; - - // use setAutoClear(true/false) to clear a textfield or keep text displayed in - // a textfield after pressing return. - myTextfield.setAutoClear(true).keepFocus(true); - - cp5.addButton("clear", 0, 20, 200, 70, 20); - cp5.addButton("submit", 0, 310, 200, 60, 20); - cp5.addButton("performTextfieldActions", 0, 20, 100, 150, 20); - cp5.addToggle("toggleAutoClear", true, 180, 100, 90, 20).setCaptionLabel("Auto Clear"); - cp5.addToggle("toggleKeepFocus", true, 280, 100, 90, 20).setCaptionLabel("Keep Focus"); - - -} - -void draw() { - background(0); -} - -void toggleAutoClear(boolean theFlag) { - myTextfield.setAutoClear(theFlag); -} - -void toggleKeepFocus(boolean theFlag) { - myTextfield.keepFocus(theFlag); -} - -void clear(int theValue) { - myTextfield.clear(); -} - -void submit(int theValue) { - myTextfield.submit(); -} - - -void controlEvent(ControlEvent theEvent) { - if (theEvent.isAssignableFrom(Textfield.class)) { - Textfield t = (Textfield)theEvent.getController(); - - println("controlEvent: accessing a string from controller '" - +t.getName()+"': "+t.getStringValue() - ); - - // Textfield.isAutoClear() must be true - print("controlEvent: trying to setText, "); - - t.setText("controlEvent: changing text."); - if (t.isAutoClear()==false) { - println(" success!"); - } - else { - println(" but Textfield.isAutoClear() is false, could not setText here."); - } - } -} - -void performTextfieldActions() { - println("\n"); - // Textfield.getText(); - println("the current text of myTextfield: "+myTextfield.getText()); - println("the current value of textValue: "+textValue); - // Textfield.setText(); - myTextfield.setText("changed the text of a textfield"); - println("changing text of myTextfield to: "+myTextfield.getText()); - // Textfield.getTextList(); - println("the textlist of myTextfield has "+myTextfield.getTextList().length+" items."); - for (int i=0;i - * After initializing controlP5 you can add controllers to controlP5. - * Here we use three numberboxes, one slider and one textfield. - * The numberbox with name numberboxC will trigger function numberboxC() - * in the example below. Whenever controlP5 detects a function in your - * sketch that corresponds to the name of a controller, it will forward - * an event to that function. Any event triggered by a controller - * will be forwarded to function controlEvent in your sketch. - * related examples ControlP5numberbox, ControlP5slider, ControlP5textfield - * - * by Andreas Schlegel, 2011 - * www.sojamo.de/libraries/controlp5 - * - */ - - -import controlP5.*; - -ControlP5 cp5; -public int myColorRect = 200; -public int myColorBackground = 100; - -void setup() { - size(400, 400); - noStroke(); - - cp5 = new ControlP5(this); - - // create a slider - // parameters: - // name, minValue, maxValue, defaultValue, x, y, width, height - cp5.addSlider("sliderA", 100, 200, 100, 100, 260, 100, 14); - - - // create 3 numberboxes and assign an id for each - cp5.addNumberbox("numberboxA", myColorRect, 100, 140, 100, 14).setId(1); - cp5.addNumberbox("numberboxB", myColorBackground, 100, 180, 100, 14).setId(2); - cp5.addNumberbox("numberboxC", 0, 100, 220, 100, 14).setId(3); - - - // create a texfield - cp5.addTextfield("textA", 100, 290, 100, 20); - - // change individual settings for a controller - cp5.getController("numberboxA").setMax(255); - cp5.getController("numberboxA").setMin(0); -} - -void draw() { - background(myColorBackground); - fill(myColorRect); - rect(0, 0, width, 100); -} - - -// events from controller numberboxC are received here -public void numberboxC(int theValue) { - println("### got an event from numberboxC : "+theValue); -} - - -// an event from slider sliderA will change the value of textfield textA here -public void sliderA(int theValue) { - Textfield txt = ((Textfield)cp5.getController("textA")); - txt.setValue(""+theValue); -} - - -// for every change (a textfield event confirmed with a return) in textfield textA, -// function textA will be invoked -public void textA(String theValue) { - println("### got an event from textA : "+theValue); -} - - -// function controlEvent will be invoked with every value change -// in any registered controller -public void controlEvent(ControlEvent theEvent) { - println("got a control event from controller with id "+theEvent.getId()); - switch(theEvent.getId()) { - case(1): // numberboxA is registered with id 1 - myColorRect = (int)(theEvent.getController().getValue()); - break; - case(2): // numberboxB is registered with id 2 - myColorBackground = (int)(theEvent.getController().getValue()); - break; - } -} - diff --git a/OpenBCI_GUI/libraries/controlP5/examples/use/ControlP5beginEnd/ControlP5beginEnd.pde b/OpenBCI_GUI/libraries/controlP5/examples/use/ControlP5beginEnd/ControlP5beginEnd.pde deleted file mode 100644 index 954ddd2..0000000 --- a/OpenBCI_GUI/libraries/controlP5/examples/use/ControlP5beginEnd/ControlP5beginEnd.pde +++ /dev/null @@ -1 +0,0 @@ -// TBD diff --git a/OpenBCI_GUI/libraries/controlP5/examples/use/ControlP5behavior/ControlP5behavior.pde b/OpenBCI_GUI/libraries/controlP5/examples/use/ControlP5behavior/ControlP5behavior.pde deleted file mode 100644 index 6f76b82..0000000 --- a/OpenBCI_GUI/libraries/controlP5/examples/use/ControlP5behavior/ControlP5behavior.pde +++ /dev/null @@ -1,125 +0,0 @@ -/** - * ControlP5 Behavior - * ControlBehavior is an abstract class that can be extended using your - * custom control behaviors. What is a control behavior? Control Behaviors - * allow you to automate and dynamically change the state or value of a - * controller. One behavior per controller is currently supported. i case you - * need to use more that one bahavior, the implementation has to happen - * on your side - inside your control behavior. - * - * find a list of public methods available for the ControlBehavior Controller - * at the bottom of this sketch. - * - * by Andreas Schlegel, 2012 - * www.sojamo.de/libraries/controlp5 - * - */ - -import controlP5.*; - - -ControlP5 cp5; - -int myColorBackground = color(0, 0, 0); - -public int sliderValue = 100; - -void setup() { - size(400, 400); - noStroke(); - - cp5 = new ControlP5(this); - cp5.addSlider("sliderValue") - .setRange(0,255) - .setValue(128) - .setPosition(100, 50 + height/2) - .setSize(40, 100); - - cp5.addSlider("slider") - .setRange(100, 255) - .setValue(128) - .setPosition(100, 50) - .setSize(100, 40); - - - cp5.addBang("bang") - .setPosition(40, 50 + height/2) - .setSize(40, 40); - - // add a custom ControlBehavior to controller bang, - // class TimerEvent is included in this sketch at the bottom - // and extends abstract class ControlBehavior. - cp5.getController("bang").setBehavior(new TimedEvent()); - - // use an anonymous class of type ControlBehavior. - cp5.getController("slider").setBehavior(new ControlBehavior() { - float a = 0; - public void update() { - setValue(sin(a += 0.1) * 50 + 150); - } - } - ); -} - -void draw() { - background(myColorBackground); - fill(sliderValue); - rect(0, 0, width, height/2); -} - -void slider(float theColor) { - myColorBackground = color(theColor); - println("# a slider event. setting background to "+theColor); -} - -public void bang() { - println("# an event received from controller bang."); - // a bang will set the value of controller sliderValue - // to a random number between 0 and 255. - cp5.getController("sliderValue").setValue(random(0, 255)); -} - -// custom ControlBehavior -class TimedEvent extends ControlBehavior { - long myTime; - int interval = 200; - - public TimedEvent() { - reset(); - } - void reset() { - myTime = millis() + interval; - } - - public void update() { - if (millis()>myTime) { - setValue(1); - reset(); - } - } -} - - - - -/* -a list of all methods available for the ControlBehavior Controller -use ControlP5.printPublicMethodsFor(ControlBehavior.class); -to print the following list into the console. - -You can find further details about class ControlBehavior in the javadoc. - -Format: -ClassName : returnType methodName(parameter type) - - -controlP5.ControlBehavior : Controller controller() -controlP5.ControlBehavior : boolean isActive() -controlP5.ControlBehavior : void setActive(boolean) -controlP5.ControlBehavior : void setValue(float) -java.lang.Object : String toString() -java.lang.Object : boolean equals(Object) - - -*/ - diff --git a/OpenBCI_GUI/libraries/controlP5/examples/use/ControlP5bringToFront/ControlP5bringToFront.pde b/OpenBCI_GUI/libraries/controlP5/examples/use/ControlP5bringToFront/ControlP5bringToFront.pde deleted file mode 100644 index d777514..0000000 --- a/OpenBCI_GUI/libraries/controlP5/examples/use/ControlP5bringToFront/ControlP5bringToFront.pde +++ /dev/null @@ -1,55 +0,0 @@ -import controlP5.*; - -ControlP5 cp5; - -void setup() { - size(700, 400); - - cp5 = new ControlP5(this); - - CallbackListener toFront = new CallbackListener() { - public void controlEvent(CallbackEvent theEvent) { - theEvent.getController().bringToFront(); - ((ScrollableList)theEvent.getController()).open(); - } - }; - - CallbackListener close = new CallbackListener() { - public void controlEvent(CallbackEvent theEvent) { - ((ScrollableList)theEvent.getController()).close(); - } - }; - - cp5.addScrollableList("myList1") - .setPosition(100, 100) - .addItems(new String[] {"a-1","b-1","c-1","d-1","e-1"}) - .onEnter(toFront) - .onLeave(close) - .setWidth(200) - .setItemHeight(20) - .setBarHeight(20) - .setBackgroundColor(color(128)) - .setHeight(100) - .close() - ; - - cp5.addScrollableList("myList2") - .setPosition(100, 125) - .addItems(new String[] {"a-2","b-2","c-2","d-2","e-2"}) - .onEnter(toFront) - .onLeave(close) - .setWidth(200) - .setItemHeight(20) - .setBarHeight(20) - .setBackgroundColor(color(128)) - .setHeight(100) - .setColor(ControlP5.THEME_RED) - .close() - ; -} - - - -void draw() { - background(220); -} diff --git a/OpenBCI_GUI/libraries/controlP5/examples/use/ControlP5callback/ControlP5callback.pde b/OpenBCI_GUI/libraries/controlP5/examples/use/ControlP5callback/ControlP5callback.pde deleted file mode 100644 index 216797c..0000000 --- a/OpenBCI_GUI/libraries/controlP5/examples/use/ControlP5callback/ControlP5callback.pde +++ /dev/null @@ -1,178 +0,0 @@ -/** - * ControlP5 Callback - * - * The following example demonstrates the CallbackListener and CallbackEvent. - * Here additional information about each available slider will be show when - * hovering the controller with the mouse. The info will fade out when leaving - * the controller. - * - * When hovering a controller, the mouse pointer will change as well. - * - * find a list of public methods available for the CallbackEvent Controller - * at the bottom of this sketch. - * - * by Andreas Schlegel, 2012 - * www.sojamo.de/libraries/controlp5 - * - */ - -import controlP5.*; - -ControlP5 cp5; -Slider s1, s2; -Info info; -CallbackListener cb; - -void setup() { - size(800, 400); - - cp5 = new ControlP5(this); - - - // create a new instance of class Info - // info will be used to display a controller's information and - // will fade in when a CallbackEvent is invoked. - info = new Info(); - - - // add 2 sliders - s1 = cp5.addSlider("hello") - .setRange(0, 100) - .setValue(50) - .setPosition(40, 40) - .setSize(100, 20); - - s2 = cp5.addSlider("world") - .setRange(0, 100) - .setValue(10) - .setPosition(40, 70) - .setSize(100, 20); - - - // the following CallbackListener will listen to any controlP5 - // action such as enter, leave, pressed, released, releasedoutside, broadcast - // see static variables starting with ACTION_ inside class controlP5.ControlP5Constants - - cb = new CallbackListener() { - public void controlEvent(CallbackEvent theEvent) { - switch(theEvent.getAction()) { - case(ControlP5.ACTION_ENTER): - info.n = 1; - info.label.setText(theEvent.getController().getInfo()); - cursor(HAND); - break; - case(ControlP5.ACTION_LEAVE): - case(ControlP5.ACTION_RELEASEDOUTSIDE): - info.n = 0; - cursor(ARROW); - break; - } - } - }; - - // add the above callback to controlP5 - cp5.addCallback(cb); - - // add another callback to slider s1, callback event will only be invoked for this - // particular controller. - s1.addCallback(new CallbackListener() { - public void controlEvent(CallbackEvent theEvent) { - if (theEvent.getAction()==ControlP5.ACTION_BROADCAST) { - s2.setValue(s2.getMax() - s1.getValue()); - } - } - } - ); -} - -void draw() { - background(0); - info.update(); -} - - -void controlEvent(ControlEvent theEvent) { - println("Got a ControlEvent for "+theEvent.name()+" = "+theEvent.value()); - info.label.setText(theEvent.getController().getInfo()); -} - -void keyPressed() { - // uncomment the line below to remove callback cb from controlP5 - // when a key is pressed. - //controlP5.removeCallback(cb); -} - -// controlEvent(CallbackEvent) is called whenever a callback -// has been triggered. controlEvent(CallbackEvent) is detected by -// controlP5 automatically. -void controlEvent(CallbackEvent theEvent) { - if (theEvent.getController().equals(s2)) { - switch(theEvent.getAction()) { - case(ControlP5.ACTION_ENTER): - println("Action:ENTER"); - break; - case(ControlP5.ACTION_LEAVE): - println("Action:LEAVE"); - break; - case(ControlP5.ACTION_PRESSED): - println("Action:PRESSED"); - break; - case(ControlP5.ACTION_RELEASED): - println("Action:RELEASED"); - break; - case(ControlP5.ACTION_RELEASEDOUTSIDE): - println("Action:RELEASED OUTSIDE"); - break; - case(ControlP5.ACTION_BROADCAST): - println("Action:BROADCAST"); - break; - } - } -} - - - -class Info { - float a; - float n = 0; - String txt = ""; - Textarea label; - - Info() { - label = cp5.addTextarea("Hello\nWorld") - .setSize(200,200) - .setPosition(300,40) - .setColor(color(255)) - .setColorBackground(color(100,0)) - .setLineHeight(12); - - } - - void update() { - a += (n-a)*0.1; - label.setColorBackground(color(100,255*a)); - } -} - - -/* -a list of all methods available for the CallbackEvent Controller - use ControlP5.printPublicMethodsFor(CallbackEvent.class); - to print the following list into the console. - - You can find further details about class CallbackEvent in the javadoc. - - Format: - ClassName : returnType methodName(parameter type) - - - controlP5.CallbackEvent : Controller getController() - controlP5.CallbackEvent : int getAction() - java.lang.Object : String toString() - java.lang.Object : boolean equals(Object) - - - */ - - - diff --git a/OpenBCI_GUI/libraries/controlP5/examples/use/ControlP5controlEvent/ControlP5controlEvent.pde b/OpenBCI_GUI/libraries/controlP5/examples/use/ControlP5controlEvent/ControlP5controlEvent.pde deleted file mode 100644 index 5f7a909..0000000 --- a/OpenBCI_GUI/libraries/controlP5/examples/use/ControlP5controlEvent/ControlP5controlEvent.pde +++ /dev/null @@ -1,119 +0,0 @@ -/** - * ControlP5 ControlEvent. - * every control event is automatically forwarded to the function controlEvent(ControlEvent) - * inside a sketch if such function is available. For further details about the API of - * the ControlEvent class, please refer to the documentation. - * - * - * find a list of public methods available for ControlEvent - * at the bottom of this sketch's source code - * - * by Andreas Schlegel, 2012 - * www.sojamo.de/libraries/controlP5 - * - */ - -import controlP5.*; - -ControlP5 cp5; - -public int myColorRect1 = 200; - -public int myColorRect2 = 100; - - -void setup() { - size(400, 400); - noStroke(); - - cp5 = new ControlP5(this); - cp5.addNumberbox("n1") - .setValue(myColorRect1) - .setPosition(20, 20) - .setSize(100, 20) - .setMin(0) - .setMax(255) - .setId(1); - - cp5.addNumberbox("n2") - .setValue(myColorRect2) - .setPosition(20, 60) - .setSize(100, 20) - .setMin(0) - .setMax(255) - .setId(2); - - cp5.addTextfield("n3") - .setPosition(20, 100) - .setSize(100, 20) - .setId(3); - -} - -void draw() { - background(ControlP5.MAROON); - fill(ControlP5.RED, myColorRect1); - rect(140, 20, 240, 170); - fill(ControlP5.FUCHSIA, myColorRect2); - rect(140, 210, 240, 170); -} - - -void controlEvent(ControlEvent theEvent) { - println("got a control event from controller with id "+theEvent.getController().getId()); - - if (theEvent.isFrom(cp5.getController("n1"))) { - println("this event was triggered by Controller n1"); - } - - switch(theEvent.getController().getId()) { - case(1): - myColorRect1 = (int)(theEvent.getController().getValue()); - break; - case(2): - myColorRect2 = (int)(theEvent.getController().getValue()); - break; - case(3): - println(theEvent.getController().getStringValue()); - break; - } -} - - -/* -a list of all methods available for the ControlEvent Controller -use ControlP5.printPublicMethodsFor(ControlEvent.class); -to print the following list into the console. - -You can find further details about class ControlEvent in the javadoc. - -Format: -ClassName : returnType methodName(parameter type) - - -controlP5.ControlEvent : ControlGroup getGroup() -controlP5.ControlEvent : Controller getController() -controlP5.ControlEvent : String getLabel() -controlP5.ControlEvent : String getName() -controlP5.ControlEvent : String getStringValue() -controlP5.ControlEvent : String toString() -controlP5.ControlEvent : Tab getTab() -controlP5.ControlEvent : boolean isAssignableFrom(Class) -controlP5.ControlEvent : boolean isController() -controlP5.ControlEvent : boolean isFrom(ControllerInterface) -controlP5.ControlEvent : boolean isFrom(String) -controlP5.ControlEvent : boolean isGroup() -controlP5.ControlEvent : boolean isTab() -controlP5.ControlEvent : float getArrayValue(int) -controlP5.ControlEvent : float getValue() -controlP5.ControlEvent : float[] getArrayValue() -controlP5.ControlEvent : int getId() -controlP5.ControlEvent : int getType() -java.lang.Object : String toString() -java.lang.Object : boolean equals(Object) - -created: 2015/03/24 12:22:35 - -*/ - - diff --git a/OpenBCI_GUI/libraries/controlP5/examples/use/ControlP5controlFont/ControlP5controlFont.pde b/OpenBCI_GUI/libraries/controlP5/examples/use/ControlP5controlFont/ControlP5controlFont.pde deleted file mode 100644 index 35df35c..0000000 --- a/OpenBCI_GUI/libraries/controlP5/examples/use/ControlP5controlFont/ControlP5controlFont.pde +++ /dev/null @@ -1,134 +0,0 @@ -/** - * ControlP5 controlFont. - * - * this example shows how to create a button with controlP5 (1), how to - * load and use a PFont with controlP5 (2), apply a ControlFont to - * the caption label of a button (3), and adjust the location of a - * caption label using the style() property of a controller. - * - * by andreas schlegel, 2012 - */ -import controlP5.*; - -ControlP5 cp5; - -controlP5.Button b; - -int buttonValue = 1; - -boolean isOpen; - -int myColorBackground = color(0,0,0); - - -void setup() { - size(700,400); - smooth(); - - cp5 = new ControlP5(this); - // (1) - // create some controllers - cp5.addButton("button") - .setValue(10) - .setPosition(20,20) - .setSize(100,50) - .setId(1); - - b = cp5.addButton("buttonValue") - .setValue(4) - .setPosition(100,190) - .setSize(200,200) - .setId(2); - - // (2) - // load a new font. ControlFont is a wrapper for processing's PFont - // with processing 1.1 ControlFont.setSmooth() is not supported anymore. - // to display a font as smooth or non-smooth, use true/false as 3rd parameter - // when creating a PFont: - - PFont pfont = createFont("Arial",20,true); // use true/false for smooth/no-smooth - ControlFont font = new ControlFont(pfont,241); - - - - // (3) - // change the font and content of the captionlabels - // for both buttons create earlier. - cp5.getController("button") - .getCaptionLabel() - .setFont(font) - .toUpperCase(false) - .setSize(24) - ; - - b.getCaptionLabel() - .setFont(font) - .setSize(50) - .toUpperCase(false) - .setText("hello") - ; -// - // (4) - // adjust the location of a catiption label using the - // style property of a controller. - b.getCaptionLabel().getStyle().marginLeft = 20; - b.getCaptionLabel().getStyle().marginTop = 40; - -} - -void draw() { - background(ControlP5.SILVER); - // animate button b - float x = b.x(b.getPosition()); - x += ((isOpen==true ? 0:-200) - x) * 0.2;; - float y = b.y(b.getPosition()); - b.setPosition(x,y); -} - -public void controlEvent(ControlEvent theEvent) { - println(theEvent.getController().getId()); -} - -public void button(float theValue) { - println("a button event. "+theValue); - isOpen = !isOpen; - cp5.getController("button").setCaptionLabel((isOpen==true) ? "close":"open"); -} - - - -/* -a list of all methods available for the ControlFont Controller -use ControlP5.printPublicMethodsFor(ControlFont.class); -to print the following list into the console. - -You can find further details about class ControlFont in the javadoc. - -Format: -ClassName : returnType methodName(parameter type) - - -controlP5.ControlFont : PFont getFont() -controlP5.ControlFont : int getBaseline() -controlP5.ControlFont : int getBottom() -controlP5.ControlFont : int getCenter() -controlP5.ControlFont : int getHeight() -controlP5.ControlFont : int getOffset(int) -controlP5.ControlFont : int getOverflow() -controlP5.ControlFont : int getSize() -controlP5.ControlFont : int getTextHeight() -controlP5.ControlFont : int getTop() -controlP5.ControlFont : int getWidth() -controlP5.ControlFont : void adjust(PGraphics, Label) -controlP5.ControlFont : void draw(ControlP5, Label) -controlP5.ControlFont : void draw(PGraphics, Label) -controlP5.ControlFont : void init(Label) -controlP5.ControlFont : void setSize(int) -java.lang.Object : String toString() -java.lang.Object : boolean equals(Object) - -created: 2015/03/24 12:22:36 - -*/ - - diff --git a/OpenBCI_GUI/libraries/controlP5/examples/use/ControlP5customView/ControlP5customView.pde b/OpenBCI_GUI/libraries/controlP5/examples/use/ControlP5customView/ControlP5customView.pde deleted file mode 100644 index 4db2e6f..0000000 --- a/OpenBCI_GUI/libraries/controlP5/examples/use/ControlP5customView/ControlP5customView.pde +++ /dev/null @@ -1,101 +0,0 @@ -/** -* ControlP5 Custom View -* -* -* find a list of public methods available for the ControllerDisplay Controller -* at the bottom of this sketch. -* -* by Andreas Schlegel, 2012 -* www.sojamo.de/libraries/controlp5 -* -*/ - - -import controlP5.*; - - -ControlP5 cp5; - - -void setup() { - size(400, 400); - smooth(); - cp5 = new ControlP5(this); - cp5.addButton("hello") - .setPosition(50, 100) - .setSize(150,150) - .setView(new CircularButton()) - ; - - cp5.addButton("world") - .setPosition(250, 100) - .setSize(50,50) - .setView(new CircularButton()) - ; -} - - -void draw() { - background(ControlP5.BLACK); -} - -public void hello(int theValue) { - println("Hello pressed"); -} - -public void world(int theValue) { - println("World pressed"); -} - -/** - * to define a custom View for a controller use the ContollerView interface - * T here must be replace by the name of the Controller class your custom View will be - * applied to. In our example T is replace by Button since we are aplpying the View - * to the Button instance create in setup. The ControllerView interface requires - * you to implement the display(PApplet, T) method. Same here, T must be replaced by - * the Controller class you are designing the custom view for, for us this is the - * Button class. - */ - -class CircularButton implements ControllerView