Incidentally, if anyone wants to review the config file, here it is:
/********************************************************************************************
##### General Specs #####
Hilt: SaberForge Bane Mk2
Chassis: Baldusi Custom Basic v6
Board: Proffieboard v2.2
ProffieOS Version: 7.4
Soundfont Collection: 2023-04
-Momentary Switches: 2
-Battery: 18650
-Speaker: KR Sabers 22mm V2 3W
-Hilt NPXL Connector: Shtok NPLX V3 Illuminated Connector (V4 Config)
-BladeID: 33k resistor (0603 SMD)
-Blade Present Pin (Data3)
##### Hardware Config #####
-PowerButton: Button1 (21)
-AuxButton: Button2 (23)
-NeoPixelBlade01: LED2+LED3 (Shared), Data1
-NeoPixelConnector: 16px, LED2+LED3 (Shared), Data2 (470 Ohm resistor)
-BladeID Resistor: 33k
-BladePresent: Data3
-Save State
##### Install Intent #####
This is a dedicated SaberForge Bane Mk2. As such, it should have just a red blade. I've
bought Lord Blako's The Bane for this hilt. Will also add Kyberphics RED and Greyscale
Seethe, for variety.
@@@ REMEMBER @@@: YOU SHOULD PAY FOR EACH SOUNDFONT PER PERSON: MULTIPLE HILTS SAME PERSON
ARE FINE. BUT IF YOU SELL THE HILT, YOU EITHER PAY FOR THOSE FONTS, INSTALL FONTS THAT THE
BUYER ALREADY OWNS OR DELETE YOUR COPIES.
********************************************************************************************/
//*******************************************************************************************
#ifdef CONFIG_TOP
//*******************************************************************************************
/*-----------------------------
////// Hardware Defines //////
-----------------------------*/
#include "proffieboard_v2_config.h"
#define NUM_BLADES 3 //(1 x Blade + 2 x illuminated NPXL PCB)
#define NUM_BUTTONS 2 //If you add a 2nd button, uncomment the AUX line at the bottom
const unsigned int maxLedsPerStrip = 180; //Should be bigger than the longest physical strip you have (so you might have to add subblades)
#define EXTRA_COLOR_BUFFER_SPACE 70 //Helps to make some effects faster
#define CLASH_THRESHOLD_G 1.5 //Define how hard your motions before effects register. Lower if hard to get or increase if you have spurious effects.
#define ENABLE_MOTION //Enables de motion sensors.
#define ENABLE_WS2811 //Enables WS2811 NeoPixe-style protocol
#define ENABLE_SD //Enables SD Card access.
#define SHARED_POWER_PINS //This one is used for sharing NPXL DATA line on same power lines. Normally used when you have an illuminated PCB or power accents from the blade PCB.
#define ORIENTATION_ROTATION 0,-50,0 //X,Y,Z rotation with respect to USB towards pommel. Mainly thought for curved pommels like Dookus, but also useful for usb at emitter config.
/*-----------------------------
////// Blade ID Defines //////
-----------------------------*/
#define BLADE_ID_CLASS ExternalPullupBladeID<bladeIdentifyPin, 33000> //You have to run a resistor between 20k and 50k between 3.3V and your blade detect pin. If you use Data1 for your main blade, just put a 0603 resistor between the two pins.
#define BLADE_DETECT_PIN blade3Pin //Blade detect pin.
#define ENABLE_POWER_FOR_ID PowerPINS<bladePowerPin2, bladePowerPin3> //When it detects blade insert it resets the NPXL. If you have used more than one MOSFET, you should put all that power your blade here.
//#define BLADE_ID_SCAN_MILLIS 1000 //This define will scan for changes of BladeID value every N ms, if a change is detected it will initialize the saber from scratch and load the right settings for the new ID
#define BLADE_ID_TIMES 10 //This define is the number of scans that get averaged together to come up with a useable scanned value.
/*-----------------------------
/////// Audio Defines ////////
-----------------------------*/
#define ENABLE_AUDIO //Basic enabling of the audio functions.
#define VOLUME 1000 //Volume, anything 0-3000, recommended 700.
//#define BOOT_VOLUME 100 //This is the volume the saber will default to on boot, you will then use Volume Menu or Volume Editing to adjust during normal use (same number scale as VOLUME).
#define FILTER_CUTOFF_FREQUENCY 100 //(Hz) Enable a butterworth highpass filter with the given order and cutoff frequency
#define FILTER_ORDER 8 //Order of the filter
/*-----------------------------
//////// OLED Defines ////////
-----------------------------*/
//#define ENABLE_SSD1306 //To enable OLED
//#define INCLUDE_SSD1306 //Includes support for ssd1306 displays, but does not automatically enable it
//#define OLED_FLIP_180 //Rotates OLED pictures 180deg
//#define USE_AUREBESH_FONT //Select Aubresh font for the display rather than Star Jedi
/*-----------------------------
///// BlueTooth Defines //////
-----------------------------*/
// Bluetooth module:
// 1) Enable the defines below.
// 2) Add +1 to NUM_BLADES.
// 3) In Preset add: "StylePtr<Blue>(),".
// 4) In BladesConfig: "SimpleBladePtr<CH3LED, NoLED, NoLED, NoLED, bladePowerPin6, -1, -1, -1>()," where bladePowerPin6 is the MOSFET negative you used to power the BT module.
//
//#define ENABLE_SERIAL //To enable Blutooth
//Redbear BLE preloads BT name and password
//#define BLE_PASSWORD "PASSWORD" //Password must be 20 or less characters.
//#define BLE_NAME "LONG NAME" //Descriptive name.
//#define BLE_SHORTNAME "SHORTNAM" //Must be 8 or less characters.
/*-----------------------------
///// ProffieOS Defines //////
-----------------------------*/
#define DISABLE_DIAGNOSTIC_COMMANDS //Recommended to save memory, disables diagnostic commands for Serial Monitor.
#define DISABLE_BASIC_PARSER_STYLES //Saves memory by disabling old-fashioned styles.
#define MOTION_TIMEOUT 60 * 15 * 1000 //Amount of time motion and gestures detection stays active after saber is retracted. Affects Battle Mode.
#define IDLE_OFF_TIME 60 * 10 * 1000 //Amount of time power to LEDs remains active after saber is retracted. Might affect Bluetooth.
#define KILL_OLD_PLAYERS //Will "kill off" oldest sound when spamming effects like blast or clash to prevent running out of wav players.
/*-----------------------------
//// Save States Defines /////
-----------------------------*/
//#define SAVE_STATE //Makes the board save last selected Volume, Preset and blade Color
#define SAVE_PRESET
/*#define SAVE_VOLUME
#define SAVE_COLOR_CHANGE
#define DYNAMIC_BLADE_DIMMING
#define DYNAMIC_BLADE_LENGTH
#define DYNAMIC_CLASH_THRESHOLD
#define SAVE_BLADE_DIMMING
#define SAVE_CLASH_THRESHOLD*/
/*-----------------------------
// Presets and Props Defines /
-----------------------------*/
//#define DUAL_POWER_BUTTONS //This one means that clicking the AUX will also turn the saber on. If not defined, AUX will go to next preset when off.
#define ENABLE_ALL_EDIT_OPTIONS
#define FETT263_DUAL_MODE_SOUND
//#define FETT263_EDIT_MODE_MENU
#define FETT263_CLASH_STRENGTH_SOUND
#define FETT263_MAX_CLASH 16
#define FETT263_SAY_COLOR_LIST
//#define FETT263_SAY_COLOR_LIST_CC
#define FETT263_SAY_BATTERY_PERCENT
#define FETT263_DISABLE_COPY_PRESET
//#define FETT263_HOLD_BUTTON_OFF
#define FETT263_LOCKUP_DELAY 200
#define FETT263_BM_CLASH_DETECT 6
#define NO_REPEAT_RANDOM //Make ProffieOS remember which file (of each effect) was played last
#define COLOR_CHANGE_DIRECT //Allows Color Change button to toggle each ColorChange<> effect.
//#define FEMALE_TALKIE_VOICE //Uses a female talkie voice, only affects built-in error messages
#endif
//*******************************************************************************************
#ifdef CONFIG_PROP
//*******************************************************************************************
//#include "../props/saber.h"
#include "../props/saber_fett263_buttons.h"
/*
saber.h - this is the default, you don't need a CONFIG_PROP section to use this.
saber_sa22c_buttons.h - saber prop with button assignments designed by sa22c.
saber_shtok_buttons.h - saber prop with button assignments designed by Dmitry Shtok.
saber_fett263_buttons.h - saber prop with button assignments designed by fett263, includes battle mode.
saber_BC_buttons.h - (ProffieOS 6 or later) saber prop with button assignments and features designed by Brian Conner.
saber_caiwyn_buttons.h - (ProffieOS 7 or later) This config is designed to provide fast, low-latency response to button presses for the most basic functions (blaster blocks, lockups, and clashes) by omitting, or limiting non-critical features.
detonator.h - thermal detonator prop.
blaster.h - blaster prop.
audiofx.h - similar to an adafruit audiofx board.
micom.h -
*/
#endif
//*******************************************************************************************
#ifdef CONFIG_PRESETS
//*******************************************************************************************
//----------------------------------------------------------------------------------------------
// Default preset for pixelblades. You'd need a new one if you got a tricree-npxl adapter.
//----------------------------------------------------------------------------------------------
/********* Preset Intent ***********************************************************************
This is Darth Bane Lightsaber. As such, it should have the following colors:
RED
I've bought Lord Blako's The Bane for this hilt. Will also add Kyberphics RED and Greyscale
Seethe, for variety.
Plus the always present battery metering PowerCell.
@@@ REMEMBER @@@: YOU SHOULD PAY FOR EACH SOUNDFONT PER PERSON: MULTIPLE HILTS SAME PERSON
ARE FINE. BUT IF YOU SELL THE HILT, YOU EITHER PAY FOR THOSE FONTS, INSTALL FONTS THAT THE
BUYER ALREADY OWNS OR DELETE YOUR COPIES.
************************************************************************************************/
/********* Blade Definitions *******************************************************************
We have five different presets:
-presetneopxl: Blade Present.
-presetnpxltricree: TriCree Blade Present
-presetchargeblade: Charging Bladeplug Present
-presetneopxlbladeplug: Illuminated Bladeplug
-presetnoblade: No Blade Present
************************************************************************************************/
/*
"Dark" Saber soundfonts:
"LBSF/TheBane;common", "LBSF/TheBane/tracks/track2.wav",
"Darth Bane"
"Kyberpho/Red;common", "Kyberpho/Red/tracks/track1.wav",
"RED"
"Greyscal/Seethe;common", "Greyscal/Seethe/tracks/track1.wav",
"Seethe"
*/
Preset presetneopxl[] = {
{ "LBSF/TheBane;common",
"LBSF/TheBane/tracks/track2.wav",
//Main Blade
StylePtr<MainHyperResponsiveRotoscopeOriginalTrilogyRed>(),
//Crystal Chamber
StylePtr<AccentHyperResponsiveRotoscopeOriginalTrilogyRed>(),
StylePtr<AccentHyperResponsiveRotoscopeOriginalTrilogyRed>(),
"Darth Bane"
},
{ "Kyberpho/Red;common",
"Kyberpho/Red/tracks/track1.wav",
//Main Blade
StylePtr<MainHyperResponsiveRotoscopePrequelsRed>(),
//Illuminated PCB
StylePtr<AccentHyperResponsiveRotoscopePrequelsRed>(),
StylePtr<AccentHyperResponsiveRotoscopePrequelsRed>(),
"RED"
},
{ "Greyscal/Seethe;common",
"Greyscal/Seethe/tracks/track1.wav",
//Main Blade
StylePtr<MainHyperResponsiveRotoscopeSequelsRed>(),
//Illuminated PCB
StylePtr<AccentHyperResponsiveRotoscopeSequelsRed>(),
StylePtr<AccentHyperResponsiveRotoscopeSequelsRed>(),
"Seethe"
},
{ "PwrCell;common", "tracks/mars.wav",
//Main Blade
&style_charging,
//Illuminated PCB
StyleNormalPtr<BLACK, BLACK, 300, 800>(),
StyleNormalPtr<BLACK, BLACK, 300, 800>(),
"Power Cell\nLevel"
}
};
//----------------------------------------------------------------------------------------------
// Preset for a NeoPixel TriCree adapter. Copies accents but simplify main blade.
//----------------------------------------------------------------------------------------------
Preset presetnpxltricree[] = {
{ "LBSF/TheBane;common",
"LBSF/TheBane/tracks/track2.wav",
//Main Blade
StyleNormalPtr<AudioFlicker<Yellow,White>,Red,300,800>(),
//Crystal Chamber
StylePtr<AccentHyperResponsiveRotoscopeOriginalTrilogyRed>(),
StylePtr<AccentHyperResponsiveRotoscopeOriginalTrilogyRed>(),
"Darth Bane"
},
{ "Kyberpho/Red;common",
"Kyberpho/Red/tracks/track1.wav",
//Main Blade
StyleNormalPtr<AudioFlicker<Yellow,White>,Red,300,800>(),
//Illuminated PCB
StylePtr<AccentHyperResponsiveRotoscopePrequelsRed>(),
StylePtr<AccentHyperResponsiveRotoscopePrequelsRed>(),
"RED"
},
{ "Greyscal/Seethe;common",
"Greyscal/Seethe/tracks/track1.wav",
//Main Blade
StyleNormalPtr<AudioFlicker<Yellow,White>,Red,300,800>(),
//Illuminated PCB
StylePtr<AccentHyperResponsiveRotoscopeSequelsRed>(),
StylePtr<AccentHyperResponsiveRotoscopeSequelsRed>(),
"Seethe"
},
{ "PwrCell;common", "tracks/mars.wav",
//Main Blade
&style_charging,
//Illuminated PCB
StyleNormalPtr<BLACK, BLACK, 300, 800>(),
StyleNormalPtr<BLACK, BLACK, 300, 800>(),
"Power Cell\nLevel"
}
};
//----------------------------------------------------------------------------------------------
// For NPX BladePlug
//----------------------------------------------------------------------------------------------
Preset presetneopxlbladeplug[] = {
{ "LBSF/TheBane;common",
"LBSF/TheBane/tracks/track2.wav",
//Main Blade
StylePtr<AccentHyperResponsiveRotoscopeOriginalTrilogyRed>(),
//Crystal Chamber
StylePtr<AccentHyperResponsiveRotoscopeOriginalTrilogyRed>(),
StylePtr<AccentHyperResponsiveRotoscopeOriginalTrilogyRed>(),
"Darth Bane"
},
{ "Kyberpho/Red;common",
"Kyberpho/Red/tracks/track1.wav",
//Main Blade
StylePtr<AccentHyperResponsiveRotoscopePrequelsRed>(),
//Illuminated PCB
StylePtr<AccentHyperResponsiveRotoscopePrequelsRed>(),
StylePtr<AccentHyperResponsiveRotoscopePrequelsRed>(),
"RED"
},
{ "Greyscal/Seethe;common",
"Greyscal/Seethe/tracks/track1.wav",
//Main Blade
StylePtr<AccentHyperResponsiveRotoscopeSequelsRed>(),
//Illuminated PCB
StylePtr<AccentHyperResponsiveRotoscopeSequelsRed>(),
StylePtr<AccentHyperResponsiveRotoscopeSequelsRed>(),
"Seethe"
},
{ "PwrCell;common", "tracks/mars.wav",
//Main Blade
&style_charging,
//Illuminated PCB
StyleNormalPtr<BLACK, BLACK, 300, 800>(),
StyleNormalPtr<BLACK, BLACK, 300, 800>(),
"Power Cell\nLevel"
}
};
//----------------------------------------------------------------------------------------------
// For the Charging BladePlug
//----------------------------------------------------------------------------------------------
Preset presetchargeblade[] = {
{ "PwrCell;common", "tracks/mars.wav",
//Main Blade
&style_charging,
//Illuminated PCB
StyleNormalPtr<BLACK, BLACK, 300, 800>(),
StyleNormalPtr<BLACK, BLACK, 300, 800>(),
"Power Cell\nLevel"
}
};
//----------------------------------------------------------------------------------------------
// For the no blade case I would just leave a single preset for display and one for charge.
//----------------------------------------------------------------------------------------------
Preset presetnoblade[] = {
{ "LBSF/TheBane;common",
"LBSF/TheBane/tracks/track2.wav",
//Main Blade
StylePtr<AccentHyperResponsiveRotoscopeOriginalTrilogyRed>(),
//Crystal Chamber
StylePtr<AccentHyperResponsiveRotoscopeOriginalTrilogyRed>(),
StylePtr<AccentHyperResponsiveRotoscopeOriginalTrilogyRed>(),
"Darth Bane"
},
{ "Kyberpho/Red;common",
"Kyberpho/Red/tracks/track1.wav",
//Main Blade
StylePtr<AccentHyperResponsiveRotoscopePrequelsRed>(),
//Illuminated PCB
StylePtr<AccentHyperResponsiveRotoscopePrequelsRed>(),
StylePtr<AccentHyperResponsiveRotoscopePrequelsRed>(),
"RED"
},
{ "Greyscal/Seethe;common",
"Greyscal/Seethe/tracks/track1.wav",
//Main Blade
StylePtr<AccentHyperResponsiveRotoscopeSequelsRed>(),
//Illuminated PCB
StylePtr<AccentHyperResponsiveRotoscopeSequelsRed>(),
StylePtr<AccentHyperResponsiveRotoscopeSequelsRed>(),
"Seethe"
},
{ "PwrCell;common", "tracks/mars.wav",
//Main Blade
&style_charging,
//Illuminated PCB
&style_charging,
&style_charging,
"Power Cell\nLevel"
}
};
//----------------------------------------------------------------------------------------------
// Blade number should always be the same. In this case, 7. Please note that the soundboard will
// not suppress power to any blade. But if it's not physically connected, you can blank it.
//----------------------------------------------------------------------------------------------
// Resistor range for the Blade PCB (between Data and Ground): 2k to 100k Ohms.
/********* Hardware Definition *****************************************************************
The main blade goes on Data1, while the illuminated PCB is on Data2. We use SubBladeWithStride
so the illuminated PCB is treated as two concentric circles.
Total pixels: 16 pixels.
We have both BladeID and Blade Present capabilities. This should enable all types of autoconfig
for presets and adapting to multiple conditions.
************************************************************************************************/
/********* Blade Definitions *******************************************************************
We have five different presets:
-presetneopxl: Blade Present.
-presetnpxltricree: TriCree Blade Present
-presetchargeblade: Charging Bladeplug Present
-presetneopxlbladeplug: Illuminated Bladeplug
-presetnoblade: No Blade Present
But we will only have a different save for "presetchargeblade", since the rest have the same
presets, only changing the style for the main blade due to hardware differences.
************************************************************************************************/
BladeConfig blades[] = {
// Always leave a 0 resistor for a "catch all" config. No resistor will read as high ohms.
// 0/Default is an 86cm, 124 pixel WS2812B
// Saving state for each differant preset separatelly. Could also save for each individual blade.
{ 0,
//Main Blade
WS281XBladePtr<124, bladePin, Color8::GRB, PowerPINS<bladePowerPin2, bladePowerPin3> >(),
//Illuminated PCB (separated in two 8 pxl rings)
SubBladeWithStride(0, 15, 2, WS281XBladePtr<16, blade2Pin, Color8::GRB, PowerPINS<bladePowerPin2, bladePowerPin3> >()),
SubBladeWithStride(1, 15, 2, NULL),
CONFIGARRAY(presetneopxl)
},
// 2.2k **FUTURE USE**
// 2.7k **FUTURE USE**
// 3.3k **FUTURE USE**
// 3.9k **FUTURE USE**
// 4.7k **FUTURE USE**
// 5.6k **FUTURE USE**
// 6.8k is an 46cm 65 pixel WS2812, SMD resistor (Grogu blade)
{ 6800,
WS281XBladePtr<65, bladePin, Color8::GRB, PowerPINS<bladePowerPin2, bladePowerPin3> >(),
SubBladeWithStride(0, 15, 2, WS281XBladePtr<16, blade2Pin, Color8::GRB, PowerPINS<bladePowerPin2, bladePowerPin3> >()),
SubBladeWithStride(1, 15, 2, NULL),
CONFIGARRAY(presetneopxl)
},
// 8.3k is an 56cm 80 pixel WS2812, SMD resistor (Yoda blade)
{ 8300,
WS281XBladePtr<80, bladePin, Color8::GRB, PowerPINS<bladePowerPin2, bladePowerPin3> >(),
SubBladeWithStride(0, 15, 2, WS281XBladePtr<16, blade2Pin, Color8::GRB, PowerPINS<bladePowerPin2, bladePowerPin3> >()),
SubBladeWithStride(1, 15, 2, NULL),
CONFIGARRAY(presetneopxl)
},
// 10k **FUTURE USE**
// 12k is a 108 pixel WS2812 (or V2 LED Strip), SMD resistor
{ 12000,
WS281XBladePtr<108, bladePin, Color8::GRB, PowerPINS<bladePowerPin2, bladePowerPin3> >(),
SubBladeWithStride(0, 15, 2, WS281XBladePtr<16, blade2Pin, Color8::GRB, PowerPINS<bladePowerPin2, bladePowerPin3> >()),
SubBladeWithStride(1, 15, 2, NULL),
CONFIGARRAY(presetneopxl)
},
// 15k is a 122 pixel WS2812 (or V2 LED Strip), SMD resistor
{ 15000,
WS281XBladePtr<122, bladePin, Color8::GRB, PowerPINS<bladePowerPin2, bladePowerPin3> >(),
SubBladeWithStride(0, 15, 2, WS281XBladePtr<16, blade2Pin, Color8::GRB, PowerPINS<bladePowerPin2, bladePowerPin3> >()),
SubBladeWithStride(1, 15, 2, NULL),
CONFIGARRAY(presetneopxl)
},
// 18k is a 132 pixel WS2812 (or V2 LED Strip), SMD resistor
{ 18000,
WS281XBladePtr<132, bladePin, Color8::GRB, PowerPINS<bladePowerPin2, bladePowerPin3> >(),
SubBladeWithStride(0, 15, 2, WS281XBladePtr<16, blade2Pin, Color8::GRB, PowerPINS<bladePowerPin2, bladePowerPin3> >()),
SubBladeWithStride(1, 15, 2, NULL),
CONFIGARRAY(presetneopxl)
},
// 22.3k is an 86.5cm 124 pixel WS2812, SMD resistor
{ 22000,
WS281XBladePtr<124, bladePin, Color8::GRB, PowerPINS<bladePowerPin2, bladePowerPin3> >(),
SubBladeWithStride(0, 15, 2, WS281XBladePtr<16, blade2Pin, Color8::GRB, PowerPINS<bladePowerPin2, bladePowerPin3> >()),
SubBladeWithStride(1, 15, 2, NULL),
CONFIGARRAY(presetneopxl)
},
// 27k is a 20 pixel WS2812 (or mini-LED Strip) (demo/test blade)
{ 27000,
WS281XBladePtr<20, bladePin, Color8::GRB, PowerPINS<bladePowerPin2, bladePowerPin3> >(),
SubBladeWithStride(0, 15, 2, WS281XBladePtr<16, blade2Pin, Color8::GRB, PowerPINS<bladePowerPin2, bladePowerPin3> >()),
SubBladeWithStride(1, 15, 2, NULL),
CONFIGARRAY(presetneopxl)
},
// 33k is a 30 pixel WS2812 (or mini-LED Strip) (demo/test blade)
{ 33000,
WS281XBladePtr<30, bladePin, Color8::GRB, PowerPINS<bladePowerPin2, bladePowerPin3> >(),
SubBladeWithStride(0, 15, 2, WS281XBladePtr<16, blade2Pin, Color8::GRB, PowerPINS<bladePowerPin2, bladePowerPin3> >()),
SubBladeWithStride(1, 15, 2, NULL),
CONFIGARRAY(presetneopxl)
},
// 39k is Charging Bladeplug with 5 pixels WS2812b
{ 39000,
WS281XBladePtr<5, bladePin, Color8::GRB, PowerPINS<bladePowerPin2, bladePowerPin3> >(),
SubBladeWithStride(0, 15, 2, WS281XBladePtr<16, blade2Pin, Color8::GRB, PowerPINS<bladePowerPin2, bladePowerPin3> >()),
SubBladeWithStride(1, 15, 2, NULL),
CONFIGARRAY(presetchargeblade),
"chrg_sav" //You can add a directory to save state for each blade.
},
// 47k is Bladeplug with 5 pixels WS2812b, SMD resistor
{ 47000,
WS281XBladePtr<5, bladePin, Color8::GRB, PowerPINS<bladePowerPin2, bladePowerPin3> >(),
SubBladeWithStride(0, 15, 2, WS281XBladePtr<16, blade2Pin, Color8::GRB, PowerPINS<bladePowerPin2, bladePowerPin3> >()),
SubBladeWithStride(1, 15, 2, NULL),
CONFIGARRAY(presetneopxlbladeplug),
},
// 56k is Shtok's NPXL to TriCree adapter
{ 56000,
WS281XBladePtr<1, bladePin, Color8::GRB, PowerPINS<bladePowerPin2, bladePowerPin3> >(),
SubBladeWithStride(0, 15, 2, WS281XBladePtr<16, blade2Pin, Color8::GRB, PowerPINS<bladePowerPin2, bladePowerPin3> >()),
SubBladeWithStride(1, 15, 2, NULL),
CONFIGARRAY(presetnpxltricree), /**** Please do a different preset for TRI Cree ****/
},
// 68k is an 86.5cm, 124 pixel WS2812, metal resistor
{ 68000,
WS281XBladePtr<124, bladePin, Color8::GRB, PowerPINS<bladePowerPin2, bladePowerPin3> >(),
SubBladeWithStride(0, 15, 2, WS281XBladePtr<16, blade2Pin, Color8::GRB, PowerPINS<bladePowerPin2, bladePowerPin3> >()),
SubBladeWithStride(1, 15, 2, NULL),
CONFIGARRAY(presetneopxl)
},
//82k **FUTURE USE**
//### Deprecated ###
// 100k is an 85cm, 124 pixel WS2812B
{ 100000,
WS281XBladePtr<124, bladePin, Color8::GRB, PowerPINS<bladePowerPin2, bladePowerPin3> >(),
SubBladeWithStride(0, 15, 2, WS281XBladePtr<16, blade2Pin, Color8::GRB, PowerPINS<bladePowerPin2, bladePowerPin3> >()),
SubBladeWithStride(1, 15, 2, NULL),
CONFIGARRAY(presetneopxl)
},
//Let's assume a blade plug with 5 leds.
{ NO_BLADE,
WS281XBladePtr<5, bladePin, Color8::GRB, PowerPINS<bladePowerPin2, bladePowerPin3> >(),
SubBladeWithStride(0, 15, 2, WS281XBladePtr<16, blade2Pin, Color8::GRB, PowerPINS<bladePowerPin2, bladePowerPin3> >()),
SubBladeWithStride(1, 15, 2, NULL),
CONFIGARRAY(presetnoblade),
}
};
#endif
//*******************************************************************************************
#ifdef CONFIG_BUTTONS
//*******************************************************************************************
Button PowerButton(BUTTON_POWER, powerButtonPin, "pow"); //Single or Power Button
Button AuxButton(BUTTON_AUX, auxPin, "aux"); // for second button
#endif
//*******************************************************************************************
#ifdef CONFIG_STYLES
//*******************************************************************************************
//######## Main Blade Style ########
/*--------------------------------- MainHyperResponsiveRotoscopeOriginalTrilogyRed -------------------------
copyright Fett263 Rotoscope (Primary Blade) OS6 Style
https://fett263.com/fett263-proffieOS6-style-library.html#Rotoscope
OS6.7 v4.021
Single Style
Base Style: Hyper Responsive Rotoscope (Original Trilogy)
--Effects Included--
Ignition Effect: Standard Ignition
PowerUp Effect: Power Burst Forward
Retraction Effect: Standard Retraction
CoolDown Effect: Power Burst Reverse
Lockup Effect: Intensity Lockup V1, Begin Effect: Real Clash, End Effect: Localized Absorb
LightningBlock Effect: Responsive Lightning Block
Drag Effect: Intensity Sparking Drag
Melt Effect: Intensity Melt
Blast Effect: Blast Wave (Random)
Clash Effect: Responsive Clash with Wave
Battery Level: Blade Location (Green to Red)
*/
using MainHyperResponsiveRotoscopeOriginalTrilogyRed = Layers<Mix<HoldPeakF<SwingSpeed<250>,Scale<SwingAcceleration<100>,Int<50>,Int<500>>,Scale<SwingAcceleration<>,Int<20000>,Int<10000>>>,RandomFlicker<StripesX<Int<15000>,Scale<HoldPeakF<SwingSpeed<200>,Scale<SwingAcceleration<100>,Int<50>,Int<300>>,Scale<SwingAcceleration<100>,Int<24000>,Int<16000>>>,Int<-3200>,Int<-200>>,RgbArg<BASE_COLOR_ARG,Rgb<255,0,0>>,RgbArg<BASE_COLOR_ARG,Rgb<255,0,0>>,Mix<Int<7710>,Black,RgbArg<BASE_COLOR_ARG,Rgb<255,0,0>>>,RgbArg<BASE_COLOR_ARG,Rgb<255,0,0>>,Mix<Int<19276>,Black,RgbArg<BASE_COLOR_ARG,Rgb<255,0,0>>>>,RgbArg<BASE_COLOR_ARG,Rgb<255,0,0>>>,RgbArg<BASE_COLOR_ARG,Rgb<255,0,0>>>,TransitionEffectL<TrConcat<TrJoin<TrDelayX<IgnitionTime<300>>,TrInstant>,Stripes<5000,-2500,RgbArg<IGNITION_COLOR_ARG,Rgb<255,255,255>>,Mix<Int<7710>,Black,RgbArg<IGNITION_COLOR_ARG,Rgb<255,255,255>>>,Mix<Int<3855>,Black,RgbArg<IGNITION_COLOR_ARG,Rgb<255,255,255>>>>,TrFade<800>>,EFFECT_IGNITION>,TransitionEffectL<TrConcat<TrJoin<TrDelayX<RetractionTime<0>>,TrInstant>,Stripes<5000,2500,RgbArg<RETRACTION_COLOR_ARG,Rgb<255,255,255>>,Mix<Int<7710>,Black,RgbArg<RETRACTION_COLOR_ARG,Rgb<255,255,255>>>,Mix<Int<3855>,Black,RgbArg<RETRACTION_COLOR_ARG,Rgb<255,255,255>>>>,TrFade<800>>,EFFECT_RETRACTION>,TransitionEffectL<TrWaveX<RgbArg<BLAST_COLOR_ARG,Rgb<255,244,157>>,Scale<EffectRandomF<EFFECT_BLAST>,Int<100>,Int<400>>,Int<100>,Scale<EffectPosition<EFFECT_BLAST>,Int<100>,Int<400>>,Scale<EffectPosition<EFFECT_BLAST>,Int<28000>,Int<8000>>>,EFFECT_BLAST>,TransitionEffectL<TrWaveX<RgbArg<CLASH_COLOR_ARG,Rgb<255,68,0>>,Scale<ClashImpactF<>,Int<100>,Int<400>>,Int<100>,Scale<ClashImpactF<>,Int<100>,Int<400>>,Scale<BladeAngle<>,Scale<BladeAngle<0,16000>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<-12000>>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<10000>>>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<-10000>>>>,EFFECT_CLASH>,LockupTrL<TransitionEffect<AlphaMixL<Bump<Scale<BladeAngle<>,Scale<BladeAngle<0,16000>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<-12000>>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<10000>>>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<-10000>>>,Scale<SwingSpeed<100>,Int<14000>,Int<18000>>>,BrownNoiseFlickerL<RgbArg<LOCKUP_COLOR_ARG,Rgb<255,68,0>>,Int<200>>,StripesX<Int<1800>,Scale<NoisySoundLevel,Int<-3500>,Int<-5000>>,Mix<Int<6425>,Black,RgbArg<LOCKUP_COLOR_ARG,Rgb<255,68,0>>>,RgbArg<LOCKUP_COLOR_ARG,Rgb<255,68,0>>,Mix<Int<12850>,Black,RgbArg<LOCKUP_COLOR_ARG,Rgb<255,68,0>>>>>,AlphaL<AudioFlicker<RgbArg<LOCKUP_COLOR_ARG,Rgb<255,68,0>>,Mix<Int<10280>,Black,RgbArg<LOCKUP_COLOR_ARG,Rgb<255,68,0>>>>,Bump<Scale<BladeAngle<>,Scale<BladeAngle<0,16000>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<-12000>>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<10000>>>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<-10000>>>,Int<13000>>>,TrJoin<TrDelay<8000>,TrInstant>,TrFade<3000>,EFFECT_LOCKUP_BEGIN>,TrConcat<TrJoin<TrDelay<50>,TrInstant>,Mix<IsLessThan<ClashImpactF<>,Int<26000>>,RgbArg<LOCKUP_COLOR_ARG,Rgb<255,68,0>>,AlphaL<RgbArg<LOCKUP_COLOR_ARG,Rgb<255,68,0>>,Bump<Scale<BladeAngle<>,Scale<BladeAngle<0,16000>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<-12000>>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<10000>>>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<-10000>>>,Scale<ClashImpactF<>,Int<20000>,Int<60000>>>>>,TrFade<300>>,TrConcat<TrInstant,AlphaL<RgbArg<LOCKUP_COLOR_ARG,Rgb<255,68,0>>,Bump<Scale<BladeAngle<>,Scale<BladeAngle<0,16000>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<-12000>>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<10000>>>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<-10000>>>,Int<13000>>>,TrFade<400>>,SaberBase::LOCKUP_NORMAL>,ResponsiveLightningBlockL<Strobe<RgbArg<LB_COLOR_ARG,Rgb<118,0,194>>,AudioFlicker<RgbArg<LB_COLOR_ARG,Rgb<118,0,194>>,Blue>,50,1>,TrConcat<TrInstant,AlphaL<RgbArg<LB_COLOR_ARG,Rgb<118,0,194>>,Bump<Int<12000>,Int<18000>>>,TrFade<200>>,TrConcat<TrInstant,HumpFlickerL<AlphaL<RgbArg<LB_COLOR_ARG,Rgb<118,0,194>>,Int<16000>>,30>,TrSmoothFade<600>>>,LockupTrL<AlphaL<RandomPerLEDFlickerL<RgbArg<DRAG_COLOR_ARG,Rgb<255,255,0>>>,SmoothStep<IntArg<DRAG_SIZE_ARG,28000>,Int<3000>>>,TrConcat<TrJoin<TrDelay<4000>,TrWipeIn<200>>,AlphaL<BrownNoiseFlickerL<RgbArg<DRAG_COLOR_ARG,Rgb<255,255,0>>,Int<300>>,SmoothStep<IntArg<DRAG_SIZE_ARG,28000>,Int<3000>>>,TrFade<4000>>,TrFade<300>,SaberBase::LOCKUP_DRAG>,LockupTrL<AlphaL<Remap<Scale<RampF,Int<65536>,Int<0>>,StaticFire<Mix<TwistAngle<>,RgbArg<STAB_COLOR_ARG,Rgb<255,24,0>>,RotateColorsX<Int<3000>,RgbArg<STAB_COLOR_ARG,Rgb<255,24,0>>>>,Mix<TwistAngle<>,RotateColorsX<Int<3000>,RgbArg<STAB_COLOR_ARG,Rgb<255,24,0>>>,RotateColorsX<Int<3000>,Mix<Int<12000>,Black,RgbArg<STAB_COLOR_ARG,Rgb<255,24,0>>>>>,0,3,5,3000,10>>,SmoothStep<IntArg<MELT_SIZE_ARG,28000>,Int<4000>>>,TrConcat<TrWipeIn<100>,AlphaL<RgbArg<STAB_COLOR_ARG,Rgb<255,24,0>>,SmoothStep<IntArg<MELT_SIZE_ARG,28000>,Int<4000>>>,TrJoin<TrDelay<4000>,TrFade<300>>,AlphaL<Mix<TwistAngle<>,RgbArg<STAB_COLOR_ARG,Rgb<255,24,0>>,RotateColorsX<Int<3000>,RgbArg<STAB_COLOR_ARG,Rgb<255,24,0>>>>,SmoothStep<IntArg<MELT_SIZE_ARG,28000>,Int<4000>>>,TrFade<4000>>,TrWipe<200>,SaberBase::LOCKUP_MELT>,InOutTrL<TrWipeX<IgnitionTime<300>>,TrWipeInX<RetractionTime<0>>,Black>,TransitionEffectL<TrConcat<TrJoin<TrDelay<2000>,TrInstant>,AlphaL<Mix<BatteryLevel,Red,Green>,Bump<BatteryLevel,Int<10000>>>,TrFade<300>>,EFFECT_BATTERY_LEVEL>>;
/*
Add to preset as StylePtr<MainHyperResponsiveRotoscopeOriginalTrilogyRed>()
--------------------------------------------------------------------------*/
/*--------------------------------- MainHyperResponsiveRotoscopePrequelsRed -------------------------
copyright Fett263 Rotoscope (Primary Blade) OS6 Style
https://fett263.com/fett263-proffieOS6-style-library.html#Rotoscope
OS6.7 v4.021
Single Style
Base Style: Hyper Responsive Rotoscope (Prequels)
--Effects Included--
Ignition Effect: Standard Ignition
PowerUp Effect: Power Burst Forward
Retraction Effect: Standard Retraction
CoolDown Effect: Power Burst Reverse
Lockup Effect: Intensity Lockup V1, Begin Effect: Real Clash, End Effect: Localized Absorb
LightningBlock Effect: Responsive Lightning Block
Drag Effect: Intensity Sparking Drag
Melt Effect: Intensity Melt
Blast Effect: Blast Wave (Random)
Clash Effect: Responsive Clash with Wave
Battery Level: Blade Location (Green to Red)
*/
using MainHyperResponsiveRotoscopePrequelsRed = Layers<Mix<HoldPeakF<SwingSpeed<250>,Scale<SwingAcceleration<100>,Int<50>,Int<500>>,Scale<SwingAcceleration<>,Int<20000>,Int<10000>>>,RandomFlicker<StripesX<Int<24000>,Scale<HoldPeakF<SwingSpeed<200>,Scale<SwingAcceleration<100>,Int<50>,Int<300>>,Scale<SwingAcceleration<100>,Int<24000>,Int<16000>>>,Int<-1400>,Int<-100>>,RgbArg<BASE_COLOR_ARG,Rgb<255,0,0>>,RgbArg<BASE_COLOR_ARG,Rgb<255,0,0>>,Mix<Int<7710>,Black,RgbArg<BASE_COLOR_ARG,Rgb<255,0,0>>>,RgbArg<BASE_COLOR_ARG,Rgb<255,0,0>>,Mix<Int<19276>,Black,RgbArg<BASE_COLOR_ARG,Rgb<255,0,0>>>>,RgbArg<BASE_COLOR_ARG,Rgb<255,0,0>>>,RgbArg<BASE_COLOR_ARG,Rgb<255,0,0>>>,TransitionEffectL<TrConcat<TrJoin<TrDelayX<IgnitionTime<300>>,TrInstant>,Stripes<5000,-2500,RgbArg<IGNITION_COLOR_ARG,Rgb<255,255,255>>,Mix<Int<7710>,Black,RgbArg<IGNITION_COLOR_ARG,Rgb<255,255,255>>>,Mix<Int<3855>,Black,RgbArg<IGNITION_COLOR_ARG,Rgb<255,255,255>>>>,TrFade<800>>,EFFECT_IGNITION>,TransitionEffectL<TrConcat<TrJoin<TrDelayX<RetractionTime<0>>,TrInstant>,Stripes<5000,2500,RgbArg<RETRACTION_COLOR_ARG,Rgb<255,255,255>>,Mix<Int<7710>,Black,RgbArg<RETRACTION_COLOR_ARG,Rgb<255,255,255>>>,Mix<Int<3855>,Black,RgbArg<RETRACTION_COLOR_ARG,Rgb<255,255,255>>>>,TrFade<800>>,EFFECT_RETRACTION>,TransitionEffectL<TrWaveX<RgbArg<BLAST_COLOR_ARG,Rgb<255,244,157>>,Scale<EffectRandomF<EFFECT_BLAST>,Int<100>,Int<400>>,Int<100>,Scale<EffectPosition<EFFECT_BLAST>,Int<100>,Int<400>>,Scale<EffectPosition<EFFECT_BLAST>,Int<28000>,Int<8000>>>,EFFECT_BLAST>,TransitionEffectL<TrWaveX<RgbArg<CLASH_COLOR_ARG,Rgb<255,68,0>>,Scale<ClashImpactF<>,Int<100>,Int<400>>,Int<100>,Scale<ClashImpactF<>,Int<100>,Int<400>>,Scale<BladeAngle<>,Scale<BladeAngle<0,16000>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<-12000>>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<10000>>>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<-10000>>>>,EFFECT_CLASH>,LockupTrL<TransitionEffect<AlphaMixL<Bump<Scale<BladeAngle<>,Scale<BladeAngle<0,16000>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<-12000>>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<10000>>>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<-10000>>>,Scale<SwingSpeed<100>,Int<14000>,Int<18000>>>,BrownNoiseFlickerL<RgbArg<LOCKUP_COLOR_ARG,Rgb<255,68,0>>,Int<200>>,StripesX<Int<1800>,Scale<NoisySoundLevel,Int<-3500>,Int<-5000>>,Mix<Int<6425>,Black,RgbArg<LOCKUP_COLOR_ARG,Rgb<255,68,0>>>,RgbArg<LOCKUP_COLOR_ARG,Rgb<255,68,0>>,Mix<Int<12850>,Black,RgbArg<LOCKUP_COLOR_ARG,Rgb<255,68,0>>>>>,AlphaL<AudioFlicker<RgbArg<LOCKUP_COLOR_ARG,Rgb<255,68,0>>,Mix<Int<10280>,Black,RgbArg<LOCKUP_COLOR_ARG,Rgb<255,68,0>>>>,Bump<Scale<BladeAngle<>,Scale<BladeAngle<0,16000>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<-12000>>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<10000>>>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<-10000>>>,Int<13000>>>,TrJoin<TrDelay<8000>,TrInstant>,TrFade<3000>,EFFECT_LOCKUP_BEGIN>,TrConcat<TrJoin<TrDelay<50>,TrInstant>,Mix<IsLessThan<ClashImpactF<>,Int<26000>>,RgbArg<LOCKUP_COLOR_ARG,Rgb<255,68,0>>,AlphaL<RgbArg<LOCKUP_COLOR_ARG,Rgb<255,68,0>>,Bump<Scale<BladeAngle<>,Scale<BladeAngle<0,16000>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<-12000>>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<10000>>>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<-10000>>>,Scale<ClashImpactF<>,Int<20000>,Int<60000>>>>>,TrFade<300>>,TrConcat<TrInstant,AlphaL<RgbArg<LOCKUP_COLOR_ARG,Rgb<255,68,0>>,Bump<Scale<BladeAngle<>,Scale<BladeAngle<0,16000>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<-12000>>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<10000>>>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<-10000>>>,Int<13000>>>,TrFade<400>>,SaberBase::LOCKUP_NORMAL>,ResponsiveLightningBlockL<Strobe<RgbArg<LB_COLOR_ARG,Rgb<118,0,194>>,AudioFlicker<RgbArg<LB_COLOR_ARG,Rgb<118,0,194>>,Blue>,50,1>,TrConcat<TrInstant,AlphaL<RgbArg<LB_COLOR_ARG,Rgb<118,0,194>>,Bump<Int<12000>,Int<18000>>>,TrFade<200>>,TrConcat<TrInstant,HumpFlickerL<AlphaL<RgbArg<LB_COLOR_ARG,Rgb<118,0,194>>,Int<16000>>,30>,TrSmoothFade<600>>>,LockupTrL<AlphaL<RandomPerLEDFlickerL<RgbArg<DRAG_COLOR_ARG,Rgb<255,255,0>>>,SmoothStep<IntArg<DRAG_SIZE_ARG,28000>,Int<3000>>>,TrConcat<TrJoin<TrDelay<4000>,TrWipeIn<200>>,AlphaL<BrownNoiseFlickerL<RgbArg<DRAG_COLOR_ARG,Rgb<255,255,0>>,Int<300>>,SmoothStep<IntArg<DRAG_SIZE_ARG,28000>,Int<3000>>>,TrFade<4000>>,TrFade<300>,SaberBase::LOCKUP_DRAG>,LockupTrL<AlphaL<Remap<Scale<RampF,Int<65536>,Int<0>>,StaticFire<Mix<TwistAngle<>,RgbArg<STAB_COLOR_ARG,Rgb<255,24,0>>,RotateColorsX<Int<3000>,RgbArg<STAB_COLOR_ARG,Rgb<255,24,0>>>>,Mix<TwistAngle<>,RotateColorsX<Int<3000>,RgbArg<STAB_COLOR_ARG,Rgb<255,24,0>>>,RotateColorsX<Int<3000>,Mix<Int<12000>,Black,RgbArg<STAB_COLOR_ARG,Rgb<255,24,0>>>>>,0,3,5,3000,10>>,SmoothStep<IntArg<MELT_SIZE_ARG,28000>,Int<4000>>>,TrConcat<TrWipeIn<100>,AlphaL<RgbArg<STAB_COLOR_ARG,Rgb<255,24,0>>,SmoothStep<IntArg<MELT_SIZE_ARG,28000>,Int<4000>>>,TrJoin<TrDelay<4000>,TrFade<300>>,AlphaL<Mix<TwistAngle<>,RgbArg<STAB_COLOR_ARG,Rgb<255,24,0>>,RotateColorsX<Int<3000>,RgbArg<STAB_COLOR_ARG,Rgb<255,24,0>>>>,SmoothStep<IntArg<MELT_SIZE_ARG,28000>,Int<4000>>>,TrFade<4000>>,TrWipe<200>,SaberBase::LOCKUP_MELT>,InOutTrL<TrWipeX<IgnitionTime<300>>,TrWipeInX<RetractionTime<0>>,Black>,TransitionEffectL<TrConcat<TrJoin<TrDelay<2000>,TrInstant>,AlphaL<Mix<BatteryLevel,Red,Green>,Bump<BatteryLevel,Int<10000>>>,TrFade<300>>,EFFECT_BATTERY_LEVEL>>;
/*
Add to preset as StylePtr<MainHyperResponsiveRotoscopePrequelsRed>()
--------------------------------------------------------------------------*/
/*--------------------------------- MainHyperResponsiveRotoscopeSequelsRed -------------------------
copyright Fett263 Rotoscope (Primary Blade) OS6 Style
https://fett263.com/fett263-proffieOS6-style-library.html#Rotoscope
OS6.7 v4.021
Single Style
Base Style: Hyper Responsive Rotoscope (Sequels)
--Effects Included--
Ignition Effect: Standard Ignition
PowerUp Effect: Power Burst Forward
Retraction Effect: Standard Retraction
CoolDown Effect: Power Burst Reverse
Lockup Effect: Intensity Lockup V1, Begin Effect: Real Clash, End Effect: Localized Absorb
LightningBlock Effect: Responsive Lightning Block
Drag Effect: Intensity Sparking Drag
Melt Effect: Intensity Melt
Blast Effect: Blast Wave (Random)
Clash Effect: Responsive Clash with Wave
Battery Level: Blade Location (Green to Red)
*/
using MainHyperResponsiveRotoscopeSequelsRed = Layers<Mix<HoldPeakF<SwingSpeed<250>,Scale<SwingAcceleration<100>,Int<50>,Int<500>>,Scale<SwingAcceleration<>,Int<20000>,Int<10000>>>,RandomFlicker<StripesX<Int<14000>,Scale<HoldPeakF<SwingSpeed<200>,Scale<SwingAcceleration<100>,Int<50>,Int<300>>,Scale<SwingAcceleration<100>,Int<24000>,Int<16000>>>,Int<-4000>,Int<-400>>,RgbArg<BASE_COLOR_ARG,Rgb<255,0,0>>,RgbArg<BASE_COLOR_ARG,Rgb<255,0,0>>,Mix<Int<7710>,Black,RgbArg<BASE_COLOR_ARG,Rgb<255,0,0>>>,RgbArg<BASE_COLOR_ARG,Rgb<255,0,0>>,Mix<Int<19276>,Black,RgbArg<BASE_COLOR_ARG,Rgb<255,0,0>>>>,RgbArg<BASE_COLOR_ARG,Rgb<255,0,0>>>,RgbArg<BASE_COLOR_ARG,Rgb<255,0,0>>>,TransitionEffectL<TrConcat<TrJoin<TrDelayX<IgnitionTime<300>>,TrInstant>,Stripes<5000,-2500,RgbArg<IGNITION_COLOR_ARG,Rgb<255,255,255>>,Mix<Int<7710>,Black,RgbArg<IGNITION_COLOR_ARG,Rgb<255,255,255>>>,Mix<Int<3855>,Black,RgbArg<IGNITION_COLOR_ARG,Rgb<255,255,255>>>>,TrFade<800>>,EFFECT_IGNITION>,TransitionEffectL<TrConcat<TrJoin<TrDelayX<RetractionTime<0>>,TrInstant>,Stripes<5000,2500,RgbArg<RETRACTION_COLOR_ARG,Rgb<255,255,255>>,Mix<Int<7710>,Black,RgbArg<RETRACTION_COLOR_ARG,Rgb<255,255,255>>>,Mix<Int<3855>,Black,RgbArg<RETRACTION_COLOR_ARG,Rgb<255,255,255>>>>,TrFade<800>>,EFFECT_RETRACTION>,TransitionEffectL<TrWaveX<RgbArg<BLAST_COLOR_ARG,Rgb<255,244,157>>,Scale<EffectRandomF<EFFECT_BLAST>,Int<100>,Int<400>>,Int<100>,Scale<EffectPosition<EFFECT_BLAST>,Int<100>,Int<400>>,Scale<EffectPosition<EFFECT_BLAST>,Int<28000>,Int<8000>>>,EFFECT_BLAST>,TransitionEffectL<TrWaveX<RgbArg<CLASH_COLOR_ARG,Rgb<255,68,0>>,Scale<ClashImpactF<>,Int<100>,Int<400>>,Int<100>,Scale<ClashImpactF<>,Int<100>,Int<400>>,Scale<BladeAngle<>,Scale<BladeAngle<0,16000>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<-12000>>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<10000>>>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<-10000>>>>,EFFECT_CLASH>,LockupTrL<TransitionEffect<AlphaMixL<Bump<Scale<BladeAngle<>,Scale<BladeAngle<0,16000>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<-12000>>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<10000>>>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<-10000>>>,Scale<SwingSpeed<100>,Int<14000>,Int<18000>>>,BrownNoiseFlickerL<RgbArg<LOCKUP_COLOR_ARG,Rgb<255,68,0>>,Int<200>>,StripesX<Int<1800>,Scale<NoisySoundLevel,Int<-3500>,Int<-5000>>,Mix<Int<6425>,Black,RgbArg<LOCKUP_COLOR_ARG,Rgb<255,68,0>>>,RgbArg<LOCKUP_COLOR_ARG,Rgb<255,68,0>>,Mix<Int<12850>,Black,RgbArg<LOCKUP_COLOR_ARG,Rgb<255,68,0>>>>>,AlphaL<AudioFlicker<RgbArg<LOCKUP_COLOR_ARG,Rgb<255,68,0>>,Mix<Int<10280>,Black,RgbArg<LOCKUP_COLOR_ARG,Rgb<255,68,0>>>>,Bump<Scale<BladeAngle<>,Scale<BladeAngle<0,16000>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<-12000>>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<10000>>>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<-10000>>>,Int<13000>>>,TrJoin<TrDelay<8000>,TrInstant>,TrFade<3000>,EFFECT_LOCKUP_BEGIN>,TrConcat<TrJoin<TrDelay<50>,TrInstant>,Mix<IsLessThan<ClashImpactF<>,Int<26000>>,RgbArg<LOCKUP_COLOR_ARG,Rgb<255,68,0>>,AlphaL<RgbArg<LOCKUP_COLOR_ARG,Rgb<255,68,0>>,Bump<Scale<BladeAngle<>,Scale<BladeAngle<0,16000>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<-12000>>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<10000>>>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<-10000>>>,Scale<ClashImpactF<>,Int<20000>,Int<60000>>>>>,TrFade<300>>,TrConcat<TrInstant,AlphaL<RgbArg<LOCKUP_COLOR_ARG,Rgb<255,68,0>>,Bump<Scale<BladeAngle<>,Scale<BladeAngle<0,16000>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<-12000>>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<10000>>>,Sum<IntArg<LOCKUP_POSITION_ARG,16000>,Int<-10000>>>,Int<13000>>>,TrFade<400>>,SaberBase::LOCKUP_NORMAL>,ResponsiveLightningBlockL<Strobe<RgbArg<LB_COLOR_ARG,Rgb<118,0,194>>,AudioFlicker<RgbArg<LB_COLOR_ARG,Rgb<118,0,194>>,Blue>,50,1>,TrConcat<TrInstant,AlphaL<RgbArg<LB_COLOR_ARG,Rgb<118,0,194>>,Bump<Int<12000>,Int<18000>>>,TrFade<200>>,TrConcat<TrInstant,HumpFlickerL<AlphaL<RgbArg<LB_COLOR_ARG,Rgb<118,0,194>>,Int<16000>>,30>,TrSmoothFade<600>>>,LockupTrL<AlphaL<RandomPerLEDFlickerL<RgbArg<DRAG_COLOR_ARG,Rgb<255,255,0>>>,SmoothStep<IntArg<DRAG_SIZE_ARG,28000>,Int<3000>>>,TrConcat<TrJoin<TrDelay<4000>,TrWipeIn<200>>,AlphaL<BrownNoiseFlickerL<RgbArg<DRAG_COLOR_ARG,Rgb<255,255,0>>,Int<300>>,SmoothStep<IntArg<DRAG_SIZE_ARG,28000>,Int<3000>>>,TrFade<4000>>,TrFade<300>,SaberBase::LOCKUP_DRAG>,LockupTrL<AlphaL<Remap<Scale<RampF,Int<65536>,Int<0>>,StaticFire<Mix<TwistAngle<>,RgbArg<STAB_COLOR_ARG,Rgb<255,24,0>>,RotateColorsX<Int<3000>,RgbArg<STAB_COLOR_ARG,Rgb<255,24,0>>>>,Mix<TwistAngle<>,RotateColorsX<Int<3000>,RgbArg<STAB_COLOR_ARG,Rgb<255,24,0>>>,RotateColorsX<Int<3000>,Mix<Int<12000>,Black,RgbArg<STAB_COLOR_ARG,Rgb<255,24,0>>>>>,0,3,5,3000,10>>,SmoothStep<IntArg<MELT_SIZE_ARG,28000>,Int<4000>>>,TrConcat<TrWipeIn<100>,AlphaL<RgbArg<STAB_COLOR_ARG,Rgb<255,24,0>>,SmoothStep<IntArg<MELT_SIZE_ARG,28000>,Int<4000>>>,TrJoin<TrDelay<4000>,TrFade<300>>,AlphaL<Mix<TwistAngle<>,RgbArg<STAB_COLOR_ARG,Rgb<255,24,0>>,RotateColorsX<Int<3000>,RgbArg<STAB_COLOR_ARG,Rgb<255,24,0>>>>,SmoothStep<IntArg<MELT_SIZE_ARG,28000>,Int<4000>>>,TrFade<4000>>,TrWipe<200>,SaberBase::LOCKUP_MELT>,InOutTrL<TrWipeX<IgnitionTime<300>>,TrWipeInX<RetractionTime<0>>,Black>,TransitionEffectL<TrConcat<TrJoin<TrDelay<2000>,TrInstant>,AlphaL<Mix<BatteryLevel,Red,Green>,Bump<BatteryLevel,Int<10000>>>,TrFade<300>>,EFFECT_BATTERY_LEVEL>>;
/*
Add to preset as StylePtr<MainHyperResponsiveRotoscopeSequelsRed>()
--------------------------------------------------------------------------*/
//######## Illuminated PCB Style ########
/*--------------------------------- AccentHyperResponsiveRotoscopeOriginalTrilogyRed -------------------------
copyright Fett263 Rotoscope (Accent LED / PCB) OS6 Style
https://fett263.com/fett263-proffieOS6-style-library.html#Rotoscope
OS6.7 v4.021
Single Style
Base Style: Hyper Responsive Rotoscope (Original Trilogy)
Off Behavior: Off
--Effects Included--
Ignition Effect: Instant
Retraction Effect: Instant
*/
using AccentHyperResponsiveRotoscopeOriginalTrilogyRed = Layers<Mix<HoldPeakF<SwingSpeed<250>,Scale<SwingAcceleration<100>,Int<50>,Int<500>>,Scale<SwingAcceleration<>,Int<20000>,Int<10000>>>,RandomFlicker<StripesX<Int<15000>,Scale<HoldPeakF<SwingSpeed<200>,Scale<SwingAcceleration<100>,Int<50>,Int<300>>,Scale<SwingAcceleration<100>,Int<24000>,Int<16000>>>,Int<-3200>,Int<-200>>,RgbArg<BASE_COLOR_ARG,Rgb<255,0,0>>,RgbArg<BASE_COLOR_ARG,Rgb<255,0,0>>,Mix<Int<7710>,Black,RgbArg<BASE_COLOR_ARG,Rgb<255,0,0>>>,RgbArg<BASE_COLOR_ARG,Rgb<255,0,0>>,Mix<Int<19276>,Black,RgbArg<BASE_COLOR_ARG,Rgb<255,0,0>>>>,RgbArg<BASE_COLOR_ARG,Rgb<255,0,0>>>,RgbArg<BASE_COLOR_ARG,Rgb<255,0,0>>>,InOutTrL<TrInstant,TrInstant,Black>>;
/*
Add to preset as StylePtr<AccentHyperResponsiveRotoscopeOriginalTrilogyRed>()
--------------------------------------------------------------------------*/
/*--------------------------------- AccentHyperResponsiveRotoscopePrequelsRed -------------------------
copyright Fett263 Rotoscope (Accent LED / PCB) OS6 Style
https://fett263.com/fett263-proffieOS6-style-library.html#Rotoscope
OS6.7 v4.021
Single Style
Base Style: Hyper Responsive Rotoscope (Prequels)
Off Behavior: Off
--Effects Included--
Ignition Effect: Instant
Retraction Effect: Instant
*/
using AccentHyperResponsiveRotoscopePrequelsRed = Layers<Mix<HoldPeakF<SwingSpeed<250>,Scale<SwingAcceleration<100>,Int<50>,Int<500>>,Scale<SwingAcceleration<>,Int<20000>,Int<10000>>>,RandomFlicker<StripesX<Int<24000>,Scale<HoldPeakF<SwingSpeed<200>,Scale<SwingAcceleration<100>,Int<50>,Int<300>>,Scale<SwingAcceleration<100>,Int<24000>,Int<16000>>>,Int<-1400>,Int<-100>>,RgbArg<BASE_COLOR_ARG,Rgb<255,0,0>>,RgbArg<BASE_COLOR_ARG,Rgb<255,0,0>>,Mix<Int<7710>,Black,RgbArg<BASE_COLOR_ARG,Rgb<255,0,0>>>,RgbArg<BASE_COLOR_ARG,Rgb<255,0,0>>,Mix<Int<19276>,Black,RgbArg<BASE_COLOR_ARG,Rgb<255,0,0>>>>,RgbArg<BASE_COLOR_ARG,Rgb<255,0,0>>>,RgbArg<BASE_COLOR_ARG,Rgb<255,0,0>>>,InOutTrL<TrInstant,TrInstant,Black>>;
/*
Add to preset as StylePtr<AccentHyperResponsiveRotoscopePrequelsRed>()
--------------------------------------------------------------------------*/
/*--------------------------------- AccentHyperResponsiveRotoscopeSequelsRed -------------------------
copyright Fett263 Rotoscope (Accent LED / PCB) OS6 Style
https://fett263.com/fett263-proffieOS6-style-library.html#Rotoscope
OS6.7 v4.021
Single Style
Base Style: Hyper Responsive Rotoscope (Sequels)
Off Behavior: Off
--Effects Included--
Ignition Effect: Instant
Retraction Effect: Instant
*/
using AccentHyperResponsiveRotoscopeSequelsRed = Layers<Mix<HoldPeakF<SwingSpeed<250>,Scale<SwingAcceleration<100>,Int<50>,Int<500>>,Scale<SwingAcceleration<>,Int<20000>,Int<10000>>>,RandomFlicker<StripesX<Int<14000>,Scale<HoldPeakF<SwingSpeed<200>,Scale<SwingAcceleration<100>,Int<50>,Int<300>>,Scale<SwingAcceleration<100>,Int<24000>,Int<16000>>>,Int<-4000>,Int<-400>>,RgbArg<BASE_COLOR_ARG,Rgb<255,0,0>>,RgbArg<BASE_COLOR_ARG,Rgb<255,0,0>>,Mix<Int<7710>,Black,RgbArg<BASE_COLOR_ARG,Rgb<255,0,0>>>,RgbArg<BASE_COLOR_ARG,Rgb<255,0,0>>,Mix<Int<19276>,Black,RgbArg<BASE_COLOR_ARG,Rgb<255,0,0>>>>,RgbArg<BASE_COLOR_ARG,Rgb<255,0,0>>>,RgbArg<BASE_COLOR_ARG,Rgb<255,0,0>>>,InOutTrL<TrInstant,TrInstant,Black>>;
/*
Add to preset as StylePtr<AccentHyperResponsiveRotoscopeSequelsRed>()
--------------------------------------------------------------------------*/
#endif