BaseMachine UI Controllerに分離

Dependencies:   AverageAnalogIn PinDetect RotaryEncoder Sequence SequencerDisplay mbed-rtos mbed st7567LCD BaseMachineComon

Fork of BaseMachine_Sequencer by Ryo Od

Revision:
12:c248781608af
Parent:
11:42ba71e533ba
Child:
13:b0f988a239df
--- a/main.cpp	Sun Jun 26 10:19:32 2016 +0000
+++ b/main.cpp	Sat Jul 16 08:20:45 2016 +0000
@@ -5,6 +5,7 @@
 #include "SpiSequenceSender.h"
 #include "EnvelopeGenerator.h"
 #include "SpiAmpController.h"
+#include "SpiFilterController.h"
 
 #define SEQUENCE_N  (16)
 #define SPI_RATE    (8000000)
@@ -17,6 +18,8 @@
 AnalogIn durationIn(A1);
 AnalogIn decayIn(A2);
 AnalogIn sustainIn(A3);
+AnalogIn cutoffIn(PC_0);
+AnalogIn resonanceIn(PC_2);
 
 SPI spiMaster(SPI_MOSI, SPI_MISO, SPI_SCK);
 
@@ -27,20 +30,7 @@
 EnvelopeGenerator envelopeGenerator;
 SpiAmpController ampController(&spiMaster, D8, D7);
 
-
-class TestClass {
-public:
-    void callbackFunction(int ticks)
-    {
-        if (ticks == 0) {
-            envelopeGenerator.init(envelope);
-        }
-        uint16_t level = envelopeGenerator.getModLevel();
-        //printf("m,%d\r\n", level);
-        ampController.outDca(level);
-        envelopeGenerator.update();
-    }
-} testClass;
+SpiFilterController filterController(&spiMaster, D10);
 
 void callbackFunction(int ticks)
 {
@@ -51,6 +41,8 @@
     //printf("g,%d\r\n", level);
     ampController.outDca(level);
     envelopeGenerator.update();
+    
+    filterController.outDCF();
 }
 
 int main()
@@ -68,15 +60,15 @@
         seq.tie = true;
     }
 
-    sequence[3].setOctave(2);
-    sequence[7].setOctave(1);
+    sequence[3].setOctave(0);
+    sequence[7].setOctave(0);
     sequence[11].setOctave(0);
-    sequence[15].setOctave(1);
+    sequence[15].setOctave(0);
     
     envelopeGenerator.init(envelope);
-    
-    sequenceSender.attachUpdate(&testClass, &TestClass::callbackFunction);
-    //sequenceSender.attachUpdate(&callbackFunction);
+
+    sequenceSender.attachUpdate(&callbackFunction);
+    sequenceSender.setWaveShape(SpiSequenceSender::WAVESHAPE_SAW);
     sequenceSender.run(0);
     
     for (;;) {
@@ -91,5 +83,17 @@
         envelope.setDuration(durationIn * envelopeLength);
         envelope.setDecay(decayIn * envelopeLength);
         envelope.setSustain(sustainIn * 4095);
+        
+        filterController.setCutoff(cutoffIn * 255);
+        filterController.setResonance(resonanceIn * 255);
+        
+        printf("%d\t%d\t%d\t%d\t%d\t%d\r\n",
+            filterController.getCutoff(),
+            filterController.getResonance(),
+            envelope.getLevel(),
+            envelope.getDuration(),
+            envelope.getDecay(),
+            envelope.getSustain()
+        );
     }
 }