uilleann/pipe.h

52 lines
1.3 KiB
C
Raw Normal View History

2020-11-11 20:20:21 -07:00
#pragma once
#include <stdint.h>
#include <SparkFun_Qwiic_Button.h>
#include <Adafruit_MPR121.h>
#include <paj7620.h>
class Pipe {
2020-11-22 17:21:47 -07:00
public:
// kneeClosedness indicates how "closed" the knee sensor is. 0 = wide open.
uint8_t kneeClosedness;
2020-11-11 20:20:21 -07:00
2020-11-22 17:21:47 -07:00
// keys are which keys are being pressed.
uint8_t keys;
2020-11-11 20:20:21 -07:00
2020-11-22 17:21:47 -07:00
// note holds the note being played, according to the fingering chart.
uint8_t note;
2020-11-11 20:20:21 -07:00
2020-11-22 17:21:47 -07:00
// silent is true if all keys and the knee are closed.
bool silent;
2020-11-11 20:20:21 -07:00
2020-11-22 17:21:47 -07:00
// bag is true if the bag is being squished.
bool bag;
2020-11-11 20:20:21 -07:00
2020-11-22 17:21:47 -07:00
// altFingering is true if the "alternate fingering" is being played.
// This should sound different than the standard fingering.
bool altFingering;
2020-11-11 20:20:21 -07:00
2020-11-22 17:21:47 -07:00
// glissandoNote is the note that would be played if partially open keys were fully open.
uint8_t glissandoNote;
2020-11-11 20:20:21 -07:00
2020-11-22 17:21:47 -07:00
// glissandoOpenness is how "open" the holes are in the direction of the glissandoNote.
float glissandoOpenness;
2020-11-11 20:20:21 -07:00
2020-11-22 17:21:47 -07:00
Pipe();
2020-11-11 20:20:21 -07:00
2020-11-22 17:21:47 -07:00
// Init initializes everything.
//
// Returns true if it all worked. You can run it again if it didn't.
bool Init();
2020-11-11 20:20:21 -07:00
2020-11-22 17:21:47 -07:00
// Update reads sensors and updates pipe state.
//
// It should be run once per loop.
void Update();
2020-11-11 20:20:21 -07:00
2020-11-22 17:21:47 -07:00
private:
Adafruit_MPR121 capSensor;
QwiicButton bagSensor;
bool bag_enabled;
2020-11-11 20:20:21 -07:00
};