Music key reference. From C to B, major and minor
Dependencies: EFM32_SegmentLCD IOFuncLib mbed
midiFunctions.h@0:45c4e9ef5b03, 2015-06-28 (annotated)
- Committer:
- MaxScorda
- Date:
- Sun Jun 28 12:57:01 2015 +0000
- Revision:
- 0:45c4e9ef5b03
Music Keys. First try
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| MaxScorda | 0:45c4e9ef5b03 | 1 | #include <string> |
| MaxScorda | 0:45c4e9ef5b03 | 2 | #include "IOFuncLib.h" |
| MaxScorda | 0:45c4e9ef5b03 | 3 | genFunctions fnz; |
| MaxScorda | 0:45c4e9ef5b03 | 4 | |
| MaxScorda | 0:45c4e9ef5b03 | 5 | |
| MaxScorda | 0:45c4e9ef5b03 | 6 | int getScala(char notaf, bool tiposcala) |
| MaxScorda | 0:45c4e9ef5b03 | 7 | { |
| MaxScorda | 0:45c4e9ef5b03 | 8 | //idx= nota da calcolare NB 0-6 |
| MaxScorda | 0:45c4e9ef5b03 | 9 | //tiposcala true=maggiore, flase=minore |
| MaxScorda | 0:45c4e9ef5b03 | 10 | int idx = kcount; |
| MaxScorda | 0:45c4e9ef5b03 | 11 | int scalamaggiore[] = {0,2,2,1,2,2,2 }; |
| MaxScorda | 0:45c4e9ef5b03 | 12 | int scalaminore[] = {0,2,1,2,2,1,2 }; |
| MaxScorda | 0:45c4e9ef5b03 | 13 | notaf = fnz.constrain(notaf, 0, 6); |
| MaxScorda | 0:45c4e9ef5b03 | 14 | for (int i = 0; i < notaf + 1; i++) { |
| MaxScorda | 0:45c4e9ef5b03 | 15 | if (tiposcala) idx = idx + scalamaggiore[i]; |
| MaxScorda | 0:45c4e9ef5b03 | 16 | else idx = idx + scalaminore[i]; |
| MaxScorda | 0:45c4e9ef5b03 | 17 | } |
| MaxScorda | 0:45c4e9ef5b03 | 18 | return idx; |
| MaxScorda | 0:45c4e9ef5b03 | 19 | } |
| MaxScorda | 0:45c4e9ef5b03 | 20 | |
| MaxScorda | 0:45c4e9ef5b03 | 21 | |
| MaxScorda | 0:45c4e9ef5b03 | 22 | void printKey(int valk) |
| MaxScorda | 0:45c4e9ef5b03 | 23 | { |
| MaxScorda | 0:45c4e9ef5b03 | 24 | char score[] = {'C', 'c', 'D', 'd', |
| MaxScorda | 0:45c4e9ef5b03 | 25 | 'E', 'F', 'f', 'G', |
| MaxScorda | 0:45c4e9ef5b03 | 26 | 'g', 'A', 'a', 'B' |
| MaxScorda | 0:45c4e9ef5b03 | 27 | }; |
| MaxScorda | 0:45c4e9ef5b03 | 28 | char posidxs = 0; |
| MaxScorda | 0:45c4e9ef5b03 | 29 | string strnota; |
| MaxScorda | 0:45c4e9ef5b03 | 30 | |
| MaxScorda | 0:45c4e9ef5b03 | 31 | for (int i = 0; i < 7; i++) { |
| MaxScorda | 0:45c4e9ef5b03 | 32 | //scala anglosassone |
| MaxScorda | 0:45c4e9ef5b03 | 33 | if ((valk%2) == 0) strnota = strnota+score[getScala(i, true) % 12]; //se maggiore |
| MaxScorda | 0:45c4e9ef5b03 | 34 | else strnota = strnota+score[getScala(i, false) % 12]; //se minore |
| MaxScorda | 0:45c4e9ef5b03 | 35 | posidxs = posidxs + 8 + 3; |
| MaxScorda | 0:45c4e9ef5b03 | 36 | } |
| MaxScorda | 0:45c4e9ef5b03 | 37 | segmentDisplay.Number(valk); |
| MaxScorda | 0:45c4e9ef5b03 | 38 | segmentDisplay.Write(fnz.string2char(strnota)); |
| MaxScorda | 0:45c4e9ef5b03 | 39 | if ((valk%2)==0) segmentDisplay.Symbol(LCD_SYMBOL_MINUS, false); |
| MaxScorda | 0:45c4e9ef5b03 | 40 | else segmentDisplay.Symbol(LCD_SYMBOL_MINUS, true); |
| MaxScorda | 0:45c4e9ef5b03 | 41 | |
| MaxScorda | 0:45c4e9ef5b03 | 42 | |
| MaxScorda | 0:45c4e9ef5b03 | 43 | } |
| MaxScorda | 0:45c4e9ef5b03 | 44 | |
| MaxScorda | 0:45c4e9ef5b03 | 45 | |
| MaxScorda | 0:45c4e9ef5b03 | 46 | |
| MaxScorda | 0:45c4e9ef5b03 | 47 | |
| MaxScorda | 0:45c4e9ef5b03 | 48 |