void loop(void) { fillSoundBuffer(); unsigned int newPreenTimer = preenTimer; /* if ((newMicros - ledMicros) > 10000) { if (ledOn) { GPIO_ResetBits(GPIOB, LEDPIN); } else { GPIO_SetBits(GPIOB, LEDPIN); } ledOn = !ledOn; ledMicros = newMicros; } */ // Comment following line for debug.... lcd.setRealTimeAction(false); // newByte can display visual info while (usartBufferIn.getCount() > 0) { fillSoundBuffer(); midiDecoder.newByte(usartBufferIn.remove()); } if ((newPreenTimer - encoderTimer) > 80) { fillSoundBuffer(); encoders.checkStatus(synthState.fullState.midiConfigValue[MIDICONFIG_ENCODER]); encoderTimer = newPreenTimer; } else if (fmDisplay.needRefresh()) { fillSoundBuffer(); fmDisplay.refreshAllScreenByStep(); } if ((newPreenTimer - tempoTimer) > 10000) { fillSoundBuffer(); synthState.tempoClick(); fmDisplay.tempoClick(); tempoTimer = newPreenTimer; } lcd.setRealTimeAction(true); while (lcd.hasActions()) { if (usartBufferIn.getCount() > 20) { while (usartBufferIn.getCount() > 0) { fillSoundBuffer(); midiDecoder.newByte(usartBufferIn.remove()); } } LCDAction action = lcd.nextAction(); lcd.realTimeAction(&action, fillSoundBuffer); } }