Nucleo SPI Sequencer

Dependencies:   AverageAnalogIn N5110 Nucleo_rtos_UI_Test PinDetect RotaryEncoder Sequence mbed-rtos mbed FilterController

Fork of Nucleo_rtos_UI_Test by Ryo Od

Revision:
7:8f38e85705ba
Parent:
6:4e089888b809
Child:
8:2c481dab525a
--- a/main.cpp	Sun Jun 12 08:02:19 2016 +0000
+++ b/main.cpp	Sun Jun 12 08:19:29 2016 +0000
@@ -58,13 +58,6 @@
 };
 
 // Grobal Variables
-struct sSequence {
-    bool noteOn;
-    int octave;
-    int pitch;
-    bool tie;
-    bool accent;
-} sSequence[SEQUENCE_N];
 
 struct Filter {
     int cutOff;
@@ -72,7 +65,7 @@
     int envMod;
 } Filter;
 
-int currentNote = 0;
+int currentStep = 0;
 int tempo = 120;
 bool isRunning = true;
 bool isDirty = true;
@@ -85,14 +78,14 @@
     char buff[20];
     
     //Lcd.clear();
-    sprintf(buff, "Note#: %d  ", currentNote);
+    sprintf(buff, "Note#: %d  ", currentStep);
     Lcd.printString(buff, 0, 0);
-    sprintf(buff, "pitch: %d  ", sSequence[currentNote].pitch);
+    sprintf(buff, "pitch: %d  ", sequence[currentStep].getPitch());
     Lcd.printString(buff, 0, 1);
-    sprintf(buff, "octave: %d  " ,sSequence[currentNote].octave);
+    sprintf(buff, "octave: %d  " ,sequence[currentStep].getOctave());
     Lcd.printString(buff, 0, 2);
     sprintf(buff, "%1d %1d %1d %1d %3d", 
-        sSequence[currentNote].noteOn, sSequence[currentNote].tie, sSequence[currentNote].accent,
+        sequence[currentStep].noteOn, sequence[currentStep].tie, sequence[currentStep].accent,
         isRunning, sequenceSender.getWaveShape());
     Lcd.printString(buff, 0, 3);
     sprintf(buff, "%3d %3d %3d", 
@@ -108,35 +101,35 @@
 //------------------------------------------------------------------------
 void swOctaveUpPressed()
 {
-    sSequence[currentNote].octave++;
+    sequence[currentStep].setOctave(sequence[currentStep].getOctave() + 1);
     isDirty = true;
     printf("swOctaveUpPressed\r\n");
 }
 
 void swOctaveDownPressed()
 {
-    sSequence[currentNote].octave--;
+    sequence[currentStep].setOctave(sequence[currentStep].getOctave() - 1);
     isDirty = true;
     printf("swOctaveDownPressed\r\n");
 }
 
 void swNoteOnOffPressed()
 {
-    sSequence[currentNote].noteOn = !sSequence[currentNote].noteOn;
+    sequence[currentStep].noteOn = !sequence[currentStep].noteOn;
     isDirty = true;
     printf("swNoteOnOffPressed\r\n");
 }
 
 void swTiePressed()
 {
-    sSequence[currentNote].tie = !sSequence[currentNote].tie;
+    sequence[currentStep].tie = !sequence[currentStep].tie;
     isDirty = true;
     printf("swTiePressed\r\n");
 }
 
 void swAccentPressed()
 {
-    sSequence[currentNote].accent = !sSequence[currentNote].accent;
+    sequence[currentStep].accent = !sequence[currentStep].accent;
     isDirty = true;
     printf("swAccentPressed\r\n");
 }
@@ -167,14 +160,14 @@
 void pollingRotEncs(void const *argument)
 {
     while (true) {
-        int _note = RotEnc1.getVal();
-        if (_note != currentNote) {
-            currentNote = _note;
+        int _step = RotEnc1.getVal();
+        if (_step != currentStep) {
+            currentStep = _step;
             isDirty = true;
         }
         int _pitch = RotEnc2.getVal();
-        if (_pitch != sSequence[currentNote].pitch) {
-            sSequence[currentNote].pitch = _pitch;
+        if (_pitch != sequence[currentStep].getPitch()) {
+            sequence[currentStep].setPitch(_pitch);
             isDirty = true;
         }
         Thread::wait(10);