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

Revision:
0:f6a989e8125b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Sun Dec 21 23:41:13 2014 +0000
@@ -0,0 +1,56 @@
+#include "mbed.h"
+#include "MIDI_sub3.h"
+
+int main(){
+    int i, j, k, p;
+    unsigned char adc_new;
+    i = j = k = p = 0;
+    rx_top = rx_end = tx_top = tx_end = adc_no = 0; 
+    MIDI.baud(31250);
+    MIDI.attach(&rx_fifoset, MIDI.RxIrq);
+    LatchPulse.write(0x01F8);
+    TriggerOut.write(0xF000);
+    trigger_status = 0;
+    for(i=0; i<6; i++) DAC_out(i,0);
+    for(i=0; i<10; i++) adc_old[i] = 0;
+    while(1){
+        if(++p > 10000){
+            p = 0;
+            if(++adc_no > 9) adc_no = 0;
+            adc_new = ADC_get(adc_no);
+            if(adc_old[adc_no] != adc_new){
+                adc_old[adc_no] = adc_new;
+                tx_fifoset(0xBF);
+                tx_fifoset(adc_no);
+                tx_fifoset(adc_new);
+            }
+        }
+        tx_fifo_check();
+        if(rx_fifo_check() == 1){
+            switch(midi_message>>20){
+                case 0x0B:
+                    if(((midi_message>>16) & 0x0F) == 0){
+                        k = (midi_message>>8) & 0x7F;
+                        if(k < 6){
+                            DAC_out(k, (midi_message & 0x7F)<<1);
+                        }
+                    }
+                    else if(((midi_message>>16) & 0x0F) == 1){
+                        k = (midi_message>>8) & 0x7F;
+                        if(k < 4){
+                            Trigger_send(k, (midi_message & 0x7F));
+                        }
+                    }
+                    break;
+                case 0x0C:
+                    tx_fifoset(midi_message>>16);
+                    tx_fifoset((midi_message>>8) & 0x7F);
+                    break;
+            }         
+        }
+        if(++j > 1000000){
+            j = 0;
+            myled = !myled;
+        }
+    }
+}
\ No newline at end of file