F401REにてアナログモデリングシンセもどきを作ってみました。 リングモジュレーターっぽいことやってみてます。正弦波、三角波、矩形波の関数が用意してあります。sin(2pift)のftをサンプリングレートごとに積分したものをiftとしてます。iftのポインタを関数に与えるだけで特に計算は入りません。
Diff: main.cpp
- Revision:
- 2:47210a089f76
- Parent:
- 1:1b9ca25019a6
- Child:
- 3:5cae780fe61e
--- a/main.cpp Wed Jul 20 13:30:45 2016 +0000 +++ b/main.cpp Wed Jul 20 13:51:07 2016 +0000 @@ -5,24 +5,24 @@ DigitalOut myled(LED1); int data; +float data_sin; void flip(){ if(data > 100) data = 0; else data++; + data_sin = sin((data/100)*6.28) + 1; } int main() { mypwm.period_us(10); - flipper.attach_us(&flip, 50); + flipper.attach_us(&flip, 20); //printf("pwm set to %.2f %%\n", mypwm.read() * 100); while(1) { - mypwm.write( (float)data / 1000 ); - //myled = !myled; - //wait(1); + mypwm.write( data_sin / 10 ); } }