123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- #ifndef _BSP_PIANO_H_
- #define _BSP_PIANO_H_
- // 1/8 4/4 3/4 2/4 1/4 4/4 3/4 2/4
- //Rhythm = [ 0.062 0.094 0.125 0.125 0.187 0.250];
- // Do Re Mi Fa Sol La Si
- //Fin = [261.63 293.67 329.63 349.23 391.99 440 493.88 0 0 0];
- #define PIANO_BASEKEYDLY (int)(48000*0.125)
- #define TONE_DELAY(x) (int)(48*x)
- #define TONE_FREQUENCY(a, b) (u32)((a << 16) | (u16)((1 << 15) / (48000 / b)))
- struct tone_tbl_t {
- u32 res;
- u16 last_time; //持续时间
- }__attribute__ ((packed));
- ///请勿修改piano_cb_t结构体
- typedef struct {
- u8 len;
- u8 type;
- u8 spr;
- u8 base_key; //音阶:CDEFGAB
- u8 harmen; //泛音
- u8 fade_sta;
- u8 warning_index;
- u8 dnr_sta;
- s16 base_delay; //音节持续时间
- volatile u16 write_cnt;
- const u32 *piano_buf;
- const struct tone_tbl_t *tone_buf;
- u8 dac_sta;
- u8 mix_flag; //是否SRC0 + SRC1叠加播放
- volatile u8 play_flag; //是否正在播放
- } piano_cb_t;
- extern piano_cb_t piano_cb;
- enum {
- WARNING_PIANO,
- WARNING_TONE,
- };
- ///与piano_index_tbl[]一一对应,注意同步修改
- enum {
- ///此处请勿新增或修改
- T_WARNING_POWER_ON,
- T_WARNING_POWER_OFF,
- T_WARNING_BT_DISCONNECT,
- T_WARNING_BT_CONNECT,
- T_WARNING_RIGHT_CH,
- T_WARNING_LEFT_CH,
- T_WARNING_PAIRING,
- T_WARNING_SWITCH_LANG,
- T_WARNING_MUSIC_MODE,
- T_WARNING_GAME_MODE,
- T_WARNING_LOW_BATTERY,
- T_WARNING_EAR_IN, //入耳语音
- //后半部分无esbc语音
- T_WARNING_REDIALING,
- T_WARNING_HANGUP,
- T_WARNING_REJECT,
- T_WARNING_MAX_VOL,
- T_WARNING_MIN_VOL,
- T_WARNING_BT_RING,
- T_WARNING_CAMERA_ON,
- T_WARNING_CAMERA_OFF,
- T_WARNING_BT_MODE,
- T_WARNING_CAMERA_MODE,
- T_WARNING_AUX_MODE,
- T_WARNING_TAKE_PHOTO,
- T_WARNING_NEXT_TRACK,
- T_WARNING_BT_WAIT4CONN,
- //语音播号
- T_WARNING_NUM_0,
- T_WARNING_NUM_1,
- T_WARNING_NUM_2,
- T_WARNING_NUM_3,
- T_WARNING_NUM_4,
- T_WARNING_NUM_5,
- T_WARNING_NUM_6,
- T_WARNING_NUM_7,
- T_WARNING_NUM_8,
- T_WARNING_NUM_9,
- T_WARNING_FAST_TEST,
- ///新增项放到此处后面
- T_WARNING_TEST_WAV,
- #if TRY_WARNING_SWITCH
- T_WARNING_TOUCH,
- T_WARNING_SIRI,
- #endif // TRY_WARNING_SWITCH
- T_WARNING_ALL,
- };
- #define MAX_LANG_VOICE_NUM T_WARNING_LOW_BATTERY
- #define PIANO_POWER_ON xcfg_cb.v_power_sel
- #define PIANO_POWER_OFF xcfg_cb.v_power_sel
- #define PIANO_PAIR xcfg_cb.v_pairing_sel
- #define PIANO_BT_DISCONNECT xcfg_cb.v_connect_sel
- #define PIANO_BT_CONNECT xcfg_cb.v_connect_sel
- #define PIANO_LOW_BATTERY xcfg_cb.v_lowbattery_sel
- #define PIANO_REDIALING xcfg_cb.v_redialing_sel
- #define PIANO_HANGUP xcfg_cb.v_redialing_sel
- #define PIANO_REJECT xcfg_cb.v_redialing_sel
- #define PIANO_TWS_CH xcfg_cb.v_channel_sel
- #define PIANO_MAX_VOL xcfg_cb.v_maxvol_sel
- #define PIANO_MIN_VOL xcfg_cb.v_minvol_sel
- #define PIANO_BT_RING xcfg_cb.v_ring_sel
- #define PIANO_CAMERA_ON xcfg_cb.v_cameraon_sel
- #define PIANO_CAMERA_OFF xcfg_cb.v_cameraon_sel
- #define PIANO_BT_MODE xcfg_cb.v_btmode_sel
- #define PIANO_CAMERA_MODE 0
- #define PIANO_AUX_MODE xcfg_cb.v_auxmode_sel
- #define PIANO_TAKE_PHOTO xcfg_cb.v_take_photo_sel
- #define PIANO_SWITCH_LANG xcfg_cb.v_lang_switch_sel
- #define PIANO_GAME_MODE xcfg_cb.v_game_mode_sel
- void sys_warning_play(uint index, uint type); //type: 0->无提示音, 1->piano, 2->语音
- bool sys_warning_play_do(uint index, uint type, u32 tws_sync);
- void piano_warning_play(uint index, uint tone_index, u32 tws_sync);
- u8 get_piano_tone_sta(void);
- void piano_var_init(void);
- bool tone_is_playing(void);
- void tone_play_start(void);
- void tone_play_kick(void);
- void tone_play_end(void);
- bool bt_ring_tone_play(u32 tws_sync);
- bool bt_ring_tone_stop(u32 force);
- bool warning_is_playing(void);
- u8 warning_volume_get(u32 sys_vol, u8 index);
- #endif
|