fiduciary

Author Topic: TeensySaber Software Discussion  (Read 67078 times)

0 Members and 2 Guests are viewing this topic.

Offline profezzorn

  • Mining Colony Members
  • Master Force User
  • *
  • Posts: 901
  • May the source be with you.
    • Hubbe's Corner
Re: Error notifications
« Reply #330 on: February 15, 2018, 03:17:45 PM »
profezzorn, I've been thinking and playing around a bit with error notifications.

Currently there are 3-4 errors that have talkie voice notifications. While it's cool to have voice messages with a pretty low memory footprint, they don't sound very good (and are often hard to make out) and the message itself is not exactly what the error is (ie Bank Open means a file was not found).

I wondered about putting recorded audio messages in program memory.  Paul Stoffgren (Mr. Teensy) has done some work on this. Paul estimated that you could put 20 seconds of audio in program memory of a Teensy 3.2. I made 4 error messages using a test-to-speech website and came up with 4 seconds of total audio, so that would take 1/5 of program memory. Is this a direction you think is worth pursuing? The plus side is the audio error messages would sound better and be exactly what you want, but is it worth 1/5 of the program space? Let me know what you think.

Another option would be to put error audio files on the SD card. Of course this doesn't work for SD card or file errors. Perhaps beeps could be used if the SD card can't be read (ie 1 beep means low battery, 2 beeps means no SD card, 3 beeps means file not found, 4 beeps means bad blade). Or maybe just use beeps and no voice messages. Again, your thoughts?

Almost forgot to reply to this...
Let le's do some Math (tm).

We have 256kB of ROM. For error messages, phone quality would be sufficient, which is 8-bit 8kHz audio, or 8 kb / s,  256 / 8 = 32 seconds of audio.
I'd feel silly if I didn't apply some sort of compression to that though. A simple linear-predictive-encoding can double the amount of audio with relatively little loss in quality, which means 64 seconds of audio, or 4kb / s.
We probably only need 10 seconds of audio though, which would take up ~40kb.  40kb is not that much, but I can pretty much guarantee that it'll be the first thing to go if we start running low on space.

Another alternative would be to simply generate new error messages using the current speech synthesizer. The original talkie script comes with a matlab script that is supposed to be able to generate talkie data. Maybe it's possible to tweak that a little to make it generate higher quality. (Like, maybe by upping the sampling rate to 11kHz)

I found a program that can make LPC codes from WAV files, so I think I'm just going to record my own error messages, as the current voice data makes it hard to do good error messages. (I started out trying to make an error message for "font directory name too long", but it's pretty much impossible to express that with the words available.)

I don't suppose someone has talk-like-darth-vader filter or something that I could use? :)

Offline KanyonKris

  • Padawan Learner
  • **
  • Posts: 72
  • Um...Hello?
Re: Error notifications
« Reply #331 on: February 15, 2018, 04:14:20 PM »
profezzorn, I've been thinking and playing around a bit with error notifications.

Currently there are 3-4 errors that have talkie voice notifications. While it's cool to have voice messages with a pretty low memory footprint, they don't sound very good (and are often hard to make out) and the message itself is not exactly what the error is (ie Bank Open means a file was not found).

I wondered about putting recorded audio messages in program memory.  Paul Stoffgren (Mr. Teensy) has done some work on this. Paul estimated that you could put 20 seconds of audio in program memory of a Teensy 3.2. I made 4 error messages using a test-to-speech website and came up with 4 seconds of total audio, so that would take 1/5 of program memory. Is this a direction you think is worth pursuing? The plus side is the audio error messages would sound better and be exactly what you want, but is it worth 1/5 of the program space? Let me know what you think.

Another option would be to put error audio files on the SD card. Of course this doesn't work for SD card or file errors. Perhaps beeps could be used if the SD card can't be read (ie 1 beep means low battery, 2 beeps means no SD card, 3 beeps means file not found, 4 beeps means bad blade). Or maybe just use beeps and no voice messages. Again, your thoughts?

Almost forgot to reply to this...
Let le's do some Math (tm).

We have 256kB of ROM. For error messages, phone quality would be sufficient, which is 8-bit 8kHz audio, or 8 kb / s,  256 / 8 = 32 seconds of audio.
I'd feel silly if I didn't apply some sort of compression to that though. A simple linear-predictive-encoding can double the amount of audio with relatively little loss in quality, which means 64 seconds of audio, or 4kb / s.
We probably only need 10 seconds of audio though, which would take up ~40kb.  40kb is not that much, but I can pretty much guarantee that it'll be the first thing to go if we start running low on space.

Another alternative would be to simply generate new error messages using the current speech synthesizer. The original talkie script comes with a matlab script that is supposed to be able to generate talkie data. Maybe it's possible to tweak that a little to make it generate higher quality. (Like, maybe by upping the sampling rate to 11kHz)

I found a program that can make LPC codes from WAV files, so I think I'm just going to record my own error messages, as the current voice data makes it hard to do good error messages. (I started out trying to make an error message for "font directory name too long", but it's pretty much impossible to express that with the words available.)

I don't suppose someone has talk-like-darth-vader filter or something that I could use? :)
I've been working on this too. I used some text-to-speech websites to generate the voice messages. Male voices seemed to work best. Then I tried some matlab (or freemat or Octave) scripts, but none of them produced very good talkie voice quality. From forum posts, most agreed Blue Wizard produced the best voice quality (and allows tweaking of frames), but it's for MacOS only (Objective C). ptwz made a python script from the Blue Wizard source, and it works pretty well, but I still get a fair amount of squealing and scratchiness in the talkie output. I spent some trying to make a serial command that would allow me to paste talkie byte code into Serial Monitor and have the saber play it (so I don't have to keep compiling and uploading new firmware for each test), but I couldn't figure it out and gave up. I'm going to play with it a bit more, but I'm running out of ideas and hitting up against the wall of my limited coding skills. I can send you the WAV files I have if that would be helpful, but that's not the hard part. Let me know if I can help in some way.

Offline profezzorn

  • Mining Colony Members
  • Master Force User
  • *
  • Posts: 901
  • May the source be with you.
    • Hubbe's Corner
Re: Error notifications
« Reply #332 on: February 15, 2018, 04:22:41 PM »
profezzorn, I've been thinking and playing around a bit with error notifications.

Currently there are 3-4 errors that have talkie voice notifications. While it's cool to have voice messages with a pretty low memory footprint, they don't sound very good (and are often hard to make out) and the message itself is not exactly what the error is (ie Bank Open means a file was not found).

I wondered about putting recorded audio messages in program memory.  Paul Stoffgren (Mr. Teensy) has done some work on this. Paul estimated that you could put 20 seconds of audio in program memory of a Teensy 3.2. I made 4 error messages using a test-to-speech website and came up with 4 seconds of total audio, so that would take 1/5 of program memory. Is this a direction you think is worth pursuing? The plus side is the audio error messages would sound better and be exactly what you want, but is it worth 1/5 of the program space? Let me know what you think.

Another option would be to put error audio files on the SD card. Of course this doesn't work for SD card or file errors. Perhaps beeps could be used if the SD card can't be read (ie 1 beep means low battery, 2 beeps means no SD card, 3 beeps means file not found, 4 beeps means bad blade). Or maybe just use beeps and no voice messages. Again, your thoughts?

Almost forgot to reply to this...
Let le's do some Math (tm).

We have 256kB of ROM. For error messages, phone quality would be sufficient, which is 8-bit 8kHz audio, or 8 kb / s,  256 / 8 = 32 seconds of audio.
I'd feel silly if I didn't apply some sort of compression to that though. A simple linear-predictive-encoding can double the amount of audio with relatively little loss in quality, which means 64 seconds of audio, or 4kb / s.
We probably only need 10 seconds of audio though, which would take up ~40kb.  40kb is not that much, but I can pretty much guarantee that it'll be the first thing to go if we start running low on space.

Another alternative would be to simply generate new error messages using the current speech synthesizer. The original talkie script comes with a matlab script that is supposed to be able to generate talkie data. Maybe it's possible to tweak that a little to make it generate higher quality. (Like, maybe by upping the sampling rate to 11kHz)

I found a program that can make LPC codes from WAV files, so I think I'm just going to record my own error messages, as the current voice data makes it hard to do good error messages. (I started out trying to make an error message for "font directory name too long", but it's pretty much impossible to express that with the words available.)

