a MIDI-to-Morse code application.

Dependencies:   MIDI REnc button mbed morse

Files at this revision

API Documentation at this revision

Comitter:
ChuckTimber
Date:
Sat Jul 26 22:49:43 2014 +0000
Parent:
8:96f4614a46ba
Child:
10:57bbdc516590
Commit message:
rotary encoder introduced

Changed in this revision

REnc.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
morse.lib Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/REnc.lib	Sat Jul 26 22:49:43 2014 +0000
@@ -0,0 +1,1 @@
+REnc#c905f9e6866f
--- a/main.cpp	Sat Jul 19 09:43:12 2014 +0000
+++ b/main.cpp	Sat Jul 26 22:49:43 2014 +0000
@@ -1,18 +1,23 @@
 #include "mbed.h"
 #include "button.h"
+#include "REnc.h"
 #include "morse.h"
 #include "MIDI.h"
 
+// alphabet 26-charactor + 1-space
 char* codes[] = { ".-", "-...", "-.-.", "-..", ".",
                   "..-.", "--.", "....", "..", ".---",
                   "-.-", ".-..", "--", "-.", "---",
                   ".--.", "--.-", ".-.", "...", "-",
                   "..-", "...-", ".--", "-..-", "-.--", "--..", " "
                 };
+
+// 10-number
 char* nums[] = { "-----", ".----", "..---", "...--", "....-",
                  ".....", "-....", "--...", "---..", "----."
                };
 
+// 15-marks
 char* marks[] = { ".-.-.-",  // '.'
                   "--..--",  // ','
                   "..--..",  // '?'
@@ -30,23 +35,27 @@
                   "........" // 'HH'
                 };
 
-float rate[] = { 0.50000000, 0.50544464, 0.51094857, 0.51651244, 0.52213689, 0.52782259, 0.53357020, 0.53938040, 
-                 0.54525387, 0.55119129, 0.55719337, 0.56326081, 0.56939432, 0.57559461, 0.58186243, 0.58819850,
-                 0.59460356, 0.60107837, 0.60762368, 0.61424027, 0.62092891, 0.62769038, 0.63452548, 0.64143501,
-                 0.64841978, 0.65548061, 0.66261832, 0.66983376, 0.67712777, 0.68450121, 0.69195494, 0.69948984,
-                 0.70710678, 0.71480667, 0.72259040, 0.73045890, 0.73841307, 0.74645386, 0.75458221, 0.76279908,
-                 0.77110541, 0.77950220, 0.78799042, 0.79657108, 0.80524517, 0.81401371, 0.82287774, 0.83183829,
-                 0.84089642, 0.85005318, 0.85930965, 0.86866692, 0.87812608, 0.88768825, 0.89735454, 0.90712609,
-                 0.91700404, 0.92698956, 0.93708382, 0.94728799, 0.95760328, 0.96803090, 0.97857206, 0.98922801 };
+// 6-hybrid
+char* hybrid[] = { ".-...",   // 'AS'
+                   ".-.-.",   // 'AR'
+                   "-...-.-", // 'BK' 
+                   "-...-",   // 'BT'
+                   "-.--.",   // 'KN'
+                   "...-.-"   // 'VA' 
+                 };
+
 
 
 void proc_NoteOn(byte channel, byte note, byte velocity);
 void proc_ControlChange(byte channel, byte number, byte value);
+void proc_REnc_right(void);
+void proc_REnc_left(void);
 
 
 BTN btn(dp13);
 Morse morse;
 MIDI midi(dp16, dp15);
+REnc renc(dp1, dp2);
 
 int main()
 {
@@ -59,6 +68,9 @@
 
     midi.setHandleNoteOn(&proc_NoteOn);
     midi.setHandleControlChange(&proc_ControlChange);
+    
+    renc.setHandleRight(&proc_REnc_right);
+    renc.setHandleLeft(&proc_REnc_left);
  
     midi.begin();
     wait(1.0);
@@ -66,6 +78,15 @@
 
     while(1) {
         midi.read();
+/*
+        if (renc.CMD == FORWARD) {
+            morse.incidx();
+            renc.CMD = IDLE;
+        } else if (renc.CMD == BACKWARD) {
+            morse.decidx();
+            renc.CMD = IDLE;
+        }
+*/
         if(btn.CMD) {
             mode++;
             btn.CMD = 0;
@@ -77,8 +98,6 @@
                 morse.code(codes[value % 26]);
             }
             morse.code(codes[26]);
-        //} else {
-        //    for (i = 0; i < 27; i++)    morse.code(codes[i]);
         }
     }
 }
@@ -92,14 +111,17 @@
 
 void proc_ControlChange(byte channel, byte number, byte value)
 {
-    float ftmp;
-    
-    ftmp = 0.08; // default CW tick
     if (number == 16) { // General Purpose Controller 1
-        if (value >= 64) {
-            morse.settick(ftmp * 2. * rate[value-64]);
-        } else {
-            morse.settick(ftmp * rate[value]);
-        }
+        morse.setidx(value);
     }    
-}
\ No newline at end of file
+}
+
+void proc_REnc_right(void)
+{
+    morse.incidx();
+}
+
+void proc_REnc_left(void)
+{
+    morse.decidx();
+}
--- a/morse.lib	Sat Jul 19 09:43:12 2014 +0000
+++ b/morse.lib	Sat Jul 26 22:49:43 2014 +0000
@@ -1,1 +1,1 @@
-morse#27c38e4d6e4e
+morse#e377d081edea