BaseMachine Sequencer

Dependencies:   Amp AverageAnalogIn BaseMachineUIController Envelope ExioBufferdController FilterController MCP23S17 PinDetect RotaryEncoder Sequence SequencerDisplay mbed-rtos mbed st7567LCD AT24C1024 OscController

Revision:
21:0bbca9e3ba30
Parent:
20:bc7bd7faa8d5
Child:
22:4b8cfeae6623
--- a/main.cpp	Mon Feb 13 15:52:24 2017 +0000
+++ b/main.cpp	Mon Feb 13 20:15:45 2017 +0000
@@ -16,8 +16,9 @@
 #define UART_TRACE  (0)
 #include "BaseMachineCommon.h"
 #include "BaseMachineUIController.h"
-#include "SpiSequenceSender.h"
+#include "SequenceSender.h"
 #include "EnvelopeGenerator.h"
+#include "SpiOscController.h"
 #include "SpiAmpController.h"
 #include "SpiFilterController.h"
 
@@ -27,7 +28,6 @@
 const int samplingPeriod = 1;   // ms
 const int bpm = 120;
 const int envelopeLength = (60 * 1000 / (bpm * 4)) / samplingPeriod;
-const int waveShape = SpiSequenceSender::WAVESHAPE_SQUARE;
 
 // Devices
 //
@@ -38,10 +38,12 @@
 DigitalOut SpiMasterReset(PB_10, 0);
 
 Sequence sequences[SEQUENCE_N];
-SpiSequenceSender SequenceSender(&SpiMaster, D9, sequences, SEQUENCE_N, samplingPeriod, bpm);
+SequenceSender SequenceSender(sequences, SEQUENCE_N, samplingPeriod, bpm);
 
 Envelope envelope(4095, envelopeLength, envelopeLength*3/4, envelopeLength/2, 2047);
 EnvelopeGenerator EnvelopeGenerator;
+
+SpiOscController OscController(&SpiMaster, D9);
 SpiAmpController AmpController(&SpiMaster, D8, D7);
 
 SpiFilterController FilterController(&SpiMaster, D10);
@@ -74,6 +76,9 @@
         AmpController.outDca(0);
     }
     
+    OscController.setFrequency10(SequenceSender.getFrequency10());
+    OscController.outDco();
+    
     FilterController.outDcf();
     
     if (ticks == 0)
@@ -97,8 +102,8 @@
 
     OscillatorParam osc;
     UIController.getOscillatorParam(&osc);
-    SequenceSender.setWaveShape(osc.waveShape);
-    SequenceSender.setPulseWidth(osc.pulseWidth << 1);
+    OscController.setWaveShape(osc.waveShape);
+    OscController.setPulseWidth(osc.pulseWidth << 1);
 
     FilterParam flt;
     UIController.getFilterParam(&flt);
@@ -160,7 +165,6 @@
     EnvelopeGenerator.init(envelope);
 
     SequenceSender.attachUpdate(&updateTicks);
-    SequenceSender.setWaveShape(waveShape);
 
     //--------------------------------------------------------------------
     // Main loop