I don't suppose someone has talk-like-darth-vader filter or something that I could use? :)
I've been working on this too. I used some text-to-speech websites to generate the voice messages. Male voices seemed to work best. Then I tried some matlab (or freemat or Octave) scripts, but none of them produced very good talkie voice quality. From forum posts, most agreed Blue Wizard produced the best voice quality (and allows tweaking of frames), but it's for MacOS only (Objective C). ptwz made a python script from the Blue Wizard source, and it works pretty well, but I still get a fair amount of squealing and scratchiness in the talkie output. I spent some trying to make a serial command that would allow me to paste talkie byte code into Serial Monitor and have the saber play it (so I don't have to keep compiling and uploading new firmware for each test), but I couldn't figure it out and gave up. I'm going to play with it a bit more, but I'm running out of ideas and hitting up against the wall of my limited coding skills. I can send you the WAV files I have if that would be helpful, but that's not the hard part. Let me know if I can help in some way.

Nice! I had not seen the python script before.
I have a mac, so i can test if BlueWWizard works better than the python script or not.
It's possible that the scratchiness comes from my talkie implementation, as there seems to be a lot of disagreement on what some of the coefficents should be.
My implementation uses some that I found on a forum somewhere, but I don't know if they are actually accurate, or what the python script expects.

Offline KanyonKris

  • Padawan Learner
  • **
  • Posts: 72
  • Um...Hello?
Re: Error notifications
« Reply #333 on: February 15, 2018, 05:04:50 PM »
Nice! I had not seen the python script before.
I have a mac, so i can test if BlueWWizard works better than the python script or not.
It's possible that the scratchiness comes from my talkie implementation, as there seems to be a lot of disagreement on what some of the coefficents should be.
My implementation uses some that I found on a forum somewhere, but I don't know if they are actually accurate, or what the python script expects.
Did you start with the Talkie code adapted to the Teensy? I'm guessing so because there are a lot of similarities. If not you might want to look over the Teensy code. It was discussed here - Talkie speech library

Offline profezzorn

  • Mining Colony Members
  • Master Force User
  • *
  • Posts: 901
  • May the source be with you.
    • Hubbe's Corner
Re: Error notifications
« Reply #334 on: February 15, 2018, 05:15:54 PM »
Nice! I had not seen the python script before.
I have a mac, so i can test if BlueWWizard works better than the python script or not.
It's possible that the scratchiness comes from my talkie implementation, as there seems to be a lot of disagreement on what some of the coefficents should be.
My implementation uses some that I found on a forum somewhere, but I don't know if they are actually accurate, or what the python script expects.
Did you start with the Talkie code adapted to the Teensy? I'm guessing so because there are a lot of similarities. If not you might want to look over the Teensy code. It was discussed here - Talkie speech library

No I worked from the regular talkie library.
Btw, I think I figured out how to sound like vader, but I don't know if the effect will survive LPC coding. :)


Offline KanyonKris

  • Padawan Learner
  • **
  • Posts: 72
  • Um...Hello?
Re: Error notifications
« Reply #335 on: February 15, 2018, 06:05:30 PM »
No I worked from the regular talkie library.
Btw, I think I figured out how to sound like vader, but I don't know if the effect will survive LPC coding. :)
Hehe, Vader voice would be cool.

In case it's useful, here are some talkie phrases I made using the python script:

Code: [Select]
const uint8_t spBADBLADETOM[] PROGMEM = {0x00,0x00,0x00,0x20,0xEA,0xEE,0xD5,0xDD,0xA3,0x4E,0xC9,0x8B,0xD1,0xA8,0xE8,0xD2,0x23,0x2F,0x4E,0xB3,0x72,0x42,0x8F,0xAC,0x78,0xAB,0xCA,0xB1,0xBC,0xD2,0xE2,0xAC,0xB2,0x3A,0xCA,0x48,0xB2,0xF3,0xCA,0x6A,0x2B,0x23,0x4E,0x3E,0x2A,0x6B,0xAC,0x8C,0x24,0x6B,0xCF,0xCA,0x31,0x13,0x92,0xA2,0x34,0x32,0x2A,0x32,0xC9,0xAD,0x8A,0x48,0x0B,0x61,0x28,0x27,0x21,0x33,0xD4,0xA8,0xA1,0x02,0xD9,0xC9,0x30,0x13,0x0D,0x20,0xF2,0x4E,0x2D,0x43,0x35,0x91,0x29,0x0B,0xAA,0x0D,0xE4,0x4D,0xAE,0xCC,0xB8,0x27,0x48,0x5E,0xA5,0xB2,0x92,0x69,0x15,0x7F,0xD8,0xCA,0x46,0x32,0x53,0x63,0x56,0x2B,0x3B,0x73,0xCF,0xC8,0x59,0xAD,0x1A,0x5C,0x2D,0x2B,0x2B,0x95,0x66,0x4A,0x95,0xE8,0x2A,0x95,0xBA,0x29,0x55,0x62,0xAA,0x74,0xE0,0x87,0x14,0xAE,0xAD,0xD2,0x6E,0x1B,0x42,0xB8,0x2E,0x43,0x9B,0xA3,0x4B,0xA6,0xBE,0x0C,0xAD,0xAE,0xAE,0x51,0x66,0xD3,0x88,0x50,0xAA,0x20,0xDB,0x4B,0xC3,0xAC,0xA8,0x82,0x72,0xBB,0xC4,0x22,0xAE,0x52,0xB5,0x4A,0x93,0x23,0x80,0xC5,0xCD,0x11,0xDB,0xB8,0x78,0x46,0x18,0x01,0x00,0x00,0x00,0x00,0x00,0x80,0x07};
const uint8_t spBADBLADEJAMES[] PROGMEM = {0x00,0x00,0x00,0x68,0x04,0xB9,0x3C,0x2B,0x63,0xA0,0x09,0xB4,0xF2,0xCC,0x88,0xA0,0xE8,0xA8,0x5C,0xC3,0x33,0xD2,0xA8,0x8B,0x75,0x4B,0xAB,0xC9,0xA3,0xAE,0x41,0xDD,0x62,0xAA,0x8C,0xA2,0x5A,0xF3,0xCC,0x2E,0xBD,0xF2,0xA6,0xC2,0xB2,0x72,0xF4,0xCA,0x9A,0x0E,0xCB,0xCC,0xC9,0x2B,0x6B,0xC6,0x3C,0x23,0x27,0xAF,0xAC,0x19,0x8B,0xF4,0x9C,0x3C,0xF2,0xAA,0xDC,0xC2,0x6B,0x74,0xCA,0x8B,0x36,0x75,0xEF,0xD1,0x0C,0x63,0xBA,0xB2,0xC3,0x23,0xA3,0x0E,0xEC,0xF4,0xF0,0x90,0x82,0x06,0x90,0xA6,0x5C,0x23,0x91,0x69,0x83,0xA8,0x56,0xD6,0xD6,0xAE,0x4B,0x38,0x37,0x58,0x16,0xBB,0xCE,0xF3,0x1D,0xE1,0xB8,0x5D,0xBA,0x42,0xBB,0x8D,0xFC,0x61,0x1B,0x0A,0xAF,0x4A,0x8D,0x59,0x6D,0x2A,0xC6,0xC3,0x6C,0x26,0x96,0xA5,0x78,0xD5,0xA8,0xAE,0x55,0xB6,0x1A,0x45,0x2C,0x73,0x56,0xE2,0x9A,0x67,0x89,0xAA,0xD9,0x81,0x6F,0x91,0x34,0x3B,0x67,0xBB,0xA7,0x5A,0xD2,0x9A,0x9C,0x24,0xBE,0xEA,0xD0,0xA6,0xBA,0x34,0xFB,0xAB,0x26,0x9E,0x8E,0x42,0xE8,0x8F,0x34,0xAC,0x57,0x0B,0x81,0x02,0xA6,0x4C,0x11,0x42,0x33,0x2A,0x11,0x59,0x85,0x3D,0x3D,0xB8,0xB8,0x67,0x19,0xC4,0xF7,0xD8,0x22,0xE6,0x53,0x00,0x00,0x00,0x00,0xE0,0x01};
const uint8_t spLOWBATTERYTOM[] PROGMEM = {0x00,0x00,0x00,0x00,0x40,0xEA,0x0C,0xFC,0x88,0x23,0xB1,0x68,0x32,0xF0,0x33,0xF2,0xC6,0xAE,0xAE,0xC0,0x26,0x59,0x1B,0xB7,0xB2,0x91,0x98,0x24,0xFD,0xD8,0x8A,0x4E,0x63,0x82,0xE5,0x57,0xCB,0x0A,0xAF,0x31,0xF6,0x8F,0x85,0x4E,0xA2,0x47,0xD9,0x5F,0x86,0x22,0xB8,0x69,0xB4,0xBA,0xE4,0x4A,0x6F,0x7A,0x85,0xFD,0xB6,0xA8,0x9C,0xE9,0x15,0xB2,0x59,0xA8,0xE6,0xA6,0x2B,0x54,0x9C,0xA4,0xA6,0x49,0xB3,0x28,0x9F,0xD5,0x9A,0x26,0xDD,0x2B,0xBD,0xD2,0x68,0x9A,0xF2,0xE8,0xCC,0xCA,0xAD,0x6E,0xC6,0xB2,0x3C,0x23,0xB7,0x32,0xBB,0xA8,0xF0,0xAA,0x9C,0xCA,0x6C,0x7D,0x42,0xCB,0xB6,0x2B,0x52,0x91,0xF0,0x72,0x57,0xE1,0x89,0x99,0x3D,0x56,0x5A,0x05,0x2E,0x64,0xB1,0x7C,0xCB,0xE4,0xF8,0x10,0xC5,0xF3,0x2C,0x93,0x5B,0x93,0x13,0x8F,0xB3,0x56,0x6E,0x2F,0x86,0xCD,0x2E,0x1A,0xBA,0xA3,0x2B,0x56,0xDF,0xAA,0x69,0xEE,0x21,0x59,0xE3,0xAA,0xA2,0x82,0x86,0x61,0xB6,0xAB,0xC2,0xE2,0xED,0x9C,0xAC,0x3E,0x4D,0x0B,0x68,0x58,0x94,0xD8,0x2A,0xC5,0xFE,0x69,0x88,0xF3,0x2A,0x34,0x02,0xA6,0x21,0x02,0x00,0x00,0x00,0x80,0x07};
const uint8_t spLOWBATTERYJAMES[] PROGMEM = {0x00,0x00,0x00,0x28,0xCE,0xC8,0x2B,0x44,0x1D,0xAB,0x35,0xD0,0x1E,0x96,0x5C,0x65,0x46,0x23,0xA6,0x95,0x72,0x81,0x1B,0x3D,0xED,0x76,0x8C,0x45,0x65,0x48,0xA2,0xDA,0x29,0x56,0xB5,0x21,0x4B,0x9F,0x24,0xEF,0xDC,0xFA,0x2C,0x6D,0x55,0xBC,0x57,0xEB,0x92,0xB4,0x35,0xB1,0xDE,0xA5,0x8D,0x32,0xC6,0xC9,0xFA,0x96,0xD6,0xAB,0xEE,0x20,0xED,0x1A,0x5A,0x6D,0x2F,0x8D,0x6D,0x35,0x1B,0xA0,0xBB,0x50,0xF5,0x3A,0x64,0x00,0x39,0xBC,0xCC,0x1A,0x87,0x2C,0xE9,0xF4,0x50,0x9F,0xBC,0xEA,0xA2,0x23,0xC2,0x72,0xF2,0x6A,0xAB,0xCA,0x88,0xC8,0xC9,0xAB,0x2B,0x3A,0x23,0x22,0x47,0xAF,0xBE,0x9A,0x88,0xF0,0x1C,0x3D,0x86,0x6C,0x33,0x22,0x6B,0x4C,0xA1,0xB3,0x89,0x0C,0xCF,0xC9,0x69,0xAE,0x5E,0x42,0xC2,0x93,0x04,0x3E,0x36,0xCA,0x2C,0x4B,0x62,0xB6,0x30,0xA1,0x26,0x78,0xA5,0x38,0xFC,0xC4,0x1C,0x93,0xD6,0xE2,0xB2,0x83,0x6C,0x43,0x56,0x39,0x29,0x7A,0xA3,0x2E,0xD9,0xE8,0xFE,0xEA,0x14,0xAB,0x7D,0x95,0x81,0x7A,0x64,0xA8,0xCE,0x85,0x0A,0x6A,0x0E,0xB9,0xA7,0x2B,0x0A,0xA8,0x4A,0xB2,0x9D,0xB4,0x44,0xA0,0x6E,0x51,0x7A,0x3A,0x12,0x31,0x7A,0x40,0xCD,0x76,0x33,0xC8,0xE9,0x09,0x25,0x2B,0xC4,0x00,0x00,0x00,0x00,0x3C};
const uint8_t spSDCARDERRORTOM[] PROGMEM = {0x00,0xAE,0x29,0x46,0x63,0x2A,0x83,0x94,0x22,0x1B,0xAB,0xAE,0x32,0xD2,0xB2,0xE8,0xBD,0xAB,0x43,0x4A,0x4B,0x93,0xF5,0x8E,0x4E,0x31,0x29,0x2D,0xCA,0x3C,0xB2,0x44,0x3B,0xE0,0x6A,0x55,0x07,0xBC,0x58,0xEE,0x80,0x5F,0x3B,0x0C,0xF0,0x5B,0x07,0x01,0x7E,0xEB,0x60,0xC0,0x32,0x19,0x01,0x98,0x5A,0xA5,0x00,0xD3,0x30,0x35,0x60,0x05,0xA6,0x04,0xCC,0x48,0x68,0xDA,0x59,0x10,0x7D,0x66,0x10,0x9A,0xBA,0x44,0x8A,0xCD,0x2A,0x4A,0x69,0xB1,0x8B,0xDD,0xEA,0x04,0xBA,0xEA,0x0A,0x9C,0x98,0xEB,0x82,0x62,0x2B,0x25,0x35,0x4E,0x8B,0x63,0xCE,0xD2,0xD2,0xCC,0x23,0x89,0x29,0xD3,0xD3,0xB2,0x8E,0x2C,0xC5,0x72,0x0F,0x4F,0x5B,0xF2,0xD4,0x24,0x7C,0x25,0x73,0x2A,0x52,0xE2,0xF0,0xD5,0xCC,0xA6,0xCC,0x56,0x55,0x33,0xE2,0xB4,0x62,0x38,0x51,0x8D,0x5A,0x34,0x8A,0x61,0x55,0xB5,0x6A,0xD5,0x28,0x8A,0x36,0x8B,0xAE,0xD6,0xAD,0xC8,0x41,0xCD,0x36,0x3D,0xA5,0x2A,0x55,0x89,0x18,0x69,0xE9,0x9A,0x38,0xD8,0xA3,0xB8,0x95,0x6B,0xE3,0x62,0xCF,0xE6,0x4E,0x86,0x09,0x93,0x32,0x5B,0x3A,0x19,0x3A,0x4C,0xCA,0x6C,0xE9,0x64,0x8E,0x38,0x29,0xAB,0xB4,0x93,0x3A,0xE3,0xC4,0xEE,0xB4,0x96,0xE2,0x0E,0x83,0xA6,0xDD,0x5B,0x89,0x27,0x0C,0x9A,0xB1,0xA8,0xC5,0xDE,0xD0,0x39,0xBB,0xD5,0x15,0xF9,0x42,0x95,0xEC,0x12,0x57,0xC4,0xCE,0x45,0xBC,0xD2,0x6C,0x21,0xA7,0x84,0xD0,0x4A,0x93,0x04,0x00,0x00,0x00,0xF0};
const uint8_t spSDCARDERRORJAMES[] PROGMEM = {0x00,0x50,0xBA,0xEA,0xC5,0x23,0xA6,0xCC,0xCA,0x9A,0x37,0x0B,0xEF,0x29,0x2B,0x69,0xCE,0x35,0xAC,0x26,0x9F,0xA0,0xD9,0xD0,0xF0,0x9A,0xBD,0x82,0x66,0x52,0xDC,0x6A,0x72,0x0A,0x0A,0x4B,0xC9,0xC8,0x52,0x09,0x78,0x36,0x22,0x01,0x3F,0x56,0x26,0xE0,0xA6,0x76,0x07,0xBC,0x50,0x8E,0x80,0x17,0x23,0x05,0xB0,0x74,0x45,0x02,0x96,0x72,0x69,0xC0,0xD4,0x46,0x0D,0x58,0xD6,0xB1,0x94,0xC3,0x30,0xEA,0xE6,0xE4,0x52,0x76,0xC5,0xE8,0x57,0x93,0x42,0xD5,0x2D,0x83,0x5D,0x4E,0x24,0x5D,0x61,0xCC,0x75,0x1E,0x49,0x40,0x3D,0xAC,0x89,0x98,0xE3,0x22,0xB6,0x34,0x6A,0x1E,0x91,0x9D,0xD0,0x62,0xAB,0x99,0x27,0x31,0x5C,0x33,0xA3,0xE6,0x11,0x39,0x14,0x31,0xB4,0xA8,0x5B,0xAD,0x56,0xA4,0xB8,0xA6,0x25,0x0B,0x4B,0x19,0xEB,0xA8,0x97,0x2C,0x2A,0x75,0x6A,0x2D,0x51,0xB4,0xAA,0xB4,0xA9,0x3B,0x77,0x51,0xA7,0xD4,0xE5,0xCA,0x3C,0x2D,0x9D,0x5C,0x9F,0x3C,0xD3,0xA6,0xD7,0x75,0x5C,0xB5,0xAC,0x19,0x53,0xCB,0xF0,0xD5,0x8B,0x64,0xF6,0xA2,0x32,0x34,0xAF,0x94,0x95,0xB3,0x5A,0xDB,0xBC,0x48,0x74,0xD4,0x6C,0x6D,0x4D,0xC6,0x3A,0xB6,0xAA,0xF5,0x25,0x19,0xDB,0x68,0xEB,0x34,0xE4,0xA2,0x9C,0xC3,0x9D,0xDC,0x14,0x9B,0x70,0x0D,0x77,0x52,0x73,0x98,0xE8,0x9B,0xD4,0x51,0xAD,0x71,0xA0,0xEE,0x50,0x67,0xB3,0xC5,0x46,0xB2,0x4B,0xB9,0x0C,0x17,0x9B,0x70,0x2F,0xE7,0x32,0x77,0xEC,0xCC,0xB3,0xDC,0xC9,0x7C,0x69,0x13,0xCF,0x70,0x67,0x21,0xE4,0x0B,0x3E,0xC1,0xAB,0xC9,0x9A,0x37,0x53,0x74,0x24,0x03,0x00,0x00,0x78};
const uint8_t spFILENOTFOUNDTOM[] PROGMEM = {0x00,0x40,0x80,0x99,0x3B,0x85,0x35,0xFA,0x76,0xB8,0xA7,0x16,0xC0,0x0A,0xAE,0x0A,0x58,0xC1,0xDC,0x00,0x3B,0x67,0xB8,0x24,0xBA,0x69,0x13,0xAD,0xDD,0xD2,0x98,0xB6,0x54,0x7D,0xF6,0x48,0x93,0xDB,0x76,0xF5,0xC5,0x2B,0x29,0xAE,0x2B,0x34,0x16,0xAF,0xA4,0x5A,0xB3,0xCA,0xA8,0x3A,0xE2,0xE6,0x54,0xB2,0x73,0x52,0x8B,0xAB,0x53,0xAD,0xA8,0x5A,0x2D,0x2E,0x22,0x2B,0x24,0x6A,0xA7,0x24,0xF3,0x1A,0xC3,0x58,0x1C,0x92,0x4C,0x7A,0x0C,0xF5,0x55,0x4A,0x3B,0x8A,0x75,0x90,0x55,0x26,0x6B,0xC0,0x26,0x99,0xDB,0xA8,0x3C,0x11,0xCB,0x52,0x8F,0x9B,0xCA,0x2A,0x35,0xC5,0xAA,0x56,0x29,0x9B,0x8C,0x12,0xCD,0xD9,0xA5,0xAA,0x3A,0x5B,0x39,0x66,0x97,0xB2,0xEA,0x6C,0x65,0xAB,0xD2,0xCA,0xA6,0xAD,0x55,0xBD,0x4A,0x28,0x9B,0xD6,0x56,0xB7,0x32,0xC4,0xA9,0x5A,0x8B,0x2D,0x63,0x29,0x60,0x05,0x37,0x07,0xAC,0x34,0x65,0x80,0x55,0xBA,0x14,0x30,0x83,0xBB,0x89,0x93,0xEE,0x56,0xD3,0xB8,0xA5,0xC8,0x66,0x9B,0xCD,0x67,0xB5,0x32,0xDB,0x6B,0xB6,0x98,0x5D,0xCA,0xEC,0x2E,0xC9,0xB3,0x76,0xA9,0x8A,0xE9,0x10,0xCB,0x28,0x89,0x29,0xA6,0x82,0x22,0xA2,0x84,0x39,0xBB,0x49,0x0C,0xAB,0x63,0xB6,0x98,0x3A,0x28,0xBC,0xB1,0x3A,0x43,0xAE,0x20,0xCF,0xC4,0xEA,0x0A,0x29,0x9C,0xD3,0x63,0xB3,0xC7,0xA9,0x28,0x49,0x4F,0x88,0x5E,0xAD,0x62,0x2C,0x5C,0x16,0xF9,0x22,0xE3,0xCC,0x4A,0xDB,0x06,0x98,0xCE,0x5C,0xBC,0xC3,0xA9,0xB1,0xC5,0x44,0xF4,0x76,0xE3,0x46,0xE6,0x15,0x01,0x00,0x00,0x00,0x00,0x00,0xE0,0x01};


Offline canteen234

  • No Force
  • *
  • Posts: 10
  • Um...Hello?
Dual LED Neopixel color not changing
« Reply #336 on: February 23, 2018, 11:56:34 PM »
Hello. I built a TeensySaber 3.0 and the hardware seems to work, but I can't get my dual LEDs to change colors. They are always of a white color and I tried to change it through a file called "my_config." The code is the same as the code from the configurator. I tried deleting all except for 1 of the presets.


#ifdef CONFIG_TOP
#include "v3_config.h"
#define NUM_BLADES 2
#define NUM_BUTTONS 1
#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[] = {
   
   { "fontdir", "track.wav",
    StylePtr<InOutSparkTip<EASYBLADE(MAGENTA, WHITE), 300, 800> >(),
    StylePtr<InOutSparkTip<EASYBLADE(MAGENTA, WHITE), 300, 800> >(), "magenta"},
   
};
BladeConfig blades[] = {
 { 0, WS2811BladePtr<144, WS2811_ACTUALLY_800kHz | WS2811_GRB>(),
    WS2811BladePtr<144, WS2811_ACTUALLY_800kHz | WS2811_GRB, 7, PowerPINS<bladePowerPin4, bladePowerPin5, bladePowerPin6> >(), CONFIGARRAY(presets) },
};
#endif

