//#ifdef RUN_TEST #include "SynthCore.h" #include "Player.h" #include #include #define TEST_LOOP_NUN 10000 Synthesizer synthesizerC; Synthesizer synthesizerASM; void TestInit(void) { SynthInit(&synthesizerC); SynthInit(&synthesizerASM); } int32_t abs_s32(int32_t num) { return num>0?num:-num; } void PrintParameters(Synthesizer* synth) { SoundUnit* soundUnits = synth->SoundUnitList; printf("MixOut:%d\n",synth->mixOut); printf("LastSoundUnit:%d\n",synth->lastSoundUnit); printf("%12s","Chn Val"); for(uint8_t k=0;kSoundUnitList; SoundUnit* sb=synthB->SoundUnitList; if(abs_s32(synthA->mixOut-synthB->mixOut)>POLY_NUM) error++; for(uint32_t k=0;k2) error++; if(sa[k].sampleVal!=sb[k].sampleVal) error++; if(sa[k].envelopeLevel!=sb[k].envelopeLevel) error++; if(sa[k].envelopePos!=sb[k].envelopePos) error++; if(sa[k].wavetablePos!=sb[k].wavetablePos) error++; if(sa[k].increment!=sb[k].increment) error++; } if(error>0) { printf("%lu error(s) found:\n",error); printf("Synth C:\n"); PrintParameters(&synthesizerC); printf("Synth ASM:\n"); PrintParameters(&synthesizerASM); } else { printf("Passed.\n"); } return error; } extern Player mainPlayer; void TestSynth(void) { uint32_t errorTimes=0; printf("~~~~~~~Start testing synthesizer.~~~~~~~\n"); for(uint32_t i=40;i<40+POLY_NUM;i++) { NoteOnC(&synthesizerC,i%56); NoteOnAsm(&synthesizerASM,i%56); } printf("After NoteOn Test:\n"); printf("Synth C:\n"); PrintParameters(&synthesizerC); printf("Synth ASM:\n"); PrintParameters(&synthesizerASM); for(uint32_t i=0;i0) errorTimes++; if(errorTimes>6) break; } } void TestProcess(void) { TestInit(); TestUpdateTickFunc(); TestSynth(); } //#endif