ProffieOS v6.x ALPHA testing

It’s time to start testing ProffieOS 6.x.
Here is a list of features added in ProffieOS 6.x:
All of these will need to be tested before it will be officially released.
There may also be a few more features before we’re done.
Note that this list is brief on descriptions as it is
intended to be a checklist of things that we need to test.
See bottom of post for information about how to help with testing.

FEATURES

  • Proffieboard V3 support.
  • Audio high-pass filtering.
  • interrupt driven i2c
  • 1600Hz motion sensing
  • better WS2811 data buffering
  • better filtering of high-frequency motion and gyro data
  • much better display frame rates
  • AudioLibrary
  • Per-effect volume
  • Per-effect “paired” setting. (Tested by NoSloopy)
  • EFFECT_POSTOFF (tested by NoSloppy)
  • preon->ignition transition is now gapless
  • Support for rotary inputs.
  • Support for potentiometer inputs.
  • Support for Savi’s workshop blades.
  • pow/aux commands now allows for generating chords and different types of clicks.
  • blade styles used in your config file can now have arguments.
  • Maximum NUM_BLADES increased to 20.
  • Clash strength calculations (note that the clash strength can increas after the clash occurs.)
  • Aurebesh font
  • Many many bugfixes and optimizations.
  • SaberBlasterProp
  • Accent Swing file selection (replaces accent slashes) (tested by Afrojedi)
  • idle.bmp / idle.pbm support for OLED displays
  • OLED bullet counts

DEFINES

  • DYNAMIC_BLADE_DIMMING (tested by Afrojedi)
  • DYNAMIC_BLADE_LENGTH (tested by Afrojedi)
  • DYNAMIC_CLASH_THRESHOLD (tested by Afrojedi)
  • SAVE_BLADE_DIMMING (tested by Afrojedi)
  • SAVE_CLASH_THRESHOLD (tested by Afrojedi)
  • INCLUDE_SSD1306
  • FILTER_CUTOFF_FREQUENCY
  • FILTER_ORDER
  • NO_REPEAT_RANDOM
  • FEMALE_TALKIE_VOICE (tested by Afrojedi)
  • DISABLE_BASIC_PARSER_STYLES (tested by Afrojedi)
  • ENABLE_ALL_EDIT_OPTIONS

STYLES

  • ColorSelect
  • StaticFire
  • Remap (tested by NoSloppy)

TRANSITIONS

  • TrCenterWipe / TrCenterWipeX
  • TrCenterWipeIn
  • TrCenterWipeInSparkX / TrCenterWipeInSpark
  • TrColorCycleX
  • TrExtend / TrExtendX
  • TrSelect
  • TrSpark / TrSparkX

FUNCTIONS

  • CenterDistF (tested by NoSloppy)
  • ClashImpactF / ClashImpactFX
  • EffectPosition
  • HoldPeakF
  • IntSelect
  • LinearSectionF
  • RampF
  • Sum
  • TimeSinceEffect
  • WavLen (tested by NoSloppy)
  • Wavnum (tested by NoSloppy)
  • SwingAcceleration

SERIAL MONITOR COMMANDS

  • get_gesture (tested by Afrojedi)
  • set_gesture (tested by Afrojedi)
  • get_max_blade_lenght (tested by Afrojedi)
  • get_blade_length (tested by Afrojedi)
  • set_blade_length (tested by Afrojedi)
  • get_blade_dimming (tested by Afrojedi)
  • set_blade_dimming (tested by Afrojedi)
  • get_clash_threshold (tested by Afrojedi)
  • set_clash_threshold (tested by Afrojedi)

FETT263 PROP FEATURES

  • Edit Mode Menu
  • Battle Mode 2.0
  • “Real Clash” - Clash Sounds based on Clash Strength
  • Track Player
  • Dual Mode Sounds Ignition, Preon, Retraction PstOff
  • Spoken Battery Level / Colors
  • Hybrid Force / Quote Player
  • Rehearsal / Choreography Mode
  • Gesture Sleep
  • Preset Menu
  • Volume Menu update

FETT263 MENUES

  • Edit Style
    • Select Style
    • Edit Style Settings
  • Edit Color
    • Color List
    • Adjust Color Hue
    • Adjust White Level
    • Adjust Black Level
    • Copy Colors (if multiple blades)
    • Reset Colors
  • Edit Font
  • Edit Track
  • Edit Settings
    • Edit Volume
    • Edit Control Settings
    • Edit Clash Threshold
    • Edit Blade Length
    • Edit Brightness
  • Copy Preset
  • Delete Preset