#ifdef CONFIG_BUTTONS
Button PowerButton(BUTTON_POWER, powerButtonPin, "pow");
#endif


In the console, I get

Sdcard found..
ID: 1023 volts 3.30 resistance= 33758500.00
blade= 0
WS2811 Blade with 144 leds
WS2811 Blade with 144 leds
Scanning sound font: font1 done
Activating monophonic font.
unit = 0 vol = 0.50, Playing font1/boot.wav
channels: 1 rate: 22050 bits: 16
Motion setup ... done.
Amplifier off.
Welcome to TeensySaber, type 'help' for more info.

The resistance value seems quite strange.
I connected the LED strips according to the configuration on the website for 2 Neopixels and 1 momentary button.
Can someone please help? I haven't been able to find the solution.

Offline profezzorn

  • Mining Colony Members
  • Master Force User
  • *
  • Posts: 901
  • May the source be with you.
    • Hubbe's Corner
Re: Dual LED Neopixel color not changing
« Reply #337 on: February 24, 2018, 10:17:43 AM »
Hello. I built a TeensySaber 3.0 and the hardware seems to work, but I can't get my dual LEDs to change colors. They are always of a white color and I tried to change it through a file called "my_config." The code is the same as the code from the configurator. I tried deleting all except for 1 of the presets.


