Buffering of audio
This commit is contained in:
+22
-4
@@ -182,7 +182,7 @@ void handleInput() {
|
||||
void drawUI() {
|
||||
display.clearDisplay();
|
||||
|
||||
if (globalSynth) {
|
||||
{
|
||||
// Copy grid state to local buffer to minimize lock time
|
||||
struct MiniCell {
|
||||
uint8_t type;
|
||||
@@ -191,7 +191,7 @@ void drawUI() {
|
||||
};
|
||||
MiniCell gridCopy[SynthEngine::GRID_W][SynthEngine::GRID_H];
|
||||
|
||||
{
|
||||
if (globalSynth) {
|
||||
SynthLockGuard<SynthMutex> lock(globalSynth->gridMutex);
|
||||
for(int x=0; x<SynthEngine::GRID_W; ++x) {
|
||||
for(int y=0; y<SynthEngine::GRID_H; ++y) {
|
||||
@@ -202,9 +202,9 @@ void drawUI() {
|
||||
}
|
||||
}
|
||||
|
||||
int cellW = 10;
|
||||
int cellW = 8;
|
||||
int cellH = 5;
|
||||
int marginX = (SCREEN_WIDTH - (SynthEngine::GRID_W * cellW)) / 2;
|
||||
int marginX = 2;
|
||||
int marginY = (SCREEN_HEIGHT - (SynthEngine::GRID_H * cellH)) / 2;
|
||||
|
||||
for(int x=0; x<SynthEngine::GRID_W; ++x) {
|
||||
@@ -245,6 +245,24 @@ void drawUI() {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Draw Buffer Stats
|
||||
int barX = 110;
|
||||
int barY = 10;
|
||||
int barW = 8;
|
||||
int barH = 30;
|
||||
|
||||
display.drawRect(barX, barY, barW, barH, SSD1306_WHITE);
|
||||
|
||||
int usage = audioBufferUsage;
|
||||
int fillH = (usage * (barH - 2)) / AUDIO_BUFFER_SIZE;
|
||||
if (fillH > barH - 2) fillH = barH - 2;
|
||||
if (fillH < 0) fillH = 0;
|
||||
|
||||
display.fillRect(barX + 1, barY + (barH - 1) - fillH, barW - 2, fillH, SSD1306_WHITE);
|
||||
|
||||
// display.setCursor(barX - 4, barY + barH + 4);
|
||||
// display.print(usage);
|
||||
}
|
||||
|
||||
display.display();
|
||||
|
||||
Reference in New Issue
Block a user