FETT263 PROP DEFINES

  • FETT263_EDIT_MODE_MENU
  • FETT263_SAVE_CHOREOGRAPHY
  • FETT263_DUAL_MODE_SOUND
  • FETT263_CLASH_STRENGTH_SOUND
  • FETT263_MAX_CLASH
  • FETT263_SAY_COLOR_LIST
  • FETT263_SAY_COLOR_LIST_CC
  • FETT263_SAY_BATTERY
  • FETT263_BATTLE_MODE_ALWAYS_ON
  • FETT263_BATTLE_MODE_START_ON
  • FETT263_LOCKUP_DELAY
  • FETT263_BM_CLASH_DETECT
  • FETT263_BM_DISABLE_OFF_BUTTON
  • FETT263_SWING_ON
  • FETT263_SWING_ON_PREON
  • FETT263_SWING_ON_NO_BM
  • FETT263_SWING_ON_SPEED
  • FETT263_TWIST_OFF
  • FETT263_TWIST_ON
  • FETT263_TWIST_ON_PREON
  • FETT263_TWIST_ON_NO_BM
  • FETT263_STAB_ON
  • FETT263_STAB_ON_PREON
  • FETT263_THRUST_ON
  • FETT263_THRUST_ON_PREON
  • FETT263_THRUST_ON_NO_BM
  • FETT263_SAVE_GESTURE_OFF
  • FETT263_FORCE_PUSH
  • FETT263_FORCE_PUSH_ALWAYS_ON
  • FETT263_FORCE_PUSH_LENGTH
  • FETT263_MULTI_PHASE
  • FETT263_SAY_BATTERY_VOLTS
  • FETT263_SAY_BATTERY_PERCENT
  • FETT263_QUOTE_PLAYER_START_ON
  • FETT263_HOLD_BUTTON_OFF
  • FETT263_HOLD_BUTTON_LOCKUP

FETT263 PROP EXTRA SOUNDS

  • dim.wav
  • battery.wav
  • bmbegin.wav
  • bmend.wav
  • vmbegin.wav
  • vmend.waav
  • push.wav
  • faston.pwav
  • blstbgn.wav
  • blstend.wav
  • quote01.wav
  • +all the sounds in the sound library

How to help with testing

  1. Download latest ProffieOS from github: GitHub - profezzorn/ProffieOS: Lightsaber Controller Software (click code → download zip) Remember to rename the zip to “ProffieOS.zip”.
  2. Pick a feature above you want to test, configure your saber to use it and try it.
  3. If you don’t know how to enable it or how it works, ask questions in this thread. Make sure that you or the person anwering adds some documentation in the code
    or on the wiki about the feature so that other people can figure it out.
  4. Write a post in this thread about how your test turned out. Once tested, we’ll check off each feature above.

Additional Resources

Preliminary Alpha exit criteria

Once we’ve implemented these features, no more features are planned for 6.x, and we will move on to Beta testing.

6 Likes

I will test the serial monitor commands and remove the disable diagnostic commands on my lightsaber.

I’ll do WavLen with different spoken times in specific duration wavs to show sync.

1 Like

Hi @profezzorn I flashed my board except I’m using bc buttons mod (I only have a single button on my saber).

I checked the list of available commands on the serial monitor and they are coming back as saying What?

#ifdef CONFIG_TOP
#include "proffieboard_v2_config.h"
#define NUM_BLADES 1
#define NUM_BUTTONS 1
#define VOLUME 1600
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_SERIAL
#define COLOR_CHANGE_DIRECT
#define VOLUME_MENU_CYCLE
#define IDLE_OFF_TIME 60*5*1000
#define SAVE_STATE
#define ENABLE_AUTO_SWING_BLAST
#define ENABLE_AUTO_SPINS_BLAST
#define MOTION_TIMEOUT 60 * 15 * 1000
#define FEMALE_TALKIE_VOICE
#define AUTO_HUMSTART
#define PREONS_MATCH_OUTS
#define PSTOFFS_MATCH_INS
#define ANGLE_PREON
#define BC_SWING_ON
#define BC_THRUST_ON
#define BC_TWIST_ON
#define BC_TWIST_OFF
#define BC_FORCE_PUSH
#define BC_FORCE_PUSH_LENGTH 2
#define BC_GESTURE_AUTO_BATTLE_MODE
#define DYNAMIC_BLADE_DIMMING
#define DYNAMIC_BLADE_LENGTH
#define DYNAMIC_CLASH_THRESHOLD
#define SAVE_BLADE_DIMMING
#define SAVE_CLASH_THRESHOLD
#define FEMALE_TALKIE_VOICE
#define DISABLE_BASIC_PARSER_STYLES
#define ENABLE_ALL_EDIT_OPTIONS
#endif