#ifdef CONFIG_TOP
#include "v3_config.h"
#define NUM_BLADES 2
#define NUM_BUTTONS 1
#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[] = {
   
   { "fontdir", "track.wav",
    StylePtr<InOutSparkTip<EASYBLADE(MAGENTA, WHITE), 300, 800> >(),
    StylePtr<InOutSparkTip<EASYBLADE(MAGENTA, WHITE), 300, 800> >(), "magenta"},
   
};
BladeConfig blades[] = {
 { 0, WS2811BladePtr<144, WS2811_ACTUALLY_800kHz | WS2811_GRB>(),
    WS2811BladePtr<144, WS2811_ACTUALLY_800kHz | WS2811_GRB, 7, PowerPINS<bladePowerPin4, bladePowerPin5, bladePowerPin6> >(), CONFIGARRAY(presets) },
};
#endif

#ifdef CONFIG_BUTTONS
Button PowerButton(BUTTON_POWER, powerButtonPin, "pow");
#endif


In the console, I get

Sdcard found..
ID: 1023 volts 3.30 resistance= 33758500.00
blade= 0
WS2811 Blade with 144 leds
WS2811 Blade with 144 leds
Scanning sound font: font1 done
Activating monophonic font.
unit = 0 vol = 0.50, Playing font1/boot.wav
channels: 1 rate: 22050 bits: 16
Motion setup ... done.
Amplifier off.
Welcome to TeensySaber, type 'help' for more info.

The resistance value seems quite strange.
I connected the LED strips according to the configuration on the website for 2 Neopixels and 1 momentary button.
Can someone please help? I haven't been able to find the solution.

What kind of neopixel strips do you have? Where did you get them?
Do they turn on/off and extend properly?  Is it only one that doesn't work, or is it both of them?

Offline canteen234

  • No Force
  • *
  • Posts: 10
  • Um...Hello?
Re: Dual LED Neopixel color not changing
« Reply #338 on: February 24, 2018, 12:02:07 PM »
Hello. I built a TeensySaber 3.0 and the hardware seems to work, but I can't get my dual LEDs to change colors. They are always of a white color and I tried to change it through a file called "my_config." The code is the same as the code from the configurator. I tried deleting all except for 1 of the presets.


#ifdef CONFIG_TOP
#include "v3_config.h"
#define NUM_BLADES 2
#define NUM_BUTTONS 1
#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[] = {
   
   { "fontdir", "track.wav",
    StylePtr<InOutSparkTip<EASYBLADE(MAGENTA, WHITE), 300, 800> >(),
    StylePtr<InOutSparkTip<EASYBLADE(MAGENTA, WHITE), 300, 800> >(), "magenta"},
   
};
BladeConfig blades[] = {
 { 0, WS2811BladePtr<144, WS2811_ACTUALLY_800kHz | WS2811_GRB>(),
    WS2811BladePtr<144, WS2811_ACTUALLY_800kHz | WS2811_GRB, 7, PowerPINS<bladePowerPin4, bladePowerPin5, bladePowerPin6> >(), CONFIGARRAY(presets) },
};
#endif

#ifdef CONFIG_BUTTONS
Button PowerButton(BUTTON_POWER, powerButtonPin, "pow");
#endif


In the console, I get

Sdcard found..
ID: 1023 volts 3.30 resistance= 33758500.00
blade= 0
WS2811 Blade with 144 leds
WS2811 Blade with 144 leds
Scanning sound font: font1 done
Activating monophonic font.
unit = 0 vol = 0.50, Playing font1/boot.wav
channels: 1 rate: 22050 bits: 16
Motion setup ... done.
Amplifier off.
Welcome to TeensySaber, type 'help' for more info.

The resistance value seems quite strange.
I connected the LED strips according to the configuration on the website for 2 Neopixels and 1 momentary button.
Can someone please help? I haven't been able to find the solution.

What kind of neopixel strips do you have? Where did you get them?
Do they turn on/off and extend properly?  Is it only one that doesn't work, or is it both of them?

I got them off Banggood
WS2812B 5050 RGB LED Changeable Strip 1M 144 Leds Non-waterproof Individual
They turn on and off, but I am unable to get them to extend and it is for the both of them.

Offline profezzorn

  • Mining Colony Members
  • Master Force User
  • *
  • Posts: 901
  • May the source be with you.
    • Hubbe's Corner
Re: Dual LED Neopixel color not changing
« Reply #339 on: February 24, 2018, 02:00:11 PM »
Hello. I built a TeensySaber 3.0 and the hardware seems to work, but I can't get my dual LEDs to change colors. They are always of a white color and I tried to change it through a file called "my_config." The code is the same as the code from the configurator. I tried deleting all except for 1 of the presets.


#ifdef CONFIG_TOP
#include "v3_config.h"
#define NUM_BLADES 2
#define NUM_BUTTONS 1
#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[] = {
   
   { "fontdir", "track.wav",
    StylePtr<InOutSparkTip<EASYBLADE(MAGENTA, WHITE), 300, 800> >(),
    StylePtr<InOutSparkTip<EASYBLADE(MAGENTA, WHITE), 300, 800> >(), "magenta"},
   
};
BladeConfig blades[] = {
 { 0, WS2811BladePtr<144, WS2811_ACTUALLY_800kHz | WS2811_GRB>(),
    WS2811BladePtr<144, WS2811_ACTUALLY_800kHz | WS2811_GRB, 7, PowerPINS<bladePowerPin4, bladePowerPin5, bladePowerPin6> >(), CONFIGARRAY(presets) },
};
#endif

#ifdef CONFIG_BUTTONS
Button PowerButton(BUTTON_POWER, powerButtonPin, "pow");
#endif


In the console, I get

Sdcard found..
ID: 1023 volts 3.30 resistance= 33758500.00
blade= 0
WS2811 Blade with 144 leds
WS2811 Blade with 144 leds
Scanning sound font: font1 done
Activating monophonic font.
unit = 0 vol = 0.50, Playing font1/boot.wav
channels: 1 rate: 22050 bits: 16
Motion setup ... done.
Amplifier off.
Welcome to TeensySaber, type 'help' for more info.

The resistance value seems quite strange.
I connected the LED strips according to the configuration on the website for 2 Neopixels and 1 momentary button.
Can someone please help? I haven't been able to find the solution.

What kind of neopixel strips do you have? Where did you get them?
Do they turn on/off and extend properly?  Is it only one that doesn't work, or is it both of them?

I got them off Banggood
WS2812B 5050 RGB LED Changeable Strip 1M 144 Leds Non-waterproof Individual
They turn on and off, but I am unable to get them to extend and it is for the both of them.

Weird, it sounds like they default to white when powered, which is unusual.
The page says it's WS2812 chips, but the pictures seems to match SK6821s better.
Anyway, it kind of sound like you have a problem with the data line. Either the resistors are too big, or the chips don't like the signal generated by the teensy.
Before you try anything else, try chaning the WS2811_ACTUALLYY_800kHz to one of:

   WS2811_800kHz
   WS2811_400kHz
   WS2811_540kHz
   WS2813_800kHz

and see if any of those work better.

What size resistor do you have on the data line?

Offline profezzorn

  • Mining Colony Members
  • Master Force User
  • *
  • Posts: 901
  • May the source be with you.
    • Hubbe's Corner
Re: Error notifications
« Reply #340 on: February 24, 2018, 04:35:40 PM »
No I worked from the regular talkie library.
Btw, I think I figured out how to sound like vader, but I don't know if the effect will survive LPC coding. :)
Hehe, Vader voice would be cool.

In case it's useful, here are some talkie phrases I made using the python script:

