OSCtoCV Library

Dependents:   OSCtoCVConverter

Revision:
5:abe335652add
Parent:
4:fe335dc8d53d
Child:
6:7fb15b1b5459
--- a/OSCtoCV_Sequencer.cpp	Tue Feb 16 11:31:12 2016 +0000
+++ b/OSCtoCV_Sequencer.cpp	Thu Feb 18 13:26:48 2016 +0000
@@ -16,7 +16,7 @@
     static bool stepFoward = false;
     static bool _reset = false;
     static uint8_t currentStep;
-    static int _resetCount, resetCount;
+    static int resetCount;
     static uint8_t gateMode;
     static uint8_t _gateMode[16];
     static uint8_t ch;
@@ -98,6 +98,8 @@
             break;
     }
     
+    CheckAnalogMode();
+    
     if (!gCtrlSW[4]) 
     { 
         jitter = 0;
@@ -191,16 +193,7 @@
             resetCount = gCtrl[4] * 15;
         }
         
-        if (_resetCount != resetCount)
-        {
-            sendMes.setTopAddress(RESET_COUNTER_ADDRESS);
-            sendMes.setArgs("i", (resetCount + 1));
-            osc.sendOsc(&sendMes);
-            
-            sendMes.setTopAddress("/ctrl5");
-            sendMes.setArgs("f", gCtrl[4]);
-            osc.sendOsc(&sendMes);
-        }
+        CheckResetCount(resetCount, SHIFTSEQ);
         
         if (currentStep > resetCount)  // reset
         {
@@ -262,7 +255,7 @@
     static bool _reset = false;
     static uint8_t currentStep;
     static int stepCount;
-    static int _resetCount, resetCount;
+    static int resetCount;
     static uint8_t gateMode;
     static uint8_t _gateMode[8];
     static uint8_t _pulseCount[8];
@@ -346,6 +339,8 @@
             break;
     }
     
+    CheckAnalogMode();
+        
     if (!gCtrlSW[4]) 
     { 
         jitter = 0;
@@ -455,16 +450,7 @@
                 resetCount = gCtrl[5] * 7;
             }
         
-            if (_resetCount != resetCount)
-            {
-                sendMes.setTopAddress(RESET185_COUNTER_ADDRESS);
-                sendMes.setArgs("i", (resetCount + 1));
-                osc.sendOsc(&sendMes);
-                
-                sendMes.setTopAddress("/ctrl6");
-                sendMes.setArgs("f", gCtrl[5]);
-                osc.sendOsc(&sendMes);
-            }
+            CheckResetCount(resetCount, M185SEQ);
 
             if (currentStep > resetCount) // reset
             {
@@ -518,7 +504,7 @@
     static bool _reset = false;
     static uint8_t currentStep;
     static int stepCount;
-    static int _resetCount, resetCount;
+    static int resetCount;
     static uint8_t gateMode;
     static uint8_t _gateMode[8];
     static uint8_t _pulseCount[8];
@@ -602,6 +588,8 @@
             break;
     }
     
+    CheckAnalogMode();
+    
     if (!gCtrlSW[4]) 
     { 
         jitter = 0;
@@ -711,16 +699,7 @@
                 resetCount = gCtrl[5] * 7;
             }
         
-            if (_resetCount != resetCount)
-            {   
-                sendMes.setTopAddress(RESET185_COUNTER_ADDRESS);
-                sendMes.setArgs("i", (resetCount + 1));
-                osc.sendOsc(&sendMes);
-                
-                sendMes.setTopAddress("/ctrl6");
-                sendMes.setArgs("f", gCtrl[5]);
-                osc.sendOsc(&sendMes);
-            }
+            CheckResetCount(resetCount, M185SEQ);
 
             if (currentStep > resetCount) // reset
             {
@@ -763,7 +742,7 @@
     static bool _reset = false;
     static uint8_t currentStep;
     static int stepCount;
-    static int _resetCount, resetCount;
+    static int resetCount;
     static uint8_t _pulseCount[8];
     static uint8_t ch;
     static float decay[8] = {1};
@@ -862,16 +841,7 @@
                 resetCount = gCtrl[7] * 15;
             }
         
-            if (_resetCount != resetCount)
-            {
-                sendMes.setTopAddress(BEATS_COUNTER_ADDRESS);
-                sendMes.setArgs("i", (resetCount + 1));
-                osc.sendOsc(&sendMes);
-                
-                sendMes.setTopAddress("/ctrl8");
-                sendMes.setArgs("f", gCtrl[7]);
-                osc.sendOsc(&sendMes);
-            }
+            CheckResetCount(resetCount, BEATSSEQ);
 
             if (currentStep > resetCount) // reset
             {
@@ -951,6 +921,87 @@
 }
 
 //-------------------------------------------------------------
+// check reset count & send osc
+
+void CheckResetCount(uint8_t resetCount, uint8_t mode)
+{
+    static uint8_t _resetCountShift, _resetCount185, _resetCountBeats;
+    
+    switch (mode)
+    {
+        case SHIFTSEQ:
+        
+            if (_resetCountShift != resetCount)
+            {
+                sendMes.setTopAddress(RESET_COUNTER_ADDRESS);
+                sendMes.setArgs("i", (resetCount + 1));
+                osc.sendOsc(&sendMes);
+        
+                sendMes.setTopAddress("/ctrl5");
+                sendMes.setArgs("f", gCtrl[4]);
+                osc.sendOsc(&sendMes);
+                
+                _resetCountShift = resetCount;
+            }
+            break;
+        
+        case M185SEQ:
+        
+            if (_resetCount185 != resetCount)
+            {   
+                sendMes.setTopAddress(RESET185_COUNTER_ADDRESS);
+                sendMes.setArgs("i", (resetCount + 1));
+                osc.sendOsc(&sendMes);
+
+                sendMes.setTopAddress("/ctrl6");
+                sendMes.setArgs("f", gCtrl[5]);
+                osc.sendOsc(&sendMes);
+    
+                _resetCount185 = resetCount;
+            }
+            break;
+        
+        case BEATSSEQ:
+        
+            if (_resetCountBeats != resetCount)
+            {
+                sendMes.setTopAddress(BEATS_COUNTER_ADDRESS);
+                sendMes.setArgs("i", (resetCount + 1));
+                osc.sendOsc(&sendMes);
+        
+                sendMes.setTopAddress("/ctrl8");
+                sendMes.setArgs("f", gCtrl[7]);
+                osc.sendOsc(&sendMes);
+                
+                _resetCountBeats = resetCount;
+            }
+            break;
+            
+        default:
+            break;
+    }
+    
+}
+
+//-------------------------------------------------------------
+// check analog mode & send osc
+
+inline void CheckAnalogMode()
+{
+    static bool _analogMode;
+    
+    if (_analogMode != gCtrlSW[4])
+    {
+        sendMes.setTopAddress("/ctrlsw5");
+        sendMes.setArgs("i", gCtrlSW[4]);
+        osc.sendOsc(&sendMes);
+        
+        _analogMode = gCtrlSW[4];
+    }
+    
+}
+
+//-------------------------------------------------------------
 // Send Sequencer Status to touchOSC
 
 void SendCtrlState(uint8_t step, uint8_t gateMode, uint8_t stepCount, uint8_t mode)