#ifdef CONFIG_PROP
#include "../props/saber_BC_buttons.h"
#endif

the serial monitor is it prop file dependant? i got the master zip from the github

so, get_gesture/set_gesture requires the Fett263 prop.
All the other ones should be available for all Props, but requires some defines to activate:

  • DYNAMIC_BLADE_DIMMING
  • DYNAMIC_BLADE_LENGTH
  • DYNAMIC_CLASH_THRESHOLD

Now, ENABLE_ALL_EDIT_OPTIONS is supposed to turn on these defines, so those commands are supposed to be available.

COMMAND | Output
get_blade_dimming | 16384 :+1:
get_max_blade_lenght | Whut? :get_max_blade_lenght :-1:
get_clash_threshold | 3.00 :+1:
get_blade_length | Whut? :get_blade_length :-1:
set_clash_threshold 3.50| Saving global state :+1:
set_blade_length 124| output is below :+1:

Saving Current Preset
Failed to open: presets.ini
Failed to open: presets.tmp
Scanning sound font: Bal Venos done
Scanning sound font: corriente done
Activating polyphonic font.
Activating SmoothSwing V2
Accent Swings Enabled.
Polyphonic swings: 18
Monophonic swings: 0
Accent Slashes Enabled.
Polyphonic slashes: 10
Unmounting SD Card.

get_clash_threshold | 3.50 :+1:
set_blade_dimming 15000 | Saving Global State :+1:

:+1: = success
:-1: = fail
the defines are in place as seen in my previous post and althought the set_blade_length command seems to have been successful when I used the workbench via usb the blade length was still 128 (the configured setting and not the new setting of 124).

the get blade length and the get max blade length commands both errored with the
Whut?
Diagnostic commands are enabled in the config file.

SYSTEM TESTED: the linux distro is Manjaro 64 bit
arduino ide v 1.8.16
arduino plugin v3.6 beta as suggested by @profezzorn
proffieboard v2.2
#include “…/props/saber_BC_buttons.h”

Just getting my feet wet with the alpha, I grabbed English Voicepack C and it is missing one clrlst file. There are 26 files and 27 color choices in fett263 prop file.

Just thought I’d let someone know! :grinning_face_with_smiling_eyes:

Here’s the output also:

WARNING: This font seems to be missing some files!!

08:55:36.812 → Found clrlst files: 1-27 using 2 digits in subdirs SOME FILES ARE MISSING! 27 != 26 in common

hmm. 24 is missing, you’re right. I see what happened. I’ll iron it out. Thanks for the catch.

The blade length commands require a blade number to work.

Hey, for those of us who wanted to build prop files that support 1/2/3 button operation, will the menu be broken out of Fett’s prop file, or do we need to copy-paste it into ours and then work from there?

2 Likes

Well, maybe those people who wants to re-use the code can work on breaking it out?
It might require some work, because the menu code doesn’t have clean APIs right now.

I thought the get blade length would be the command to check what was configured. If you need to specify the number does it return a true or false? Also the set blade length didn’t change the blade length on my test.

No, get_blade_length 1 means “get the length of the first blade”.
To set the first blade to a length of 100: set_blade_length 1 100

1 Like

so the syntax is is command bladeid length. aaah ok. I’ll test it later cause I’m currently at work.

command | output

get_blade_length 1 | 124

set_blade_lenght 1 128

however I did find an issue. I have the edit mode language packs and added the spanish language pack to the Bank02 sound font,

my config file has “bank02” for the spanish files and the bank01;common for the english.

is that the right syntax?

also the output of the error when I ran the set_blade_length 1 128 while cd into bank02 the following error occurs