Code: [Select]
const uint8_t spBADBLADETOM[] PROGMEM = {0x00,0x00,0x00,0x20,0xEA,0xEE,0xD5,0xDD,0xA3,0x4E,0xC9,0x8B,0xD1,0xA8,0xE8,0xD2,0x23,0x2F,0x4E,0xB3,0x72,0x42,0x8F,0xAC,0x78,0xAB,0xCA,0xB1,0xBC,0xD2,0xE2,0xAC,0xB2,0x3A,0xCA,0x48,0xB2,0xF3,0xCA,0x6A,0x2B,0x23,0x4E,0x3E,0x2A,0x6B,0xAC,0x8C,0x24,0x6B,0xCF,0xCA,0x31,0x13,0x92,0xA2,0x34,0x32,0x2A,0x32,0xC9,0xAD,0x8A,0x48,0x0B,0x61,0x28,0x27,0x21,0x33,0xD4,0xA8,0xA1,0x02,0xD9,0xC9,0x30,0x13,0x0D,0x20,0xF2,0x4E,0x2D,0x43,0x35,0x91,0x29,0x0B,0xAA,0x0D,0xE4,0x4D,0xAE,0xCC,0xB8,0x27,0x48,0x5E,0xA5,0xB2,0x92,0x69,0x15,0x7F,0xD8,0xCA,0x46,0x32,0x53,0x63,0x56,0x2B,0x3B,0x73,0xCF,0xC8,0x59,0xAD,0x1A,0x5C,0x2D,0x2B,0x2B,0x95,0x66,0x4A,0x95,0xE8,0x2A,0x95,0xBA,0x29,0x55,0x62,0xAA,0x74,0xE0,0x87,0x14,0xAE,0xAD,0xD2,0x6E,0x1B,0x42,0xB8,0x2E,0x43,0x9B,0xA3,0x4B,0xA6,0xBE,0x0C,0xAD,0xAE,0xAE,0x51,0x66,0xD3,0x88,0x50,0xAA,0x20,0xDB,0x4B,0xC3,0xAC,0xA8,0x82,0x72,0xBB,0xC4,0x22,0xAE,0x52,0xB5,0x4A,0x93,0x23,0x80,0xC5,0xCD,0x11,0xDB,0xB8,0x78,0x46,0x18,0x01,0x00,0x00,0x00,0x00,0x00,0x80,0x07};
const uint8_t spBADBLADEJAMES[] PROGMEM = {0x00,0x00,0x00,0x68,0x04,0xB9,0x3C,0x2B,0x63,0xA0,0x09,0xB4,0xF2,0xCC,0x88,0xA0,0xE8,0xA8,0x5C,0xC3,0x33,0xD2,0xA8,0x8B,0x75,0x4B,0xAB,0xC9,0xA3,0xAE,0x41,0xDD,0x62,0xAA,0x8C,0xA2,0x5A,0xF3,0xCC,0x2E,0xBD,0xF2,0xA6,0xC2,0xB2,0x72,0xF4,0xCA,0x9A,0x0E,0xCB,0xCC,0xC9,0x2B,0x6B,0xC6,0x3C,0x23,0x27,0xAF,0xAC,0x19,0x8B,0xF4,0x9C,0x3C,0xF2,0xAA,0xDC,0xC2,0x6B,0x74,0xCA,0x8B,0x36,0x75,0xEF,0xD1,0x0C,0x63,0xBA,0xB2,0xC3,0x23,0xA3,0x0E,0xEC,0xF4,0xF0,0x90,0x82,0x06,0x90,0xA6,0x5C,0x23,0x91,0x69,0x83,0xA8,0x56,0xD6,0xD6,0xAE,0x4B,0x38,0x37,0x58,0x16,0xBB,0xCE,0xF3,0x1D,0xE1,0xB8,0x5D,0xBA,0x42,0xBB,0x8D,0xFC,0x61,0x1B,0x0A,0xAF,0x4A,0x8D,0x59,0x6D,0x2A,0xC6,0xC3,0x6C,0x26,0x96,0xA5,0x78,0xD5,0xA8,0xAE,0x55,0xB6,0x1A,0x45,0x2C,0x73,0x56,0xE2,0x9A,0x67,0x89,0xAA,0xD9,0x81,0x6F,0x91,0x34,0x3B,0x67,0xBB,0xA7,0x5A,0xD2,0x9A,0x9C,0x24,0xBE,0xEA,0xD0,0xA6,0xBA,0x34,0xFB,0xAB,0x26,0x9E,0x8E,0x42,0xE8,0x8F,0x34,0xAC,0x57,0x0B,0x81,0x02,0xA6,0x4C,0x11,0x42,0x33,0x2A,0x11,0x59,0x85,0x3D,0x3D,0xB8,0xB8,0x67,0x19,0xC4,0xF7,0xD8,0x22,0xE6,0x53,0x00,0x00,0x00,0x00,0xE0,0x01};
const uint8_t spLOWBATTERYTOM[] PROGMEM = {0x00,0x00,0x00,0x00,0x40,0xEA,0x0C,0xFC,0x88,0x23,0xB1,0x68,0x32,0xF0,0x33,0xF2,0xC6,0xAE,0xAE,0xC0,0x26,0x59,0x1B,0xB7,0xB2,0x91,0x98,0x24,0xFD,0xD8,0x8A,0x4E,0x63,0x82,0xE5,0x57,0xCB,0x0A,0xAF,0x31,0xF6,0x8F,0x85,0x4E,0xA2,0x47,0xD9,0x5F,0x86,0x22,0xB8,0x69,0xB4,0xBA,0xE4,0x4A,0x6F,0x7A,0x85,0xFD,0xB6,0xA8,0x9C,0xE9,0x15,0xB2,0x59,0xA8,0xE6,0xA6,0x2B,0x54,0x9C,0xA4,0xA6,0x49,0xB3,0x28,0x9F,0xD5,0x9A,0x26,0xDD,0x2B,0xBD,0xD2,0x68,0x9A,0xF2,0xE8,0xCC,0xCA,0xAD,0x6E,0xC6,0xB2,0x3C,0x23,0xB7,0x32,0xBB,0xA8,0xF0,0xAA,0x9C,0xCA,0x6C,0x7D,0x42,0xCB,0xB6,0x2B,0x52,0x91,0xF0,0x72,0x57,0xE1,0x89,0x99,0x3D,0x56,0x5A,0x05,0x2E,0x64,0xB1,0x7C,0xCB,0xE4,0xF8,0x10,0xC5,0xF3,0x2C,0x93,0x5B,0x93,0x13,0x8F,0xB3,0x56,0x6E,0x2F,0x86,0xCD,0x2E,0x1A,0xBA,0xA3,0x2B,0x56,0xDF,0xAA,0x69,0xEE,0x21,0x59,0xE3,0xAA,0xA2,0x82,0x86,0x61,0xB6,0xAB,0xC2,0xE2,0xED,0x9C,0xAC,0x3E,0x4D,0x0B,0x68,0x58,0x94,0xD8,0x2A,0xC5,0xFE,0x69,0x88,0xF3,0x2A,0x34,0x02,0xA6,0x21,0x02,0x00,0x00,0x00,0x80,0x07};
const uint8_t spLOWBATTERYJAMES[] PROGMEM = {0x00,0x00,0x00,0x28,0xCE,0xC8,0x2B,0x44,0x1D,0xAB,0x35,0xD0,0x1E,0x96,0x5C,0x65,0x46,0x23,0xA6,0x95,0x72,0x81,0x1B,0x3D,0xED,0x76,0x8C,0x45,0x65,0x48,0xA2,0xDA,0x29,0x56,0xB5,0x21,0x4B,0x9F,0x24,0xEF,0xDC,0xFA,0x2C,0x6D,0x55,0xBC,0x57,0xEB,0x92,0xB4,0x35,0xB1,0xDE,0xA5,0x8D,0x32,0xC6,0xC9,0xFA,0x96,0xD6,0xAB,0xEE,0x20,0xED,0x1A,0x5A,0x6D,0x2F,0x8D,0x6D,0x35,0x1B,0xA0,0xBB,0x50,0xF5,0x3A,0x64,0x00,0x39,0xBC,0xCC,0x1A,0x87,0x2C,0xE9,0xF4,0x50,0x9F,0xBC,0xEA,0xA2,0x23,0xC2,0x72,0xF2,0x6A,0xAB,0xCA,0x88,0xC8,0xC9,0xAB,0x2B,0x3A,0x23,0x22,0x47,0xAF,0xBE,0x9A,0x88,0xF0,0x1C,0x3D,0x86,0x6C,0x33,0x22,0x6B,0x4C,0xA1,0xB3,0x89,0x0C,0xCF,0xC9,0x69,0xAE,0x5E,0x42,0xC2,0x93,0x04,0x3E,0x36,0xCA,0x2C,0x4B,0x62,0xB6,0x30,0xA1,0x26,0x78,0xA5,0x38,0xFC,0xC4,0x1C,0x93,0xD6,0xE2,0xB2,0x83,0x6C,0x43,0x56,0x39,0x29,0x7A,0xA3,0x2E,0xD9,0xE8,0xFE,0xEA,0x14,0xAB,0x7D,0x95,0x81,0x7A,0x64,0xA8,0xCE,0x85,0x0A,0x6A,0x0E,0xB9,0xA7,0x2B,0x0A,0xA8,0x4A,0xB2,0x9D,0xB4,0x44,0xA0,0x6E,0x51,0x7A,0x3A,0x12,0x31,0x7A,0x40,0xCD,0x76,0x33,0xC8,0xE9,0x09,0x25,0x2B,0xC4,0x00,0x00,0x00,0x00,0x3C};
const uint8_t spSDCARDERRORTOM[] PROGMEM = {0x00,0xAE,0x29,0x46,0x63,0x2A,0x83,0x94,0x22,0x1B,0xAB,0xAE,0x32,0xD2,0xB2,0xE8,0xBD,0xAB,0x43,0x4A,0x4B,0x93,0xF5,0x8E,0x4E,0x31,0x29,0x2D,0xCA,0x3C,0xB2,0x44,0x3B,0xE0,0x6A,0x55,0x07,0xBC,0x58,0xEE,0x80,0x5F,0x3B,0x0C,0xF0,0x5B,0x07,0x01,0x7E,0xEB,0x60,0xC0,0x32,0x19,0x01,0x98,0x5A,0xA5,0x00,0xD3,0x30,0x35,0x60,0x05,0xA6,0x04,0xCC,0x48,0x68,0xDA,0x59,0x10,0x7D,0x66,0x10,0x9A,0xBA,0x44,0x8A,0xCD,0x2A,0x4A,0x69,0xB1,0x8B,0xDD,0xEA,0x04,0xBA,0xEA,0x0A,0x9C,0x98,0xEB,0x82,0x62,0x2B,0x25,0x35,0x4E,0x8B,0x63,0xCE,0xD2,0xD2,0xCC,0x23,0x89,0x29,0xD3,0xD3,0xB2,0x8E,0x2C,0xC5,0x72,0x0F,0x4F,0x5B,0xF2,0xD4,0x24,0x7C,0x25,0x73,0x2A,0x52,0xE2,0xF0,0xD5,0xCC,0xA6,0xCC,0x56,0x55,0x33,0xE2,0xB4,0x62,0x38,0x51,0x8D,0x5A,0x34,0x8A,0x61,0x55,0xB5,0x6A,0xD5,0x28,0x8A,0x36,0x8B,0xAE,0xD6,0xAD,0xC8,0x41,0xCD,0x36,0x3D,0xA5,0x2A,0x55,0x89,0x18,0x69,0xE9,0x9A,0x38,0xD8,0xA3,0xB8,0x95,0x6B,0xE3,0x62,0xCF,0xE6,0x4E,0x86,0x09,0x93,0x32,0x5B,0x3A,0x19,0x3A,0x4C,0xCA,0x6C,0xE9,0x64,0x8E,0x38,0x29,0xAB,0xB4,0x93,0x3A,0xE3,0xC4,0xEE,0xB4,0x96,0xE2,0x0E,0x83,0xA6,0xDD,0x5B,0x89,0x27,0x0C,0x9A,0xB1,0xA8,0xC5,0xDE,0xD0,0x39,0xBB,0xD5,0x15,0xF9,0x42,0x95,0xEC,0x12,0x57,0xC4,0xCE,0x45,0xBC,0xD2,0x6C,0x21,0xA7,0x84,0xD0,0x4A,0x93,0x04,0x00,0x00,0x00,0xF0};
const uint8_t spSDCARDERRORJAMES[] PROGMEM = {0x00,0x50,0xBA,0xEA,0xC5,0x23,0xA6,0xCC,0xCA,0x9A,0x37,0x0B,0xEF,0x29,0x2B,0x69,0xCE,0x35,0xAC,0x26,0x9F,0xA0,0xD9,0xD0,0xF0,0x9A,0xBD,0x82,0x66,0x52,0xDC,0x6A,0x72,0x0A,0x0A,0x4B,0xC9,0xC8,0x52,0x09,0x78,0x36,0x22,0x01,0x3F,0x56,0x26,0xE0,0xA6,0x76,0x07,0xBC,0x50,0x8E,0x80,0x17,0x23,0x05,0xB0,0x74,0x45,0x02,0x96,0x72,0x69,0xC0,0xD4,0x46,0x0D,0x58,0xD6,0xB1,0x94,0xC3,0x30,0xEA,0xE6,0xE4,0x52,0x76,0xC5,0xE8,0x57,0x93,0x42,0xD5,0x2D,0x83,0x5D,0x4E,0x24,0x5D,0x61,0xCC,0x75,0x1E,0x49,0x40,0x3D,0xAC,0x89,0x98,0xE3,0x22,0xB6,0x34,0x6A,0x1E,0x91,0x9D,0xD0,0x62,0xAB,0x99,0x27,0x31,0x5C,0x33,0xA3,0xE6,0x11,0x39,0x14,0x31,0xB4,0xA8,0x5B,0xAD,0x56,0xA4,0xB8,0xA6,0x25,0x0B,0x4B,0x19,0xEB,0xA8,0x97,0x2C,0x2A,0x75,0x6A,0x2D,0x51,0xB4,0xAA,0xB4,0xA9,0x3B,0x77,0x51,0xA7,0xD4,0xE5,0xCA,0x3C,0x2D,0x9D,0x5C,0x9F,0x3C,0xD3,0xA6,0xD7,0x75,0x5C,0xB5,0xAC,0x19,0x53,0xCB,0xF0,0xD5,0x8B,0x64,0xF6,0xA2,0x32,0x34,0xAF,0x94,0x95,0xB3,0x5A,0xDB,0xBC,0x48,0x74,0xD4,0x6C,0x6D,0x4D,0xC6,0x3A,0xB6,0xAA,0xF5,0x25,0x19,0xDB,0x68,0xEB,0x34,0xE4,0xA2,0x9C,0xC3,0x9D,0xDC,0x14,0x9B,0x70,0x0D,0x77,0x52,0x73,0x98,0xE8,0x9B,0xD4,0x51,0xAD,0x71,0xA0,0xEE,0x50,0x67,0xB3,0xC5,0x46,0xB2,0x4B,0xB9,0x0C,0x17,0x9B,0x70,0x2F,0xE7,0x32,0x77,0xEC,0xCC,0xB3,0xDC,0xC9,0x7C,0x69,0x13,0xCF,0x70,0x67,0x21,0xE4,0x0B,0x3E,0xC1,0xAB,0xC9,0x9A,0x37,0x53,0x74,0x24,0x03,0x00,0x00,0x78};
const uint8_t spFILENOTFOUNDTOM[] PROGMEM = {0x00,0x40,0x80,0x99,0x3B,0x85,0x35,0xFA,0x76,0xB8,0xA7,0x16,0xC0,0x0A,0xAE,0x0A,0x58,0xC1,0xDC,0x00,0x3B,0x67,0xB8,0x24,0xBA,0x69,0x13,0xAD,0xDD,0xD2,0x98,0xB6,0x54,0x7D,0xF6,0x48,0x93,0xDB,0x76,0xF5,0xC5,0x2B,0x29,0xAE,0x2B,0x34,0x16,0xAF,0xA4,0x5A,0xB3,0xCA,0xA8,0x3A,0xE2,0xE6,0x54,0xB2,0x73,0x52,0x8B,0xAB,0x53,0xAD,0xA8,0x5A,0x2D,0x2E,0x22,0x2B,0x24,0x6A,0xA7,0x24,0xF3,0x1A,0xC3,0x58,0x1C,0x92,0x4C,0x7A,0x0C,0xF5,0x55,0x4A,0x3B,0x8A,0x75,0x90,0x55,0x26,0x6B,0xC0,0x26,0x99,0xDB,0xA8,0x3C,0x11,0xCB,0x52,0x8F,0x9B,0xCA,0x2A,0x35,0xC5,0xAA,0x56,0x29,0x9B,0x8C,0x12,0xCD,0xD9,0xA5,0xAA,0x3A,0x5B,0x39,0x66,0x97,0xB2,0xEA,0x6C,0x65,0xAB,0xD2,0xCA,0xA6,0xAD,0x55,0xBD,0x4A,0x28,0x9B,0xD6,0x56,0xB7,0x32,0xC4,0xA9,0x5A,0x8B,0x2D,0x63,0x29,0x60,0x05,0x37,0x07,0xAC,0x34,0x65,0x80,0x55,0xBA,0x14,0x30,0x83,0xBB,0x89,0x93,0xEE,0x56,0xD3,0xB8,0xA5,0xC8,0x66,0x9B,0xCD,0x67,0xB5,0x32,0xDB,0x6B,0xB6,0x98,0x5D,0xCA,0xEC,0x2E,0xC9,0xB3,0x76,0xA9,0x8A,0xE9,0x10,0xCB,0x28,0x89,0x29,0xA6,0x82,0x22,0xA2,0x84,0x39,0xBB,0x49,0x0C,0xAB,0x63,0xB6,0x98,0x3A,0x28,0xBC,0xB1,0x3A,0x43,0xAE,0x20,0xCF,0xC4,0xEA,0x0A,0x29,0x9C,0xD3,0x63,0xB3,0xC7,0xA9,0x28,0x49,0x4F,0x88,0x5E,0xAD,0x62,0x2C,0x5C,0x16,0xF9,0x22,0xE3,0xCC,0x4A,0xDB,0x06,0x98,0xCE,0x5C,0xBC,0xC3,0xA9,0xB1,0xC5,0x44,0xF4,0x76,0xE3,0x46,0xE6,0x15,0x01,0x00,0x00,0x00,0x00,0x00,0xE0,0x01};

