28 #include "../system/eptexception.h"
29 #include "../messages/messagehandler.h"
30 #include "../messages/messagefinalkey.h"
31 #include "../messages/messagemodechanged.h"
32 #include "../messages/messagekeyselectionchanged.h"
33 #include "../messages/messagechangetuningcurve.h"
34 #include "../messages/messageprojectfile.h"
35 #include "../messages/messagekeydatachanged.h"
36 #include "../adapters/modeselectoradapter.h"
37 #include "../piano/key.h"
50 mForcedRecording(false),
105 switch (m->getType())
109 auto message(std::static_pointer_cast<MessageProjectFile>(m));
110 switch (message->getFileMessageType())
115 MessageHandler::sendUnique<MessageKeySelectionChanged>(
findNextKey(-1),
nullptr);
124 auto message(std::static_pointer_cast<MessageModeChanged>(m));
129 MessageHandler::send<MessageKeySelectionChanged>(nextkey,
mPiano.
getKeyPtr(nextkey));
135 auto message(std::static_pointer_cast<MessageKeySelectionChanged>(m));
142 auto message(std::static_pointer_cast<MessageFinalKey>(m));
143 auto keyptr = message->getFinalKey();
144 int keynumber = message->getKeyNumber();
151 auto message(std::static_pointer_cast<MessageChangeTuningCurve>(m));
152 int keynumber = message->getKeyNumber();
153 double frequency = message->getFrequency();
156 MessageHandler::send<MessageKeyDataChanged>(keynumber,
mPiano.
getKeyPtr(keynumber));
183 std::cout <<
"PianoManager: Sucessfully inserted new key spectrum" << std::endl;
188 #if CONFIG_ENABLE_XMGRACE
189 std::ofstream os (
"4-quality.dat");
191 os << p.getRecognitionQuality() << std::endl;
198 double frequency = keyptr->getTunedFrequency();
199 double overpull = keyptr->getOverpull();
200 double tuned = keyptr->getTunedFrequency();
206 MessageHandler::send<MessageKeyDataChanged>(keynumber, keypointer);
233 for (
int k=0; k<K; ++k) {
bool isRecorded() const
Get recorded flag.
void setTunedFrequency(double f)
Set tuned frequency.
std::shared_ptr< Message > MessagePtr
Global type of a shared message pointer.
OperationMode
Operation mode of the tuner.
called when the recording was cleared
const Key * getKeyPtr(int i) const
void clearOverpulls()
Set all overpull markers to zero.
void setComputedFrequency(double f)
Set computed frequency.
Message that a change was made with the current project file.
Class describing a single piano key.
void handleNewKey(int keynumber, std::shared_ptr< Key > keyptr)
Handle the event that a key has been successfully indentified.
Message that the operation mode has changed.
static void send(Args &&...args)
short function for creating and sending a message
int findNextKey(int keynumber)
Find the next key to be recorded.
Piano mPiano
Instance of the piano.
void resetPitches()
Reset all recorded keys and send a message to redraw all elements.
void setOverpull(double cents)
Set overpull in cents.
Mode where the entropy optimization is carried out.
void setKey(int i, const Key &key)
Mode for recording the piano keys.
Message that a key has been selected.
void clearComputedPitches()
Set all computed pitches to zero.
const Keyboard & getKeyboard() const
void clearTunedPitches()
Set all tuned pitches to zero.
bool mForcedRecording
Flag for forced recording.
void clearAllKeys()
Clear all keys completely.
Message that the tuning curve has been adapted.
Mode for manually tuning the piano.
final key information after recording
OperationMode mOperationMode
Local copy of the operation mode.
void handleMessage(MessagePtr m) overridefinal
Message listener and dispatcher.
int getNumberOfKeys() const
int mSelectedKey
Local copy of the selected key.
PianoManager()
Constructor, resets member variables.
const Key & getKey(int i) const