F401REにてアナログモデリングシンセもどきを作ってみました。 リングモジュレーターっぽいことやってみてます。正弦波、三角波、矩形波の関数が用意してあります。sin(2pift)のftをサンプリングレートごとに積分したものをiftとしてます。iftのポインタを関数に与えるだけで特に計算は入りません。
main.cpp@1:1b9ca25019a6, 2016-07-20 (annotated)
- Committer:
- gitakichi
- Date:
- Wed Jul 20 13:30:45 2016 +0000
- Revision:
- 1:1b9ca25019a6
- Parent:
- 0:1b56cf88e38c
- Child:
- 2:47210a089f76
?????
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
gitakichi | 0:1b56cf88e38c | 1 | #include "mbed.h" |
gitakichi | 0:1b56cf88e38c | 2 | |
gitakichi | 1:1b9ca25019a6 | 3 | Ticker flipper; |
gitakichi | 0:1b56cf88e38c | 4 | PwmOut mypwm(PC_8); |
gitakichi | 0:1b56cf88e38c | 5 | |
gitakichi | 0:1b56cf88e38c | 6 | DigitalOut myled(LED1); |
gitakichi | 1:1b9ca25019a6 | 7 | int data; |
gitakichi | 1:1b9ca25019a6 | 8 | |
gitakichi | 1:1b9ca25019a6 | 9 | void flip(){ |
gitakichi | 1:1b9ca25019a6 | 10 | if(data > 100) data = 0; |
gitakichi | 1:1b9ca25019a6 | 11 | else data++; |
gitakichi | 1:1b9ca25019a6 | 12 | } |
gitakichi | 1:1b9ca25019a6 | 13 | |
gitakichi | 0:1b56cf88e38c | 14 | |
gitakichi | 0:1b56cf88e38c | 15 | int main() { |
gitakichi | 0:1b56cf88e38c | 16 | |
gitakichi | 1:1b9ca25019a6 | 17 | mypwm.period_us(10); |
gitakichi | 1:1b9ca25019a6 | 18 | flipper.attach_us(&flip, 50); |
gitakichi | 1:1b9ca25019a6 | 19 | |
gitakichi | 0:1b56cf88e38c | 20 | |
gitakichi | 1:1b9ca25019a6 | 21 | //printf("pwm set to %.2f %%\n", mypwm.read() * 100); |
gitakichi | 0:1b56cf88e38c | 22 | |
gitakichi | 0:1b56cf88e38c | 23 | while(1) { |
gitakichi | 1:1b9ca25019a6 | 24 | mypwm.write( (float)data / 1000 ); |
gitakichi | 1:1b9ca25019a6 | 25 | //myled = !myled; |
gitakichi | 1:1b9ca25019a6 | 26 | //wait(1); |
gitakichi | 0:1b56cf88e38c | 27 | } |
gitakichi | 0:1b56cf88e38c | 28 | } |