NucleoF401RE MIDI - 10ch A/D, 6ch D/A, 6ch Triggers Controller for LittleBitsSynth in [http://nagasm.org/ASL/mbed3/] "MIDI_test_03" circuit - http://nagasm.org/ASL/mbed3/fig1/circuit2.jpg
main.cpp@0:f6a989e8125b, 2014-12-21 (annotated)
- Committer:
- nagasm
- Date:
- Sun Dec 21 23:41:13 2014 +0000
- Revision:
- 0:f6a989e8125b
NucleoF401RE MIDI - 10ch A/D, 6ch D/A, 6ch Triggers Controller; for LittleBitsSynth; in [http://nagasm.org/ASL/mbed3/]; "MIDI_test_03"; circuit - http://nagasm.org/ASL/mbed3/fig1/circuit2.jpg
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
nagasm | 0:f6a989e8125b | 1 | #include "mbed.h" |
nagasm | 0:f6a989e8125b | 2 | #include "MIDI_sub3.h" |
nagasm | 0:f6a989e8125b | 3 | |
nagasm | 0:f6a989e8125b | 4 | int main(){ |
nagasm | 0:f6a989e8125b | 5 | int i, j, k, p; |
nagasm | 0:f6a989e8125b | 6 | unsigned char adc_new; |
nagasm | 0:f6a989e8125b | 7 | i = j = k = p = 0; |
nagasm | 0:f6a989e8125b | 8 | rx_top = rx_end = tx_top = tx_end = adc_no = 0; |
nagasm | 0:f6a989e8125b | 9 | MIDI.baud(31250); |
nagasm | 0:f6a989e8125b | 10 | MIDI.attach(&rx_fifoset, MIDI.RxIrq); |
nagasm | 0:f6a989e8125b | 11 | LatchPulse.write(0x01F8); |
nagasm | 0:f6a989e8125b | 12 | TriggerOut.write(0xF000); |
nagasm | 0:f6a989e8125b | 13 | trigger_status = 0; |
nagasm | 0:f6a989e8125b | 14 | for(i=0; i<6; i++) DAC_out(i,0); |
nagasm | 0:f6a989e8125b | 15 | for(i=0; i<10; i++) adc_old[i] = 0; |
nagasm | 0:f6a989e8125b | 16 | while(1){ |
nagasm | 0:f6a989e8125b | 17 | if(++p > 10000){ |
nagasm | 0:f6a989e8125b | 18 | p = 0; |
nagasm | 0:f6a989e8125b | 19 | if(++adc_no > 9) adc_no = 0; |
nagasm | 0:f6a989e8125b | 20 | adc_new = ADC_get(adc_no); |
nagasm | 0:f6a989e8125b | 21 | if(adc_old[adc_no] != adc_new){ |
nagasm | 0:f6a989e8125b | 22 | adc_old[adc_no] = adc_new; |
nagasm | 0:f6a989e8125b | 23 | tx_fifoset(0xBF); |
nagasm | 0:f6a989e8125b | 24 | tx_fifoset(adc_no); |
nagasm | 0:f6a989e8125b | 25 | tx_fifoset(adc_new); |
nagasm | 0:f6a989e8125b | 26 | } |
nagasm | 0:f6a989e8125b | 27 | } |
nagasm | 0:f6a989e8125b | 28 | tx_fifo_check(); |
nagasm | 0:f6a989e8125b | 29 | if(rx_fifo_check() == 1){ |
nagasm | 0:f6a989e8125b | 30 | switch(midi_message>>20){ |
nagasm | 0:f6a989e8125b | 31 | case 0x0B: |
nagasm | 0:f6a989e8125b | 32 | if(((midi_message>>16) & 0x0F) == 0){ |
nagasm | 0:f6a989e8125b | 33 | k = (midi_message>>8) & 0x7F; |
nagasm | 0:f6a989e8125b | 34 | if(k < 6){ |
nagasm | 0:f6a989e8125b | 35 | DAC_out(k, (midi_message & 0x7F)<<1); |
nagasm | 0:f6a989e8125b | 36 | } |
nagasm | 0:f6a989e8125b | 37 | } |
nagasm | 0:f6a989e8125b | 38 | else if(((midi_message>>16) & 0x0F) == 1){ |
nagasm | 0:f6a989e8125b | 39 | k = (midi_message>>8) & 0x7F; |
nagasm | 0:f6a989e8125b | 40 | if(k < 4){ |
nagasm | 0:f6a989e8125b | 41 | Trigger_send(k, (midi_message & 0x7F)); |
nagasm | 0:f6a989e8125b | 42 | } |
nagasm | 0:f6a989e8125b | 43 | } |
nagasm | 0:f6a989e8125b | 44 | break; |
nagasm | 0:f6a989e8125b | 45 | case 0x0C: |
nagasm | 0:f6a989e8125b | 46 | tx_fifoset(midi_message>>16); |
nagasm | 0:f6a989e8125b | 47 | tx_fifoset((midi_message>>8) & 0x7F); |
nagasm | 0:f6a989e8125b | 48 | break; |
nagasm | 0:f6a989e8125b | 49 | } |
nagasm | 0:f6a989e8125b | 50 | } |
nagasm | 0:f6a989e8125b | 51 | if(++j > 1000000){ |
nagasm | 0:f6a989e8125b | 52 | j = 0; |
nagasm | 0:f6a989e8125b | 53 | myled = !myled; |
nagasm | 0:f6a989e8125b | 54 | } |
nagasm | 0:f6a989e8125b | 55 | } |
nagasm | 0:f6a989e8125b | 56 | } |