Test program for BaseMachineUIController Library

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

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?

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 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 }