ProffieOS 8.10 beta (call for testers!)

I have a hilt with a Shtok v4 NPXL connector that I use blade detect.
Is there a way to have a blade config with 3 arrays and set it where two arrays are used for manual blade array switching when a blade isn’t detected and then the third would be used only when a blade is detected by the NPXL connector? I currently can switch between all three arrays but it would be convenient if I could lock one of the arrays off to only when I have a blade inserted.

My prop is capable of doing the opposite, i.e. having a single no_blade array but multiple blade_in arrays, but I don’t think it will do it the way round you want it.

However I believe @NoSloppy’s BC prop file can do it either way, but I’m not sure on the details. Have a look through his notes at the top of the prop file itself.

1 Like

ProffieOS supports the notion that if the id() function (which is responsible for both blade id and blade detect) returns NO_BLADE * 2, that means that it’s more NO_BLADE than NO_BLADE, which is generally taken to mean “no hilt”.

One way to get id() to return NO_BLADE * 2 is to use blade detect to detect the chassis, and then use continuous blade id, in combination with the NO_BLADE_ID_RANGE define. But it can also be done with a little custom code.

1 Like

So I was able to modify fett263 prop and set two blade arrays for when there’s no blade and use the third array for when there is a blade. When I change presets in the first array, the second one doesn’t change along with it even with save preset defined; probably because the first array is treated as the no blade array? I’m not sure how to go about changing this behavior so if anybody wants to try I’d be very grateful.

