Prop files in ProffieOS enabled controls and features. There are a lot of new features and controls in my OS7 Prop File.
To enable a prop file you will add the following to your config file (after the first #endif from #CONFIG_TOP). If you're unsure refer to the manual for more information.
#ifdef CONFIG_PROP
#include "../props/saber_fett263_buttons.h"
#endif
For OS7 I have incorporated multiple new features to make my prop as customizable as possible using defines. You can choose to enable or disable multiple features to dial in the prop to operate exactly as you want without needing to modify the OS. In addition, many of the new features are now controlled via the individual presets in the style code, allowing you to have unique controls on every preset. This is enabled through new features in my prop that allow the style code to control what your saber is doing. This means that in addition to customizing the base controls for the prop, my prop also allows further customization at the preset level to unlock even more unique features and effects.
In order to support this I have built a new Config Helper Tool, which will make it very easy to look through all of the options and customize the prop or you config. This tool will also allow you to create and save a full config file as well as produce customized documentation for the controls, options and sounds your saber uses in an easy to print format. This allows you to not only customize the prop and styles to your liking but also get a custom user manual specific to your saber based on the options you select.
Check out the new Config Tool here and be sure to watch the demo video on how to use this powerful new tool.
Many of the new features are the result of my over-active imagination, brought to life with a lot of help and guidance from Fredrik. I've put in countless hours for R&D, testing, coding and debugging already with a lot more to come. While I do this for the fun of the hobby and to keep pushing the envelope of what is possible with Proffieboard lightsabers, there's a lot of time and effort involved. I've already begun building the ALL NEW! ProffieOS7 Style Library and it will have a ton of new features and styles but it's going to take even more time and effort to build and maintain it going forward, for this reason I am launching a Patreon page for those that want to help out by becoming patrons.
I appreciate all who've donated in the past on my previous libraries and once OS7 releases a lot of time will continue to go into creation for the new OS7 library and documentation to support everything possible.
I have made many additions and updates to my prop file for OS7 to enable all of the new capabilities listed here. There is also some new set up required to make certain aspects of the prop file work properly.
My prop file introduces some new features that will use the voice prompt sounds. In addition to Edit Mode, these sounds are used in other menu prompts and control options so you will need to include on your SD card and add as a font search path to each of your presets in your config.
*Voice Prompts courtesy of Brian Conner (NoSloppy)
These voice sound files should be included in a "common" folder in the root of your SD card and each preset in your config should be set up with the "font" folder and "common" in font search path like so:
{ "font;common", "font/tracks/track.wav",
StylePtr<...>(),
"name"
},
If you wish to use font-specific voices you would include those sounds in the "font" folder itself, but as a fallback you should always have the sounds in the "common" folder.
My prop file also introduces a new Track Player which will let you play any tracks from the active font (or common folder) with 4 different playback modes: Play Once, Loop, Rotate and Random. In order to enable you will be setting up your tracks in each font, the Track Player will look in the "font/tracks/" or the "common/tracks" folder for the available tracks. If you have tracks that you want to use in all presets add them to "common/tracks/".
You will still set up your default track in each preset (and it can be located anywhere although best practice is to include in "fonts/tracks/".
There is some specific set up required to utilize the Edit Mode Menu, refer to the documentation on this page.
----- This prop enables the following EFFECTs for use in menus, Special Abilities* and/or chained effects controlled at the style level in each preset -----
*requires FETT263_SPECIAL_ABILITIES define
EFFECT_BATTERY_LEVEL (to display/say* battery level) *requires FETT263_SAY_BATTERY_VOLTS or FETT263_SAY_BATTERY_PERCENT
EFFECT_VOLUME_LEVEL (to display current volume level)
EFFECT_POWERSAVE (blade dimming / powersave option)
EFFECT_QUOTE (random quote* cannot be mixed with EFFECT_NEXT_QUOTE)
EFFECT_NEXT_QUOTE (sequential quote)
EFFECT_TRACK (plays previously selected Track (via Track Player) -or- preset's default track if "tracks" folder is not found)
EFFECT_ALT_SOUND (enables Alt font selection from style)
EFFECT_TRANSITION_SOUND (enable custom transition sounds)
EFFECT_SOUND_LOOP (enable custom looped sound toggled on/off with each call)
EFFECT_BEGIN_BATTLE_MODE (begin Battle Mode)
EFFECT_END_BATTLE_MODE (end Battle Mode)
EFFECT_BEGIN_AUTO_BLAST (begin Multi-Blast Mode)
EFFECT_END_AUTO_BLAST (end Multi-Blast Mode)
EFFECT_INTERACTIVE_PREON (allows prop to recognize Interactive Preon effects for primary control)
EFFECT_INTERACTIVE_BLAST (allows prop to recognize Interactive Blast effects for primary control)
EFFECT_ON (enable normal ignition from chained effect while OFF)
EFFECT_FAST_ON (enable ignition without preon from chained effect while OFF)
EFFECT_OFF (enable normal retraction from chained effect while ON)
EFFECT_FAST_OFF (enable retraction without pstoff from chained effect while ON)
EFFECT_SECONDARY_IGNITION (to enable separate "secondary" blade ignition control)
EFFECT_SECONDARY_RETRACTION (to enable separate "secondary" blade retraction control)
----- Available Mini Game EFFECTs -----
EFFECT_GAME_START (begin game effects)
EFFECT_GAME_ACTION1 (game action 1)
EFFECT_GAME_ACTION2 (game action 2)
EFFECT_GAME_CHOICE (interactive choice based on action)
EFFECT_GAME_RESPONSE1 (available response for action 1)
EFFECT_GAME_RESPONSE2 (available response for action 2)
EFFECT_GAME_RESULT1 (result of choice for action 1)
EFFECT_GAME_RESULT2 (result of choice for action 2)
EFFECT_GAME_WIN (end game with win)
EFFECT_GAME_LOSE (end game with loss)
Anything noted as "NEW Control!" is a change from OS6 and anything "NEW!" is a new feature I've added for OS7.
NOTE:
Click = do short click
Long Click = hold button for 1 second and release
Hold = hold button down
*may vary by defines
*requires FETT263_SAVE_CHOREOGRAPHY define
*requires FETT263_EDIT_MODE_MENU & ENABLE_ALL_EDIT_OPTIONS defines
*requires /common folder with all menu prompt sounds
While in Edit Mode controls are as follows:
*requires FETT263_EDIT_SETTINGS_MENU & ENABLE_ALL_EDIT_OPTIONS defines
*requires /common folder with all menu prompt sounds
While in Edit Settings controls are as follows:
Anything noted as "NEW Control!" is a change from OS6 and anything "NEW!" is a new feature I've added for OS7.
NOTE:
Click = do short click (so Double Click is two short clicks in quick succession)
Long Click = hold button for 1 second and release
Hold = hold button down
Click and Hold = hold on Xth click (so Double Click and Hold would be click twice and hold on second)
Click + Long Click = do X clicks then do long click (so Double Click + Long Click would be click twice then do a long click)
Optional Gesture Controls (if enabled and Gesture Sleep is deactivated)
Optional Gesture Controls (if enabled)
*may vary by defines
*requires FETT263_SAVE_CHOREOGRAPHY define
*requires FETT263_EDIT_MODE_MENU & ENABLE_ALL_EDIT_OPTIONS defines
*requires /common folder with all menu prompt sounds
While in Edit Mode controls are as follows:
"Edit Color" Additional Control
*requires FETT263_EDIT_SETTINGS_MENU & ENABLE_ALL_EDIT_OPTIONS defines
*requires /common folder with all menu prompt sounds
While in Edit Settings controls are as follows:
Defines in ProffieOS will enabled or disable certain features.
Defines are added using the prefix #define in the CONFIG_TOP section of your config before the #endif.
Example (found at top of your config.h file)
#ifdef CONFIG_TOP
#include "proffieboard_v2_config.h"
#define NUM_BLADES 1
#define NUM_BUTTONS 2
#define VOLUME 1200
const unsigned int maxLedsPerStrip = 144;
#define CLASH_THRESHOLD_G 3.0
#define ENABLE_AUDIO
#define ENABLE_MOTION
#define ENABLE_WS2811
#define ENABLE_SD
#define ENABLE_ALL_EDIT_OPTIONS
#define FETT263_EDIT_MODE_MENU
#define DISABLE_BASIC_PARSER_STYLES
...
#endif
ENABLE_ALL_EDIT_OPTIONS
This define will enable the components for Edit Mode used thorugh the Edit Mode Menu or ProffieOS Workbench (WebUSB). If you do not plan to edit your saber through any of these methods you do not need this define. Refer to Edit Mode documentation for proper set up to use the Edit features.
MOTION_TIMEOUT 60 * 15 * 1000
This extends the motion timeout to 15 minutes to allow gesture ignition to remain active
Increase/decrease the "15" value as needed
IDLE_OFF_TIME 60 * 15 * 1000
This sets the time for the saber to turn off all LEDs if idle equal to 15 minutes
Best for use with Crystal Chambers or Accent LEDS but can also save battery life for certain styles
Increase/decrease the "15" value as needed
COLOR_CHANGE_DIRECT
This enables "Click to Change" capability for styles with ColorChange<>, used with Dual Phase Library styles and other specialty styles in my library.
Does not affect normal styles or Edit Mode functionality.
DISABLE_DIAGNOSTIC_COMMANDS
Memory Saving option.
This will turn off certain Serial Monitor commands used only for diagnostic purposes. If you need to use Serial Monitor for troubleshooting you will want to remove this define. This will return "Whut?" in the Serial Monitor if you enter a command that was disabled.
DISABLE_BASIC_PARSER_STYLES
Memory Saving.
This will disable the "named" legacy default styles to allow more room for your custom styles. Edit Mode styles replace these.
NO_REPEAT_RANDOM
This will prevent the "random" selection of sound files from repeating. In normal use every sound is randomly selected, this randomness means you can have sounds repeat themselves.
This define will prevent a back-to-back repeat of the same sound for any effect with more than 2 sounds.
There are multiple the "NEW!" defines added for OS7. Be sure to check out the new Config Helper Tool as well, it will make selecting and implementing the new defines and features much faster and easier.
These defines will only work with my prop file, do not use with other prop files.
FETT263_EDIT_MODE_MENU
Enable Edit Mode Menu System
*Requires ENABLE_ALL_EDIT_OPTIONS define
FETT263_EDIT_SETTINGS_MENU - NEW!
Enable Edit Settings Menu (Volume, Clash Threshold, Blade Length, Gestures/Controls, Brightness)
I recommend setting USB Type = "Serial + WebUSB" under Arduino > Tools to allow for style, font, track, color editing via ProffieOS Workbench
Cannot be combined with FETT263_EDIT_MODE_MENU
Requires ENABLE_ALL_EDIT_OPTIONS
FETT263_SAVE_CHOREOGRAPHY
Enables Enhanced Battle Mode with Saved Choreography
FETT263_DUAL_MODE_SOUND
Enables odd/even out.wav ignition sound selection based on blade angle
Up = odd number sounds, Down = even numbered sounds
FETT263_CLASH_STRENGTH_SOUND
Enables selection of clash, stab and lockup sounds based on clash strength
Light clash = 01.wav, Hard clash = highest number.wav
FETT263_MAX_CLASH 16
The value for hardest clash level to select clash sound
Range 8 ~ 16
FETT263_QUICK_SELECT_ON_BOOT - NEW!
Enables Preset Selection Menu on Boot (when power is first applied)
Use Dial Menu to turn to desired preset, click PWR to select or hold PWR to select and ignite
FETT263_SPECIAL_ABILITIES - NEW!
This enables 8 "Special Ability" controls (style controlled), 4 while ON, 4 while OFF.
Special Abilities are controlled by the style and can vary in every preset, they are "user" defined effects/capabilities.
Allows "Multi-Phase" to be style based, replaces FETT263_MULTI_PHASE.
Cannot be used with FETT263_MULTI_PHASE or FETT263_SAVE_CHOREOGRAPHY
FETT263_MULTI_PHASE
This will enable a preset change while ON to create a "Multi-Phase" saber effect
FETT263_POWER_LOCK
This will enable Power Lock Mode to change 2 button Retraction from click PWR to hold PWR & AUX (can be enabled/disabled in Edit Mode)
FETT263_SAY_COLOR_LIST
FETT263_SAY_COLOR_LIST_CCSpoken Color Names replace default sounds during Color List Mode (requires .wav files)
Spoken Color Names replace default sounds during Color Change "CC" Color List Mode (requires .wav files)
FETT263_SAY_BATTERY_VOLTS
Spoken Battery Level in volts during On Demand Battery Level effect (requires .wav files)
FETT263_SAY_BATTERY_PERCENT
Spoken Battery Level percentage during On Demand Battery Level effect (requires .wav files)
FETT263_BC_SAY_BATTERY_VOLTS_PERCENT - NEW!
Spoken Battery Level in volts and percent (point down for volts, parallel or up for percent)
FETT263_MOTION_WAKE_POWER_BUTTON
Enables a click on POWER Button to Wake Up Gestures after MOTION_TIMEOUT without igniting blade. Saber will play boot sound and gestures will be active.
FETT263_SPIN_MODE - NEW!
Enables toggle for "Spin" Mode* which disables all clash/stab/lockup effects to allow for spinning and flourishes.
Cannot be used with FETT263_SAVE_CHOREOGRAPHY or FETT263_HOLD_BUTTON_LOCKUP
*Not the same as ENABLE_SPINS
FETT263_QUOTE_PLAYER_START_ON
This will set Force / Quote to play Quote by default (if in font)
FETT263_HOLD_BUTTON_OFF
Changes to Hold PWR to turn Off / Retract
FETT263_HOLD_BUTTON_LOCKUP
Enables Hold AUX for Lockup*
Cannot be used with FETT263_SAVE_CHOREOGRAPHY
*Clash Strength / Clash Impact effects and sounds for Lockup negated
*Battle Mode control changes to hold AUX + Swing
FETT263_USE_BC_MELT_STAB - NEW!
Allows MELT to be gesture controlled full-time, uses Thrust for Stab effect
FETT263_CIRCULAR_VOLUME_MENU - NEW!
Changes Volume Menu to Circular Control
FETT263_CIRCULAR_DIM_MENU - NEW!
Changes Brightness Menu to Circular Control
== NEW! Disable Features ==
DISABLE_TALKIE
saves memory by replacing spoken error messages with beep sequences -
FETT263_DISABLE_CHANGE_FONT
Disables the "on-the-fly" Change Font option
FETT263_DISABLE_CHANGE_STYLE
Disables the "on-the-fly" Change Style option
FETT263_DISABLE_COPY_PRESET
Disables the "on-the-fly" Copy Preset option
FETT263_DISABLE_BM_TOGGLE
Disable button control for Battle Mode, use gesture ignition or Special Abilities and/or style to toggle.
FETT263_DISABLE_MULTI_BLAST_TOGGLE
Disable button control for Multi-Blast Mode, use Special Abilities and/or style to toggle.
FETT263_DISABLE_MULTI_BLAST
Disables "Multi-Blast" Mode
FETT263_TRACK_PLAYER_NO_PROMPTS
Disables spoken voice prompts in Track Player
FETT263_DISABLE_QUOTE_PLAYER
Disables Force/Quote player, only uses Force. This will allow Quotes to be controlled by style.
Use FETT263_SPECIAL_ABILITIES to set EFFECT_QUOTE or EFFECT_NEXT_QUOTE in style
Cannot be used with FETT263_RANDOMIZE_QUOTE_PLAYER and FETT263_QUOTE_PLAYER_START_ON
Battle Mode is enabled via controls by default in this prop, you can customize further with these defines
FETT263_BATTLE_MODE_ALWAYS_ON
Battle Mode is always on, toggle controls deactivated
This will disable traditional Clash and Stab effects (cannot be used with FETT263_BATTLE_MODE_START_ON)
FETT263_BATTLE_MODE_START_ON
Battle Mode is active with each ignition by default but can be toggled using Aux + Swing control
(cannot be used with FETT263_BATTLE_MODE_ALWAYS_ON)
FETT263_LOCKUP_DELAY 200
This is the "delay" in millis to determine Clash vs Lockup
FETT263_BM_CLASH_DETECT 6
The max value to use clashes in Battle Mode 2.0, clashes used on clash strength below this value
This allows light clashes to produce clash effects instead of using Begin/End Lockup
(above this value Clash is performed by quick pull away using Begin/End Lockup sounds and effect)
Range 0 ~ 8 (note 0 will use Battle Mode 1.0 with all clashes being Begin/End Lockup)
FETT263_BM_DISABLE_OFF_BUTTON
During Battle Mode Power Button Retraction is disabled
Gesture Ignition via Swing
You can use one of the following defines to enable swing on:
FETT263_SWING_ON
To enable Swing On Ignition control (automatically enters Battle Mode, uses Fast On)
FETT263_SWING_ON_PREON
Disables Fast On ignition for Swing On so Preon is used (cannot be used with FETT263_SWING_ON)
FETT263_SWING_ON_NO_BM
To enable Swing On Ignition control but not activate Battle Mode
(Combine with FETT263_SWING_ON or FETT263_SWING_ON_PREON,
cannot be used with FETT263_BATTLE_MODE_ALWAYS_ON or FETT263_BATTLE_MODE_START_ON)
FETT263_SWING_ON_SPEED 250
Adjust Swing Speed required for Ignition 250 ~ 500 recommended
Gesture Retraction via Twist (back and forth)
FETT263_TWIST_OFF
To enable Twist Off Retraction control
Gesture Ignition via Twist (back and forth)
You can use one of the following defines to enable twist on:
FETT263_TWIST_ON
To enable Twist On Ignition control (automatically enters Battle Mode, uses Fast On)
FETT263_TWIST_ON_PREON
Disables Fast On ignition for Twist On so Preon is used (cannot be used with FETT263_TWIST_ON)
FETT263_TWIST_ON_NO_BM
To enable Twist On Ignition control but not activate Battle Mode
(Combine with FETT263_TWIST_ON or FETT263_TWIST_ON_PREON,
cannot be used with FETT263_BATTLE_MODE_ALWAYS_ON or FETT263_BATTLE_MODE_START_ON)
Gesture Ignition via Stab (linear movement + clash at tip of blade)
You can use one of the following defines to enable stab on:
FETT263_STAB_ON
To enable Stab On Ignition control (automatically enters Battle Mode, uses Fast On)
FETT263_STAB_ON_PREON
Disables Fast On ignition for Stab On so Preon is used (cannot be used with FETT263_STAB_ON)
FETT263_STAB_ON_NO_BM
To enable Stab On Ignition control but not activate Battle Mode
(Combine with FETT263_STAB_ON or FETT263_STAB_ON_PREON,
cannot be used with FETT263_BATTLE_MODE_ALWAYS_ON or FETT263_BATTLE_MODE_START_ON)
Gesture Ignition via Thrust (linear movement)
You can use one of the following defines to enable thrust on:
FETT263_THRUST_ON
To enable Thrust On Ignition control (automatically enters Battle Mode, uses Fast On)
FETT263_THRUST_ON_PREON
Disables Fast On ignition for Thrust On so Preon is used (cannot be used with FETT263_THRUST_ON)
FETT263_THRUST_ON_NO_BM
To enable Thrust On Ignition control but not activate Battle Mode
(Combine with FETT263_THRUST_ON or FETT263_THRUST_ON_PREON,
cannot be used with FETT263_BATTLE_MODE_ALWAYS_ON or FETT263_BATTLE_MODE_START_ON)
Toggle Gesture Ignition and Retraction detection to disable or enable gesture options
FETT263_SAVE_GESTURE_OFF
Save "Gesture Sleep" setting to turn gesture ignitions and retractions off on boot
Push movement triggers push.wav (or force.wav if push.wav is not present)
You can use one of the following defines to enable force push:
FETT263_FORCE_PUSH
To enable gesture controlled Force Push during Battle Mode
(will use push.wav or force.wav if not present)
FETT263_FORCE_PUSH_ALWAYS_ON
To enable gesture controlled Force Push full time
(will use push.wav or force.wav if not present)
FETT263_FORCE_PUSH_LENGTH 5
Allows for adjustment to Push gesture length in millis needed to trigger Force Push
Recommended range 1 ~ 10, 1 = shortest, easiest to trigger, 10 = longest