Nucleo Sequencer of my Base Machine
Dependencies: Amp AverageAnalogIn Envelope FilterController Sequence BaseMachineComon mbed-rtos mbed
Fork of SpiSequenceSender_Test by
Diff: main.cpp
- Revision:
- 12:c248781608af
- Parent:
- 11:42ba71e533ba
- Child:
- 13:b0f988a239df
diff -r 42ba71e533ba -r c248781608af main.cpp --- 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() + ); } }