#ifdef FETT263_MANUAL_BLADE_ARRAY
  void NextBladeArray() {
    if (!use_fake_id_) best_config_before_faking_ = current_config - blades;
    size_t next_array = (current_config - blades + 1) % NELEM(blades) ;
   if ( blade_detected_ = false) next_array=next_array;
    else if (blade_detected_ = true && next_array >1)     next_array = 0;
       fake_id_ = blades[next_array].ohm;
    use_fake_id_ = true;
    FindBladeAgain();
    PlayArraySound();

I think it would be better if you’d start a new tread for this ?
And post your config, or at least your blades arrays section.

I’m working on an AI prompt for blade styles. If you need testers, let me know. The ProffieConfig tool doesn’t appear to use the new function format for saving styles, but the goal is to test the new ProffieOS and create an AI prompt that lets users make their own unique styles without knowing the syntax. So far, it’s generated a few fun styles that are interesting or caused a crash (heh). If I get it to create a bunch of cool styles, I’ll share the prompt.

I pulled some styles from fett263, and while some people may object to AI, it could help users avoid spending hours figuring out Proffie. I made a cat sound font two years ago, and it took all day to get samples, format files, and prepare them. It would be nice to have AI for sound fonts too, but I’m not sure if any AI handles pro sound effects.

Mostly just because I’m lazy* and don’t feel like figuring out a UI for it.

ProffieConfig is capable (and does) parse them from an input config, it just opts to meld them into the preset rather than maintaining them separately.

It’s mainly a visual/formatting tool when working directly with configs. Fwiw it doesn’t save memory or anything like that. It would probably be a minor convenience to have it but there’s no substantial tangible benefit to having it, so I just haven’t.

*In my defense, I’ve spent many hours on it… it’s approaching 2 and a half years old soon, and lots of time in those years has gone towards it. I say lazy in jest more than anything…

EDIT: I assume you’re referring to CONFIG_STYLES and C++ using type aliasing.

P.S. I don’t have much feedback on such a tool beyond doubt. I think you’re fighting a strong uphill battle to get such a thing working even somewhat reliably, but certainly feel free to try.

Besides sheer volume of styles to port, ProffieConfig’s style editor was primarily abandoned just because the style system is very “quirky” (I say that with respect towards Fredrik, but I feel it’s appropriate nonetheless). I think such LLM will have particularly difficult time with it. Perhaps you can prove that wrong.

PPS, I’m realizing, shouldn’t this be a new thread? Depending on how much discussion you want around it, it’s doesn’t seem very v8 related. Perhaps I’m misinterpreting however.

1 Like

I think you can mark these tested by me.

1 Like

I’m seeing what essentially is an over-rotation while using 8.x (not the master) that I’ve never seen in OS 7.x-7.15. It’s while using the volume controls on any of our hilts here and they are rotated (doesn’t seem like it’s too quickly) and you end up with a near-incessant playing of “Minimum Volume” or “Maximum Volume” until the board catches up to the falsely sensed stuff. Can we get the click spacing backed off not quite to the prior OS7.x version but to where this issue stops or can I get a testing option so I can share it in a recorded fashion easily instead of a long report?

@NoSloppy I shared a couple video examples if it helps.

In my prop, I made the maximum and minimum only speak once until the value goes the other way for just that reason. It also “bails” on playing the next sound if not enough time has passed when quickly changing volume or blade length, so that you don’t get a backed-up queue of sounds to play. It’s responsive and good IMO.
Other props would need to possibly ingest some of the code that does that stuff, or we find a better way to universally adjust .
It’s a “utility” feature, so it’s “not that important” as far as priority, but of course if it’s making you crazy, you’re welcome to make some changes if you want to dabble.
Meanwhile, search the crucible and look into #define STEPS_PER_REVOLUTIONto change the number of ticks whilst rotating.

1 Like

Which menu is this? (In what prop, and with what defines?)

@NoSloppy So something like this then?

#define STEPS_PER_REVOLUTION 10

@profezzorn Just Volume Menu and @Fett263’s prop.

#ifdef CONFIG_TOP
#include "proffieboard_v3_config.h" 
#define NUM_BLADES 1
#define NUM_BUTTONS 2
const unsigned int maxLedsPerStrip = 144;
#define EXTRA_COLOR_BUFFER_SPACE 60
#define VOLUME 2300
#define CLASH_THRESHOLD_G 4
#define AUDIO_CLASH_SUPPRESSION_LEVEL 5
//#define ENABLE_AUDIO *Defaulted in OS8
//#define ENABLE_MOTION *Defaulted in OS8
//#define ENABLE_WS2811 *Defaulted in OS8 
//#define ENABLE_SD *Defaulted in OS8
#define ENABLE_SERIAL //For Bluetooth.
//#define KILL_OLD_PLAYERS *Defaulted in OS8
#define MOTION_TIMEOUT 60 * 5 * 1000
#define IDLE_OFF_TIME 60 * 5 * 1000
#define DISABLE_BASIC_PARSER_STYLES
#define DISABLE_DIAGNOSTIC_COMMANDS
#define SHARED_POWER_PINS
#define ENABLE_ALL_EDIT_OPTIONS
#define SAVE_STATE
#define NO_REPEAT_RANDOM
#define COLOR_CHANGE_DIRECT
#define BLADE_DETECT_PIN 6
#define FETT263_EDIT_SETTINGS_MENU
#define FETT263_SPECIAL_ABILITIES
#define FETT263_SAY_BATTERY_PERCENT
#define FETT263_DISABLE_CHANGE_FONT
#define FETT263_DISABLE_COPY_PRESET
#define FETT263_BATTLE_MODE_ALWAYS_ON
#define FETT263_LOCKUP_DELAY 200
#define FETT263_BM_CLASH_DETECT 6
#define FETT263_SWING_ON_SPEED 250
#define FETT263_SWING_ON
#define FETT263_TWIST_OFF
#endif

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

Edit Mode and Edit Settings menues don’t use this. They are unchanged from OS7.

Explains why when I tried just now it wouldn’t change anything.

Is there a way to implement stops for max and min volume so it doesn’t play the audio so repeatedly? (What I read at what NoSloppy did for his?)

*What changed between 7.15 and 8.x? Just the available amount of effective click points?

There are no changes to Edit Mode besides the addition of SD Access menu option.

@Fett263 Thanks for confirming because, yeah it’s trippy since switching between 7.15 and 8.x is the only way to induce the issue. Can you forward those two video clips over to @profezzorn for me?

@profezzorn FWIW other than this bit as far as rotation stops possibly needed I’m not getting any other issues so far in this or the other props. Perhaps the main OS needs to also have the stops/limits @NoSloppy introduces so it’s default for all props?

Actually I take that back, I forgot about these new defines.

#define FETT263_CIRCULAR_VOLUME_MENU

#define FETT263_CIRCULAR_DIM_MENU

They were added forever ago, but they’ll change the menu to circle around.

Ohhh ohhhhh, I’m down to try them.
Are there step options like say I want 10 or 20 for us?
Or I just tag those in and should be good to go?
Let me know so I know what to test with them. :smiley:

Just those defines.

Much appreciated. Those defines definitely prevent the issue but obviously puts the user into a rollover issue since it goes past min to max or max to min.

@profezzorn It would be nice if the main OS gave stops on the volume control.