These actually sound pretty good.
Are they generated with explicit stop code?


Offline canteen234

  • No Force
  • *
  • Posts: 10
  • Um...Hello?
Re: Dual LED Neopixel color not changing
« Reply #341 on: February 24, 2018, 11:41:18 PM »
Hello. I built a TeensySaber 3.0 and the hardware seems to work, but I can't get my dual LEDs to change colors. They are always of a white color and I tried to change it through a file called "my_config." The code is the same as the code from the configurator. I tried deleting all except for 1 of the presets.


#ifdef CONFIG_TOP
#include "v3_config.h"
#define NUM_BLADES 2
#define NUM_BUTTONS 1
#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[] = {
   
   { "fontdir", "track.wav",
    StylePtr<InOutSparkTip<EASYBLADE(MAGENTA, WHITE), 300, 800> >(),
    StylePtr<InOutSparkTip<EASYBLADE(MAGENTA, WHITE), 300, 800> >(), "magenta"},
   
};
BladeConfig blades[] = {
 { 0, WS2811BladePtr<144, WS2811_ACTUALLY_800kHz | WS2811_GRB>(),
    WS2811BladePtr<144, WS2811_ACTUALLY_800kHz | WS2811_GRB, 7, PowerPINS<bladePowerPin4, bladePowerPin5, bladePowerPin6> >(), CONFIGARRAY(presets) },
};
#endif

#ifdef CONFIG_BUTTONS
Button PowerButton(BUTTON_POWER, powerButtonPin, "pow");
#endif


In the console, I get

Sdcard found..
ID: 1023 volts 3.30 resistance= 33758500.00
blade= 0
WS2811 Blade with 144 leds
WS2811 Blade with 144 leds
Scanning sound font: font1 done
Activating monophonic font.
unit = 0 vol = 0.50, Playing font1/boot.wav
channels: 1 rate: 22050 bits: 16
Motion setup ... done.
Amplifier off.
Welcome to TeensySaber, type 'help' for more info.

The resistance value seems quite strange.
I connected the LED strips according to the configuration on the website for 2 Neopixels and 1 momentary button.
Can someone please help? I haven't been able to find the solution.

What kind of neopixel strips do you have? Where did you get them?
Do they turn on/off and extend properly?  Is it only one that doesn't work, or is it both of them?

I got them off Banggood
WS2812B 5050 RGB LED Changeable Strip 1M 144 Leds Non-waterproof Individual
They turn on and off, but I am unable to get them to extend and it is for the both of them.

Weird, it sounds like they default to white when powered, which is unusual.
The page says it's WS2812 chips, but the pictures seems to match SK6821s better.
Anyway, it kind of sound like you have a problem with the data line. Either the resistors are too big, or the chips don't like the signal generated by the teensy.
Before you try anything else, try chaning the WS2811_ACTUALLYY_800kHz to one of:

   WS2811_800kHz
   WS2811_400kHz
   WS2811_540kHz
   WS2813_800kHz

and see if any of those work better.

What size resistor do you have on the data line?
I was wondering about the resister. That might be the issue. The site says to calculate the resister with  (BatteryVoltage - LedVoltage) * LedAmps watts but wouldn't that lead to a negative value since the LEDs need 5V per the description of the seller and the battery voltage being 3.7V?

Offline profezzorn

  • Mining Colony Members
  • Master Force User
  • *
  • Posts: 901
  • May the source be with you.
    • Hubbe's Corner
Re: Dual LED Neopixel color not changing
« Reply #342 on: February 25, 2018, 12:48:52 AM »
Hello. I built a TeensySaber 3.0 and the hardware seems to work, but I can't get my dual LEDs to change colors. They are always of a white color and I tried to change it through a file called "my_config." The code is the same as the code from the configurator. I tried deleting all except for 1 of the presets.


#ifdef CONFIG_TOP
#include "v3_config.h"
#define NUM_BLADES 2
#define NUM_BUTTONS 1
#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[] = {
   
   { "fontdir", "track.wav",
    StylePtr<InOutSparkTip<EASYBLADE(MAGENTA, WHITE), 300, 800> >(),
    StylePtr<InOutSparkTip<EASYBLADE(MAGENTA, WHITE), 300, 800> >(), "magenta"},
   
};
BladeConfig blades[] = {
 { 0, WS2811BladePtr<144, WS2811_ACTUALLY_800kHz | WS2811_GRB>(),
    WS2811BladePtr<144, WS2811_ACTUALLY_800kHz | WS2811_GRB, 7, PowerPINS<bladePowerPin4, bladePowerPin5, bladePowerPin6> >(), CONFIGARRAY(presets) },
};
#endif

#ifdef CONFIG_BUTTONS
Button PowerButton(BUTTON_POWER, powerButtonPin, "pow");
#endif


In the console, I get

Sdcard found..
ID: 1023 volts 3.30 resistance= 33758500.00
blade= 0
WS2811 Blade with 144 leds
WS2811 Blade with 144 leds
Scanning sound font: font1 done
Activating monophonic font.
unit = 0 vol = 0.50, Playing font1/boot.wav
channels: 1 rate: 22050 bits: 16
Motion setup ... done.
Amplifier off.
Welcome to TeensySaber, type 'help' for more info.

The resistance value seems quite strange.
I connected the LED strips according to the configuration on the website for 2 Neopixels and 1 momentary button.
Can someone please help? I haven't been able to find the solution.

What kind of neopixel strips do you have? Where did you get them?
Do they turn on/off and extend properly?  Is it only one that doesn't work, or is it both of them?

I got them off Banggood
WS2812B 5050 RGB LED Changeable Strip 1M 144 Leds Non-waterproof Individual
They turn on and off, but I am unable to get them to extend and it is for the both of them.

Weird, it sounds like they default to white when powered, which is unusual.
The page says it's WS2812 chips, but the pictures seems to match SK6821s better.
Anyway, it kind of sound like you have a problem with the data line. Either the resistors are too big, or the chips don't like the signal generated by the teensy.
Before you try anything else, try chaning the WS2811_ACTUALLYY_800kHz to one of:

   WS2811_800kHz
   WS2811_400kHz
   WS2811_540kHz
   WS2813_800kHz

and see if any of those work better.

What size resistor do you have on the data line?
I was wondering about the resister. That might be the issue. The site says to calculate the resister with  (BatteryVoltage - LedVoltage) * LedAmps watts but wouldn't that lead to a negative value since the LEDs need 5V per the description of the seller and the battery voltage being 3.7V?

The resistor calculations are only for plain LEDs, not for neopixels.
For neopixels, positive and negative goes directly to power, and the data line should have a 100-300 ohm resistor.

Offline canteen234

  • No Force
  • *
  • Posts: 10
  • Um...Hello?
Re: Dual LED Neopixel color not changing
« Reply #343 on: February 25, 2018, 12:50:09 PM »
Hello. I built a TeensySaber 3.0 and the hardware seems to work, but I can't get my dual LEDs to change colors. They are always of a white color and I tried to change it through a file called "my_config." The code is the same as the code from the configurator. I tried deleting all except for 1 of the presets.


