mirror of
https://github.com/AquaMorph/Droplets.git
synced 2025-04-30 01:35:34 +00:00
67 lines
1.3 KiB
C++
67 lines
1.3 KiB
C++
#include "daisysp.h"
|
|
#include "daisy_patch.h"
|
|
|
|
#include <string>
|
|
|
|
#include "main.h"
|
|
#include "util.h"
|
|
#include "menu.h"
|
|
#include "droplets/droplet.h"
|
|
#include "droplets/noise_droplet.h"
|
|
|
|
using namespace daisy;
|
|
|
|
DaisyPatch patch;
|
|
Menu menu(&patch);
|
|
Droplet* droplet;
|
|
|
|
int main(void) {
|
|
patch.Init();
|
|
float samplerate = patch.AudioSampleRate();
|
|
droplet = new NoiseDroplet(&patch, samplerate, DropletState::kFull);
|
|
patch.StartAdc();
|
|
patch.StartAudio(AudioThrough);
|
|
|
|
while(true) {
|
|
ProcessControls();
|
|
ProcessOled();
|
|
ProcessOutputs();
|
|
}
|
|
}
|
|
|
|
void ProcessControls() {
|
|
patch.UpdateAnalogControls();
|
|
patch.DebounceControls();
|
|
if (menu.InMenu()) {
|
|
menu.UpdateMenuPosition();
|
|
if (patch.encoder.RisingEdge()) {
|
|
menu.SetInMenu(false);
|
|
}
|
|
} else {
|
|
if (patch.encoder.Pressed()) {
|
|
if (patch.encoder.TimeHeldMs() > 500 && patch.encoder.TimeHeldMs() < 505) {
|
|
menu.SetInMenu(true);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void ProcessOutputs() {}
|
|
|
|
void ProcessOled() {
|
|
patch.display.Fill(false);
|
|
if (menu.InMenu()) {
|
|
menu.ProcessMenuOled();
|
|
} else {
|
|
droplet->Draw();
|
|
WriteString(patch, 0, 0, Font_6x8, menu.SelectedName());
|
|
}
|
|
patch.display.Update();
|
|
}
|
|
|
|
static void AudioThrough(float **in, float **out, size_t size) {
|
|
patch.UpdateAnalogControls();
|
|
droplet->Process(in, out, size);
|
|
}
|
|
|