F401REにてアナログモデリングシンセもどきを作ってみました。 リングモジュレーターっぽいことやってみてます。正弦波、三角波、矩形波の関数が用意してあります。sin(2pift)のftをサンプリングレートごとに積分したものをiftとしてます。iftのポインタを関数に与えるだけで特に計算は入りません。
main.cpp
- Committer:
- gitakichi
- Date:
- 2016-07-21
- Revision:
- 5:f798a173eefa
- Parent:
- 4:3f3d369ca0e3
- Child:
- 6:e3ed48abbd53
File content as of revision 5:f798a173eefa:
#include "mbed.h" Ticker flipper; PwmOut mypwm(PC_8); DigitalIn sw(USER_BUTTON); bool flip_flag; void flip() { flip_flag = 1; } int main() { double keika_t,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; mypwm.write( data / 20 ); if(keika_t + late > 1) keika_t = keika_t + late - 1; else keika_t += late; flip_flag = 0; } } }