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