Nucleo F401REでFM音源を実装するやつ の実装途中で32ポリ音源にしたやつ 外部DACとオペアンプを利用 現在はMCP4922とNJM2737

Dependencies:   AOTTrigon I2CEEPROM MCP4922 mbed

Revision:
10:0ffdefe75566
Parent:
7:439c57c20593
Child:
11:62da91a1eaf1
--- a/Main.cpp	Mon Dec 29 02:42:03 2014 +0000
+++ b/Main.cpp	Mon Dec 29 09:01:10 2014 +0000
@@ -1,20 +1,29 @@
 #include "Main.h"
 
 Ticker sampler;
+MCP4922 output(PA_7, PA_5, PA_8);
+
+AOTTrigon t;
+const int operators = 32;
+FMOperator op[operators];
+
 Timer master;
-MCP4922 output(D4,D3,D7);
-AOTTrigon t;
+Serial midis(USBTX,USBRX);
 
 const double smpps = 40000.0;
-const double smptime = 1.0 / smpps;
 const double smpus = 1000000.0 / smpps;
 
 double ntime = 0.0;
 double freq = 2.5f;
 
-void tick_sampling();
+float out = 0.0f;
 
-int main(){
+void tick_sampling();
+void midiReceived();
+
+int main()
+{
+    //DAC setting
     output.referenceMode(MCP4922::DAC_A, MCP4922::REF_UNBUFFERED);
     output.gainMode(MCP4922::DAC_A, MCP4922::GAIN_1X);
     output.powerMode(MCP4922::DAC_A, MCP4922::POWER_NORMAL);
@@ -22,13 +31,25 @@
     output.gainMode(MCP4922::DAC_B, MCP4922::GAIN_1X);
     output.powerMode(MCP4922::DAC_B, MCP4922::POWER_NORMAL);
     
+    //MIDI Serial setting
+    midis.baud(256000);
+    midis.format();
+    
+    //for(int i = 0; i < operators; i++) new(op + i) FMOperator(&master, &t);
     sampler.attach_us(&tick_sampling, smpus);
+    midis.attach(&midiReceived);
+    
     master.start();
-    while(1);
+    while(true);
 }
 
-void tick_sampling() {
-    ntime=master.read_us()/1000000.0;
-    for(int i=0;i<64;i++) t.sin(M_PI*2.0*freq*ntime);
-    output.write(MCP4922::DAC_A, t.sin(M_PI*2.0f*freq*ntime)/2.0+0.5);
+void tick_sampling()
+{
+    ntime = master.read_us()/1000000.0;
+    output.write(MCP4922::DAC_A, out);
+}
+
+void midiReceived()
+{
+    out = 1.0f - out;
 }
\ No newline at end of file