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