11:02:00.060 -> WARNING: This font seems to be missing some files!!
11:02:00.094 -> Found battlevel files: one unnumbered file SOME FILES ARE MISSING! 1 != 256 in Bank02
11:02:00.094 -> Found bmend files: one unnumbered file SOME FILES ARE MISSING! 1 != 256 in Bank02
11:02:00.094 -> Found bmbegin files: one unnumbered file SOME FILES ARE MISSING! 1 != 256 in Bank02
11:02:00.094 -> Found lowbatt files: one unnumbered file SOME FILES ARE MISSING! 1 != 256 in Bank02
11:02:00.094 -> Found ccend files: one unnumbered file SOME FILES ARE MISSING! 1 != 256 in Bank02
11:02:00.094 -> Found ccbegin files: one unnumbered file SOME FILES ARE MISSING! 1 != 256 in Bank02
11:02:00.094 -> Found enddrag files: 1-4 in subdirs SOME FILES ARE MISSING! 4 != 1024 in Bank02
11:02:00.094 -> Found drag files: one unnumbered file in subdirs SOME FILES ARE MISSING! 1 != 256 in Bank02
11:02:00.094 -> Found bgndrag files: 1-4 in subdirs SOME FILES ARE MISSING! 4 != 1024 in Bank02
11:02:00.094 -> Found swingh files: 1-4 using 2 digits in subdirs SOME FILES ARE MISSING! 4 != 1024 in Bank02
11:02:00.094 -> Found swingl files: 1-4 using 2 digits in subdirs SOME FILES ARE MISSING! 4 != 1024 in Bank02
11:02:00.094 -> Found swng files: 1-16 using 2 digits in subdirs SOME FILES ARE MISSING! 16 != 4096 in Bank02
11:02:00.094 -> Found lock files: 1-1 using 2 digits in subdirs SOME FILES ARE MISSING! 1 != 256 in Bank02
11:02:00.094 -> Found out files: 1-4 using 2 digits in subdirs SOME FILES ARE MISSING! 4 != 1024 in Bank02
11:02:00.094 -> Found in files: 1-2 using 2 digits in subdirs SOME FILES ARE MISSING! 2 != 512 in Bank02
11:02:00.094 -> Found clsh files: 1-16 using 2 digits in subdirs SOME FILES ARE MISSING! 16 != 4096 in Bank02
11:02:00.094 -> Found blst files: 1-6 using 2 digits in subdirs SOME FILES ARE MISSING! 6 != 1536 in Bank02
11:02:00.094 -> Found endlock files: 1-4 in subdirs SOME FILES ARE MISSING! 4 != 1024 in Bank02
11:02:00.094 -> Found bgnlock files: 1-4 in subdirs SOME FILES ARE MISSING! 4 != 1024 in Bank02
11:02:00.094 -> Found font files: one unnumbered file in subdirs SOME FILES ARE MISSING! 1 != 256 in Bank02
11:02:00.094 -> Found stab files: 1-4 in subdirs SOME FILES ARE MISSING! 4 != 1024 in Bank02
11:02:00.094 -> Found force files: 2-3 + one unnumbered file in subdirs SOME FILES ARE MISSING! 3 != 768 in Bank02
11:02:00.094 -> Found hum files: 1-1 using 2 digits in subdirs SOME FILES ARE MISSING! 1 != 256 in Bank02
11:02:00.094 -> Found boot files: 2-5 + one unnumbered file in subdirs SOME FILES ARE MISSING! 5 != 1280 in Bank02
11:02:00.094 -> Found preon files: 1-5 in subdirs SOME FILES ARE MISSING! 5 != 1280 in Bank02

I’m not sure you have the common folder right.
If it doesn’t find files in the first folder in the path, it looks in the second, and so on.
If you want to have multiple voice prompt sets for different fonts, that’s fine, it just needs a bit of prep first.
Inside common, make a folder for English, and another for Spanish.
To use English for your Bank01 preset, the font folder path would be "Bank01;common/English"
To use Spanish for your Bank02 preset, the font folder path would be "Bank02;common/Spanish"

The files reported missing seem unrelated to the voice prompts.

1 Like

In working with WavLen, It just dawned on me that EFFECT_PSTOFF is not a thing.
Would that make sense to have? Certainly from a WavLen audio standpoint I would think so, just as much as Preon does.
But also to have blade styles use it proper, as in, currently using EFFECT_RETRATION and showing a lingering animation works, but that means it’s starting coincidentally with the retraction. I don’t know , I guess in my mind it mirrors Preon in almost every sense.

Would it be an off_pending sort of thing?

Instead of adding the language files to one of your existing directories, I would recommend putting it a separate directory. It doesn’t have to be “common”.

You could put english files in “english” and spanish files in “spanish”, then set your font path to “bank01;english;common” and “bank02;spanish;common”.

Not sure why it’s says so many files are missing though.

I think EFFECT_POSTOFF would be nice to have, but it’s not vital to have in 6.x. Maybe file an issue on gitub and I’ll implement it when I have the time, which may or may not be in the 6.x time frame.