/* * App_Auto.c * * Created on: Apr 16, 2026 * Author: monosail */ #include "autobandtop1.h" #include #include "output2.bin.h" #include "mymidififo1.h" #include #include "includes.h" MidiFifoSeq_t m_MidiSendFifo; #define PRESET_BUFFER_SIZE (1024*20) static int m_presetCount = 0; static uint8_t pStoreBuffer[PRESET_BUFFER_SIZE]; //static uint8_t* pStoreBuffer; #define DEFAULT_TEMPO 100 static void Func_CallBack_ProgramChange(int channel, int program) { MidiFifoItem_t midimsg; midimsg.msg[0] = 0xc0 | channel; midimsg.msg[1] = program; midimsg.msg[2] = 0; midimsg.msglen = 2; mymidififo_InQueue(&m_MidiSendFifo,&midimsg); } static void Func_CallBack_NoteOff(int channel,int key) { MidiFifoItem_t midimsg; midimsg.msg[0] = 0x80 | channel; midimsg.msg[1] = key; midimsg.msg[2] = 0; midimsg.msglen = 3; mymidififo_InQueue(&m_MidiSendFifo,&midimsg); } static void Func_CallBack_NoteOn(int channel,int key,int vel) { MidiFifoItem_t midimsg; midimsg.msg[0] = 0x90 | channel; midimsg.msg[1] = key; midimsg.msg[2] = vel; midimsg.msglen = 3; mymidififo_InQueue(&m_MidiSendFifo,&midimsg); } static void Func_CallBack_CC(int channel,int cc,int value) { if(cc == 7|| cc == 11) { return; } MidiFifoItem_t midimsg; midimsg.msg[0] = 0xb0 | channel; midimsg.msg[1] = cc; midimsg.msg[2] = value; midimsg.msglen = 3; mymidififo_InQueue(&m_MidiSendFifo,&midimsg); } static void Func_CallBack_PitchWheel(int channel,int cc,int value) { MidiFifoItem_t midimsg; midimsg.msg[0] = 0xe0 | channel; midimsg.msg[1] = cc; midimsg.msg[2] = value; midimsg.msglen = 3; mymidififo_InQueue(&m_MidiSendFifo,&midimsg); } static int Func_CallBack_ReadFlash(int address,int length,uint8_t* pOutput) { W25Q128_Read(pOutput, (uint32_t)ADDRESS+address, length); return 0; } // void App_Auto_Init(void) { AutoBandTop1_SetPresetStoreBuffer(pStoreBuffer,PRESET_BUFFER_SIZE); AutoBandTop1_Init(); AutoBandTop1_RegisterCallBack_NoteOn(Func_CallBack_NoteOn); AutoBandTop1_RegisterCallBack_NoteOff(Func_CallBack_NoteOff); AutoBandTop1_RegisterCallBack_ProgChange(Func_CallBack_ProgramChange); AutoBandTop1_RegisterCallBack_CC(Func_CallBack_CC); AutoBandTop1_RegisterCallBack_PitchWheel(Func_CallBack_PitchWheel); AutoBandTop1_RegisterReadFlashCallback(Func_CallBack_ReadFlash); m_presetCount = AutoBandTop1_GetPresetItemCount(); int ret = AutoBandTop1_LoadPresetItemFromFlash(0); if(ret != 0) { for(;;); } AutoBandTop1_ChangeBPM(mGuiData[1].Current); } //void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) //{ // if (htim == (&htim6)) { // // 1ms timer // AutoBandTop1_Metronome_External_1msTick(); // } //} // 接下来的�??????题是如何测试�?????? // �??????以调�?????? //void AutoBandTop1_Start(void); //�??????动节�?????? //void AutoBandTop1_Stop(void); //停�??伴�?? //void AutoBandTop1_SyncStart(void);//同�?�启�?????? //void AutoBandTop1_SetRunVar(int varIndex);//设置变�?�(0-3�?????? //void AutoBandTop1_Preamble(int index);//设置前�?�(0-3�?????? //void AutoBandTop1_Postamble(int index);//位置尾�?�(0-3�?????? //void AutoBandTop1_Fillin(void);//触发一�??????插入 //如果�??????同�?�启�??????,需要再调用void AutoBandTop1_Note_On(int32_t key,int32_t vel);来输入一�??????音�?�(例�?�C3)来�??????定和弦根�?????? //在哪里调用这些函数?