F401REにてアナログモデリングシンセもどきを作ってみました。 リングモジュレーターっぽいことやってみてます。正弦波、三角波、矩形波の関数が用意してあります。sin(2pift)のftをサンプリングレートごとに積分したものをiftとしてます。iftのポインタを関数に与えるだけで特に計算は入りません。

Dependencies:   mbed

Revision:
6:e3ed48abbd53
Parent:
5:f798a173eefa
Child:
7:725b3bc34e7e
--- a/main.cpp	Thu Jul 21 12:20:51 2016 +0000
+++ b/main.cpp	Fri Jul 22 11:44:22 2016 +0000
@@ -14,25 +14,25 @@
 
 int main()
 {
-    double keika_t,data,late;
+    double ft,data,late;
     int freq_out = 5000;
     late = 20 * 0.001 * 0.001;
-    
+
     mypwm.period_us(20);
     flipper.attach_us(&flip,20);
 
 
     while(1) {
-        
+
         if(flip_flag == 1) {
-            
-            if(sw == 0) data = keika_t;
-            else data = sin(6.28 * keika_t * freq_out) + 1;
-            
+
+            if(sw == 0) data = ft;
+            else data = sin(6.28 * ft) + 1;
+          
             mypwm.write( data / 20 );
 
-            if(keika_t + late > 1) keika_t = keika_t + late - 1;
-            else keika_t += late;
+            ft += late * freq_out;
+            if(ft > 1)    ft--;
 
             flip_flag = 0;
         }