Test program for BaseMachineUIController Library

Dependencies:   AverageAnalogIn BaseMachineUIController ExioBufferdController MCP23S17 PinDetect RotaryEncoder Sequence SequencerDisplay mbed-rtos mbed st7567LCD AT24C1024

Committer:
ryood
Date:
Sun Nov 06 23:25:33 2016 +0000
Revision:
2:354ca389e975
Parent:
1:46e088b12083
Child:
3:97e89dad2a44
Impl. bpm

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ryood 0:f3abbd84d67f 1 /*
ryood 0:f3abbd84d67f 2 * main.cpp
ryood 0:f3abbd84d67f 3 * BaseMachineUIController Test
ryood 0:f3abbd84d67f 4 *
ryood 0:f3abbd84d67f 5 * mbed Rev 121 / mbed-rtos Rev 117
ryood 0:f3abbd84d67f 6 *
ryood 0:f3abbd84d67f 7 * 2016.11.06 Created
ryood 0:f3abbd84d67f 8 *
ryood 0:f3abbd84d67f 9 */
ryood 0:f3abbd84d67f 10
ryood 0:f3abbd84d67f 11 #include "mbed.h"
ryood 0:f3abbd84d67f 12 #include "rtos.h"
ryood 0:f3abbd84d67f 13
ryood 0:f3abbd84d67f 14 #define UART_TRACE (0)
ryood 0:f3abbd84d67f 15 #include "BaseMachineUIController.h"
ryood 0:f3abbd84d67f 16
ryood 2:354ca389e975 17 const int samplingRate = 1;
ryood 2:354ca389e975 18
ryood 0:f3abbd84d67f 19 BaseMachineUIController UIController;
ryood 0:f3abbd84d67f 20
ryood 0:f3abbd84d67f 21 uint8_t step = 0;
ryood 0:f3abbd84d67f 22 int isStepChanged = false;
ryood 0:f3abbd84d67f 23 bool isRunning = false;
ryood 0:f3abbd84d67f 24
ryood 2:354ca389e975 25 int bpm = 125;
ryood 2:354ca389e975 26 uint32_t tick = 0;
ryood 2:354ca389e975 27 int noteLen;
ryood 2:354ca389e975 28
ryood 2:354ca389e975 29 void setNoteLen()
ryood 2:354ca389e975 30 {
ryood 2:354ca389e975 31 noteLen = 15000 / ((long)bpm * samplingRate);
ryood 2:354ca389e975 32 }
ryood 2:354ca389e975 33
ryood 0:f3abbd84d67f 34 void stepUp(void const* args)
ryood 0:f3abbd84d67f 35 {
ryood 2:354ca389e975 36 tick++;
ryood 2:354ca389e975 37 if (tick == noteLen) {
ryood 2:354ca389e975 38 tick = 0;
ryood 2:354ca389e975 39 if (isRunning) {
ryood 2:354ca389e975 40 step++;
ryood 2:354ca389e975 41 if (step == 16)
ryood 2:354ca389e975 42 {
ryood 2:354ca389e975 43 step = 0;
ryood 2:354ca389e975 44 }
ryood 2:354ca389e975 45 UIController.setPlayingStep(step);
ryood 0:f3abbd84d67f 46 }
ryood 0:f3abbd84d67f 47 }
ryood 0:f3abbd84d67f 48 }
ryood 0:f3abbd84d67f 49
ryood 0:f3abbd84d67f 50 int main()
ryood 0:f3abbd84d67f 51 {
ryood 0:f3abbd84d67f 52 #if (UART_TRACE)
ryood 0:f3abbd84d67f 53 printf("*** BaseMachineUIController Test***\r\n");
ryood 0:f3abbd84d67f 54 #endif
ryood 0:f3abbd84d67f 55
ryood 0:f3abbd84d67f 56 UIController.init();
ryood 0:f3abbd84d67f 57
ryood 0:f3abbd84d67f 58 RtosTimer stepTimer(stepUp, osTimerPeriodic, (void *)0);
ryood 2:354ca389e975 59 stepTimer.start(samplingRate);
ryood 2:354ca389e975 60 setNoteLen();
ryood 0:f3abbd84d67f 61
ryood 0:f3abbd84d67f 62 while (true)
ryood 0:f3abbd84d67f 63 {
ryood 0:f3abbd84d67f 64 UIController.update();
ryood 0:f3abbd84d67f 65
ryood 1:46e088b12083 66 isRunning = UIController.getIsRunning();
ryood 2:354ca389e975 67 bpm = UIController.getBpm();
ryood 2:354ca389e975 68 setNoteLen();
ryood 1:46e088b12083 69
ryood 0:f3abbd84d67f 70 OscillatorParam osc;
ryood 0:f3abbd84d67f 71 UIController.getOscillatorParam(&osc);
ryood 0:f3abbd84d67f 72
ryood 0:f3abbd84d67f 73 FilterParam flt;
ryood 0:f3abbd84d67f 74 UIController.getFilterParam(&flt);
ryood 0:f3abbd84d67f 75
ryood 0:f3abbd84d67f 76 EnvelopeParam env;
ryood 0:f3abbd84d67f 77 UIController.getEnvelopeParam(&env);
ryood 0:f3abbd84d67f 78
ryood 1:46e088b12083 79 int accentLevel = UIController.getAccentLevel();
ryood 0:f3abbd84d67f 80
ryood 0:f3abbd84d67f 81 #if (UART_TRACE)
ryood 0:f3abbd84d67f 82 printf("%d %d ", osc.waveShape, osc.pulseWidth);
ryood 0:f3abbd84d67f 83 printf("%d %d ", flt.cutoff, flt.resonance);
ryood 0:f3abbd84d67f 84 printf("%d %d %d %d %d ", env.level, env.length, env.duration, env.decay, env.sustain);
ryood 1:46e088b12083 85 printf("%d %d\r\n", bpm, accentLevel);
ryood 0:f3abbd84d67f 86 #endif
ryood 0:f3abbd84d67f 87 }
ryood 0:f3abbd84d67f 88 }