Test program for BaseMachineUIController Library
Dependencies: AverageAnalogIn BaseMachineUIController ExioBufferdController MCP23S17 PinDetect RotaryEncoder Sequence SequencerDisplay mbed-rtos mbed st7567LCD AT24C1024
main.cpp@3:97e89dad2a44, 2016-11-07 (annotated)
- Committer:
- ryood
- Date:
- Mon Nov 07 00:32:22 2016 +0000
- Revision:
- 3:97e89dad2a44
- Parent:
- 2:354ca389e975
- Child:
- 4:f79bf2806617
Add: getSequences()
Who changed what in which revision?
User | Revision | Line number | New 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 | 3:97e89dad2a44 | 14 | #define UART_TRACE (1) |
ryood | 0:f3abbd84d67f | 15 | #include "BaseMachineUIController.h" |
ryood | 3:97e89dad2a44 | 16 | #include "Sequence.h" |
ryood | 0:f3abbd84d67f | 17 | |
ryood | 2:354ca389e975 | 18 | const int samplingRate = 1; |
ryood | 2:354ca389e975 | 19 | |
ryood | 0:f3abbd84d67f | 20 | BaseMachineUIController UIController; |
ryood | 0:f3abbd84d67f | 21 | |
ryood | 0:f3abbd84d67f | 22 | uint8_t step = 0; |
ryood | 0:f3abbd84d67f | 23 | int isStepChanged = false; |
ryood | 0:f3abbd84d67f | 24 | bool isRunning = false; |
ryood | 0:f3abbd84d67f | 25 | |
ryood | 2:354ca389e975 | 26 | int bpm = 125; |
ryood | 2:354ca389e975 | 27 | uint32_t tick = 0; |
ryood | 2:354ca389e975 | 28 | int noteLen; |
ryood | 2:354ca389e975 | 29 | |
ryood | 2:354ca389e975 | 30 | void setNoteLen() |
ryood | 2:354ca389e975 | 31 | { |
ryood | 2:354ca389e975 | 32 | noteLen = 15000 / ((long)bpm * samplingRate); |
ryood | 2:354ca389e975 | 33 | } |
ryood | 2:354ca389e975 | 34 | |
ryood | 0:f3abbd84d67f | 35 | void stepUp(void const* args) |
ryood | 0:f3abbd84d67f | 36 | { |
ryood | 2:354ca389e975 | 37 | tick++; |
ryood | 2:354ca389e975 | 38 | if (tick == noteLen) { |
ryood | 2:354ca389e975 | 39 | tick = 0; |
ryood | 2:354ca389e975 | 40 | if (isRunning) { |
ryood | 2:354ca389e975 | 41 | step++; |
ryood | 2:354ca389e975 | 42 | if (step == 16) |
ryood | 2:354ca389e975 | 43 | { |
ryood | 2:354ca389e975 | 44 | step = 0; |
ryood | 2:354ca389e975 | 45 | } |
ryood | 2:354ca389e975 | 46 | UIController.setPlayingStep(step); |
ryood | 0:f3abbd84d67f | 47 | } |
ryood | 0:f3abbd84d67f | 48 | } |
ryood | 0:f3abbd84d67f | 49 | } |
ryood | 0:f3abbd84d67f | 50 | |
ryood | 0:f3abbd84d67f | 51 | int main() |
ryood | 0:f3abbd84d67f | 52 | { |
ryood | 0:f3abbd84d67f | 53 | #if (UART_TRACE) |
ryood | 0:f3abbd84d67f | 54 | printf("*** BaseMachineUIController Test***\r\n"); |
ryood | 0:f3abbd84d67f | 55 | #endif |
ryood | 0:f3abbd84d67f | 56 | |
ryood | 0:f3abbd84d67f | 57 | UIController.init(); |
ryood | 0:f3abbd84d67f | 58 | |
ryood | 0:f3abbd84d67f | 59 | RtosTimer stepTimer(stepUp, osTimerPeriodic, (void *)0); |
ryood | 2:354ca389e975 | 60 | stepTimer.start(samplingRate); |
ryood | 2:354ca389e975 | 61 | setNoteLen(); |
ryood | 0:f3abbd84d67f | 62 | |
ryood | 0:f3abbd84d67f | 63 | while (true) |
ryood | 0:f3abbd84d67f | 64 | { |
ryood | 0:f3abbd84d67f | 65 | UIController.update(); |
ryood | 0:f3abbd84d67f | 66 | |
ryood | 1:46e088b12083 | 67 | isRunning = UIController.getIsRunning(); |
ryood | 2:354ca389e975 | 68 | bpm = UIController.getBpm(); |
ryood | 2:354ca389e975 | 69 | setNoteLen(); |
ryood | 1:46e088b12083 | 70 | |
ryood | 3:97e89dad2a44 | 71 | Sequence sequences[SEQUENCE_N]; |
ryood | 3:97e89dad2a44 | 72 | UIController.getSequences(&sequences); |
ryood | 3:97e89dad2a44 | 73 | |
ryood | 0:f3abbd84d67f | 74 | OscillatorParam osc; |
ryood | 0:f3abbd84d67f | 75 | UIController.getOscillatorParam(&osc); |
ryood | 0:f3abbd84d67f | 76 | |
ryood | 0:f3abbd84d67f | 77 | FilterParam flt; |
ryood | 0:f3abbd84d67f | 78 | UIController.getFilterParam(&flt); |
ryood | 0:f3abbd84d67f | 79 | |
ryood | 0:f3abbd84d67f | 80 | EnvelopeParam env; |
ryood | 0:f3abbd84d67f | 81 | UIController.getEnvelopeParam(&env); |
ryood | 0:f3abbd84d67f | 82 | |
ryood | 1:46e088b12083 | 83 | int accentLevel = UIController.getAccentLevel(); |
ryood | 0:f3abbd84d67f | 84 | |
ryood | 0:f3abbd84d67f | 85 | #if (UART_TRACE) |
ryood | 0:f3abbd84d67f | 86 | printf("%d %d ", osc.waveShape, osc.pulseWidth); |
ryood | 0:f3abbd84d67f | 87 | printf("%d %d ", flt.cutoff, flt.resonance); |
ryood | 0:f3abbd84d67f | 88 | printf("%d %d %d %d %d ", env.level, env.length, env.duration, env.decay, env.sustain); |
ryood | 1:46e088b12083 | 89 | printf("%d %d\r\n", bpm, accentLevel); |
ryood | 3:97e89dad2a44 | 90 | for (int i = 0; i < SEQUENCE_N; i++) { |
ryood | 3:97e89dad2a44 | 91 | printf("%d %d %d %d %d %u\r\n", |
ryood | 3:97e89dad2a44 | 92 | i, |
ryood | 3:97e89dad2a44 | 93 | sequences[i].isNoteOn(), |
ryood | 3:97e89dad2a44 | 94 | sequences[i].getPitch(), |
ryood | 3:97e89dad2a44 | 95 | sequences[i].isTie(), |
ryood | 3:97e89dad2a44 | 96 | sequences[i].isAccent(), |
ryood | 3:97e89dad2a44 | 97 | (sequences[i].getFrequency10()) >> 16 |
ryood | 3:97e89dad2a44 | 98 | ); |
ryood | 3:97e89dad2a44 | 99 | } |
ryood | 0:f3abbd84d67f | 100 | #endif |
ryood | 0:f3abbd84d67f | 101 | } |
ryood | 0:f3abbd84d67f | 102 | } |