ProffieOS 8.4 beta (call for testers!)

Thanks, I’ll have to take a closer look at the Aux press.

Looks like there wasn’t a press action while ON, I have added. Give it a try when you get a chance, pull down an updated ZIP from same branch.

That did it!

All sounds playing in all states for all uses.

Very functional and a huge help for these 8mm copper headed buttons that have no feedback built in.

Thanks again!

1 Like

Great to hear, appreciate the help testing.

1 Like

Not sure if this can be considered as a valid test but I compiled the same config several times with PROFFIEOS_LOG_LEVEL value 0, 100, 200, 300, 400, 500 & 1000.

#define PROFFIEOS_LOG_LEVEL 0:
Sketch uses 260768 bytes (99%) of program storage space. Maximum is 262144 bytes.

#define PROFFIEOS_LOG_LEVEL 100:
Sketch uses 261008 bytes (99%) of program storage space. Maximum is 262144 bytes.

#define PROFFIEOS_LOG_LEVEL 200:
Sketch uses 261384 bytes (99%) of program storage space. Maximum is 262144 bytes.

#define PROFFIEOS_LOG_LEVEL 300:
Sketch uses 261520 bytes (99%) of program storage space. Maximum is 262144 bytes.

#define PROFFIEOS_LOG_LEVEL 400:
C:/..redacted../14.2.1/../../../../arm-none-eabi/bin/ld.exe:C:\..redacted..\Arduino15\packages\proffieboard\hardware\stm32l4\4.6\variants\STM32L433CC-ProffieboardV2/linker_scripts/STM32L433CC_FLASH.ld:224: warning: memory region `SRAM2' not declared
lto-wrapper.exe: warning: using serial compilation of 8 LTRANS jobs
lto-wrapper.exe: note: see the '-flto' option documentation for more information
C:/..redacted../14.2.1/../../../../arm-none-eabi/bin/ld.exe: warning: start of section .bss changed by 16
C:/..redacted../14.2.1/../../../../arm-none-eabi/bin/ld.exe: C:\..redacted..\arduino\sketches\7DE54DF856E10BE9B34F4CADF2AECF61/ProffieOS.ino.elf section `.text' will not fit in region `FLASH'
C:/..redacted../14.2.1/../../../../arm-none-eabi/bin/ld.exe: region `FLASH' overflowed by 832 bytes
collect2.exe: error: ld returned 1 exit status
exit status 1

Compilation error: exit status 1

#define PROFFIEOS_LOG_LEVEL 500:
C:/..redacted../14.2.1/../../../../arm-none-eabi/bin/ld.exe:C:\..redacted..\proffieboard\hardware\stm32l4\4.6\variants\STM32L433CC-ProffieboardV2/linker_scripts/STM32L433CC_FLASH.ld:224: warning: memory region `SRAM2' not declared
lto-wrapper.exe: warning: using serial compilation of 8 LTRANS jobs
lto-wrapper.exe: note: see the '-flto' option documentation for more information
C:/..redacted../14.2.1/../../../../arm-none-eabi/bin/ld.exe: warning: start of section .bss changed by 16
C:/..redacted../14.2.1/../../../../arm-none-eabi/bin/ld.exe: C:\..redacted..\arduino\sketches\7DE54DF856E10BE9B34F4CADF2AECF61/ProffieOS.ino.elf section `.text' will not fit in region `FLASH'
C:/..redacted../14.2.1/../../../../arm-none-eabi/bin/ld.exe: region `FLASH' overflowed by 1056 bytes
collect2.exe: error: ld returned 1 exit status
exit status 1

Compilation error: exit status 1

#define PROFFIEOS_LOG_LEVEL 1000:
C:/..redacted../14.2.1/../../../../arm-none-eabi/bin/ld.exe:C:\..redacted..\proffieboard\hardware\stm32l4\4.6\variants\STM32L433CC-ProffieboardV2/linker_scripts/STM32L433CC_FLASH.ld:224: warning: memory region `SRAM2' not declared
lto-wrapper.exe: warning: using serial compilation of 8 LTRANS jobs
lto-wrapper.exe: note: see the '-flto' option documentation for more information
C:/..redacted../14.2.1/../../../../arm-none-eabi/bin/ld.exe: warning: start of section .bss changed by 16
C:/..redacted../14.2.1/../../../../arm-none-eabi/bin/ld.exe: C:\..redacted..\arduino\sketches\7DE54DF856E10BE9B34F4CADF2AECF61/ProffieOS.ino.elf section `.text' will not fit in region `FLASH'
C:/..redacted../14.2.1/../../../../arm-none-eabi/bin/ld.exe: region `FLASH' overflowed by 1056 bytes
collect2.exe: error: ld returned 1 exit status
exit status 1

Compilation error: exit status 1

I didn’t upload them this time, however on previous occasions with my multi_prop testing (compiling & uploading) with PROFFIEOS_LOG_LEVEL values of 100, 300 & 500, I was getting similar results: the lower the log level, the lower the flash memory was used. I believe it is working as expected.

I know, I am the one who submitted the PR for this (so I might be biassed) but I tried it with a value of 3000 and it worked as expected.

SubBladeWithList - Works well. (Used it a few times now without realising it was new, but just double-checked again and all good)!)

BLADE_ID_SCAN_TIMEOUT - Yep, it stops scanning after the timeout.

BLADE_ID_STOP_SCAN_WHILE_IGNITED - I think this needs work. I found that lighting the blade was fine, but when you shut down, as the blade is just starting to retract, it starts trying to scan again which messes up the retraction. With no blade fitted you get garbled lights on the neo blade connector. Admittedly I’m only using snapshotid, so might be different with externalpullup, but I don’t have a hilt to test that. I do still also find I get quite a few false reads, where it’s sat idle, then suddenly decides the value has changed, starts to play the font ident, then thinks, “Oh no, it hasn’t changed after all.” But again, that might be the fault of snapshotid.

NO_BLADE_ID_RANGE 77,1000 - With careful value settings, this can work as a substitute for true Blade Detect I think, though of course it still has the limitation of only working with a given specified blade, and if the genuine scanned values happen to be very close to each other, the system can still get confused about which state it finds itself in. I also tried it with NO_BLADE in the blade array (instead of 0) and the scan value for the bladein array, and it worked, correctly playing the bladein/out wavs when fitting/removing a blade.

You may also remember when we worked on this a while back we got little micro flickers from some LEDs when the system was scanning. As far as I can tell, that seems to be fixed now.

I thought this was tested by NoSloppy already. I have mass storage and #define MOUNT_SD_SETTING. I rarely make changes to my SD-Card through Proffieboard because most changes are usually quite big but when I need to only change a file or two, I open serial monitor, use sd 1, change my file, use sd 0, done. No need to worry about having to remember to safely eject SD-Card anymore. Been using it for a few weeks. No corruption so far.

I’m trying to work out SubBladeWithList, and have tried a few blade sections without a successful compile.

I want to take my secondary blade and split it up into two SubBladeWithList. I tried following the pattern of subblade in general, then thought maybe line needs a complete blade definition (as below). The syntax seems different with more <> and less (). SubBlade also generally ends in NULL somewhere, and I tried that without any luck.

Here’s what I’ve got right now:

BladeConfig blades[] = {
 { 0, WS281XBladePtr<122, bladePin, Color8::GRB, PowerPINS<bladePowerPin2, bladePowerPin3> >(),
    SubBladeWithList<0,1,4,5,6,10,11,12,13>(WS281XBladePtr<14, blade2Pin, Color8::GRB, PowerPINS<bladePowerPin6> >(), 
    SubBladeWithList<2,3,7,8,9,>(WS281XBladePtr<14, blade2Pin, Color8::GRB, PowerPINS<bladePowerPin6> >(),
    CONFIGARRAY(presets) },


};

Could I get a little guidance please :slight_smile: ?

Try this:

BladeConfig blades[] = {
 { 0, WS281XBladePtr<122, bladePin, Color8::GRB, PowerPINS<bladePowerPin2, bladePowerPin3> >(),
    SubBladeWithList<0,1,4,5,6,10,11,12,13>(WS281XBladePtr<14, blade2Pin, Color8::GRB, PowerPINS<bladePowerPin6> >(), 
    SubBladeWithList<2,3,7,8,9,>(NULL),
    CONFIGARRAY(presets) },
2 Likes

Proffie 3.9
OS8.4
Plugin 4.6
Testing: SubBladeWithList
Main blade 122 leds
Secondary blade 14 leds

I’ve tried that blade array above. I also reduced my config to the most basic, fresh out of the V3 configurator version:

#ifdef CONFIG_TOP
#include "proffieboard_v3_config.h"
#define NUM_BLADES 3
#define NUM_BUTTONS 2
#define VOLUME 1000
const unsigned int maxLedsPerStrip = 144;
#define CLASH_THRESHOLD_G 1.0
#define ENABLE_AUDIO
#define ENABLE_MOTION
#define ENABLE_WS2811
#define ENABLE_SD
#define SHARED_POWER_PINS
#endif

#ifdef CONFIG_PRESETS
Preset presets[] = {
   { "TeensySF", "tracks/venus.wav",
    StyleNormalPtr<CYAN, WHITE, 300, 800>(),
    StyleNormalPtr<CYAN, WHITE, 300, 800>(),
    StyleNormalPtr<CYAN, WHITE, 300, 800>(), "cyan"},
   
};
BladeConfig blades[] = {
 { 0, WS281XBladePtr<122, bladePin, Color8::GRB, PowerPINS<bladePowerPin2, bladePowerPin3> >(),
    SubBladeWithList<0,1,4,5,6,10,11,12,13>(WS281XBladePtr<14, blade2Pin, Color8::GRB, PowerPINS<bladePowerPin6> >(), 
    SubBladeWithList<2,3,7,8,9,>(NULL),
    CONFIGARRAY(presets) },
#endif

#ifdef CONFIG_BUTTONS
Button PowerButton(BUTTON_POWER, auxPin, "pow");
Button AuxButton(BUTTON_AUX, powerButtonPin, "aux");
#endif

Error:

In file included from /Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/ProffieOS.ino:673:
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/config/LyleOS84BetaMini.h:26:5: error: parse error in template argument list
   26 |     SubBladeWithList<2,3,7,8,9,>(NULL),
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/config/LyleOS84BetaMini.h:26:33: error: no matching function for call to 'SubBladeWithList<2, 3, 7, 8, 9, <expression error> >(NULL)'
   26 |     SubBladeWithList<2,3,7,8,9,>(NULL),
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~
In file included from /Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/ProffieOS.ino:607:
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/blades/sub_blade.h:363:12: note: candidate: 'template<int ...Indices> BladeBase* SubBladeWithList(BladeBase*)'
  363 | BladeBase* SubBladeWithList(BladeBase* blade) {
      |            ^~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/blades/sub_blade.h:363:12: note:   template argument deduction/substitution failed:
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/config/LyleOS84BetaMini.h:26:33: error: template argument 6 is invalid
   26 |     SubBladeWithList<2,3,7,8,9,>(NULL),
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/config/LyleOS84BetaMini.h:26:33: note: some candidates omitted; use '-fdiagnostics-all-candidates' to display them
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/config/LyleOS84BetaMini.h:27:26: error: expected ')' before '}' token
   27 |     CONFIGARRAY(presets) },
      |                          ^
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/config/LyleOS84BetaMini.h:25:44: note: to match this '('
   25 |     SubBladeWithList<0,1,4,5,6,10,11,12,13>(WS281XBladePtr<14, blade2Pin, Color8::GRB, PowerPINS<bladePowerPin6> >(),
      |                                            ^
In file included from /Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/props/saber.h:30,
                 from /Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/ProffieOS.ino:681:
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/props/prop_base.h:28:1: error: expected primary-expression before 'class'
   28 | class SaveGlobalStateFile : public ConfigFile {
      | ^~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/props/prop_base.h:28:1: error: expected '}' before 'class'
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/config/LyleOS84BetaMini.h:23:24: note: to match this '{'
   23 | BladeConfig blades[] = {
      |                        ^
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/props/prop_base.h:722:3: error: 'SaveGlobalStateFile' does not name a type; did you mean 'SavePresetStateFile'?
  722 |   SaveGlobalStateFile saved_global_state;
      |   ^~~~~~~~~~~~~~~~~~~
      |   SavePresetStateFile
exit status 1

Compilation error: parse error in template argument list

Sublime text had a red highlights in the blade section when working on the config, so I added a closing bracket to the first SubBladeWithList (to match the normal SubBlade pattern I think), which made them go away. Config at that point:

#ifdef CONFIG_TOP
#include "proffieboard_v3_config.h"
#define NUM_BLADES 3
#define NUM_BUTTONS 2
#define VOLUME 1000
const unsigned int maxLedsPerStrip = 144;
#define CLASH_THRESHOLD_G 1.0
#define ENABLE_AUDIO
#define ENABLE_MOTION
#define ENABLE_WS2811
#define ENABLE_SD
#define SHARED_POWER_PINS
#endif

#ifdef CONFIG_PRESETS
Preset presets[] = {
   { "TeensySF", "tracks/venus.wav",
    StyleNormalPtr<CYAN, WHITE, 300, 800>(),
    StyleNormalPtr<CYAN, WHITE, 300, 800>(),
    StyleNormalPtr<CYAN, WHITE, 300, 800>(), "cyan"},
   
};
BladeConfig blades[] = {
 { 0, WS281XBladePtr<122, bladePin, Color8::GRB, PowerPINS<bladePowerPin2, bladePowerPin3> >(),
    SubBladeWithList<0,1,4,5,6,10,11,12,13>(WS281XBladePtr<14, blade2Pin, Color8::GRB, PowerPINS<bladePowerPin6> >()), 
    SubBladeWithList<2,3,7,8,9,>(NULL),
    CONFIGARRAY(presets) },
#endif

#ifdef CONFIG_BUTTONS
Button PowerButton(BUTTON_POWER, auxPin, "pow");
Button AuxButton(BUTTON_AUX, powerButtonPin, "aux");
#endif

No joy. Error:

In file included from /Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/ProffieOS.ino:673:
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/config/LyleOS84BetaMini.h:26:5: error: parse error in template argument list
   26 |     SubBladeWithList<2,3,7,8,9,>(NULL),
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/config/LyleOS84BetaMini.h:26:33: error: no matching function for call to 'SubBladeWithList<2, 3, 7, 8, 9, <expression error> >(NULL)'
   26 |     SubBladeWithList<2,3,7,8,9,>(NULL),
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~
In file included from /Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/ProffieOS.ino:607:
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/blades/sub_blade.h:363:12: note: candidate: 'template<int ...Indices> BladeBase* SubBladeWithList(BladeBase*)'
  363 | BladeBase* SubBladeWithList(BladeBase* blade) {
      |            ^~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/blades/sub_blade.h:363:12: note:   template argument deduction/substitution failed:
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/config/LyleOS84BetaMini.h:26:33: error: template argument 6 is invalid
   26 |     SubBladeWithList<2,3,7,8,9,>(NULL),
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/config/LyleOS84BetaMini.h:26:33: note: some candidates omitted; use '-fdiagnostics-all-candidates' to display them
In file included from /Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/props/saber.h:30,
                 from /Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/ProffieOS.ino:681:
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/props/prop_base.h:28:1: error: expected primary-expression before 'class'
   28 | class SaveGlobalStateFile : public ConfigFile {
      | ^~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/props/prop_base.h:28:1: error: expected '}' before 'class'
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/config/LyleOS84BetaMini.h:23:24: note: to match this '{'
   23 | BladeConfig blades[] = {
      |                        ^
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/props/prop_base.h:722:3: error: 'SaveGlobalStateFile' does not name a type; did you mean 'SavePresetStateFile'?
  722 |   SaveGlobalStateFile saved_global_state;
      |   ^~~~~~~~~~~~~~~~~~~
      |   SavePresetStateFile
exit status 1

Compilation error: parse error in template argument list

What am I missing? Do I need to grab the github version of Proffie OS8?

Thank you!!

Top post updated.

I’m not sure either, it would be better to check that the printouts happen or not, but hey, it’s a lot better than no testing!

Again, it would be better if someone else tested it, but I’ll take what I can get…

It was. (See MOUNT_SD_SETTING define in top post.)

Can’t end the list with a comma, remove that and it should work better.

Thanks!!

Changed the blade array as suggested. Config:

#ifdef CONFIG_TOP
#include "proffieboard_v3_config.h"
#define NUM_BLADES 3
#define NUM_BUTTONS 2
#define VOLUME 1000
const unsigned int maxLedsPerStrip = 144;
#define CLASH_THRESHOLD_G 1.0
#define ENABLE_AUDIO
#define ENABLE_MOTION
#define ENABLE_WS2811
#define ENABLE_SD
#endif

#ifdef CONFIG_PRESETS
Preset presets[] = {
   { "TeensySF", "tracks/venus.wav",
    StyleNormalPtr<CYAN, WHITE, 300, 800>(),
    StyleNormalPtr<CYAN, WHITE, 300, 800>(),
    StyleNormalPtr<CYAN, WHITE, 300, 800>(), "cyan"},
   
};
BladeConfig blades[] = {
 { 0, WS281XBladePtr<122, bladePin, Color8::GRB, PowerPINS<bladePowerPin2, bladePowerPin3> >(),
    SubBladeWithList<0,1,4,5,6,10,11,12,13>(WS281XBladePtr<14, blade2Pin, Color8::GRB, PowerPINS<bladePowerPin6> >()), 
    SubBladeWithList<2,3,7,8,9>(NULL),
    CONFIGARRAY(presets) },
#endif

#ifdef CONFIG_BUTTONS
Button PowerButton(BUTTON_POWER, auxPin, "pow");
Button AuxButton(BUTTON_AUX, powerButtonPin, "aux");
#endif

Error:

In file included from /Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/props/saber.h:30,
                 from /Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/ProffieOS.ino:681:
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/props/prop_base.h:28:1: error: expected primary-expression before 'class'
   28 | class SaveGlobalStateFile : public ConfigFile {
      | ^~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/props/prop_base.h:28:1: error: expected '}' before 'class'
In file included from /Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/ProffieOS.ino:673:
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/config/LyleOS84BetaMini.h:22:24: note: to match this '{'
   22 | BladeConfig blades[] = {
      |                        ^
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/props/prop_base.h:722:3: error: 'SaveGlobalStateFile' does not name a type; did you mean 'SavePresetStateFile'?
  722 |   SaveGlobalStateFile saved_global_state;
      |   ^~~~~~~~~~~~~~~~~~~
      |   SavePresetStateFile
exit status 1

Compilation error: expected primary-expression before 'class'

Then tried the config I was planning to use, so I could see the new blades stand out when my hilt is lit:

#ifdef CONFIG_TOP
#include "proffieboard_v3_config.h"
#define NUM_BLADES 3
#define NUM_BUTTONS 2
const unsigned int maxLedsPerStrip = 144;
#define EXTRA_COLOR_BUFFER_SPACE 60
#define VOLUME 1250
#define CLASH_THRESHOLD_G 1
#define KILL_OLD_PLAYERS
#define FILTER_CUTOFF_FREQUENCY 100
#define FILTER_ORDER 8
#define MOTION_TIMEOUT 60 * 5 * 1000
#define IDLE_OFF_TIME 60 * 5 * 1000
#define DISABLE_BASIC_PARSER_STYLES
#define DISABLE_DIAGNOSTIC_COMMANDS
#define DISABLE_TALKIE
#define ENABLE_ALL_EDIT_OPTIONS
#define NO_REPEAT_RANDOM
#define COLOR_CHANGE_DIRECT
#define FETT263_EDIT_SETTINGS_MENU
#define FETT263_SPECIAL_ABILITIES
#define FETT263_DISABLE_CHANGE_FONT
#define FETT263_DISABLE_CHANGE_STYLE
#define FETT263_DISABLE_COPY_PRESET
#define FETT263_LOCKUP_DELAY 200
#define FETT263_BM_CLASH_DETECT 6
#define FETT263_SWING_ON
#define FETT263_SWING_ON_SPEED 400
#define FETT263_SWING_ON_NO_BM
#define FETT263_TWIST_OFF
#define SAVE_PRESET
#define FETT263_SAY_BATTERY_PERCENT
#endif

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


#ifdef CONFIG_PRESETS

Preset presets[] = {

{"ANH;common", "common/tracks/trailer.wav",

/* copyright Fett263 Rotoscope (Primary Blade) OS7 Style
https://www.fett263.com/fett263-proffieOS7-style-library.html#Rotoscope
OS7.14 v3.25p
Single Style
Style Option
Base Color: BaseColorArg (0)

--Effects Included--
Ignition Effect: Standard Ignition [Color: IgnitionColorArg]
Retraction Effect: Standard Retraction [Color: RetractionColorArg]
Lockup Effect:
0: mainLockMulti0Shape - Begin: Real Clash - Style: Intensity AudioFlicker - End: Full Blade Absorb
[Color: LockupColorArg]
Lightning Block Effect:
0: mainLBMulti0Shape - Begin: Responsive Impact - Style: Strobing AudioFlicker - End: Full Blade Absorb
[Color: LBColorArg]
Drag Effect:
0: mainDragMulti0Shape - Begin: Wipe In - Style: Intensity Sparking Drag - End: Wipe Out
[Color: DragColorArg]
Melt Effect:
0: mainMeltMulti0Shape - Begin: Wipe In - Style: Intensity Melt - End: Wipe Out
[Color: StabColorArg]
Blast Effect: Blast Wave (Random) [Color: BlastColorArg]
Clash Effect: Real Clash V1 [Color: ClashColorArg]
*/
StylePtr<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<0,0,255>>,RgbArg<BASE_COLOR_ARG,Rgb<0,0,255>>,Mix<Int<7710>,Black,RgbArg<BASE_COLOR_ARG,Rgb<0,0,255>>>,RgbArg<BASE_COLOR_ARG,Rgb<0,0,255>>,Mix<Int<19276>,Black,RgbArg<BASE_COLOR_ARG,Rgb<0,0,255>>>>,RgbArg<BASE_COLOR_ARG,Rgb<0,0,255>>>,RgbArg<BASE_COLOR_ARG,Rgb<0,0,255>>>,TransitionEffectL<TrWaveX<RgbArg<BLAST_COLOR_ARG,Rgb<255,255,255>>,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>,Mix<IsLessThan<ClashImpactF<>,Int<26000>>,TransitionEffectL<TrConcat<TrInstant,AlphaL<RgbArg<CLASH_COLOR_ARG,Rgb<255,255,255>>,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<12000>,Int<60000>>>>,TrFadeX<Scale<ClashImpactF<>,Int<200>,Int<400>>>>,EFFECT_CLASH>,TransitionEffectL<TrWaveX<RgbArg<CLASH_COLOR_ARG,Rgb<255,255,255>>,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<AlphaL<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<22000>>>,AudioFlicker<RgbArg<LOCKUP_COLOR_ARG,Rgb<255,255,255>>,Mix<Int<12000>,Black,RgbArg<LOCKUP_COLOR_ARG,Rgb<255,255,255>>>>,BrownNoiseFlicker<RgbArg<LOCKUP_COLOR_ARG,Rgb<255,255,255>>,Mix<Int<12000>,Black,RgbArg<LOCKUP_COLOR_ARG,Rgb<255,255,255>>>,300>>,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<22000>>>>,AlphaL<AudioFlicker<RgbArg<LOCKUP_COLOR_ARG,Rgb<255,255,255>>,Mix<Int<20000>,Black,RgbArg<LOCKUP_COLOR_ARG,Rgb<255,255,255>>>>,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>>>>,TrExtend<5000,TrInstant>,TrFade<5000>,EFFECT_LOCKUP_BEGIN>,TrConcat<TrJoin<TrDelay<50>,TrInstant>,Mix<IsLessThan<ClashImpactF<>,Int<26000>>,RgbArg<LOCKUP_COLOR_ARG,Rgb<255,255,255>>,AlphaL<RgbArg<LOCKUP_COLOR_ARG,Rgb<255,255,255>>,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,RgbArg<LOCKUP_COLOR_ARG,Rgb<255,255,255>>,TrFade<400>>,SaberBase::LOCKUP_NORMAL,Int<1>>,ResponsiveLightningBlockL<Strobe<RgbArg<LB_COLOR_ARG,Rgb<255,255,255>>,AudioFlicker<RgbArg<LB_COLOR_ARG,Rgb<255,255,255>>,Blue>,50,1>,TrConcat<TrExtend<200,TrInstant>,AlphaL<RgbArg<LB_COLOR_ARG,Rgb<255,255,255>>,Bump<Scale<BladeAngle<>,Int<10000>,Int<21000>>,Int<10000>>>,TrFade<200>>,TrConcat<TrInstant,RgbArg<LB_COLOR_ARG,Rgb<255,255,255>>,TrFade<400>>,Int<1>>,LockupTrL<AlphaL<TransitionEffect<RandomPerLEDFlickerL<RgbArg<DRAG_COLOR_ARG,Rgb<255,255,255>>>,BrownNoiseFlickerL<RgbArg<DRAG_COLOR_ARG,Rgb<255,255,255>>,Int<300>>,TrExtend<4000,TrInstant>,TrFade<4000>,EFFECT_DRAG_BEGIN>,SmoothStep<Scale<TwistAngle<>,IntArg<DRAG_SIZE_ARG,28000>,Int<30000>>,Int<3000>>>,TrWipeIn<200>,TrWipe<200>,SaberBase::LOCKUP_DRAG,Int<1>>,LockupTrL<AlphaL<Stripes<2000,4000,Mix<TwistAngle<>,RgbArg<STAB_COLOR_ARG,Rgb<255,68,0>>,RotateColorsX<Int<3000>,RgbArg<STAB_COLOR_ARG,Rgb<255,68,0>>>>,Mix<Sin<Int<50>>,Black,Mix<TwistAngle<>,RgbArg<STAB_COLOR_ARG,Rgb<255,68,0>>,RotateColorsX<Int<3000>,RgbArg<STAB_COLOR_ARG,Rgb<255,68,0>>>>>,Mix<Int<4096>,Black,Mix<TwistAngle<>,RgbArg<STAB_COLOR_ARG,Rgb<255,68,0>>,RotateColorsX<Int<3000>,RgbArg<STAB_COLOR_ARG,Rgb<255,68,0>>>>>>,SmoothStep<Scale<TwistAngle<>,IntArg<MELT_SIZE_ARG,28000>,Int<30000>>,Int<3000>>>,TrConcat<TrExtend<4000,TrWipeIn<200>>,AlphaL<HumpFlicker<Mix<TwistAngle<>,RgbArg<STAB_COLOR_ARG,Rgb<255,68,0>>,RotateColorsX<Int<3000>,RgbArg<STAB_COLOR_ARG,Rgb<255,68,0>>>>,RotateColorsX<Int<3000>,Mix<TwistAngle<>,RgbArg<STAB_COLOR_ARG,Rgb<255,68,0>>,RotateColorsX<Int<3000>,RgbArg<STAB_COLOR_ARG,Rgb<255,68,0>>>>>,100>,SmoothStep<Scale<TwistAngle<>,IntArg<MELT_SIZE_ARG,28000>,Int<30000>>,Int<3000>>>,TrFade<4000>>,TrWipe<200>,SaberBase::LOCKUP_MELT,Int<1>>,InOutTrL<TrWipeX<BendTimePowInvX<IgnitionTime<300>,Mult<IntArg<IGNITION_OPTION2_ARG,10992>,Int<98304>>>>,TrWipeInX<BendTimePowX<RetractionTime<0>,Mult<IntArg<RETRACTION_OPTION2_ARG,10992>,Int<98304>>>>,Black>>>(),


/* copyright Fett263 Rotoscope (Accent LED / PCB) OS7 Style
https://www.fett263.com/fett263-proffieOS7-style-library.html#Rotoscope
OS7.14 v3.25p
Single Style
Style Option
Off Behavior: Solid Color [Color: OffColorArg]

Base Color: BaseColorArg (0)

--Effects Included--
Ignition Effect: Instant [Color: IgnitionColorArg]
Retraction Effect: Instant [Color: RetractionColorArg]
Lockup Effect: NoneLightning Block Effect: NoneDrag Effect:
0: accentDragMulti0Shape - Begin: Wipe In - Style: Intensity Sparking Drag - End: Wipe Out
[Color: DragColorArg]
Melt Effect:
0: accentMeltMulti0Shape - Begin: Wipe In - Style: Intensity Melt - End: Wipe Out
[Color: StabColorArg]
*/
StylePtr<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<0,0,255>>,RgbArg<BASE_COLOR_ARG,Rgb<0,0,255>>,Mix<Int<7710>,Black,RgbArg<BASE_COLOR_ARG,Rgb<0,0,255>>>,RgbArg<BASE_COLOR_ARG,Rgb<0,0,255>>,Mix<Int<19276>,Black,RgbArg<BASE_COLOR_ARG,Rgb<0,0,255>>>>,RgbArg<BASE_COLOR_ARG,Rgb<0,0,255>>>,RgbArg<BASE_COLOR_ARG,Rgb<0,0,255>>>,LockupTrL<AlphaL<TransitionEffect<RandomPerLEDFlickerL<RgbArg<DRAG_COLOR_ARG,Rgb<255,255,255>>>,BrownNoiseFlickerL<RgbArg<DRAG_COLOR_ARG,Rgb<255,255,255>>,Int<300>>,TrExtend<4000,TrInstant>,TrFade<4000>,EFFECT_DRAG_BEGIN>,SmoothStep<Scale<TwistAngle<>,IntArg<DRAG_SIZE_ARG,31000>,Int<30000>>,Int<3000>>>,TrWipeIn<200>,TrWipe<200>,SaberBase::LOCKUP_DRAG,Int<1>>,LockupTrL<AlphaL<Stripes<2000,4000,Mix<TwistAngle<>,RgbArg<STAB_COLOR_ARG,Rgb<255,68,0>>,RotateColorsX<Int<3000>,RgbArg<STAB_COLOR_ARG,Rgb<255,68,0>>>>,Mix<Sin<Int<50>>,Black,Mix<TwistAngle<>,RgbArg<STAB_COLOR_ARG,Rgb<255,68,0>>,RotateColorsX<Int<3000>,RgbArg<STAB_COLOR_ARG,Rgb<255,68,0>>>>>,Mix<Int<4096>,Black,Mix<TwistAngle<>,RgbArg<STAB_COLOR_ARG,Rgb<255,68,0>>,RotateColorsX<Int<3000>,RgbArg<STAB_COLOR_ARG,Rgb<255,68,0>>>>>>,SmoothStep<Scale<TwistAngle<>,IntArg<MELT_SIZE_ARG,26000>,Int<30000>>,Int<3000>>>,TrConcat<TrExtend<4000,TrWipeIn<200>>,AlphaL<HumpFlicker<Mix<TwistAngle<>,RgbArg<STAB_COLOR_ARG,Rgb<255,68,0>>,RotateColorsX<Int<3000>,RgbArg<STAB_COLOR_ARG,Rgb<255,68,0>>>>,RotateColorsX<Int<3000>,Mix<TwistAngle<>,RgbArg<STAB_COLOR_ARG,Rgb<255,68,0>>,RotateColorsX<Int<3000>,RgbArg<STAB_COLOR_ARG,Rgb<255,68,0>>>>>,100>,SmoothStep<Scale<TwistAngle<>,IntArg<MELT_SIZE_ARG,26000>,Int<30000>>,Int<3000>>>,TrFade<4000>>,TrWipe<200>,SaberBase::LOCKUP_MELT,Int<1>>,InOutTrL<TrInstant,TrInstant,RgbArg<OFF_COLOR_ARG,Rgb<255,0,0>>>>>(),

/* copyright Fett263 Rotoscope (Accent LED / PCB) OS7 Style
https://www.fett263.com/fett263-proffieOS7-style-library.html#Rotoscope
OS7.14 v3.25p
Single Style
Style Option
Off Behavior: Solid Color [Color: OffColorArg]

Base Color: BaseColorArg (0)

--Effects Included--
Ignition Effect: Instant [Color: IgnitionColorArg]
Retraction Effect: Instant [Color: RetractionColorArg]
Lockup Effect: NoneLightning Block Effect: NoneDrag Effect:
0: accentDragMulti0Shape - Begin: Wipe In - Style: Intensity Sparking Drag - End: Wipe Out
[Color: DragColorArg]
Melt Effect:
0: accentMeltMulti0Shape - Begin: Wipe In - Style: Intensity Melt - End: Wipe Out
[Color: StabColorArg]
*/
StylePtr<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<0,0,255>>,RgbArg<BASE_COLOR_ARG,Rgb<0,0,255>>,Mix<Int<7710>,Black,RgbArg<BASE_COLOR_ARG,Rgb<0,0,255>>>,RgbArg<BASE_COLOR_ARG,Rgb<0,0,255>>,Mix<Int<19276>,Black,RgbArg<BASE_COLOR_ARG,Rgb<0,0,255>>>>,RgbArg<BASE_COLOR_ARG,Rgb<0,0,255>>>,RgbArg<BASE_COLOR_ARG,Rgb<0,0,255>>>,LockupTrL<AlphaL<TransitionEffect<RandomPerLEDFlickerL<RgbArg<DRAG_COLOR_ARG,Rgb<255,255,255>>>,BrownNoiseFlickerL<RgbArg<DRAG_COLOR_ARG,Rgb<255,255,255>>,Int<300>>,TrExtend<4000,TrInstant>,TrFade<4000>,EFFECT_DRAG_BEGIN>,SmoothStep<Scale<TwistAngle<>,IntArg<DRAG_SIZE_ARG,31000>,Int<30000>>,Int<3000>>>,TrWipeIn<200>,TrWipe<200>,SaberBase::LOCKUP_DRAG,Int<1>>,LockupTrL<AlphaL<Stripes<2000,4000,Mix<TwistAngle<>,RgbArg<STAB_COLOR_ARG,Rgb<255,68,0>>,RotateColorsX<Int<3000>,RgbArg<STAB_COLOR_ARG,Rgb<255,68,0>>>>,Mix<Sin<Int<50>>,Black,Mix<TwistAngle<>,RgbArg<STAB_COLOR_ARG,Rgb<255,68,0>>,RotateColorsX<Int<3000>,RgbArg<STAB_COLOR_ARG,Rgb<255,68,0>>>>>,Mix<Int<4096>,Black,Mix<TwistAngle<>,RgbArg<STAB_COLOR_ARG,Rgb<255,68,0>>,RotateColorsX<Int<3000>,RgbArg<STAB_COLOR_ARG,Rgb<255,68,0>>>>>>,SmoothStep<Scale<TwistAngle<>,IntArg<MELT_SIZE_ARG,26000>,Int<30000>>,Int<3000>>>,TrConcat<TrExtend<4000,TrWipeIn<200>>,AlphaL<HumpFlicker<Mix<TwistAngle<>,RgbArg<STAB_COLOR_ARG,Rgb<255,68,0>>,RotateColorsX<Int<3000>,RgbArg<STAB_COLOR_ARG,Rgb<255,68,0>>>>,RotateColorsX<Int<3000>,Mix<TwistAngle<>,RgbArg<STAB_COLOR_ARG,Rgb<255,68,0>>,RotateColorsX<Int<3000>,RgbArg<STAB_COLOR_ARG,Rgb<255,68,0>>>>>,100>,SmoothStep<Scale<TwistAngle<>,IntArg<MELT_SIZE_ARG,26000>,Int<30000>>,Int<3000>>>,TrFade<4000>>,TrWipe<200>,SaberBase::LOCKUP_MELT,Int<1>>,InOutTrL<TrInstant,TrInstant,RgbArg<OFF_COLOR_ARG,Rgb<255,244,157>>>>>(),

"RotoTest"},

};
BladeConfig blades[] = {
 { 0, WS281XBladePtr<122, bladePin, Color8::GRB, PowerPINS<bladePowerPin2, bladePowerPin3> >(),
    SubBladeWithList<0,1,4,5,6,10,11,12,13>(WS281XBladePtr<14, blade2Pin, Color8::GRB, PowerPINS<bladePowerPin6> >()), 
    SubBladeWithList<2,3,7,8,9>(NULL),
    CONFIGARRAY(presets) },
#endif

#ifdef CONFIG_BUTTONS
Button PowerButton(BUTTON_POWER, auxPin, "pow");
Button AuxButton(BUTTON_AUX, powerButtonPin, "aux");
#endif

Error:

In file included from /Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/config/LyleOS84BetaTest.h:36,
                 from /Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/ProffieOS.ino:677:
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/props/saber_fett263_buttons.h:1034:1: error: expected primary-expression before 'class'
 1034 | class GestureControlFile : public ConfigFile {
      | ^~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/props/saber_fett263_buttons.h:1034:1: error: expected '}' before 'class'
In file included from /Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/ProffieOS.ino:673:
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/config/LyleOS84BetaTest.h:119:24: note: to match this '{'
  119 | BladeConfig blades[] = {
      |                        ^
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/props/saber_fett263_buttons.h:1100:1: error: 'GestureControlFile' does not name a type
 1100 | GestureControlFile saved_gesture_control;
      | ^~~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/props/saber_fett263_buttons.h: In member function 'void SaberFett263Buttons::RestoreGestureState()':
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/props/saber_fett263_buttons.h:1630:5: error: 'saved_gesture_control' was not declared in this scope
 1630 |     saved_gesture_control.ReadINIFromDir(NULL, "gesture");
      |     ^~~~~~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/props/saber_fett263_buttons.h: In member function 'void SaberFett263Buttons::SaveGestureState()':
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/props/saber_fett263_buttons.h:1635:5: error: 'saved_gesture_control' was not declared in this scope
 1635 |     saved_gesture_control.WriteToRootDir("gesture");
      |     ^~~~~~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/props/saber_fett263_buttons.h: In member function 'virtual void SaberFett263Buttons::Loop()':
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/props/saber_fett263_buttons.h:2535:81: error: 'saved_gesture_control' was not declared in this scope
 2535 |         if (clash_type_ == CLASH_BATTLE_MODE && SaberBase::GetClashStrength() > saved_gesture_control.clashdetect) {
      |                                                                                 ^~~~~~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/props/saber_fett263_buttons.h:2562:45: error: 'saved_gesture_control' was not declared in this scope
 2562 |           millis() - clash_impact_millis_ > saved_gesture_control.lockupdelay &&
      |                                             ^~~~~~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/props/saber_fett263_buttons.h:2576:45: error: 'saved_gesture_control' was not declared in this scope
 2576 |           millis() - clash_impact_millis_ > saved_gesture_control.lockupdelay &&
      |                                             ^~~~~~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/props/saber_fett263_buttons.h:2587:13: error: 'saved_gesture_control' was not declared in this scope
 2587 |         if (saved_gesture_control.forcepush && millis() - push_begin_millis_ > saved_gesture_control.forcepushlen) {
      |             ^~~~~~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/props/saber_fett263_buttons.h:2603:49: error: 'saved_gesture_control' was not declared in this scope
 2603 |         if (!swinging_ && fusor.swing_speed() > saved_gesture_control.swingonspeed) {
      |                                                 ^~~~~~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/props/saber_fett263_buttons.h: In member function 'void SaberFett263Buttons::MenuChoice()':
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/props/saber_fett263_buttons.h:3227:42: error: 'saved_gesture_control' was not declared in this scope
 3227 |           EnterBooleanMenu(MENU_SWINGON, saved_gesture_control.swingon);
      |                                          ^~~~~~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/props/saber_fett263_buttons.h:3284:9: error: 'saved_gesture_control' was not declared in this scope
 3284 |         saved_gesture_control.swingon = true;
      |         ^~~~~~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/props/saber_fett263_buttons.h:3287:9: error: 'saved_gesture_control' was not declared in this scope
 3287 |         saved_gesture_control.swingon = false;
      |         ^~~~~~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/props/saber_fett263_buttons.h:3294:7: error: 'saved_gesture_control' was not declared in this scope
 3294 |       saved_gesture_control.swingonspeed = calc_;
      |       ^~~~~~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/props/saber_fett263_buttons.h: In member function 'void SaberFett263Buttons::MenuDial(int)':
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/props/saber_fett263_buttons.h:4320:27: error: 'saved_gesture_control' was not declared in this scope
 4320 |           if (clash_t_ >= saved_gesture_control.maxclash) {
      |                           ^~~~~~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/props/saber_fett263_buttons.h: In member function 'virtual bool SaberFett263Buttons::Parse(const char*, const char*)':
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/props/saber_fett263_buttons.h:5215:7: error: 'saved_gesture_control' was not declared in this scope
 5215 |       saved_gesture_control.Print(arg);
      |       ^~~~~~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/props/saber_fett263_buttons.h:5219:7: error: 'saved_gesture_control' was not declared in this scope
 5219 |       saved_gesture_control.Set(arg);
      |       ^~~~~~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/props/saber_fett263_buttons.h: In member function 'virtual bool SaberFett263Buttons::Event2(BUTTON, EVENT, uint32_t)':
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/props/saber_fett263_buttons.h:5933:16: error: 'saved_gesture_control' was not declared in this scope
 5933 |           if (!saved_gesture_control.gestureon) {
      |                ^~~~~~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/props/saber_fett263_buttons.h:6146:13: error: 'saved_gesture_control' was not declared in this scope
 6146 |         if (saved_gesture_control.powerlock
      |             ^~~~~~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/props/saber_fett263_buttons.h:6213:18: error: 'saved_gesture_control' was not declared in this scope
 6213 |             if (!saved_gesture_control.powerlock) {
      |                  ^~~~~~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/props/saber_fett263_buttons.h:6825:14: error: 'saved_gesture_control' was not declared in this scope
 6825 |         if (!saved_gesture_control.gestureon) return true;
      |              ^~~~~~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/props/saber_fett263_buttons.h:6826:14: error: 'saved_gesture_control' was not declared in this scope
 6826 |         if (!saved_gesture_control.swingon) return true;
      |              ^~~~~~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/props/saber_fett263_buttons.h:6840:14: error: 'saved_gesture_control' was not declared in this scope
 6840 |         if (!saved_gesture_control.gestureon) return true;
      |              ^~~~~~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/props/saber_fett263_buttons.h:6841:14: error: 'saved_gesture_control' was not declared in this scope
 6841 |         if (!saved_gesture_control.twistoff) return true;
      |              ^~~~~~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/props/saber_fett263_buttons.h:6903:14: error: 'saved_gesture_control' was not declared in this scope
 6903 |         if (!saved_gesture_control.gestureon) return true;
      |              ^~~~~~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/props/saber_fett263_buttons.h:6904:14: error: 'saved_gesture_control' was not declared in this scope
 6904 |         if (!saved_gesture_control.twiston) return true;
      |              ^~~~~~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/props/saber_fett263_buttons.h:6941:14: error: 'saved_gesture_control' was not declared in this scope
 6941 |         if (!saved_gesture_control.gestureon) return true;
      |              ^~~~~~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/props/saber_fett263_buttons.h:6942:14: error: 'saved_gesture_control' was not declared in this scope
 6942 |         if (!saved_gesture_control.stabon) return true;
      |              ^~~~~~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/props/saber_fett263_buttons.h:6978:14: error: 'saved_gesture_control' was not declared in this scope
 6978 |         if (!saved_gesture_control.gestureon) return true;
      |              ^~~~~~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/props/saber_fett263_buttons.h:6979:14: error: 'saved_gesture_control' was not declared in this scope
 6979 |         if (!saved_gesture_control.thruston) return true;
      |              ^~~~~~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/props/saber_fett263_buttons.h:6994:14: error: 'saved_gesture_control' was not declared in this scope
 6994 |         if (!saved_gesture_control.forcepush) return true;
      |              ^~~~~~~~~~~~~~~~~~~~~
exit status 1

Compilation error: expected primary-expression before 'class'

Something else I missed?

You’re missing }; at the end of your blade array.

Thank you again.

This very cool feature is running well. I like the way it looks in a loop or circle. I feel like you could also use it in a bridge panel.

SubBladeWithList confirmed working for me.

Oh that, easy, yes I did for some of them at least with my multi_prop testing. In fact I was looking for one of them in particular then I realized that the log level was the wrong value for what I was looking for. Change the value and tada I saw the message I wanted. I can assure that VERBOSE stays well hidden till the log level reaches 500, same for DEBUG with 400. I was running low on flash memory on my v2.2 saber, changed log level to 200 and of course less messages not that I was looking for a particular one but the saber is running Fett’s prop who has a few NORMAL messages. I guess the only one left is PVLOG_ERROR since my props don’t generate that.

Trying some menus/defines.

Defines:

#define MENU_SPEC_MENU ChangeVolumeMode

Jumps directly into volume menu, with no prompt (immediately starts playing percentage values and adjusting actual volume). Looks good.

I wanted to use brightness or dimming as the MENU_SPEC_MENU and see that “The name for each menu can be found in the menu specification.” However, I tried several of the menu names from the POD to try to get dimming, and none worked (addling “Mode” to them, or not). So maybe I don’t understand where the real list is.

#define DISABLE_MOTION - motion detection shuts off
#define DISABLE_SD - immediate error in font directory playback on boot, no sound

#define DISABLE_AUDIO - error on compile:

In file included from /Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/sound.h:163,
                 from /Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/ProffieOS.ino:445:
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/common/sd_card.h: In member function 'virtual void SDCard::Loop()':
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/common/sd_card.h:62:9: error: 'AudioStreamWork' has not been declared
   62 |         AudioStreamWork::LockSD_nomount(true);
      |         ^~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/common/sd_card.h:63:9: error: 'AudioStreamWork' has not been declared
   63 |         AudioStreamWork::CloseAllOpenFiles();
      |         ^~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/common/sd_card.h:66:9: error: 'AudioStreamWork' has not been declared
   66 |         AudioStreamWork::LockSD_nomount(false);
      |         ^~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/common/sd_card.h:71:9: error: 'AudioStreamWork' has not been declared
   71 |         AudioStreamWork::LockSD_nomount(true);
      |         ^~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/common/sd_card.h:73:9: error: 'AudioStreamWork' has not been declared
   73 |         AudioStreamWork::LockSD_nomount(false);
      |         ^~~~~~~~~~~~~~~
In file included from /Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/rgb565frame.h:6,
                 from /Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/styles/display.h:5,
                 from /Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/ProffieOS.ino:524:
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/layer_controller.h: In member function 'virtual int SoundLevelVariableSource::percent()':
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/layer_controller.h:82:50: error: 'dynamic_mixer' was not declared in this scope
   82 |   int percent() override { return clampi32(sqrtf(dynamic_mixer.audio_volume()) / 1638, 0, 100); };
      |                                                  ^~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/layer_controller.h: In member function 'virtual int VolumeVariableSource::percent()':
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/layer_controller.h:88:44: error: 'dynamic_mixer' was not declared in this scope
   88 |   int percent() override { return clampi32(dynamic_mixer.get_volume() * 100 / VOLUME, 0, 100); };
      |                                            ^~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/layer_controller.h: At global scope:
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/layer_controller.h:124:51: error: expected class-name before '{' token
  124 | class BufferedFileReader : public AudioStreamWork {
      |                                                   ^
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/layer_controller.h:276:3: error: 'CircularBuffer' does not name a type
  276 |   CircularBuffer<uint8_t, 1024> input_buffer_;
      |   ^~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/layer_controller.h:166:8: error: 'bool BufferedFileReader::FillBuffer()' marked 'override', but does not override
  166 |   bool FillBuffer() override {
      |        ^~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/layer_controller.h:231:8: error: 'void BufferedFileReader::CloseFiles()' marked 'override', but does not override
  231 |   void CloseFiles() override {
      |        ^~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/layer_controller.h:237:10: error: 'size_t BufferedFileReader::space_available()' marked 'override', but does not override
  237 |   size_t space_available() override {
      |          ^~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/layer_controller.h: In member function 'void BufferedFileReader::SEEK_LOW(uint32_t)':
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/layer_controller.h:131:5: error: 'input_buffer_' was not declared in this scope
  131 |     input_buffer_.clear();
      |     ^~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/layer_controller.h: In member function 'void BufferedFileReader::SEEK(uint32_t)':
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/layer_controller.h:136:40: error: 'input_buffer_' was not declared in this scope
  136 |     if (pos > TELL() && pos - TELL() < input_buffer_.size()) {
      |                                        ^~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/layer_controller.h: In member function 'uint32_t BufferedFileReader::TELL()':
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/layer_controller.h:145:32: error: 'input_buffer_' was not declared in this scope
  145 |     uint32_t ret = seek_pos_ + input_buffer_.pos();
      |                                ^~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/layer_controller.h: In member function 'bool BufferedFileReader::BUFATEOF()':
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/layer_controller.h:163:21: error: 'input_buffer_' was not declared in this scope
  163 |     return TELL() + input_buffer_.size() == file_size_;
      |                     ^~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/layer_controller.h: In member function 'bool BufferedFileReader::FillBuffer()':
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/layer_controller.h:174:10: error: 'input_buffer_' was not declared in this scope
  174 |     if (!input_buffer_.space_available()) {
      |          ^~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/layer_controller.h:179:7: error: 'input_buffer_' was not declared in this scope
  179 |       input_buffer_.clear();
      |       ^~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/layer_controller.h:199:23: error: 'input_buffer_' was not declared in this scope
  199 |     uint32_t toread = input_buffer_.continuous_space();
      |                       ^~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/layer_controller.h: In member function 'size_t BufferedFileReader::space_available()':
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/layer_controller.h:239:9: error: 'input_buffer_' was not declared in this scope
  239 |     if (input_buffer_.space_available() < 512) {
      |         ^~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/layer_controller.h: In member function 'int BufferedFileReader::getc()':
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/layer_controller.h:264:23: error: 'input_buffer_' was not declared in this scope
  264 |   int getc() { return input_buffer_.pop(); }
      |                       ^~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/layer_controller.h: At global scope:
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/layer_controller.h:414:8: error: 'bool SCRReader::IsActive()' marked 'override', but does not override
  414 |   bool IsActive() override { return active_ || delayed_open_; }
      |        ^~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/layer_controller.h: In member function 'void SCRReader::loop()':
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/layer_controller.h:307:16: error: 'input_buffer_' was not declared in this scope
  307 |         while (input_buffer_.empty()) {
      |                ^~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/layer_controller.h:313:11: error: 'scheduleFillBuffer' was not declared in this scope
  313 |           scheduleFillBuffer();
      |           ^~~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/layer_controller.h: In member function 'void SCRReader::check_open()':
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/layer_controller.h:422:7: error: 'scheduleFillBuffer' was not declared in this scope
  422 |       scheduleFillBuffer();
      |       ^~~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/rgb565frame.h: At global scope:
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/rgb565frame.h:20:47: error: 'CircularBuffer' has not been declared
   20 |   void fill(PQOI::PqoiStreamingDecoder* pqoi, CircularBuffer<uint8_t, N>* input_buffer, int left, int pixels) {
      |                                               ^~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/rgb565frame.h:20:61: error: expected ',' or '...' before '<' token
   20 |   void fill(PQOI::PqoiStreamingDecoder* pqoi, CircularBuffer<uint8_t, N>* input_buffer, int left, int pixels) {
      |                                                             ^
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/rgb565frame.h: In member function 'void OutputBuffer<WIDTH>::fill(PQOI::PqoiStreamingDecoder*, int)':
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/rgb565frame.h:22:21: error: 'input_buffer' was not declared in this scope
   22 |     pqoi->set_input(input_buffer->data(), input_buffer->data() + input_buffer->continuous_data());
      |                     ^~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/rgb565frame.h:23:22: error: 'left' was not declared in this scope
   23 |     chunk.fill(pqoi, left, pixels);
      |                      ^~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/rgb565frame.h:23:28: error: 'pixels' was not declared in this scope
   23 |     chunk.fill(pqoi, left, pixels);
      |                            ^~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/rgb565frame.h: In member function 'void PQOILayer<WIDTH, HEIGHT>::run()':
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/rgb565frame.h:146:17: error: 'input_buffer_' was not declared in this scope
  146 |         while (!input_buffer_.size()) {
      |                 ^~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/rgb565frame.h:155:11: error: there are no arguments to 'scheduleFillBuffer' that depend on a template parameter, so a declaration of 'scheduleFillBuffer' must be available [-fpermissive]
  155 |           scheduleFillBuffer();
      |           ^~~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/rgb565frame.h:155:11: note: (if you use '-fpermissive', G++ will accept your code, but allowing the use of an undeclared name is deprecated)
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/rgb565frame.h:159:66: error: 'input_buffer_' was not declared in this scope
  159 |         size_t to_copy = std::min<size_t>(read_end_ - read_pos_, input_buffer_.continuous_data());
      |                                                                  ^~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/rgb565frame.h: In member function 'bool PQOILayer<WIDTH, HEIGHT>::Fill(OutputBuffer<WIDTH>*)':
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/rgb565frame.h:323:12: error: 'input_buffer_' was not declared in this scope; did you mean 'output_buffer'?
  323 |       if (!input_buffer_.size()) {
      |            ^~~~~~~~~~~~~
      |            output_buffer
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/rgb565frame.h:326:9: error: there are no arguments to 'scheduleFillBuffer' that depend on a template parameter, so a declaration of 'scheduleFillBuffer' must be available [-fpermissive]
  326 |         scheduleFillBuffer();
      |         ^~~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/rgb565frame.h:329:12: error: 'input_buffer_' was not declared in this scope; did you mean 'output_buffer'?
  329 |       if (!input_buffer_.size()) {
      |            ^~~~~~~~~~~~~
      |            output_buffer
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/rgb565frame.h:333:35: error: 'input_buffer_' was not declared in this scope; did you mean 'output_buffer'?
  333 |       output_buffer->fill(&pqoi, &input_buffer_, left_margin_, width_);
      |                                   ^~~~~~~~~~~~~
      |                                   output_buffer
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/rgb565frame.h: In member function 'bool PQOILayer<WIDTH, HEIGHT>::Apply(OutputBuffer<WIDTH>*, uint16_t*&)':
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/rgb565frame.h:374:12: error: 'input_buffer_' was not declared in this scope; did you mean 'output_buffer'?
  374 |       if (!input_buffer_.size()) scheduleFillBuffer();
      |            ^~~~~~~~~~~~~
      |            output_buffer
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/rgb565frame.h:374:34: error: there are no arguments to 'scheduleFillBuffer' that depend on a template parameter, so a declaration of 'scheduleFillBuffer' must be available [-fpermissive]
  374 |       if (!input_buffer_.size()) scheduleFillBuffer();
      |                                  ^~~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/rgb565frame.h:375:12: error: 'input_buffer_' was not declared in this scope; did you mean 'output_buffer'?
  375 |       if (!input_buffer_.size()) return false;
      |            ^~~~~~~~~~~~~
      |            output_buffer
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/rgb565frame.h:376:22: error: 'input_buffer_' was not declared in this scope; did you mean 'output_buffer'?
  376 |       pqoi.set_input(input_buffer_.data(), input_buffer_.data() + input_buffer_.continuous_data());
      |                      ^~~~~~~~~~~~~
      |                      output_buffer
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/rgb565frame.h: In member function 'void PQOILayer<WIDTH, HEIGHT>::dumpstate()':
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/rgb565frame.h:433:31: error: 'input_buffer_' was not declared in this scope
  433 |            << " Bufsize: " << input_buffer_.size()
      |                               ^~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/rgb565frame.h: At global scope:
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/rgb565frame.h:726:3: error: 'CircularBuffer' does not name a type
  726 |   CircularBuffer<OutputBuffer<WIDTH>, 32> output_buffers_;
      |   ^~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/rgb565frame.h: In member function 'OutputBuffer<WIDTH>* RGB565Frame<WIDTH, HEIGHT, LAYERS>::getOutputBuffer()':
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/rgb565frame.h:512:9: error: 'output_buffers_' was not declared in this scope; did you mean 'OutputBuffer'?
  512 |     if (output_buffers_.space_available() == 0) return nullptr;
      |         ^~~~~~~~~~~~~~~
      |         OutputBuffer
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/rgb565frame.h:513:32: error: 'output_buffers_' was not declared in this scope; did you mean 'OutputBuffer'?
  513 |     OutputBuffer<WIDTH>* ret = output_buffers_.space();
      |                                ^~~~~~~~~~~~~~~
      |                                OutputBuffer
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/rgb565frame.h: In member function 'void RGB565Frame<WIDTH, HEIGHT, LAYERS>::dumpstate()':
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/display/rgb565frame.h:683:37: error: 'output_buffers_' was not declared in this scope; did you mean 'OutputBuffer'?
  683 |            << " buffered rows: " << output_buffers_.size()
      |                                     ^~~~~~~~~~~~~~~
      |                                     OutputBuffer
In file included from /Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/transitions/doeffect.h:5,
                 from /Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/ProffieOS.ino:589:
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h: At global scope:
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:204:10: error: 'BufferedWavPlayer' was not declared in this scope
  204 |   RefPtr<BufferedWavPlayer> hum_player_;
      |          ^~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:204:27: error: template argument 1 is invalid
  204 |   RefPtr<BufferedWavPlayer> hum_player_;
      |                           ^
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:205:10: error: 'BufferedWavPlayer' was not declared in this scope
  205 |   RefPtr<BufferedWavPlayer> next_hum_player_;
      |          ^~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:205:27: error: template argument 1 is invalid
  205 |   RefPtr<BufferedWavPlayer> next_hum_player_;
      |                           ^
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:206:10: error: 'BufferedWavPlayer' was not declared in this scope
  206 |   RefPtr<BufferedWavPlayer> swing_player_;
      |          ^~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:206:27: error: template argument 1 is invalid
  206 |   RefPtr<BufferedWavPlayer> swing_player_;
      |                           ^
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:207:10: error: 'BufferedWavPlayer' was not declared in this scope
  207 |   RefPtr<BufferedWavPlayer> lock_player_;
      |          ^~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:207:27: error: template argument 1 is invalid
  207 |   RefPtr<BufferedWavPlayer> lock_player_;
      |                           ^
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:251:10: error: 'BufferedWavPlayer' was not declared in this scope
  251 |   RefPtr<BufferedWavPlayer> PlayPolyphonic(const Effect::FileID& f)  {
      |          ^~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:251:27: error: template argument 1 is invalid
  251 |   RefPtr<BufferedWavPlayer> PlayPolyphonic(const Effect::FileID& f)  {
      |                           ^
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:265:10: error: 'BufferedWavPlayer' was not declared in this scope
  265 |   RefPtr<BufferedWavPlayer> PlayPolyphonic(Effect* f)  {
      |          ^~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:265:27: error: template argument 1 is invalid
  265 |   RefPtr<BufferedWavPlayer> PlayPolyphonic(Effect* f)  {
      |                           ^
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:413:33: error: 'BufferedWavPlayer' was not declared in this scope
  413 |   Effect::FileID getNext(RefPtr<BufferedWavPlayer> previous, Effect* next) {
      |                                 ^~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:413:50: error: template argument 1 is invalid
  413 |   Effect::FileID getNext(RefPtr<BufferedWavPlayer> previous, Effect* next) {
      |                                                  ^
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h: In member function 'void HybridFont::Activate()':
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:138:5: error: 'SetupStandardAudio' was not declared in this scope
  138 |     SetupStandardAudio();
      |     ^~~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h: In member function 'void HybridFont::Deactivate()':
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:195:18: error: request for member 'Free' in '((HybridFont*)this)->HybridFont::lock_player_', which is of non-class type 'int'
  195 |     lock_player_.Free();
      |                  ^~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:196:17: error: request for member 'Free' in '((HybridFont*)this)->HybridFont::hum_player_', which is of non-class type 'int'
  196 |     hum_player_.Free();
      |                 ^~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:197:22: error: request for member 'Free' in '((HybridFont*)this)->HybridFont::next_hum_player_', which is of non-class type 'int'
  197 |     next_hum_player_.Free();
      |                      ^~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:198:19: error: request for member 'Free' in '((HybridFont*)this)->HybridFont::swing_player_', which is of non-class type 'int'
  198 |     swing_player_.Free();
      |                   ^~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h: In member function 'void HybridFont::PlayMonophonic(const Effect::FileID&, Effect*, float)':
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:212:26: error: 'GetFreeWavPlayer' was not declared in this scope
  212 |       next_hum_player_ = GetFreeWavPlayer();
      |                          ^~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:219:18: error: base operand of '->' is not a pointer
  219 |       hum_player_->set_fade_time(xfade);
      |                  ^~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:220:18: error: base operand of '->' is not a pointer
  220 |       hum_player_->FadeAndStop();
      |                  ^~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:221:19: error: request for member 'Free' in '((HybridFont*)this)->HybridFont::hum_player_', which is of non-class type 'int'
  221 |       hum_player_.Free();
      |                   ^~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:222:23: error: base operand of '->' is not a pointer
  222 |       next_hum_player_->set_volume_now(0);
      |                       ^~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:223:23: error: base operand of '->' is not a pointer
  223 |       next_hum_player_->set_fade_time(xfade);
      |                       ^~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:224:23: error: base operand of '->' is not a pointer
  224 |       next_hum_player_->set_volume(font_config.volEff / 16.0f);
      |                       ^~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:226:23: error: base operand of '->' is not a pointer
  226 |       next_hum_player_->set_volume_now(font_config.volEff / 16.0f);
      |                       ^~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:229:22: error: request for member 'Free' in '((HybridFont*)this)->HybridFont::next_hum_player_', which is of non-class type 'int'
  229 |     next_hum_player_.Free();
      |                      ^~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:230:16: error: base operand of '->' is not a pointer
  230 |     hum_player_->PlayOnce(f);
      |                ^~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:231:41: error: base operand of '->' is not a pointer
  231 |     current_effect_length_ = hum_player_->length();
      |                                         ^~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:232:26: error: base operand of '->' is not a pointer
  232 |     if (loop) hum_player_->PlayLoop(loop);
      |                          ^~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h: In member function 'void HybridFont::RestartHum(int)':
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:241:35: error: base operand of '->' is not a pointer
  241 |     if (hum_player_ && hum_player_->isPlaying()) {
      |                                   ^~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h: In member function 'int HybridFont::PlayPolyphonic(const Effect::FileID&)':
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:253:27: error: 'BufferedWavPlayer' was not declared in this scope
  253 |     if (!f) return RefPtr<BufferedWavPlayer>(nullptr);
      |                           ^~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:253:44: error: template argument 1 is invalid
  253 |     if (!f) return RefPtr<BufferedWavPlayer>(nullptr);
      |                                            ^
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:254:12: error: 'BufferedWavPlayer' was not declared in this scope
  254 |     RefPtr<BufferedWavPlayer> player = GetOrFreeWavPlayer(f.GetEffect());
      |            ^~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:254:29: error: template argument 1 is invalid
  254 |     RefPtr<BufferedWavPlayer> player = GetOrFreeWavPlayer(f.GetEffect());
      |                             ^
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:254:40: error: 'GetOrFreeWavPlayer' was not declared in this scope
  254 |     RefPtr<BufferedWavPlayer> player = GetOrFreeWavPlayer(f.GetEffect());
      |                                        ^~~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:256:13: error: base operand of '->' is not a pointer
  256 |       player->set_volume_now(font_config.volEff / 16.0f);
      |             ^~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:257:13: error: base operand of '->' is not a pointer
  257 |       player->PlayOnce(f);
      |             ^~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:258:38: error: base operand of '->' is not a pointer
  258 |       current_effect_length_ = player->length();
      |                                      ^~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h: In member function 'virtual void HybridFont::StartSwing(const Vec3&, float, float)':
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:304:28: error: base operand of '->' is not a pointer
  304 |           if (swing_player_->pos() / swing_player_->length() >= font_config.ProffieOSSwingOverlap) {
      |                            ^~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:304:51: error: base operand of '->' is not a pointer
  304 |           if (swing_player_->pos() / swing_player_->length() >= font_config.ProffieOSSwingOverlap) {
      |                                                   ^~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:305:26: error: base operand of '->' is not a pointer
  305 |             swing_player_->set_fade_time(swing_player_->length() - swing_player_->pos());
      |                          ^~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:305:55: error: base operand of '->' is not a pointer
  305 |             swing_player_->set_fade_time(swing_player_->length() - swing_player_->pos());
      |                                                       ^~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:305:81: error: base operand of '->' is not a pointer
  305 |             swing_player_->set_fade_time(swing_player_->length() - swing_player_->pos());
      |                                                                                 ^~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:306:26: error: base operand of '->' is not a pointer
  306 |             swing_player_->FadeAndStop();
      |                          ^~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:307:27: error: request for member 'Free' in '((HybridFont*)this)->HybridFont::swing_player_', which is of non-class type 'int'
  307 |             swing_player_.Free();
      |                           ^~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:361:21: error: request for member 'Free' in '((HybridFont*)this)->HybridFont::swing_player_', which is of non-class type 'int'
  361 |       swing_player_.Free();
      |                     ^~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h: In member function 'virtual float HybridFont::SetSwingVolume(float, float)':
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:375:24: error: base operand of '->' is not a pointer
  375 |       if (swing_player_->isPlaying()) {
      |                        ^~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:378:22: error: base operand of '->' is not a pointer
  378 |         swing_player_->set_fade_time(0.04);
      |                      ^~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:379:22: error: base operand of '->' is not a pointer
  379 |         swing_player_->set_volume(accent_volume);
      |                      ^~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:382:23: error: request for member 'Free' in '((HybridFont*)this)->HybridFont::swing_player_', which is of non-class type 'int'
  382 |         swing_player_.Free();
      |                       ^~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h: In member function 'void HybridFont::SB_Preon(EffectLocation)':
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:402:14: error: 'BufferedWavPlayer' was not declared in this scope
  402 |       RefPtr<BufferedWavPlayer> tmp = PlayPolyphonic(&SFX_preon);
      |              ^~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:402:31: error: template argument 1 is invalid
  402 |       RefPtr<BufferedWavPlayer> tmp = PlayPolyphonic(&SFX_preon);
      |                               ^
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h: In member function 'Effect::FileID HybridFont::getNext(int, Effect*)':
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:415:22: error: base operand of '->' is not a pointer
  415 |       return previous->current_file_id().GetFollowing(next);
      |                      ^~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h: In member function 'void HybridFont::SB_Postoff()':
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:424:12: error: 'BufferedWavPlayer' was not declared in this scope
  424 |     RefPtr<BufferedWavPlayer> tmp = GetWavPlayerPlaying(&SFX_pstoff);
      |            ^~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:424:29: error: template argument 1 is invalid
  424 |     RefPtr<BufferedWavPlayer> tmp = GetWavPlayerPlaying(&SFX_pstoff);
      |                             ^
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:424:37: error: 'GetWavPlayerPlaying' was not declared in this scope
  424 |     RefPtr<BufferedWavPlayer> tmp = GetWavPlayerPlaying(&SFX_pstoff);
      |                                     ^~~~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:426:10: error: base operand of '->' is not a pointer
  426 |       tmp->UpdateSaberBaseSoundInfo();
      |          ^~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h: In member function 'virtual void HybridFont::SB_On(EffectLocation)':
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:445:23: error: 'GetFreeWavPlayer' was not declared in this scope
  445 |         hum_player_ = GetFreeWavPlayer();
      |                       ^~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:447:22: error: base operand of '->' is not a pointer
  447 |           hum_player_->set_volume_now(0);
      |                      ^~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:448:22: error: base operand of '->' is not a pointer
  448 |           hum_player_->PlayOnce(getNext(GetWavPlayerPlaying(getOut()), SFX_humm ? &SFX_humm : &SFX_hum));
      |                      ^~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:448:41: error: 'GetWavPlayerPlaying' was not declared in this scope
  448 |           hum_player_->PlayOnce(getNext(GetWavPlayerPlaying(getOut()), SFX_humm ? &SFX_humm : &SFX_hum));
      |                                         ^~~~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:449:22: error: base operand of '->' is not a pointer
  449 |           hum_player_->PlayLoop(SFX_humm ? &SFX_humm : &SFX_hum);
      |                      ^~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:453:14: error: 'BufferedWavPlayer' was not declared in this scope
  453 |       RefPtr<BufferedWavPlayer> tmp;
      |              ^~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:453:31: error: template argument 1 is invalid
  453 |       RefPtr<BufferedWavPlayer> tmp;
      |                               ^
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:455:15: error: 'GetWavPlayerPlaying' was not declared in this scope
  455 |         tmp = GetWavPlayerPlaying(getOut());
      |               ^~~~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:458:14: error: base operand of '->' is not a pointer
  458 |           tmp->UpdateSaberBaseSoundInfo();
      |              ^~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:467:27: error: base operand of '->' is not a pointer
  467 |         hum_fade_in_ = tmp->length();
      |                           ^~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:473:34: error: base operand of '->' is not a pointer
  473 |         int delay_ms = 1000 * tmp->length() - font_config.humStart;
      |                                  ^~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h: In member function 'virtual void HybridFont::SB_Off(SaberBase::OffType, EffectLocation)':
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:532:24: error: base operand of '->' is not a pointer
  532 |             hum_player_->set_fade_time(0.2);
      |                        ^~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:533:24: error: base operand of '->' is not a pointer
  533 |             hum_player_->FadeAndStop();
      |                        ^~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:534:25: error: request for member 'Free' in '((HybridFont*)this)->HybridFont::hum_player_', which is of non-class type 'int'
  534 |             hum_player_.Free();
      |                         ^~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:558:20: error: base operand of '->' is not a pointer
  558 |       swing_player_->set_fade_time(0.3);
      |                    ^~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:559:20: error: base operand of '->' is not a pointer
  559 |       swing_player_->FadeAndStop();
      |                    ^~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:560:21: error: request for member 'Free' in '((HybridFont*)this)->HybridFont::swing_player_', which is of non-class type 'int'
  560 |       swing_player_.Free();
      |                     ^~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h: In member function 'virtual void HybridFont::SB_Effect(EffectType, EffectLocation)':
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:570:11: error: 'beeper' was not declared in this scope
  570 |           beeper.Beep(0.05, 2000.0);
      |           ^~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h: In member function 'void HybridFont::SB_BladeDetect(Effect&)':
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:656:5: error: 'beeper' was not declared in this scope
  656 |     beeper.Beep(0.05, 2000.0);
      |     ^~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h: In member function 'void HybridFont::SB_NewFont()':
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:661:7: error: 'beeper' was not declared in this scope
  661 |       beeper.Beep(0.05, 1046.5);
      |       ^~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h: In member function 'virtual void HybridFont::SB_Change(SaberBase::ChangeType)':
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:669:11: error: 'beeper' was not declared in this scope
  669 |           beeper.Beep(0.20, 1000.0);
      |           ^~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:676:11: error: 'beeper' was not declared in this scope
  676 |           beeper.Beep(0.20, 2000.0);
      |           ^~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:683:11: error: 'beeper' was not declared in this scope
  683 |           beeper.Beep(0.05, 2000.0);
      |           ^~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h: In member function 'void HybridFont::SB_BeginLockup()':
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:732:39: error: base operand of '->' is not a pointer
  732 |         if (lock_player_) lock_player_->PlayLoop(loop);
      |                                       ^~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h: In member function 'void HybridFont::SB_EndLockup()':
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:769:19: error: base operand of '->' is not a pointer
  769 |       lock_player_->set_fade_time(0.3);
      |                   ^~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:773:23: error: base operand of '->' is not a pointer
  773 |           lock_player_->set_fade_time(0.003);
      |                       ^~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:777:19: error: base operand of '->' is not a pointer
  777 |       lock_player_->FadeAndStop();
      |                   ^~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:778:20: error: request for member 'Free' in '((HybridFont*)this)->HybridFont::lock_player_', which is of non-class type 'int'
  778 |       lock_player_.Free();
      |                    ^~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h: In member function 'virtual void HybridFont::SetHumVolume(float)':
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:790:23: error: 'GetFreeWavPlayer' was not declared in this scope
  790 |         hum_player_ = GetFreeWavPlayer();
      |                       ^~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:792:22: error: base operand of '->' is not a pointer
  792 |           hum_player_->set_volume_now(0);
      |                      ^~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:793:22: error: base operand of '->' is not a pointer
  793 |           hum_player_->PlayOnce(SFX_humm ? &SFX_humm : &SFX_hum);
      |                      ^~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:794:22: error: base operand of '->' is not a pointer
  794 |           hum_player_->PlayLoop(SFX_humm ? &SFX_humm : &SFX_hum);
      |                      ^~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:829:24: error: base operand of '->' is not a pointer
  829 |             hum_player_->FadeAndStop();
      |                        ^~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:830:25: error: request for member 'Free' in '((HybridFont*)this)->HybridFont::hum_player_', which is of non-class type 'int'
  830 |             hum_player_.Free();
      |                         ^~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:840:16: error: base operand of '->' is not a pointer
  840 |     hum_player_->set_volume(vol);
      |                ^~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h: In member function 'virtual void HybridFont::Loop()':
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:846:12: error: 'GetWavPlayerPlaying' was not declared in this scope
  846 |       if (!GetWavPlayerPlaying(&SFX_preon)) {
      |            ^~~~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/hybrid_font.h:852:12: error: 'GetWavPlayerPlaying' was not declared in this scope
  852 |       if (!GetWavPlayerPlaying(&SFX_in) &&
      |            ^~~~~~~~~~~~~~~~~~~
In file included from /Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/sound_library.h:4,
                 from /Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/ProffieOS.ino:619:
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/sound_queue.h: At global scope:
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/sound_queue.h:13:13: error: 'BufferedWavPlayer' has not been declared
   13 |   bool Play(BufferedWavPlayer* player) {
      |             ^~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/sound_queue.h: In member function 'bool SoundToPlay::Play(int*)':
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/sound_queue.h:15:22: error: request for member 'PlayInCurrentDir' in '* player', which is of non-class type 'int'
   15 |       return player->PlayInCurrentDir(filename_);
      |                      ^~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/sound_queue.h:18:15: error: request for member 'PlayOnce' in '* player', which is of non-class type 'int'
   18 |       player->PlayOnce(file_id_);
      |               ^~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/sound_queue.h:33:20: error: request for member 'PlayInCurrentDir' in '* player', which is of non-class type 'int'
   33 |     return player->PlayInCurrentDir(filename);
      |                    ^~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/sound_queue.h: At global scope:
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/sound_queue.h:55:30: error: 'BufferedWavPlayer' was not declared in this scope
   55 |   void PollSoundQueue(RefPtr<BufferedWavPlayer>& player) {
      |                              ^~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/sound_queue.h:55:47: error: template argument 1 is invalid
   55 |   void PollSoundQueue(RefPtr<BufferedWavPlayer>& player) {
      |                                               ^
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/sound_queue.h: In member function 'void SoundQueue<QueueLength>::PollSoundQueue(int&)':
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/sound_queue.h:56:29: error: base operand of '->' is not a pointer
   56 |     busy_ = player && player->isPlaying();
      |                             ^~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/sound_queue.h:63:15: error: base operand of '->' is not a pointer
   63 |         player->set_fade_time(fadeout_len_);
      |               ^~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/sound_queue.h:64:15: error: base operand of '->' is not a pointer
   64 |         player->FadeAndStop();
      |               ^~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/sound_queue.h:71:20: error: there are no arguments to 'GetFreeWavPlayer' that depend on a template parameter, so a declaration of 'GetFreeWavPlayer' must be available [-fpermissive]
   71 |           player = GetFreeWavPlayer();
      |                    ^~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/sound_queue.h:74:15: error: base operand of '->' is not a pointer
   74 |         player->set_volume_now(1.0f);
      |               ^~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/sound_queue.h:75:31: error: request for member 'get' in 'player', which is of non-class type 'int'
   75 |         queue_[0].Play(player.get());
      |                               ^~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/sound_queue.h:79:28: error: request for member 'Free' in 'player', which is of non-class type 'int'
   79 |         if (player) player.Free();
      |                            ^~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/sound_library.h: At global scope:
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/sound_library.h:84:10: error: 'BufferedWavPlayer' was not declared in this scope
   84 |   RefPtr<BufferedWavPlayer> wav_player_;
      |          ^~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/sound_library.h:84:27: error: template argument 1 is invalid
   84 |   RefPtr<BufferedWavPlayer> wav_player_;
      |                           ^
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/sound_library.h:96:27: error: 'BufferedWavPlayer' was not declared in this scope
   96 |   static void Poll(RefPtr<BufferedWavPlayer>& player) {}
      |                           ^~~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/sound_library.h:96:44: error: template argument 1 is invalid
   96 |   static void Poll(RefPtr<BufferedWavPlayer>& player) {}
      |                                            ^
In file included from /Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/ProffieOS.ino:626:
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/modes/color_menues.h: In member function 'void mode::FileColorMenu<SPEC>::init()':
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/modes/color_menues.h:22:7: error: 'AudioStreamWork' has not been declared
   22 |       AudioStreamWork::scheduleFillBuffer();
      |       ^~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/modes/color_menues.h: In member function 'Color8 mode::FileColorMenu<SPEC>::get()':
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/modes/color_menues.h:42:7: error: 'AudioStreamWork' has not been declared
   42 |       AudioStreamWork::scheduleFillBuffer();
      |       ^~~~~~~~~~~~~~~
In file included from /Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/ProffieOS.ino:627:
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/modes/sorted_list_menues.h: In member function 'void mode::SelectFontMode<SPEC>::say()':
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/modes/sorted_list_menues.h:47:5: error: 'hybrid_font' was not declared in this scope; did you mean 'HybridFont'?
   47 |     hybrid_font.SB_Effect(EFFECT_NEWFONT, 0);
      |     ^~~~~~~~~~~
      |     HybridFont
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/modes/sorted_list_menues.h: In member function 'void mode::SelectTrackMode<SPEC>::fadeout(float)':
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/modes/sorted_list_menues.h:73:9: error: 'track_player_' was not declared in this scope
   73 |     if (track_player_) {
      |         ^~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/modes/sorted_list_menues.h: In member function 'void mode::SelectTrackMode<SPEC>::say()':
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/modes/sorted_list_menues.h:82:10: error: 'track_player_' was not declared in this scope
   82 |     if (!track_player_) track_player_ = GetFreeWavPlayer();
      |          ^~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/modes/sorted_list_menues.h:82:41: error: there are no arguments to 'GetFreeWavPlayer' that depend on a template parameter, so a declaration of 'GetFreeWavPlayer' must be available [-fpermissive]
   82 |     if (!track_player_) track_player_ = GetFreeWavPlayer();
      |                                         ^~~~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/modes/sorted_list_menues.h:83:9: error: 'track_player_' was not declared in this scope
   83 |     if (track_player_) track_player_->Play(this->get(), 20.0);  // start 20s from the beginning
      |         ^~~~~~~~~~~~~
In file included from /Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/ProffieOS.ino:630:
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/modes/settings_menues.h: In member function 'virtual int mode::SmoothVolumeMode<SPEC>::get()':
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/modes/settings_menues.h:28:20: error: 'dynamic_mixer' was not declared in this scope
   28 |     float volume = dynamic_mixer.get_volume();
      |                    ^~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/modes/settings_menues.h: In member function 'virtual void mode::SmoothVolumeMode<SPEC>::set(int)':
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/modes/settings_menues.h:52:5: error: 'dynamic_mixer' was not declared in this scope
   52 |     dynamic_mixer.set_volume(VOLUME * ret);
      |     ^~~~~~~~~~~~~
In file included from /Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/props/saber.h:30,
                 from /Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/ProffieOS.ino:681:
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/props/prop_base.h: In member function 'virtual void PropBase::SpeakBladeID(float)':
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/props/prop_base.h:535:5: error: 'talkie' was not declared in this scope
  535 |     talkie.Say(spI);
      |     ^~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/props/prop_base.h:535:16: error: 'spI' was not declared in this scope
  535 |     talkie.Say(spI);
      |                ^~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/props/prop_base.h:536:16: error: 'spD' was not declared in this scope
  536 |     talkie.Say(spD);
      |                ^~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/sound_queue.h: In instantiation of 'void SoundQueue<QueueLength>::PollSoundQueue(int&) [with int QueueLength = 16]':
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/sound_library.h:58:19:   required from here
   58 |     PollSoundQueue(wav_player_);
      |     ~~~~~~~~~~~~~~^~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/sound/sound_queue.h:71:36: error: 'GetFreeWavPlayer' was not declared in this scope
   71 |           player = GetFreeWavPlayer();
      |                    ~~~~~~~~~~~~~~~~^~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/modes/sorted_list_menues.h: In instantiation of 'void mode::SelectTrackMode<SPEC>::say() [with SPEC = MKSPEC<DefaultMenuSpec>]':
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/modes/sorted_list_menues.h:79:8:   required from here
   79 |   void say() override {
      |        ^~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/modes/sorted_list_menues.h:82:57: error: 'GetFreeWavPlayer' was not declared in this scope
   82 |     if (!track_player_) track_player_ = GetFreeWavPlayer();
      |                                         ~~~~~~~~~~~~~~~~^~
exit status 1

Compilation error: 'AudioStreamWork' has not been declared

#define DISABLE_WS2811 - error on compile:

In file included from /Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/ProffieOS.ino:673:
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/config/LyleOS84BetaEditor.h:135:7: error: 'WS281XBladePtr' was not declared in this scope
  135 |  { 0, WS281XBladePtr<122, bladePin, Color8::GRB, PowerPINS<bladePowerPin2, bladePowerPin3> >(),
      |       ^~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/config/LyleOS84BetaEditor.h:135:92: error: expected primary-expression before '>' token
  135 |  { 0, WS281XBladePtr<122, bladePin, Color8::GRB, PowerPINS<bladePowerPin2, bladePowerPin3> >(),
      |                                                                                            ^
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/config/LyleOS84BetaEditor.h:135:94: error: expected primary-expression before ')' token
  135 |  { 0, WS281XBladePtr<122, bladePin, Color8::GRB, PowerPINS<bladePowerPin2, bladePowerPin3> >(),
      |                                                                                              ^
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/config/LyleOS84BetaEditor.h:136:45: error: 'WS281XBladePtr' was not declared in this scope
  136 |     SubBladeWithList<0,1,4,5,6,10,11,12,13>(WS281XBladePtr<14, blade2Pin, Color8::GRB, PowerPINS<bladePowerPin6> >()),
      |                                             ^~~~~~~~~~~~~~
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/config/LyleOS84BetaEditor.h:136:114: error: expected primary-expression before '>' token
  136 |     SubBladeWithList<0,1,4,5,6,10,11,12,13>(WS281XBladePtr<14, blade2Pin, Color8::GRB, PowerPINS<bladePowerPin6> >()),
      |                                                                                                                  ^
/Users/catherinebogin/Documents/Sabers/ProffieOSCollection/ProffieOS8.4/ProffieOS/config/LyleOS84BetaEditor.h:136:116: error: expected primary-expression before ')' token
  136 |     SubBladeWithList<0,1,4,5,6,10,11,12,13>(WS281XBladePtr<14, blade2Pin, Color8::GRB, PowerPINS<bladePowerPin6> >()),
      |                                                                                                                    ^
exit status 1

Compilation error: 'WS281XBladePtr' was not declared in this scope

Menus:

Menu path: Edit Presets ->Edit Style Settings → Base Color

  • Hue
  • Red/Green/Blue
  • Copy/Paste
  • Reset
  • Save

All working as expected.

Brightness

Seems to increase the white value until the color was completely white, then dims. It Immediately starts to distort from the base color. To me this seems like a different behavior than editing brightness in the past. If thats’s the intent then it’s all good.

Select By Name

I hear the “color list” prompt, then rotating the hilt turns off the blade and no colors are spoken or visible. The blade is black, or off. The “blip” sound between where the colors would go is playing as I rotate.

I tried improving some practices to reduce typos :slight_smile:

Hope some of this is useful.