#ifdef CONFIG_TOP
#include "v3_config.h"
#define NUM_BLADES 2
#define NUM_BUTTONS 1
#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[] = {
   
   { "fontdir", "track.wav",
    StylePtr<InOutSparkTip<EASYBLADE(MAGENTA, WHITE), 300, 800> >(),
    StylePtr<InOutSparkTip<EASYBLADE(MAGENTA, WHITE), 300, 800> >(), "magenta"},
   
};
BladeConfig blades[] = {
 { 0, WS2811BladePtr<144, WS2811_ACTUALLY_800kHz | WS2811_GRB>(),
    WS2811BladePtr<144, WS2811_ACTUALLY_800kHz | WS2811_GRB, 7, PowerPINS<bladePowerPin4, bladePowerPin5, bladePowerPin6> >(), CONFIGARRAY(presets) },
};
#endif

#ifdef CONFIG_BUTTONS
Button PowerButton(BUTTON_POWER, powerButtonPin, "pow");
#endif


In the console, I get

Sdcard found..
ID: 1023 volts 3.30 resistance= 33758500.00
blade= 0
WS2811 Blade with 144 leds
WS2811 Blade with 144 leds
Scanning sound font: font1 done
Activating monophonic font.
unit = 0 vol = 0.50, Playing font1/boot.wav
channels: 1 rate: 22050 bits: 16
Motion setup ... done.
Amplifier off.
Welcome to TeensySaber, type 'help' for more info.

The resistance value seems quite strange.
I connected the LED strips according to the configuration on the website for 2 Neopixels and 1 momentary button.
Can someone please help? I haven't been able to find the solution.

What kind of neopixel strips do you have? Where did you get them?
Do they turn on/off and extend properly?  Is it only one that doesn't work, or is it both of them?

I got them off Banggood
WS2812B 5050 RGB LED Changeable Strip 1M 144 Leds Non-waterproof Individual
They turn on and off, but I am unable to get them to extend and it is for the both of them.

Weird, it sounds like they default to white when powered, which is unusual.
The page says it's WS2812 chips, but the pictures seems to match SK6821s better.
Anyway, it kind of sound like you have a problem with the data line. Either the resistors are too big, or the chips don't like the signal generated by the teensy.
Before you try anything else, try chaning the WS2811_ACTUALLYY_800kHz to one of:

   WS2811_800kHz
   WS2811_400kHz
   WS2811_540kHz
   WS2813_800kHz

and see if any of those work better.

What size resistor do you have on the data line?
I was wondering about the resister. That might be the issue. The site says to calculate the resister with  (BatteryVoltage - LedVoltage) * LedAmps watts but wouldn't that lead to a negative value since the LEDs need 5V per the description of the seller and the battery voltage being 3.7V?

The resistor calculations are only for plain LEDs, not for neopixels.
For neopixels, positive and negative goes directly to power, and the data line should have a 100-300 ohm resistor.

Okay. I just ordered some resisters and they should arrive in a few days. I'll update once I install them. Thank you for the help so far.

Offline KanyonKris

  • Padawan Learner
  • **
  • Posts: 72
  • Um...Hello?
