Test program for BaseMachineUIController Library

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

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?

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