ProffieOS v6.x ALPHA testing

I had a weird thing that is random and I can’t force it to reoccur.
The audio seemed to stop, buffer up a bunch, and then played many event SFX at the same time.
This was during testing, and yes, I was turning it on and off a LOT.
But it was during ignition… I thought I activated muted by accident, but then preon, out hum and in all played at once.
It happened maybe 3 times total if I recall.

I like to hold the microphone cord like this, I pinch it together, 
then I let it go, then you hear a whole bunch of jokes at once.
- Mitch Hedberg
1 Like

I suppose this could happen if ProffieOS queues up the sound for playing, but it can’t start right away for some reason. I’ll have to read the code to see if that could really make everything play at once though. The SD card would be slow to mount, or possible slow to read to cause this to happen though.

1 Like

Ok I’ve been testing for a couple weeks now and I’m absolutely loving it but have noticed a few things, I read through and didn’t notice any of these mentioned. I loaded up the most recent one last night:

  • I know the dial probably still needs fine tuned but on Pach Store hilts in particular it’s VERY glitchy, most likely due to the board being at an angle (I’m running #define ORIENTATION_ROTATION 0,10,0). I can try to hold it perfectly parallel to the floor and rotate to the right, but it constantly gets confused about whether it’s supposed to go forward or backward. It’s very difficult to navigate more than a few fonts at a time so I end up just using the buttons on that hilt, and my volume is pretty much stuck.
    On my other hilts (where the board is parallel with the hilt) it seems better, but still glitchy. It still sometimes gets confused about whether I’m turning left or right, though not as much, and once it starts going a direction it seems to be stuck going that way until I stop twisting entirely. Sometimes I stop twisting and it just continues through the fonts as if I was twisting.

  • Personally as far as the volume goes I’d like to see the old controls in addition to the twist dial, or maybe have it be separate as a define. Like you can twist to increase/decrease, or power=up, aux=down and hold to confirm. Or just have the dial turned off by a define, I just don’t like the volume relying entirely on the dial, especially in the case of pach store hearts lol.
    If the issues get ironed out for the dial with fonts, I’d also just like to be able to go through them MUCH faster. Right now I can barely scroll through 1 font a second, whereas just spamming the aux button gets me through WAY faster. I know it’s a first world problem lol but I like running over 50 fonts using the presets file, and even with clicking aux taking me back to the first font the dial is just too slow for my taste. Not sure if the dial speed is also something that could be controlled by a define? This is all just my personal opinion though obviously

  • The voice files for the first female voice without the accent have quite a few things out of order (so far I’ve found battlevl, bmbegin, bmend, mbatt, and mdefault are mixed up, and in mnum she goes 5, 9, 8, 7, 6, 10, and then 14, 16, 15, 17 for example). The male voice from the demo videos seems to be fine but those are the only 2 I tried.

  • On the newest build the “say_battery” define is still listed in the prop separately from volts and percent, it’s a bit confusing as say_battery isn’t used anymore, or got turned into say_battery_volts. There is also no “percent” voice after the percent is given like there is in the video (“battery level 99” is what I get for example), I downloaded the newest voice files for “common” but couldn’t find anything.

  • I’m also just curious if slashes are still usable? I know they’re “obsolete” but until I get all my fonts’ swings and clashes renamed do they still work? I see there’s a define to enable the CLASH_STRENGTH_SOUND but I couldn’t find one for the swings so I’m guessing those are on by default?

As always thanks for everything, OS6 is already a blast!

1 Like

I don’t think profezzorn has had a chance to update to the latest updates/fixes for the voicepacks yet.

  • mixed up nums and prompts fixed
  • bmbegin and bmend are removed as they are really meant to be in-use SFX that are typically a sound, not a spoken voice in the middle of swinging around. Those were really more for testing purposes and after some confusion, have been removed from the voicepacks.
    I still have them if you want the spoken promtps for yourself.
  • New female voices added as
    ProffieOS_Voicepack_English_C and
    ProffieOS_Voicepack_English_F.
    So now 3 male 3 female voices to choose from in English.
    Until the website with the audition feature gets updated, here’s the direct link.
    Dropbox - ProffieOS6_EditMode_Prompts_Zips - Simplify your life
1 Like

The dial is a “stepped” rotation, the only times I’ve seen someone have trouble is they are continuously turning. If you rotate like the hours of a clock and stop at each hour it should prevent the trouble you’re having. It will play the prompt and then let you turn to the next option. The menu is meant to prevent skipping by only registering a turn after the current prompt finishes playing so you can hear each option.

There’s no easy way to add old volume controls back they would interfere with the menu and I have no desire to rebuild.

I’ll get the SAY_BATTERY define updated, if you’re not getting “percent” you’re missing “mpercent.wav” from your common folder it is a new addition

Slashes remain unless you add the new values to your font’s config.ini

#Minimum acceleration for Accent Swing file Selection

#recommended value is 20.0 ~ 30.0

ProffieOSMinSwingAcceleration=20.0

#Maximum acceleration for Accent Swing file Selection

#must be higher than Min value to enable selection

#recommended value is 100.0 ~ 150.0

ProffieOSMaxSwingAcceleration=100.0

Information here: ProffieOS6 Acceleration Based Accent Swings · profezzorn/ProffieOS Wiki · GitHub

2 Likes

Are you sure you have the right angle though?
(It could make it worse if you have it the wrong way for instance.)

1 Like

Awesome thanks, I’ll give that a try!

Sweet thanks for the info, I’ll try to fine tune how I’m turning it then I guess, I tried a bunch of different ways but what worked best was doing what it looked like you were doing in the video, small rotations then stopping like a clock like you said, but I still ran into those issues. If it stays like this I’ll probably just stick with the buttons and set the volume via my config. Unless maybe for the fonts at least there could be a define for the dial to skip 5/10/15 etc. at a time instead of just one, and then the button is to go one at a time? I wouldn’t be able to use it on my pach store hilts but it might make it more appealing to use on my others. And that’s awesome about the slash stuff, I hadn’t seen the new config yet so I’ll go mess with it :slight_smile:

I’m pretty sure, granted it’s been a while since I set it up but I messed with a bunch of different values to get it perfect so I think it’s the right way. With the micro usb port up facing the pommel, that side is slightly higher up than the other side facing the blade, which is set deeper into the core/heart and slightly lower than the usb/sd. During color change red is the blade pointing straight up, which is what my normal blade does. I can try it without it or I can try messing with the orientation if I got it backwards

I think that’s negative Y, so you’d want 0,-10,0 maybe?
I think you could plug in USB, type “monitor clash” in serial monitor, point the saber straight up, and you should print out approximately 1,0,0 if your ORIENTATION_ROTATION is right.
You might need developer commands enabled, I don’t remember.

1 Like

Looks like I was close, it wasn’t negative but I tried between 10 and 15 and it looks like 0,12,0 is the sweet spot lol so I’ll mess with it and see if the dial is any better now, thanks for the tip!

Ok, this happened again, but unfortunately on a saber where I didn’t have the diagnostic commands enabled so I can’t show the i2c output. Here’s what happened to trigger the problem:

I was on the surging pulse blade preset and tried to use color change (not via edit mode, the old fashioned way). The dial didn’t work, the blade stayed the same colour but when I exited from the color change mode, the blade went out entirely. When I turned the saber off, the hum was still playing. I then changed to the next preset and ignited the blade. No hum, no motion and no errors in the console.

I’m going to refresh with diagnostics enabled and see if the same combination of events triggers the problem again.

Ok, it popped up again post-flash, again after using the edit menu and switching presets afterwards. Here is the output in the console, including a top command and multiple i2cstate’s

Playing traya/hum/hum01.wav
channels: 1 rate: 44100 bits: 16
EVENT: Power-Pressed#1 ON millis=8238412
EVENT: Power-Pressed ON millis=8238412
EVENT: Power-Held#1 ON millis=8238724
EVENT: Power-Held ON millis=8238724
EVENT: Power-HeldMedium#1 ON millis=8239418
EVENT: Power-HeldMedium ON millis=8239418
Playing traya/swingl/swingl03.wav
channels: 1 rate: 44100 bits: 16
EVENT: Power-HeldLong#1 ON millis=8240418
Playing mexit.wav, channels: 1 rate: 44100 bits: 16
Audio underflows: 23
Battery voltage: 3.20
EVENT: Power-Released#1 ON millis=8240939
EVENT: Power-Released ON millis=8240940
Playing traya/swingh/swingh03.wav
channels: 1 rate: 44100 bits: 16
EVENT: Power-Pressed#1 ON millis=8244338
EVENT: Power-Pressed ON millis=8244338
EVENT: Power-Held#1 ON millis=8244644
EVENT: Power-Held ON millis=8244644
EVENT: Power-HeldMedium#1 ON millis=8245339
EVENT: Power-HeldMedium ON millis=8245339
EVENT: Power-HeldLong#1 ON millis=8246339
unit = 1 vol = 0.50, Playing traya/in/in02.wav
channels: 1 rate: 44100 bits: 16
EVENT: Power-Released#1 millis=8246744
EVENT: Power-Released millis=8246744
No sounds found: pstoff
EVENT: Power-Pressed#1 millis=8247428
EVENT: Power-Pressed millis=8247428
EVENT: Power-Released#1 millis=8247603
EVENT: Power-Released millis=8247603
EVENT: Power-Shortclick#1 millis=8247603
EVENT: Power-Shortclick millis=8247603
EVENT: Power-SavedShortclick#1 millis=8247729
Ignition.
unit = 1 vol = 0.50, Playing traya/preon/preon1.wav
channels: 1 rate: 44100 bits: 16
Playing traya/out/out02.wav
channels: 1 rate: 44100 bits: 16
humstart: 1800
unit = 2 vol = 0.00, Playing traya/swingl/swingl03.wav
channels: 1 rate: 44100 bits: 16
unit = 3 vol = 0.00, Playing traya/swingh/swingh03.wav
Playing traya/swingl/swingl03.wav
channels: 1 rate: 44100 bits: 16
channels: 1 rate: 44100 bits: 16
Playing traya/swingh/swingh03.wav
channels: 1 rate: 44100 bits: 16
current: 536879528 id= 106 next= 0
last: 536879528 id= 106 next= 0
Playing traya/hum/hum01.wav
channels: 1 rate: 44100 bits: 16
Playing traya/swingl/swingl03.wav
channels: 1 rate: 44100 bits: 16
Playing traya/swingh/swingh03.wav
channels: 1 rate: 44100 bits: 16
Cycle counting enabled, top will work next time.
Battery voltage: 3.20
Audio DMA: 0.83%
Wav reading: 2.55%
Pixel DMA: 0.17%
LOOP: 0.10%
Motion: 0.00%
Global loops / second: 1508.37
High frequency loops / second: 2047.35
blade fps: 71.42
Acceleration measurements per second: 1651.79
Hybrid Font loop: 0.01%
WS2811_Blade loop: 4.31%
ClockControl loop: 0.05%
Booster loop: 0.04%
SDCard loop: 0.03%
Amplifier loop: 0.03%
LSM6DS3H loop: 0.03%
I2CBus loop: 0.02%
Parser loop: 91.33%
pow loop: 0.04%
SaberFett263Buttons loop: 0.32%
BatteryMonitor loop: 0.09%
Fusor loop: 0.03%
DAC loop: 0.01%
AudioDynamicMixer loop: 0.02%
MonitorHelper loop: 0.01%
Playing traya/swingl/swingl03.wav
channels: 1 rate: 44100 bits: 16
Playing traya/swingh/swingh03.wav
channels: 1 rate: 44100 bits: 16
Playing traya/swingl/swingl03.wav
channels: 1 rate: 44100 bits: 16
Playing traya/swingh/swingh03.wav
channels: 1 rate: 44100 bits: 16
Playing traya/hum/hum01.wav
channels: 1 rate: 44100 bits: 16
Playing traya/swingl/swingl03.wav
channels: 1 rate: 44100 bits: 16
Battery voltage: 3.18
Playing traya/swingh/swingh03.wav
channels: 1 rate: 44100 bits: 16
current: 536879528 id= 106 next= 0
last: 536879528 id= 106 next= 0
Playing traya/swingl/swingl03.wav
channels: 1 rate: 44100 bits: 16
Playing traya/swingh/swingh03.wav
channels: 1 rate: 44100 bits: 16
Playing traya/hum/hum01.wav
channels: 1 rate: 44100 bits: 16
current: 536879528 id= 106 next= 0
last: 536879528 id= 106 next= 0
Playing traya/swingl/swingl03.wav
channels: 1 rate: 44100 bits: 16
Playing traya/swingh/swingh03.wav
channels: 1 rate: 44100 bits: 16
Battery voltage: 3.16
Playing traya/swingl/swingl03.wav
channels: 1 rate: 44100 bits: 16
Playing traya/swingh/swingh03.wav
channels: 1 rate: 44100 bits: 16
Playing traya/swingl/swingl03.wav
channels: 1 rate: 44100 bits: 16
Playing traya/hum/hum01.wav
channels: 1 rate: 44100 bits: 16
Playing traya/swingh/swingh03.wav
channels: 1 rate: 44100 bits: 16
Playing traya/swingl/swingl03.wav
channels: 1 rate: 44100 bits: 16
Battery voltage: 3.16

All the i2cstate commands show the same value, which I assume means that it’s no longer active, and the top command shows that motion is not consuming any CPU.

Very interesting. This doesn’t look at all like what I thought it would look like.
In fact, it looks like the code that reads the motion data from the chip is working just fine.
That leaves a couple of possibilities…

One is that we’re getting some floating-point errors in the fusor code. I think we would be able to detect that by using the “dumpfusor” command.

Another possibility is some error in the gesture-detecting code. If that’s the case, this problem could start happening 35.5 or 71 minutes after boot.

Ok, issue occurred again, this time after the saber was just left sitting on my desk. This saber doesn’t have a kill key or switch, so it’s been powered but idle for 7+ hours.

Here’s the output including the fusordump command.

Playing pain/swingh/swingh02.wav
channels: 1 rate: 44100 bits: 16
current: 536879528 id= 106 next= 0
last: 536879528 id= 106 next= 0
Playing pain/hum/hum01.wav
channels: 1 rate: 44100 bits: 16
Playing pain/swingl/swingl02.wav
channels: 1 rate: 44100 bits: 16
Cycle counting enabled, top will work next time.
Battery voltage: 3.80
Audio DMA: 0.39%
Wav reading: 1.19%
Pixel DMA: 0.09%
LOOP: 0.05%
Motion: 0.00%
Global loops / second: 1690.57
High frequency loops / second: 2317.02
blade fps: 83.71
Acceleration measurements per second: 1648.65
Hybrid Font loop: 0.01%
WS2811_Blade loop: 1.98%
ClockControl loop: 0.03%
Booster loop: 0.03%
SDCard loop: 0.02%
Amplifier loop: 0.02%
LSM6DS3H loop: 0.01%
I2CBus loop: 0.01%
Parser loop: 95.95%
pow loop: 0.02%
SaberFett263Buttons loop: 0.11%
BatteryMonitor loop: 0.05%
Fusor loop: 0.02%
DAC loop: 0.00%
AudioDynamicMixer loop: 0.01%
MonitorHelper loop: 0.01%
Playing pain/swingh/swingh02.wav
channels: 1 rate: 44100 bits: 16
Playing pain/hum/hum01.wav
channels: 1 rate: 44100 bits: 16
Battery voltage: 3.79
Playing pain/swingl/swingl02.wav
channels: 1 rate: 44100 bits: 16
Accel={-0.47, -0.21, 0.83} (0.98) Gyro={-8.26, 2.27, -4.64} (9.74) down={-0.17, -0.40, 0.83} (0.94) mss={-2.99, 1.83, -0.03} (3.50) swing speed=5.16 gyro slope=10.28 now = 944328305
acceleration extrapolator data:
4263099315 {0.09, -0.49, 0.88}
4263099922 {0.08, -0.50, 0.88}
4263100529 {0.09, -0.49, 0.88}
4263101136 {0.09, -0.48, 0.88}
4263101742 {0.09, -0.48, 0.89}
4263102349 {0.08, -0.48, 0.89}
4263102956 {0.08, -0.48, 0.88}
4263103562 {0.09, -0.49, 0.87}
4263092035 {0.09, -0.49, 0.89}
4263092642 {0.09, -0.48, 0.88}
4263093248 {0.09, -0.49, 0.88}
4263093855 {0.09, -0.48, 0.88}
4263094462 {0.09, -0.48, 0.88}
4263095069 {0.08, -0.49, 0.87}
4263095675 {0.10, -0.48, 0.88}
4263096282 {0.08, -0.49, 0.88}
4263096889 {0.08, -0.49, 0.88}
4263097495 {0.08, -0.49, 0.88}
4263098105 {0.08, -0.49, 0.88}
4263098709 {0.09, -0.49, 0.88}
gyro extrapolator data:
4263099328 {-0.49, -3.72, -1.16}
4263099935 {-0.73, -4.21, -1.40}
4263100541 {-0.55, -3.60, -1.40}
4263101148 {-0.92, -4.09, -1.59}
4263101755 {-0.31, -3.85, -1.16}
4263102361 {-0.67, -3.60, -1.16}
4263102968 {-0.55, -3.66, -1.22}
4263103575 {-0.73, -3.60, -1.53}
4263092047 {-0.85, -3.72, -1.53}
4263092654 {-0.55, -3.91, -1.04}
4263093261 {-0.37, -3.78, -1.53}
4263093867 {-0.55, -3.91, -1.04}
4263094474 {-0.43, -3.60, -1.77}
4263095081 {-0.61, -4.09, -0.49}
4263095688 {-0.55, -3.54, -1.65}
4263096294 {-0.49, -4.03, -1.22}
4263096901 {-0.43, -3.60, -1.46}
4263097508 {-0.55, -3.78, -1.10}
4263098117 {-0.43, -3.66, -1.10}
4263098721 {-0.79, -3.97, -1.22}

There are no NaN in the fusor dump, which is a good thing.
However, the extrapolator entries and “now” are very far about. (about 15 minutes or so) which is NOT good. The extrapolator numbers are also suspiciously close to 1<<32, which may be related to the 71-minute limit I was mentioning before.

This should narrow things down significantly, so maybe I will be able to figure out what is going on now. In the meantime, do the same thing if it happens again, as it has been very helpful so far, and I want to see if the extrapolator numbers are always near 1<<32 when this happens.

I’m also going to add some more debug printouts when I have the time.

What’s the significance of the 71 minute limit?

That’s when micros() start over from zero.

Although I must admit I’m a bit confused by this.
This line:

Means that acceleration measurements are happening.
The code that counts these measurements is on the line right after the call to the fusor.
So how come the fusor doesn’t seem to be getting the data?

1 Like

If it helps, I think once the saber gets into this state that the IDLE_OFF_TIME stops being recognized. The thing chewed up my battery sitting idle on my desk.