stm32_sam.h 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. #include <furi.h>
  2. #ifndef __STM32SAM__
  3. #define __STM32SAM__
  4. // SAM Text-To-Speech (TTS), ported from https://github.com/s-macke/SAM
  5. class STM32SAM {
  6. public:
  7. STM32SAM(uint32_t STM32SAM_SPEED);
  8. STM32SAM();
  9. void begin(void);
  10. void
  11. sam(const char* argv,
  12. unsigned char phonetic,
  13. unsigned char singmode,
  14. unsigned char pitch,
  15. unsigned char speed,
  16. unsigned char mouth,
  17. unsigned char throat);
  18. void
  19. sam(char* argv,
  20. unsigned char phonetic,
  21. unsigned char singmode,
  22. unsigned char pitch,
  23. unsigned char speed,
  24. unsigned char mouth,
  25. unsigned char throat);
  26. void say(const char* argv);
  27. void say(char* argv);
  28. void sing(const char* argv);
  29. void sing(char* argv);
  30. void sayPhonetic(const char* argv);
  31. void sayPhonetic(char* argv);
  32. void singPhonetic(const char* argv);
  33. void singPhonetic(char* argv);
  34. void setVoice(
  35. unsigned char _pitch = 64,
  36. unsigned char _speed = 72,
  37. unsigned char _mouth = 128,
  38. unsigned char _throat = 128);
  39. void setPitch(unsigned char _pitch = 64);
  40. void setSpeed(unsigned char _speed = 72);
  41. void setMouth(unsigned char _mouth = 128);
  42. void setThroat(unsigned char _throat = 128);
  43. private:
  44. void SetAUDIO(unsigned char main_volume);
  45. void Output8BitAry(int index, unsigned char ary[5]);
  46. void Output8Bit(int index, unsigned char A);
  47. unsigned char Read(unsigned char p, unsigned char Y);
  48. void Write(unsigned char p, unsigned char Y, unsigned char value);
  49. void RenderSample(unsigned char* mem66);
  50. void Render();
  51. void AddInflection(unsigned char mem48, unsigned char phase1);
  52. void SetMouthThroat();
  53. unsigned char trans(unsigned char mem39212, unsigned char mem39213);
  54. void SetInput(char* _input);
  55. void Init();
  56. int SAMMain();
  57. void PrepareOutput();
  58. void Insert(
  59. unsigned char position /*var57*/,
  60. unsigned char mem60,
  61. unsigned char mem59,
  62. unsigned char mem58);
  63. void InsertBreath();
  64. void CopyStress();
  65. int Parser1();
  66. void SetPhonemeLength();
  67. void Code41240();
  68. void Parser2();
  69. void AdjustLengths();
  70. void Code47503(unsigned char mem52);
  71. void Code37055(unsigned char mem59);
  72. void Code37066(unsigned char mem58);
  73. unsigned char GetRuleByte(unsigned short mem62, unsigned char Y);
  74. int TextToPhonemes(unsigned char* input); // Code36484
  75. uint32_t _STM32SAM_SPEED;
  76. unsigned char speed;
  77. unsigned char pitch;
  78. unsigned char mouth;
  79. unsigned char throat;
  80. unsigned char phonetic;
  81. unsigned char singmode;
  82. }; // STM32SAM class
  83. #endif