diff --git a/CHANGELOG.md b/CHANGELOG.md index 0b1455d66..51d5ad666 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ * Revisit Ganglion Impedance widget so it behaves like new Cyton Impedance Widget #1021 * Fix dropdown backgrounds in Networking Widget * Update priveleges for Windows users and check if GUI has been run as Administrator +* Fix High DPI scaling on some Macs with Retina Display ### Improvements * Add new FilterUI to allow custom filters per channel #988 @@ -22,6 +23,7 @@ * Fix certain Textfield and TextArea fonts not drawing correctly on some Macs * Update and enforce style guide throughout the GUI in preparation for multiple themes * Improve UI/UX for HelpWidget at the bottom of the GUI to make it more noticeable +* Print OS Name and Version to Console Log on app start # v5.0.9 diff --git a/OpenBCI_GUI/ADS1299SettingsController.pde b/OpenBCI_GUI/ADS1299SettingsController.pde index 52ad76569..9d1f8dacb 100644 --- a/OpenBCI_GUI/ADS1299SettingsController.pde +++ b/OpenBCI_GUI/ADS1299SettingsController.pde @@ -387,7 +387,7 @@ class ADS1299SettingsController { .setPosition(0, 0) .setCaptionLabel("") .setSize(120, 20) - .setFont(createFont("Arial", 15, true)) + .setFont(f2) .setFocus(false) .setColor(color(26, 26, 26)) .setColorBackground(color(255, 255, 255)) // text field bg color diff --git a/OpenBCI_GUI/ConsoleLog.pde b/OpenBCI_GUI/ConsoleLog.pde index e31b2f328..97cbc275f 100644 --- a/OpenBCI_GUI/ConsoleLog.pde +++ b/OpenBCI_GUI/ConsoleLog.pde @@ -94,6 +94,7 @@ static class ConsoleWindow extends PApplet implements Runnable { void createConsoleLogButton (String bName, String bText, int x) { int y = 4; // vertical position for button + PFont buttonFont = createFont("Arial", 14, true); cp5.addButton(bName) .setPosition(x, y) .setSize(buttonWidth, buttonHeight) @@ -102,7 +103,7 @@ static class ConsoleWindow extends PApplet implements Runnable { .setColorBackground(color(144, 100)); cp5.getController(bName) .getCaptionLabel() - .setFont(p4) + .setFont(buttonFont) .toUpperCase(false) .setText(bText); } diff --git a/OpenBCI_GUI/ControlPanel.pde b/OpenBCI_GUI/ControlPanel.pde index 498d9983d..f6f8356c7 100644 --- a/OpenBCI_GUI/ControlPanel.pde +++ b/OpenBCI_GUI/ControlPanel.pde @@ -1002,12 +1002,12 @@ class WifiBox { .setPosition(x + 90, y + 100) .setCaptionLabel("") .setSize(w - padding*2, 26) - .setFont(createFont("Arial", 15, true)) + .setFont(f2) .setFocus(false) .setColor(color(26, 26, 26)) .setColorBackground(color(255, 255, 255)) // text field bg color .setColorValueLabel(OPENBCI_DARKBLUE) // text color - .setColorForeground(isSelected_color) // border color when not selected + .setColorForeground(OPENBCI_DARKBLUE) // border color when not selected .setColorActive(isSelected_color) // border color when selected .setColorCursor(color(26, 26, 26)) .setText(wifi_ipAddress) @@ -1298,12 +1298,12 @@ class SessionDataBox { .setPosition(x + 60, y + 32) .setCaptionLabel("") .setSize(187, 26) - .setFont(createFont("Arial", 15, true)) + .setFont(f2) .setFocus(false) .setColor(color(26, 26, 26)) .setColorBackground(color(255, 255, 255)) // text field bg color .setColorValueLabel(OPENBCI_DARKBLUE) // text color - .setColorForeground(isSelected_color) // border color when not selected + .setColorForeground(OPENBCI_DARKBLUE) // border color when not selected .setColorActive(isSelected_color) // border color when selected .setColorCursor(color(26, 26, 26)) .setText(directoryManager.getFileNameDateTime()) @@ -2100,12 +2100,12 @@ class GaleaBox { .setPosition(x + w - padding*2 - 60*2, y + 16 + padding*2) .setCaptionLabel("") .setSize(120 + padding, 26) - .setFont(createFont("Arial", 15, true)) + .setFont(f2) .setFocus(false) .setColor(color(26, 26, 26)) .setColorBackground(color(255, 255, 255)) // text field bg color .setColorValueLabel(OPENBCI_DARKBLUE) // text color - .setColorForeground(isSelected_color) // border color when not selected + .setColorForeground(OPENBCI_DARKBLUE) // border color when not selected .setColorActive(isSelected_color) // border color when selected .setColorCursor(color(26, 26, 26)) .setText(ipAddress) @@ -2299,12 +2299,12 @@ class BrainFlowStreamerBox { .setPosition(x + padding * 3, y + HEADER_H + padding*2) .setCaptionLabel("") .setSize(120, OBJECT_H) - .setFont(createFont("Arial", 15, true)) + .setFont(f2) .setFocus(false) .setColor(color(26, 26, 26)) .setColorBackground(color(255, 255, 255)) // text field bg color .setColorValueLabel(OPENBCI_DARKBLUE) // text color - .setColorForeground(isSelected_color) // border color when not selected + .setColorForeground(OPENBCI_DARKBLUE) // border color when not selected .setColorActive(isSelected_color) // border color when selected .setColorCursor(color(26, 26, 26)) .setText(DEFAULT_IP_ADDRESS) //default ipAddress == "" @@ -2330,12 +2330,12 @@ class BrainFlowStreamerBox { .setPosition(x + padding*5 + w/2, y + HEADER_H + padding*2) .setCaptionLabel("") .setSize(50, OBJECT_H) - .setFont(createFont("Arial", 15, true)) + .setFont(f2) .setFocus(false) .setColor(color(26, 26, 26)) .setColorBackground(color(255, 255, 255)) // text field bg color .setColorValueLabel(OPENBCI_DARKBLUE) // text color - .setColorForeground(isSelected_color) // border color when not selected + .setColorForeground(OPENBCI_DARKBLUE) // border color when not selected .setColorActive(isSelected_color) // border color when selected .setColorCursor(color(26, 26, 26)) .setText(DEFAULT_PORT) //default port == 0 @@ -2530,12 +2530,12 @@ class StreamingBoardBox { .setPosition(x + padding * 3, y + headerH + padding*2) .setCaptionLabel("") .setSize(w / 3, objectH) - .setFont(createFont("Arial", 15, true)) + .setFont(f2) .setFocus(false) .setColor(color(26, 26, 26)) .setColorBackground(color(255, 255, 255)) // text field bg color .setColorValueLabel(OPENBCI_DARKBLUE) // text color - .setColorForeground(isSelected_color) // border color when not selected + .setColorForeground(OPENBCI_DARKBLUE) // border color when not selected .setColorActive(isSelected_color) // border color when selected .setColorCursor(color(26, 26, 26)) .setText("") //default ipAddress == "" @@ -2547,12 +2547,12 @@ class StreamingBoardBox { .setPosition(x + padding*5 + w/2, y + headerH + padding*2) .setCaptionLabel("") .setSize(w / 5 + padding, objectH) - .setFont(createFont("Arial", 15, true)) + .setFont(f2) .setFocus(false) .setColor(color(26, 26, 26)) .setColorBackground(color(255, 255, 255)) // text field bg color .setColorValueLabel(OPENBCI_DARKBLUE) // text color - .setColorForeground(isSelected_color) // border color when not selected + .setColorForeground(OPENBCI_DARKBLUE) // border color when not selected .setColorActive(isSelected_color) // border color when selected .setColorCursor(color(26, 26, 26)) .setText(Integer.toString(0)) //default port == 0 diff --git a/OpenBCI_GUI/CustomCp5Classes.pde b/OpenBCI_GUI/CustomCp5Classes.pde index 6d12d7d46..8d2dd1ffa 100644 --- a/OpenBCI_GUI/CustomCp5Classes.pde +++ b/OpenBCI_GUI/CustomCp5Classes.pde @@ -216,9 +216,9 @@ public class MenuList extends controlP5.Controller { menu.fill(127, 134, 143); } if (i == activeItem) { - menu.stroke(184, 220, 105, 255); + menu.stroke(TURN_ON_GREEN); menu.strokeWeight(1); - menu.fill(184, 220, 105, 255); + menu.fill(TURN_ON_GREEN); menu.rect(0, 0, getWidth()-1, itemHeight-1 ); menu.noStroke(); } else { diff --git a/OpenBCI_GUI/Debugging.pde b/OpenBCI_GUI/Debugging.pde index 8843b6b35..26258292c 100644 --- a/OpenBCI_GUI/Debugging.pde +++ b/OpenBCI_GUI/Debugging.pde @@ -109,7 +109,8 @@ class HelpWidget { outputWasTriggered = false; } } - // Color mode is switched to Hue, Saturation, Brightness in the next line + //Colors in this method are calculated using Hue, Saturation, Brightness + colorMode(HSB, 360, 100, 100); color c = getBackgroundColor(saturationFadeValue); stroke(c); fill(c); @@ -128,6 +129,7 @@ class HelpWidget { } private color getTextColor() { + /* switch (curOutputLevel) { case INFO: return #00529B; @@ -139,13 +141,13 @@ class HelpWidget { return #D8000C; case DEFAULT: default: - return color(0, 5, 11); + return color(0, 5, 11); } + */ + return OPENBCI_DARKBLUE; } private color getBackgroundColor(int fadeVal) { - //Colors in this method are calculated using Hue, Saturation, Brightness - colorMode(HSB, 360, 100, 100); int sat = 0; int maxSat = 75; switch (curOutputLevel) { @@ -156,6 +158,7 @@ class HelpWidget { return color(199, sat, 97); case SUCCESS: //base color - #DFF2BF; + maxSat = 50; sat = 25; sat = (int)map(fadeVal, 0, 100, sat, maxSat); return color(106, sat, 95); diff --git a/OpenBCI_GUI/Extras.pde b/OpenBCI_GUI/Extras.pde index 57f49ddb0..0f2a4393d 100644 --- a/OpenBCI_GUI/Extras.pde +++ b/OpenBCI_GUI/Extras.pde @@ -32,6 +32,72 @@ private boolean isMac() { return !isWindows() && !isLinux(); } +private void checkIsMacFullDetail() { + StringBuilder response = new StringBuilder("MacOS Details: "); + if (isMacOsLowerThanCatalina()) { + response.append("MacOS Mojave or earlier"); + } else if (isMacOsBigSur()) { + response.append("MacOS Big Sur"); + } else if (isMacOsMonterey()) { + response.append("MacOS Monterey"); + } else { + response.append("MacOS Catalina"); + } + println(response); +} + +// For a full list of modern Mac OS versions, visit https://en.wikipedia.org/wiki/MacOS_version_history +private boolean isMacOsLowerThanCatalina() { + int[] versionInfo = fetchAndParseMacOsVersion(); + return versionInfo[0] <= 10 && versionInfo[1] < 15; +} + +private boolean isMacOsBigSur() { + int[] versionInfo = fetchAndParseMacOsVersion(); + //This should return 11, but there was a recently discovered bug in Java 8 -- https://bugs.openjdk.java.net/browse/JDK-8274907 + int[] javaInfo = fetchAndParseJavaVersion(); + boolean usingJava8_202 = javaInfo[0] == 1 && javaInfo[1] == 8 && javaInfo[2] == 202; + if (usingJava8_202) { + return versionInfo[0] == 10 && versionInfo[1] == 16; + } else { + return versionInfo[0] == 11; + } +} + +private boolean isMacOsMonterey() { + int[] versionInfo = fetchAndParseMacOsVersion(); + return versionInfo[0] == 12; +} + +private String getOperatingSystemVersion() { + return System.getProperty("os.version"); +} + +private int[] fetchAndParseMacOsVersion() { + if (!isMac()) { + println("Oops! Please only call this method on MacOS"); + return null; + } + final String version = getOperatingSystemVersion(); + final String[] splitStrings = split(version, '.'); + int[] versionVals = new int[splitStrings.length]; + for (int i = 0; i < splitStrings.length; i++) { + versionVals[i] = Integer.valueOf(splitStrings[i]); + } + return versionVals; +} + +private int[] fetchAndParseJavaVersion() { + final String version = System.getProperty("java.version"); + final String[] splitStrings = split(version, '.'); + int[] versionVals = new int[splitStrings.length]; + versionVals[0] = Integer.valueOf(splitStrings[0]); + versionVals[1] = Integer.valueOf(splitStrings[1]); + final String[] minorVersion = split(splitStrings[2], "_"); + versionVals[2] = Integer.valueOf(minorVersion[minorVersion.length - 1]); + return versionVals; +} + //BrainFlow only supports Windows 8 and 10. This will help with OpenBCI support tickets. #964 private void checkIsOldVersionOfWindowsOS() { boolean isOld = SystemUtils.IS_OS_WINDOWS_7 || SystemUtils.IS_OS_WINDOWS_VISTA || SystemUtils.IS_OS_WINDOWS_XP; @@ -380,8 +446,8 @@ class DataStatus { private double percentage; public String notificationString; private final color default_color = OPENBCI_DARKBLUE; - private final color yellow = color(221, 178, 13, 255); - private final color red = TURN_OFF_RED; + private final color yellow = SIGNAL_CHECK_YELLOW; + private final color red = BOLD_RED; private color colorIndicator = default_color; DataStatus(double thresh_railed, double thresh_railed_warn) { diff --git a/OpenBCI_GUI/FilterUI.pde b/OpenBCI_GUI/FilterUI.pde index 46d789a6b..9abb9c5d4 100644 --- a/OpenBCI_GUI/FilterUI.pde +++ b/OpenBCI_GUI/FilterUI.pde @@ -412,7 +412,7 @@ class FilterUIPopup extends PApplet implements Runnable { private void updateChannelCp5Objects() { //Reusable variables to update UI objects - color onColor = TURN_ON_GREEN; + color onColor = SUBNAV_LIGHTBLUE; color offColor = BUTTON_PRESSED_DARKGREY; color updateColor = offColor; String firstColumnTFValue = ""; @@ -558,6 +558,7 @@ class FilterUIPopup extends PApplet implements Runnable { .setText(Integer.toString(intValue)) //set the text .align(5, 10, 20, 40) .setAutoClear(false) + .setIsCentered(true) ; //Don't clear textfield when pressing Enter key myTextfield.getValueLabel().align(CENTER, CENTER); //Clear textfield on double click @@ -950,7 +951,7 @@ class FilterUIPopup extends PApplet implements Runnable { } private void createMasterOnOffButton(String name, final String text, int _x, int _y, int _w, int _h) { - masterOnOffButton = createButton(cp5, name, text, _x, _y, _w, _h, 0, h2, 16, TURN_ON_GREEN, WHITE, BUTTON_HOVER, BUTTON_PRESSED, (Integer) null, -2); + masterOnOffButton = createButton(cp5, name, text, _x, _y, _w, _h, 0, h2, 16, SUBNAV_LIGHTBLUE, WHITE, BUTTON_HOVER, BUTTON_PRESSED, (Integer) null, -2); masterOnOffButton.setCircularButton(true); masterOnOffButton.onRelease(new CallbackListener() { public void controlEvent(CallbackEvent theEvent) { diff --git a/OpenBCI_GUI/OpenBCI_GUI.pde b/OpenBCI_GUI/OpenBCI_GUI.pde index 24ad56ac6..c5ed95c5c 100644 --- a/OpenBCI_GUI/OpenBCI_GUI.pde +++ b/OpenBCI_GUI/OpenBCI_GUI.pde @@ -206,6 +206,7 @@ PFont f1; PFont f2; PFont f3; PFont f4; +PFont f5; PFont h1; //large Montserrat PFont h2; //large/medium Montserrat @@ -232,14 +233,15 @@ final color OPENBCI_DARKBLUE = color(1, 18, 41); final color OPENBCI_BLUE = color(31, 69, 110); final color boxColor = color(200); final color boxStrokeColor = OPENBCI_DARKBLUE; -final color isSelected_color = color(184, 220, 105); +final color isSelected_color = color(184, 220, 105); //Used for textfield borders, final color colorNotPressed = WHITE; final color buttonsLightBlue = color(57,128,204); final color GREY_125 = color(125); final color GREY_100 = color(100); final color GREY_20 = color(20); -final color TURN_ON_GREEN = color(184,220,105); -final color TURN_OFF_RED = color(224, 56, 45); +final color TURN_ON_GREEN = color(195, 242, 181); +final color TURN_OFF_RED = color(255, 210, 210); +final color BOLD_RED = color(224, 56, 45); final color BUTTON_HOVER = color(177, 184, 193);//color(252, 221, 198); final color BUTTON_HOVER_LIGHT = color(211, 222, 232); final color BUTTON_PRESSED = color(150, 170, 200); //OPENBCI_DARKBLUE; @@ -253,13 +255,13 @@ final color OBJECT_BORDER_GREY = color(150); final color TOPNAV_DARKBLUE = OPENBCI_BLUE; final color SUBNAV_LIGHTBLUE = buttonsLightBlue; //Use the same colors for X,Y,Z throughout Accelerometer widget -final color ACCEL_X_COLOR = TURN_OFF_RED; +final color ACCEL_X_COLOR = BOLD_RED; final color ACCEL_Y_COLOR = color(49, 113, 89); final color ACCEL_Z_COLOR = color(54, 87, 158); //Signal check colors final color SIGNAL_CHECK_YELLOW = color(221, 178, 13); //Same color as yellow channel color found below final color SIGNAL_CHECK_YELLOW_LOWALPHA = color(221, 178, 13, 150); -final color SIGNAL_CHECK_RED = TURN_OFF_RED; +final color SIGNAL_CHECK_RED = BOLD_RED; final color SIGNAL_CHECK_RED_LOWALPHA = color(224, 56, 45, 150); @@ -278,9 +280,9 @@ final color[] channelColors = { color(124, 75, 141), color(54, 87, 158), color(49, 113, 89), - color(221, 178, 13), + SIGNAL_CHECK_YELLOW, color(253, 94, 52), - TURN_OFF_RED, + BOLD_RED, color(162, 82, 49) }; @@ -349,14 +351,14 @@ void setup() { //V1 FONTS f1 = createFont("fonts/Raleway-SemiBold.otf", 16); - if (isMac()) { - f2 = createFont("Arial", 15, true); - } else { - f2 = createFont("fonts/Raleway-Regular.otf", 15); - } - + //Account for Macs with Retina Display and textfield text being too large + int f2FontSize = isMac() && (displayDensity() > 1) ? 8 : 15; + f2 = createFont("fonts/Raleway-Regular.otf", f2FontSize); f3 = createFont("fonts/Raleway-SemiBold.otf", 15); f4 = createFont("fonts/Raleway-SemiBold.otf", 64); // clear bigger fonts for widgets + //Account for Macs with Retina Display and textfield text being too large + int f5FontSize = isMac() && (displayDensity() > 1) ? 6 : 12; + f5 = createFont("fonts/Raleway-Regular.otf", f5FontSize); h1 = createFont("fonts/Montserrat-Regular.otf", 20); h2 = createFont("fonts/Montserrat-Regular.otf", 18); @@ -395,7 +397,7 @@ void setup() { System.setOut(outputStream); System.setErr(outputStream); - StringBuilder osName = new StringBuilder("Operating System: "); + StringBuilder osName = new StringBuilder("Operating System and Version: "); if (isLinux()) { osName.append("Linux"); } else if (isWindows()) { @@ -408,10 +410,16 @@ void setup() { osName.append("Mac"); } + osName.append(" - "); + osName.append(getOperatingSystemVersion()); + println("Console Log Started at Local Time: " + directoryManager.getFileNameDateTime()); println(globalScreenResolution.toString()); println(globalScreenDPI.toString()); println(osName.toString()); + if (isMac()) { + checkIsMacFullDetail(); + } println("Welcome to the Processing-based OpenBCI GUI!"); //Welcome line. println("For more information, please visit: https://docs.openbci.com/Software/OpenBCISoftware/GUIDocs/"); diff --git a/OpenBCI_GUI/SignalCheckThresholds.pde b/OpenBCI_GUI/SignalCheckThresholds.pde index 97bf2fa61..a7092208e 100644 --- a/OpenBCI_GUI/SignalCheckThresholds.pde +++ b/OpenBCI_GUI/SignalCheckThresholds.pde @@ -45,7 +45,7 @@ class SignalCheckThresholdUI { .setPosition(_x, _y) .setCaptionLabel("") .setSize(_w, _h) - .setFont(createFont("Arial",12,true)) + .setFont(f5) .setFocus(false) .setColor(color(26, 26, 26)) .setColorBackground(color(255, 255, 255)) // text field bg color diff --git a/OpenBCI_GUI/TopNav.pde b/OpenBCI_GUI/TopNav.pde index 747aee1f1..660c4a50c 100644 --- a/OpenBCI_GUI/TopNav.pde +++ b/OpenBCI_GUI/TopNav.pde @@ -88,7 +88,7 @@ class TopNav { if (!secondaryNavInit) { //Buttons on the left side of the GUI secondary nav bar - createToggleDataStreamButton(stopButton_pressToStart_txt, PAD_3, SUBNAV_BUT_Y, DATASTREAM_BUT_W, SUBNAV_BUT_H, h4, 14, isSelected_color, OPENBCI_DARKBLUE); + createToggleDataStreamButton(stopButton_pressToStart_txt, PAD_3, SUBNAV_BUT_Y, DATASTREAM_BUT_W, SUBNAV_BUT_H, h4, 14, TURN_ON_GREEN, OPENBCI_DARKBLUE); createFiltersButton("Filters", PAD_3*2 + toggleDataStreamingButton.getWidth(), SUBNAV_BUT_Y, SUBNAV_BUT_W, SUBNAV_BUT_H, h4, 14, SUBNAV_LIGHTBLUE, WHITE); //Appears at Top Right SubNav while in a Session @@ -497,7 +497,7 @@ class TopNav { stopRunning(); if (!currentBoard.isStreaming()) { toggleDataStreamingButton.getCaptionLabel().setText(stopButton_pressToStart_txt); - toggleDataStreamingButton.setColorBackground(isSelected_color); + toggleDataStreamingButton.setColorBackground(TURN_ON_GREEN); } } else { //not running output("openBCI_GUI: startButton was pressed. Starting data transfer, wait a few seconds."); @@ -517,7 +517,7 @@ class TopNav { public void resetStartStopButton() { if (toggleDataStreamingButton != null) { toggleDataStreamingButton.getCaptionLabel().setText(stopButton_pressToStart_txt); - toggleDataStreamingButton.setColorBackground(isSelected_color); + toggleDataStreamingButton.setColorBackground(TURN_ON_GREEN); } } diff --git a/OpenBCI_GUI/W_FFT.pde b/OpenBCI_GUI/W_FFT.pde index 44640970d..3e09e1ddb 100644 --- a/OpenBCI_GUI/W_FFT.pde +++ b/OpenBCI_GUI/W_FFT.pde @@ -24,17 +24,17 @@ class W_fft extends Widget { (int)color(124, 75, 141), (int)color(54, 87, 158), (int)color(49, 113, 89), - (int)color(221, 178, 13), + (int)SIGNAL_CHECK_YELLOW, (int)color(253, 94, 52), - (int)TURN_OFF_RED, + (int)BOLD_RED, (int)color(162, 82, 49), (int)color(129, 129, 129), (int)color(124, 75, 141), (int)color(54, 87, 158), (int)color(49, 113, 89), - (int)color(221, 178, 13), + (int)SIGNAL_CHECK_YELLOW, (int)color(253, 94, 52), - (int)TURN_OFF_RED, + (int)BOLD_RED, (int)color(162, 82, 49) }; diff --git a/OpenBCI_GUI/W_Networking.pde b/OpenBCI_GUI/W_Networking.pde index f63efb581..4ab7816da 100644 --- a/OpenBCI_GUI/W_Networking.pde +++ b/OpenBCI_GUI/W_Networking.pde @@ -496,7 +496,7 @@ class W_Networking extends Widget { cp5_networking.addTextfield(name) .align(10,100,10,100) // Alignment .setSize(120,20) // Size of textfield - .setFont(createFont("Arial", 15, true)) + .setFont(f2) .setFocus(false) // Deselects textfield .setColor(OPENBCI_DARKBLUE) .setColorBackground(color(255,255,255)) // text field bg color diff --git a/OpenBCI_GUI/W_PulseSensor.pde b/OpenBCI_GUI/W_PulseSensor.pde index 1c3105f60..1f9e90259 100644 --- a/OpenBCI_GUI/W_PulseSensor.pde +++ b/OpenBCI_GUI/W_PulseSensor.pde @@ -77,7 +77,7 @@ class W_PulseSensor extends Widget { // Pulse Sensor Stuff eggshell = color(255, 253, 248); - pulseWave = TURN_OFF_RED; + pulseWave = BOLD_RED; PulseWaveY = new int[PulseBuffSize]; BPMwaveY = new int[BPMbuffSize]; diff --git a/OpenBCI_GUI/libraries/controlP5/library/controlP5.jar b/OpenBCI_GUI/libraries/controlP5/library/controlP5.jar index 0e9ca3c34..846e50a34 100644 Binary files a/OpenBCI_GUI/libraries/controlP5/library/controlP5.jar and b/OpenBCI_GUI/libraries/controlP5/library/controlP5.jar differ diff --git a/OpenBCI_GUI/sketch.icns b/OpenBCI_GUI/sketch.icns index a1d69eabc..55136a2fe 100644 Binary files a/OpenBCI_GUI/sketch.icns and b/OpenBCI_GUI/sketch.icns differ