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
sinth.h@3:cd1cb0003a3d, 2017-01-01 (annotated)
- 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?
User | Revision | Line number | New 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; |