My Marlin configs for Fabrikator Mini and CTC i3 Pro B
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410
  1. /**************
  2. * sounds.cpp *
  3. **************/
  4. /****************************************************************************
  5. * Written By Mark Pelletier 2017 - Aleph Objects, Inc. *
  6. * Written By Marcio Teixeira 2018 - Aleph Objects, Inc. *
  7. * *
  8. * This program is free software: you can redistribute it and/or modify *
  9. * it under the terms of the GNU General Public License as published by *
  10. * the Free Software Foundation, either version 3 of the License, or *
  11. * (at your option) any later version. *
  12. * *
  13. * This program is distributed in the hope that it will be useful, *
  14. * but WITHOUT ANY WARRANTY; without even the implied warranty of *
  15. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
  16. * GNU General Public License for more details. *
  17. * *
  18. * To view a copy of the GNU General Public License, go to the following *
  19. * location: <http://www.gnu.org/licenses/>. *
  20. ****************************************************************************/
  21. #include "../compat.h"
  22. #if ENABLED(TOUCH_UI_FTDI_EVE)
  23. #include "../ftdi_eve_lib/ftdi_eve_lib.h"
  24. #include "sounds.h"
  25. namespace Theme {
  26. using namespace FTDI;
  27. const PROGMEM SoundPlayer::sound_t chimes[] = {
  28. {CHIMES, NOTE_G3, 5},
  29. {CHIMES, NOTE_E4, 5},
  30. {CHIMES, NOTE_C4, 5},
  31. {SILENCE, END_SONG, 0}
  32. };
  33. const PROGMEM SoundPlayer::sound_t sad_trombone[] = {
  34. {TRUMPET, NOTE_A3S, 10},
  35. {TRUMPET, NOTE_A3 , 10},
  36. {TRUMPET, NOTE_G3S, 10},
  37. {TRUMPET, NOTE_G3, 20},
  38. {SILENCE, END_SONG, 0}
  39. };
  40. const PROGMEM SoundPlayer::sound_t twinkle[] = {
  41. {GLOCKENSPIEL, NOTE_C4, 1},
  42. {GLOCKENSPIEL, NOTE_E4, 1},
  43. {GLOCKENSPIEL, NOTE_G4, 16},
  44. {SILENCE, END_SONG, 0}
  45. };
  46. const PROGMEM SoundPlayer::sound_t fanfare[] = {
  47. {TRUMPET, NOTE_A3, 4},
  48. {SILENCE, REST, 1},
  49. {TRUMPET, NOTE_A3, 2},
  50. {SILENCE, REST, 1},
  51. {TRUMPET, NOTE_A3, 2},
  52. {SILENCE, REST, 1},
  53. {TRUMPET, NOTE_E4, 10},
  54. {SILENCE, END_SONG, 0}
  55. };
  56. const PROGMEM SoundPlayer::sound_t media_inserted[] = {
  57. {MUSIC_BOX, NOTE_C4, 2},
  58. {MUSIC_BOX, NOTE_E4, 2},
  59. {SILENCE, END_SONG, 0}
  60. };
  61. const PROGMEM SoundPlayer::sound_t media_removed[] = {
  62. {MUSIC_BOX, NOTE_E4, 2},
  63. {MUSIC_BOX, NOTE_C4, 2},
  64. {SILENCE, END_SONG, 0}
  65. };
  66. const PROGMEM SoundPlayer::sound_t js_bach_toccata[] = {
  67. {ORGAN, NOTE_A4, 2},
  68. {ORGAN, NOTE_G4, 2},
  69. {ORGAN, NOTE_A4, 35},
  70. {SILENCE, REST, 12},
  71. {ORGAN, NOTE_G4, 4},
  72. {ORGAN, NOTE_F4, 4},
  73. {ORGAN, NOTE_E4, 4},
  74. {ORGAN, NOTE_D4, 4},
  75. {ORGAN, NOTE_C4S, 16},
  76. {ORGAN, NOTE_D4, 32},
  77. {SILENCE, REST, 42},
  78. {ORGAN, NOTE_A3, 2},
  79. {ORGAN, NOTE_G3, 2},
  80. {ORGAN, NOTE_A3, 35},
  81. {SILENCE, REST, 9},
  82. {ORGAN, NOTE_E3, 8},
  83. {ORGAN, NOTE_F3, 8},
  84. {ORGAN, NOTE_C3S, 16},
  85. {ORGAN, NOTE_D3, 27},
  86. {SILENCE, REST, 42},
  87. {ORGAN, NOTE_A2, 2},
  88. {ORGAN, NOTE_G2, 2},
  89. {ORGAN, NOTE_A2, 35},
  90. {SILENCE, REST, 12},
  91. {ORGAN, NOTE_G2, 4},
  92. {ORGAN, NOTE_F2, 4},
  93. {ORGAN, NOTE_E2, 4},
  94. {ORGAN, NOTE_D2, 4},
  95. {ORGAN, NOTE_C2S, 16},
  96. {ORGAN, NOTE_D2, 32},
  97. {SILENCE, REST, 52},
  98. //{ORGAN, NOTE_D1, 28},
  99. {ORGAN, NOTE_C3S, 9},
  100. {ORGAN, NOTE_E3, 9},
  101. {ORGAN, NOTE_G3, 9},
  102. {ORGAN, NOTE_A3S, 9},
  103. {ORGAN, NOTE_C4S, 9},
  104. {ORGAN, NOTE_E4, 9},
  105. {ORGAN, NOTE_D4, 20},
  106. {SILENCE, REST, 30},
  107. {ORGAN, NOTE_C4S, 4},
  108. {ORGAN, NOTE_D4, 2},
  109. {ORGAN, NOTE_E4, 2},
  110. {ORGAN, NOTE_C4S, 2},
  111. {ORGAN, NOTE_D4, 2},
  112. {ORGAN, NOTE_E4, 2},
  113. {ORGAN, NOTE_C4S, 2},
  114. {ORGAN, NOTE_D4, 2},
  115. {ORGAN, NOTE_E4, 2},
  116. {ORGAN, NOTE_C4S, 2},
  117. {ORGAN, NOTE_D4, 4},
  118. {ORGAN, NOTE_E4, 4},
  119. {ORGAN, NOTE_F4, 2},
  120. {ORGAN, NOTE_G4, 2},
  121. {ORGAN, NOTE_E4, 2},
  122. {ORGAN, NOTE_F4, 2},
  123. {ORGAN, NOTE_G4, 2},
  124. {ORGAN, NOTE_E4, 2},
  125. {ORGAN, NOTE_F4, 2},
  126. {ORGAN, NOTE_G4, 2},
  127. {ORGAN, NOTE_E4, 2},
  128. {ORGAN, NOTE_F4, 4},
  129. {ORGAN, NOTE_G4, 4},
  130. {ORGAN, NOTE_A4, 2},
  131. {ORGAN, NOTE_A4S, 2},
  132. {ORGAN, NOTE_G4, 2},
  133. {ORGAN, NOTE_A4, 2},
  134. {ORGAN, NOTE_A4S, 2},
  135. {ORGAN, NOTE_G4, 2},
  136. {ORGAN, NOTE_A4, 2},
  137. {ORGAN, NOTE_A4S, 2},
  138. {ORGAN, NOTE_G4, 2},
  139. {ORGAN, NOTE_A4, 4},
  140. {SILENCE, REST, 36},
  141. {ORGAN, NOTE_C5S, 4},
  142. {ORGAN, NOTE_D5, 2},
  143. {ORGAN, NOTE_E5, 2},
  144. {ORGAN, NOTE_C5S, 2},
  145. {ORGAN, NOTE_D5, 2},
  146. {ORGAN, NOTE_E5, 2},
  147. {ORGAN, NOTE_C5S, 2},
  148. {ORGAN, NOTE_D5, 2},
  149. {ORGAN, NOTE_E5, 2},
  150. {ORGAN, NOTE_C5S, 2},
  151. {ORGAN, NOTE_D5, 4},
  152. {ORGAN, NOTE_E5, 4},
  153. {ORGAN, NOTE_F5, 2},
  154. {ORGAN, NOTE_G5, 2},
  155. {ORGAN, NOTE_E5, 2},
  156. {ORGAN, NOTE_F5, 2},
  157. {ORGAN, NOTE_G5, 2},
  158. {ORGAN, NOTE_E5, 2},
  159. {ORGAN, NOTE_F5, 2},
  160. {ORGAN, NOTE_G5, 2},
  161. {ORGAN, NOTE_E5, 2},
  162. {ORGAN, NOTE_F5, 4},
  163. {ORGAN, NOTE_G5, 4},
  164. {ORGAN, NOTE_A5, 2},
  165. {ORGAN, NOTE_A5S, 2},
  166. {ORGAN, NOTE_G5, 2},
  167. {ORGAN, NOTE_A5, 2},
  168. {ORGAN, NOTE_A5S, 2},
  169. {ORGAN, NOTE_G5, 2},
  170. {ORGAN, NOTE_A5, 2},
  171. {ORGAN, NOTE_A5S, 2},
  172. {ORGAN, NOTE_G5, 2},
  173. {ORGAN, NOTE_A5, 4},
  174. {SILENCE, REST, 32},
  175. {ORGAN, NOTE_A5, 4},
  176. {ORGAN, NOTE_G5, 2},
  177. {ORGAN, NOTE_A5S, 2},
  178. {ORGAN, NOTE_E5, 2},
  179. {ORGAN, NOTE_G5, 2},
  180. {ORGAN, NOTE_A5S, 2},
  181. {ORGAN, NOTE_E5, 2},
  182. {ORGAN, NOTE_F5, 2},
  183. {ORGAN, NOTE_A5, 2},
  184. {ORGAN, NOTE_D5, 2},
  185. {ORGAN, NOTE_F5, 2},
  186. {ORGAN, NOTE_G5, 2},
  187. {ORGAN, NOTE_D5, 2},
  188. {ORGAN, NOTE_E5, 2},
  189. {ORGAN, NOTE_A5, 2},
  190. {ORGAN, NOTE_C5, 2},
  191. {ORGAN, NOTE_E5, 2},
  192. {ORGAN, NOTE_A5, 2},
  193. {ORGAN, NOTE_C5, 2},
  194. {ORGAN, NOTE_D5, 2},
  195. {ORGAN, NOTE_F5, 2},
  196. {ORGAN, NOTE_A4S, 2},
  197. {ORGAN, NOTE_D5, 2},
  198. {ORGAN, NOTE_E5, 2},
  199. {ORGAN, NOTE_A4S, 2},
  200. {ORGAN, NOTE_C5, 2},
  201. {ORGAN, NOTE_E5, 2},
  202. {SILENCE, END_SONG, 0}
  203. };
  204. const PROGMEM SoundPlayer::sound_t js_bach_joy[] = {
  205. {PIANO, NOTE_G3, 4},
  206. {PIANO, NOTE_A3, 4},
  207. {PIANO, NOTE_B3, 4},
  208. {PIANO, NOTE_D4, 3},
  209. {SILENCE, REST, 1},
  210. {PIANO, NOTE_C4, 3},
  211. {SILENCE, REST, 1},
  212. {PIANO, NOTE_C4, 4},
  213. {PIANO, NOTE_E4, 3},
  214. {SILENCE, REST, 1},
  215. {PIANO, NOTE_D4, 2},
  216. {SILENCE, REST, 2},
  217. {PIANO, NOTE_D4, 4},
  218. {PIANO, NOTE_G4 , 3},
  219. {SILENCE, REST, 1},
  220. {PIANO, NOTE_F4S, 4},
  221. {PIANO, NOTE_G4, 4},
  222. {PIANO, NOTE_D4, 2},
  223. {SILENCE, REST, 2},
  224. {PIANO, NOTE_B3, 3},
  225. {SILENCE, REST, 1},
  226. {PIANO, NOTE_G3, 4},
  227. {PIANO, NOTE_A3, 2},
  228. {SILENCE, REST, 2},
  229. {PIANO, NOTE_B3, 2},
  230. {SILENCE, REST, 2},
  231. {PIANO, NOTE_C4, 4},
  232. {PIANO, NOTE_D4, 2},
  233. {SILENCE, REST, 2},
  234. {PIANO, NOTE_E4, 2},
  235. {SILENCE, REST, 2},
  236. {PIANO, NOTE_D4, 4},
  237. {PIANO, NOTE_C4, 2},
  238. {SILENCE, REST, 2},
  239. {PIANO, NOTE_B3, 2},
  240. {SILENCE, REST, 2},
  241. {PIANO, NOTE_A3, 4},
  242. {PIANO, NOTE_B3, 2},
  243. {SILENCE, REST, 2},
  244. {PIANO, NOTE_G3, 2},
  245. {SILENCE, REST, 2},
  246. {PIANO, NOTE_G3, 8},
  247. {SILENCE, END_SONG, 0}
  248. };
  249. const PROGMEM SoundPlayer::sound_t big_band[] = {
  250. {XYLOPHONE, NOTE_F4, 3},
  251. {XYLOPHONE, NOTE_G4, 3},
  252. {XYLOPHONE, NOTE_F4, 3},
  253. {XYLOPHONE, NOTE_D4, 3},
  254. {XYLOPHONE, NOTE_A3S, 3},
  255. {SILENCE, REST, 3},
  256. {TRUMPET, NOTE_F4, 3},
  257. {TRUMPET, NOTE_G4, 3},
  258. {TRUMPET, NOTE_F4, 3},
  259. {TRUMPET, NOTE_D4, 3},
  260. {TRUMPET, NOTE_A3S, 3},
  261. {SILENCE, REST, 3},
  262. {TUBA, NOTE_A2S, 6},
  263. {TUBA, NOTE_A2S, 6},
  264. {TUBA, NOTE_A2S, 4},
  265. {TUBA, NOTE_A2S, 6},
  266. {TUBA, NOTE_A2S, 6},
  267. {SILENCE, END_SONG, 0}
  268. };
  269. const PROGMEM SoundPlayer::sound_t beats[] = {
  270. {SILENCE, REST, 8},
  271. {NOTCH, NOTE_C4, 8},
  272. {KICKDRUM, NOTE_C4, 8},
  273. {HIHAT, NOTE_C4, 8},
  274. {COWBELL, NOTE_C4, 8},
  275. {SILENCE, REST, 8},
  276. {NOTCH, NOTE_C4, 8},
  277. {KICKDRUM, NOTE_C4, 8},
  278. {HIHAT, NOTE_C4, 8},
  279. {COWBELL, NOTE_C4, 8},
  280. {SILENCE, REST, 8},
  281. {NOTCH, NOTE_C4, 8},
  282. {KICKDRUM, NOTE_C4, 8},
  283. {HIHAT, NOTE_C4, 8},
  284. {COWBELL, NOTE_C4, 8},
  285. {SILENCE, END_SONG, 0}
  286. };
  287. const PROGMEM SoundPlayer::sound_t beeping[] = {
  288. {BEEPING, NOTE_C4, 64},
  289. {SILENCE, END_SONG, 0}
  290. };
  291. const PROGMEM SoundPlayer::sound_t alarm[] = {
  292. {ALARM, NOTE_C4, 64},
  293. {SILENCE, END_SONG, 0}
  294. };
  295. const PROGMEM SoundPlayer::sound_t warble[] = {
  296. {WARBLE, NOTE_C4, 64},
  297. {SILENCE, END_SONG, 0}
  298. };
  299. const PROGMEM SoundPlayer::sound_t carousel[] = {
  300. {CAROUSEL, NOTE_C4, 64},
  301. {SILENCE, END_SONG, 0}
  302. };
  303. const PROGMEM SoundPlayer::sound_t all_instruments[] = {
  304. {HARP},
  305. {XYLOPHONE},
  306. {TUBA},
  307. {GLOCKENSPIEL},
  308. {ORGAN},
  309. {TRUMPET},
  310. {PIANO},
  311. {CHIMES},
  312. {MUSIC_BOX},
  313. {BELL},
  314. {CLICK},
  315. {SWITCH},
  316. {COWBELL},
  317. {NOTCH},
  318. {HIHAT},
  319. {KICKDRUM},
  320. {SWITCH},
  321. {POP},
  322. {CLACK},
  323. {CHACK},
  324. {SILENCE, END_SONG, 0}
  325. };
  326. }; // namespace Theme
  327. #define N_ELEMENTS(a) (sizeof(a)/sizeof(a[0]))
  328. const SoundList::list_t SoundList::list[] = {
  329. {"Silence", FTDI::silence},
  330. {"Twinkle", Theme::twinkle},
  331. {"Chimes", Theme::chimes},
  332. {"Fanfare", Theme::fanfare},
  333. {"Sad Trombone", Theme::sad_trombone},
  334. {"Big Band", Theme::big_band},
  335. {"Beeping", Theme::beeping},
  336. {"Alarm", Theme::alarm},
  337. {"Warble", Theme::warble},
  338. {"Carousel", Theme::carousel},
  339. {"Beats", Theme::beats},
  340. {"Bach Joy", Theme::js_bach_joy},
  341. {"Bach Toccata", Theme::js_bach_toccata}
  342. };
  343. const uint8_t SoundList::n = N_ELEMENTS(SoundList::list);
  344. #endif // TOUCH_UI_FTDI_EVE