Music key reference. From C to B, major and minor

Dependencies:   EFM32_SegmentLCD IOFuncLib mbed

Committer:
MaxScorda
Date:
Sun Jun 28 12:57:01 2015 +0000
Revision:
0:45c4e9ef5b03
Music Keys. First try

Who changed what in which revision?

UserRevisionLine numberNew 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