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

Dependencies:   mbed

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?

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