Simple FM Sound Synthesis with touch screen and accelerometer control, based on STM32F746G-DISCO

Dependencies:   ADXL345 AUDIO_DISCO_F746NG BSP_DISCO_F746NG LCD_DISCO_F746NG SDRAM_DISCO_F746NG TS_DISCO_F746NG mbed-dev

Fork of Workshop_5 by Stefano Fasciani

Committer:
stefanofasciani
Date:
Sun Jan 01 13:54:19 2017 +0000
Revision:
3:cd1cb0003a3d
Parent:
2:a1330350c32e
First Commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
stefanofasciani 2:a1330350c32e 1
stefanofasciani 2:a1330350c32e 2 // Author: Stefano Fasciani - stefanofasciani@stefanofasciani.com
stefanofasciani 2:a1330350c32e 3 // Date 7/8/2016
stefanofasciani 2:a1330350c32e 4 // FM Sinth for DISCO_F746NG and ADXL345
stefanofasciani 2:a1330350c32e 5
stefanofasciani 2:a1330350c32e 6
stefanofasciani 2:a1330350c32e 7 #include "mbed.h"
stefanofasciani 2:a1330350c32e 8 #include "AUDIO_DISCO_F746NG.h"
stefanofasciani 2:a1330350c32e 9 #include "SDRAM_DISCO_F746NG.h"
stefanofasciani 2:a1330350c32e 10 #include "LCD_DISCO_F746NG.h"
stefanofasciani 2:a1330350c32e 11 #include "TS_DISCO_F746NG.h"
stefanofasciani 2:a1330350c32e 12 #include "ADXL345.h"
stefanofasciani 2:a1330350c32e 13 #include <math.h>
stefanofasciani 2:a1330350c32e 14
stefanofasciani 2:a1330350c32e 15 #define AUDIO_BLOCK_SIZE 1024
stefanofasciani 2:a1330350c32e 16 #define TABLE_SIZE 2048
stefanofasciani 2:a1330350c32e 17
stefanofasciani 2:a1330350c32e 18 typedef enum{
stefanofasciani 2:a1330350c32e 19 BUFFER_OFFSET_NONE = 0,
stefanofasciani 2:a1330350c32e 20 BUFFER_OFFSET_HALF = 1,
stefanofasciani 2:a1330350c32e 21 BUFFER_OFFSET_FULL = 2,
stefanofasciani 2:a1330350c32e 22 }BUFFER_StateTypeDef;
stefanofasciani 2:a1330350c32e 23
stefanofasciani 2:a1330350c32e 24 float map(float x, float out_min, float out_max);
stefanofasciani 2:a1330350c32e 25 void sint_osc();
stefanofasciani 2:a1330350c32e 26 void copy_buffer(int offset);
stefanofasciani 2:a1330350c32e 27 void init_sin_table();
stefanofasciani 2:a1330350c32e 28 float get_touch_horizontal();
stefanofasciani 2:a1330350c32e 29 float get_touch_vertical();
stefanofasciani 2:a1330350c32e 30 float get_acc_horizontal();
stefanofasciani 2:a1330350c32e 31 float get_acc_vertical();
stefanofasciani 2:a1330350c32e 32 void display_keyboard();
stefanofasciani 2:a1330350c32e 33 float get_note_pitch();
stefanofasciani 2:a1330350c32e 34 uint8_t SetSysClock_PLL_HSE_200MHz();
stefanofasciani 2:a1330350c32e 35
stefanofasciani 2:a1330350c32e 36
stefanofasciani 2:a1330350c32e 37 extern float table[];
stefanofasciani 2:a1330350c32e 38 extern int16_t out_buffer[];
stefanofasciani 2:a1330350c32e 39 extern float osc_buf[];
stefanofasciani 2:a1330350c32e 40 extern __IO uint32_t audio_out_buffer_state;
stefanofasciani 2:a1330350c32e 41 extern float idx_1;
stefanofasciani 2:a1330350c32e 42 extern float idx_2;
stefanofasciani 2:a1330350c32e 43 extern float filt_old_samp;
stefanofasciani 2:a1330350c32e 44 extern float frqTL;
stefanofasciani 2:a1330350c32e 45 extern float two_pi_48k;
stefanofasciani 2:a1330350c32e 46 extern int acc_readings[];
stefanofasciani 2:a1330350c32e 47 extern int update_round;
stefanofasciani 2:a1330350c32e 48 extern float amplitude;
stefanofasciani 2:a1330350c32e 49 extern float pitch;
stefanofasciani 2:a1330350c32e 50 extern float modrate;
stefanofasciani 2:a1330350c32e 51 extern float moddepth;
stefanofasciani 2:a1330350c32e 52 extern float filter;
stefanofasciani 2:a1330350c32e 53 extern TS_StateTypeDef TS;
stefanofasciani 2:a1330350c32e 54 extern LCD_DISCO_F746NG lcd;