Re: Error notifications
« Reply #344 on: February 26, 2018, 08:05:04 AM »
In case it's useful, here are some talkie phrases I made using the python script:
Code: [Select]
const uint8_t spBADBLADETOM[] PROGMEM = {0x00,0x00,0x00,0x20,0xEA,0xEE,0xD5,0xDD,0xA3,0x4E,0xC9,0x8B,0xD1,0xA8,0xE8,0xD2,0x23,0x2F,0x4E,0xB3,0x72,0x42,0x8F,0xAC,0x78,0xAB,0xCA,0xB1,0xBC,0xD2,0xE2,0xAC,0xB2,0x3A,0xCA,0x48,0xB2,0xF3,0xCA,0x6A,0x2B,0x23,0x4E,0x3E,0x2A,0x6B,0xAC,0x8C,0x24,0x6B,0xCF,0xCA,0x31,0x13,0x92,0xA2,0x34,0x32,0x2A,0x32,0xC9,0xAD,0x8A,0x48,0x0B,0x61,0x28,0x27,0x21,0x33,0xD4,0xA8,0xA1,0x02,0xD9,0xC9,0x30,0x13,0x0D,0x20,0xF2,0x4E,0x2D,0x43,0x35,0x91,0x29,0x0B,0xAA,0x0D,0xE4,0x4D,0xAE,0xCC,0xB8,0x27,0x48,0x5E,0xA5,0xB2,0x92,0x69,0x15,0x7F,0xD8,0xCA,0x46,0x32,0x53,0x63,0x56,0x2B,0x3B,0x73,0xCF,0xC8,0x59,0xAD,0x1A,0x5C,0x2D,0x2B,0x2B,0x95,0x66,0x4A,0x95,0xE8,0x2A,0x95,0xBA,0x29,0x55,0x62,0xAA,0x74,0xE0,0x87,0x14,0xAE,0xAD,0xD2,0x6E,0x1B,0x42,0xB8,0x2E,0x43,0x9B,0xA3,0x4B,0xA6,0xBE,0x0C,0xAD,0xAE,0xAE,0x51,0x66,0xD3,0x88,0x50,0xAA,0x20,0xDB,0x4B,0xC3,0xAC,0xA8,0x82,0x72,0xBB,0xC4,0x22,0xAE,0x52,0xB5,0x4A,0x93,0x23,0x80,0xC5,0xCD,0x11,0xDB,0xB8,0x78,0x46,0x18,0x01,0x00,0x00,0x00,0x00,0x00,0x80,0x07};
const uint8_t spBADBLADEJAMES[] PROGMEM = {0x00,0x00,0x00,0x68,0x04,0xB9,0x3C,0x2B,0x63,0xA0,0x09,0xB4,0xF2,0xCC,0x88,0xA0,0xE8,0xA8,0x5C,0xC3,0x33,0xD2,0xA8,0x8B,0x75,0x4B,0xAB,0xC9,0xA3,0xAE,0x41,0xDD,0x62,0xAA,0x8C,0xA2,0x5A,0xF3,0xCC,0x2E,0xBD,0xF2,0xA6,0xC2,0xB2,0x72,0xF4,0xCA,0x9A,0x0E,0xCB,0xCC,0xC9,0x2B,0x6B,0xC6,0x3C,0x23,0x27,0xAF,0xAC,0x19,0x8B,0xF4,0x9C,0x3C,0xF2,0xAA,0xDC,0xC2,0x6B,0x74,0xCA,0x8B,0x36,0x75,0xEF,0xD1,0x0C,0x63,0xBA,0xB2,0xC3,0x23,0xA3,0x0E,0xEC,0xF4,0xF0,0x90,0x82,0x06,0x90,0xA6,0x5C,0x23,0x91,0x69,0x83,0xA8,0x56,0xD6,0xD6,0xAE,0x4B,0x38,0x37,0x58,0x16,0xBB,0xCE,0xF3,0x1D,0xE1,0xB8,0x5D,0xBA,0x42,0xBB,0x8D,0xFC,0x61,0x1B,0x0A,0xAF,0x4A,0x8D,0x59,0x6D,0x2A,0xC6,0xC3,0x6C,0x26,0x96,0xA5,0x78,0xD5,0xA8,0xAE,0x55,0xB6,0x1A,0x45,0x2C,0x73,0x56,0xE2,0x9A,0x67,0x89,0xAA,0xD9,0x81,0x6F,0x91,0x34,0x3B,0x67,0xBB,0xA7,0x5A,0xD2,0x9A,0x9C,0x24,0xBE,0xEA,0xD0,0xA6,0xBA,0x34,0xFB,0xAB,0x26,0x9E,0x8E,0x42,0xE8,0x8F,0x34,0xAC,0x57,0x0B,0x81,0x02,0xA6,0x4C,0x11,0x42,0x33,0x2A,0x11,0x59,0x85,0x3D,0x3D,0xB8,0xB8,0x67,0x19,0xC4,0xF7,0xD8,0x22,0xE6,0x53,0x00,0x00,0x00,0x00,0xE0,0x01};
const uint8_t spLOWBATTERYTOM[] PROGMEM = {0x00,0x00,0x00,0x00,0x40,0xEA,0x0C,0xFC,0x88,0x23,0xB1,0x68,0x32,0xF0,0x33,0xF2,0xC6,0xAE,0xAE,0xC0,0x26,0x59,0x1B,0xB7,0xB2,0x91,0x98,0x24,0xFD,0xD8,0x8A,0x4E,0x63,0x82,0xE5,0x57,0xCB,0x0A,0xAF,0x31,0xF6,0x8F,0x85,0x4E,0xA2,0x47,0xD9,0x5F,0x86,0x22,0xB8,0x69,0xB4,0xBA,0xE4,0x4A,0x6F,0x7A,0x85,0xFD,0xB6,0xA8,0x9C,0xE9,0x15,0xB2,0x59,0xA8,0xE6,0xA6,0x2B,0x54,0x9C,0xA4,0xA6,0x49,0xB3,0x28,0x9F,0xD5,0x9A,0x26,0xDD,0x2B,0xBD,0xD2,0x68,0x9A,0xF2,0xE8,0xCC,0xCA,0xAD,0x6E,0xC6,0xB2,0x3C,0x23,0xB7,0x32,0xBB,0xA8,0xF0,0xAA,0x9C,0xCA,0x6C,0x7D,0x42,0xCB,0xB6,0x2B,0x52,0x91,0xF0,0x72,0x57,0xE1,0x89,0x99,0x3D,0x56,0x5A,0x05,0x2E,0x64,0xB1,0x7C,0xCB,0xE4,0xF8,0x10,0xC5,0xF3,0x2C,0x93,0x5B,0x93,0x13,0x8F,0xB3,0x56,0x6E,0x2F,0x86,0xCD,0x2E,0x1A,0xBA,0xA3,0x2B,0x56,0xDF,0xAA,0x69,0xEE,0x21,0x59,0xE3,0xAA,0xA2,0x82,0x86,0x61,0xB6,0xAB,0xC2,0xE2,0xED,0x9C,0xAC,0x3E,0x4D,0x0B,0x68,0x58,0x94,0xD8,0x2A,0xC5,0xFE,0x69,0x88,0xF3,0x2A,0x34,0x02,0xA6,0x21,0x02,0x00,0x00,0x00,0x80,0x07};
const uint8_t spLOWBATTERYJAMES[] PROGMEM = {0x00,0x00,0x00,0x28,0xCE,0xC8,0x2B,0x44,0x1D,0xAB,0x35,0xD0,0x1E,0x96,0x5C,0x65,0x46,0x23,0xA6,0x95,0x72,0x81,0x1B,0x3D,0xED,0x76,0x8C,0x45,0x65,0x48,0xA2,0xDA,0x29,0x56,0xB5,0x21,0x4B,0x9F,0x24,0xEF,0xDC,0xFA,0x2C,0x6D,0x55,0xBC,0x57,0xEB,0x92,0xB4,0x35,0xB1,0xDE,0xA5,0x8D,0x32,0xC6,0xC9,0xFA,0x96,0xD6,0xAB,0xEE,0x20,0xED,0x1A,0x5A,0x6D,0x2F,0x8D,0x6D,0x35,0x1B,0xA0,0xBB,0x50,0xF5,0x3A,0x64,0x00,0x39,0xBC,0xCC,0x1A,0x87,0x2C,0xE9,0xF4,0x50,0x9F,0xBC,0xEA,0xA2,0x23,0xC2,0x72,0xF2,0x6A,0xAB,0xCA,0x88,0xC8,0xC9,0xAB,0x2B,0x3A,0x23,0x22,0x47,0xAF,0xBE,0x9A,0x88,0xF0,0x1C,0x3D,0x86,0x6C,0x33,0x22,0x6B,0x4C,0xA1,0xB3,0x89,0x0C,0xCF,0xC9,0x69,0xAE,0x5E,0x42,0xC2,0x93,0x04,0x3E,0x36,0xCA,0x2C,0x4B,0x62,0xB6,0x30,0xA1,0x26,0x78,0xA5,0x38,0xFC,0xC4,0x1C,0x93,0xD6,0xE2,0xB2,0x83,0x6C,0x43,0x56,0x39,0x29,0x7A,0xA3,0x2E,0xD9,0xE8,0xFE,0xEA,0x14,0xAB,0x7D,0x95,0x81,0x7A,0x64,0xA8,0xCE,0x85,0x0A,0x6A,0x0E,0xB9,0xA7,0x2B,0x0A,0xA8,0x4A,0xB2,0x9D,0xB4,0x44,0xA0,0x6E,0x51,0x7A,0x3A,0x12,0x31,0x7A,0x40,0xCD,0x76,0x33,0xC8,0xE9,0x09,0x25,0x2B,0xC4,0x00,0x00,0x00,0x00,0x3C};
const uint8_t spSDCARDERRORTOM[] PROGMEM = {0x00,0xAE,0x29,0x46,0x63,0x2A,0x83,0x94,0x22,0x1B,0xAB,0xAE,0x32,0xD2,0xB2,0xE8,0xBD,0xAB,0x43,0x4A,0x4B,0x93,0xF5,0x8E,0x4E,0x31,0x29,0x2D,0xCA,0x3C,0xB2,0x44,0x3B,0xE0,0x6A,0x55,0x07,0xBC,0x58,0xEE,0x80,0x5F,0x3B,0x0C,0xF0,0x5B,0x07,0x01,0x7E,0xEB,0x60,0xC0,0x32,0x19,0x01,0x98,0x5A,0xA5,0x00,0xD3,0x30,0x35,0x60,0x05,0xA6,0x04,0xCC,0x48,0x68,0xDA,0x59,0x10,0x7D,0x66,0x10,0x9A,0xBA,0x44,0x8A,0xCD,0x2A,0x4A,0x69,0xB1,0x8B,0xDD,0xEA,0x04,0xBA,0xEA,0x0A,0x9C,0x98,0xEB,0x82,0x62,0x2B,0x25,0x35,0x4E,0x8B,0x63,0xCE,0xD2,0xD2,0xCC,0x23,0x89,0x29,0xD3,0xD3,0xB2,0x8E,0x2C,0xC5,0x72,0x0F,0x4F,0x5B,0xF2,0xD4,0x24,0x7C,0x25,0x73,0x2A,0x52,0xE2,0xF0,0xD5,0xCC,0xA6,0xCC,0x56,0x55,0x33,0xE2,0xB4,0x62,0x38,0x51,0x8D,0x5A,0x34,0x8A,0x61,0x55,0xB5,0x6A,0xD5,0x28,0x8A,0x36,0x8B,0xAE,0xD6,0xAD,0xC8,0x41,0xCD,0x36,0x3D,0xA5,0x2A,0x55,0x89,0x18,0x69,0xE9,0x9A,0x38,0xD8,0xA3,0xB8,0x95,0x6B,0xE3,0x62,0xCF,0xE6,0x4E,0x86,0x09,0x93,0x32,0x5B,0x3A,0x19,0x3A,0x4C,0xCA,0x6C,0xE9,0x64,0x8E,0x38,0x29,0xAB,0xB4,0x93,0x3A,0xE3,0xC4,0xEE,0xB4,0x96,0xE2,0x0E,0x83,0xA6,0xDD,0x5B,0x89,0x27,0x0C,0x9A,0xB1,0xA8,0xC5,0xDE,0xD0,0x39,0xBB,0xD5,0x15,0xF9,0x42,0x95,0xEC,0x12,0x57,0xC4,0xCE,0x45,0xBC,0xD2,0x6C,0x21,0xA7,0x84,0xD0,0x4A,0x93,0x04,0x00,0x00,0x00,0xF0};
const uint8_t spSDCARDERRORJAMES[] PROGMEM = {0x00,0x50,0xBA,0xEA,0xC5,0x23,0xA6,0xCC,0xCA,0x9A,0x37,0x0B,0xEF,0x29,0x2B,0x69,0xCE,0x35,0xAC,0x26,0x9F,0xA0,0xD9,0xD0,0xF0,0x9A,0xBD,0x82,0x66,0x52,0xDC,0x6A,0x72,0x0A,0x0A,0x4B,0xC9,0xC8,0x52,0x09,0x78,0x36,0x22,0x01,0x3F,0x56,0x26,0xE0,0xA6,0x76,0x07,0xBC,0x50,0x8E,0x80,0x17,0x23,0x05,0xB0,0x74,0x45,0x02,0x96,0x72,0x69,0xC0,0xD4,0x46,0x0D,0x58,0xD6,0xB1,0x94,0xC3,0x30,0xEA,0xE6,0xE4,0x52,0x76,0xC5,0xE8,0x57,0x93,0x42,0xD5,0x2D,0x83,0x5D,0x4E,0x24,0x5D,0x61,0xCC,0x75,0x1E,0x49,0x40,0x3D,0xAC,0x89,0x98,0xE3,0x22,0xB6,0x34,0x6A,0x1E,0x91,0x9D,0xD0,0x62,0xAB,0x99,0x27,0x31,0x5C,0x33,0xA3,0xE6,0x11,0x39,0x14,0x31,0xB4,0xA8,0x5B,0xAD,0x56,0xA4,0xB8,0xA6,0x25,0x0B,0x4B,0x19,0xEB,0xA8,0x97,0x2C,0x2A,0x75,0x6A,0x2D,0x51,0xB4,0xAA,0xB4,0xA9,0x3B,0x77,0x51,0xA7,0xD4,0xE5,0xCA,0x3C,0x2D,0x9D,0x5C,0x9F,0x3C,0xD3,0xA6,0xD7,0x75,0x5C,0xB5,0xAC,0x19,0x53,0xCB,0xF0,0xD5,0x8B,0x64,0xF6,0xA2,0x32,0x34,0xAF,0x94,0x95,0xB3,0x5A,0xDB,0xBC,0x48,0x74,0xD4,0x6C,0x6D,0x4D,0xC6,0x3A,0xB6,0xAA,0xF5,0x25,0x19,0xDB,0x68,0xEB,0x34,0xE4,0xA2,0x9C,0xC3,0x9D,0xDC,0x14,0x9B,0x70,0x0D,0x77,0x52,0x73,0x98,0xE8,0x9B,0xD4,0x51,0xAD,0x71,0xA0,0xEE,0x50,0x67,0xB3,0xC5,0x46,0xB2,0x4B,0xB9,0x0C,0x17,0x9B,0x70,0x2F,0xE7,0x32,0x77,0xEC,0xCC,0xB3,0xDC,0xC9,0x7C,0x69,0x13,0xCF,0x70,0x67,0x21,0xE4,0x0B,0x3E,0xC1,0xAB,0xC9,0x9A,0x37,0x53,0x74,0x24,0x03,0x00,0x00,0x78};
const uint8_t spFILENOTFOUNDTOM[] PROGMEM = {0x00,0x40,0x80,0x99,0x3B,0x85,0x35,0xFA,0x76,0xB8,0xA7,0x16,0xC0,0x0A,0xAE,0x0A,0x58,0xC1,0xDC,0x00,0x3B,0x67,0xB8,0x24,0xBA,0x69,0x13,0xAD,0xDD,0xD2,0x98,0xB6,0x54,0x7D,0xF6,0x48,0x93,0xDB,0x76,0xF5,0xC5,0x2B,0x29,0xAE,0x2B,0x34,0x16,0xAF,0xA4,0x5A,0xB3,0xCA,0xA8,0x3A,0xE2,0xE6,0x54,0xB2,0x73,0x52,0x8B,0xAB,0x53,0xAD,0xA8,0x5A,0x2D,0x2E,0x22,0x2B,0x24,0x6A,0xA7,0x24,0xF3,0x1A,0xC3,0x58,0x1C,0x92,0x4C,0x7A,0x0C,0xF5,0x55,0x4A,0x3B,0x8A,0x75,0x90,0x55,0x26,0x6B,0xC0,0x26,0x99,0xDB,0xA8,0x3C,0x11,0xCB,0x52,0x8F,0x9B,0xCA,0x2A,0x35,0xC5,0xAA,0x56,0x29,0x9B,0x8C,0x12,0xCD,0xD9,0xA5,0xAA,0x3A,0x5B,0x39,0x66,0x97,0xB2,0xEA,0x6C,0x65,0xAB,0xD2,0xCA,0xA6,0xAD,0x55,0xBD,0x4A,0x28,0x9B,0xD6,0x56,0xB7,0x32,0xC4,0xA9,0x5A,0x8B,0x2D,0x63,0x29,0x60,0x05,0x37,0x07,0xAC,0x34,0x65,0x80,0x55,0xBA,0x14,0x30,0x83,0xBB,0x89,0x93,0xEE,0x56,0xD3,0xB8,0xA5,0xC8,0x66,0x9B,0xCD,0x67,0xB5,0x32,0xDB,0x6B,0xB6,0x98,0x5D,0xCA,0xEC,0x2E,0xC9,0xB3,0x76,0xA9,0x8A,0xE9,0x10,0xCB,0x28,0x89,0x29,0xA6,0x82,0x22,0xA2,0x84,0x39,0xBB,0x49,0x0C,0xAB,0x63,0xB6,0x98,0x3A,0x28,0xBC,0xB1,0x3A,0x43,0xAE,0x20,0xCF,0xC4,0xEA,0x0A,0x29,0x9C,0xD3,0x63,0xB3,0xC7,0xA9,0x28,0x49,0x4F,0x88,0x5E,0xAD,0x62,0x2C,0x5C,0x16,0xF9,0x22,0xE3,0xCC,0x4A,0xDB,0x06,0x98,0xCE,0x5C,0xBC,0xC3,0xA9,0xB1,0xC5,0x44,0xF4,0x76,0xE3,0x46,0xE6,0x15,0x01,0x00,0x00,0x00,0x00,0x00,0xE0,0x01};
These actually sound pretty good.
Are they generated with explicit stop code?
I only ran the WAV files through python_wizard, didn't do any editing afterward.
Because these came from text-to-speech engines, that may help as there would be no noise (as when recording with a mic).

 

retrousse