/* * SerialManagerFormant_OA.h * Demonstrate formant shifting via frequency domain processing * Created: Chip Audette (OpenAudio) March 2019 * * Moved to OpenAudio, removed Tympan dependencies, fixed for T4.x * Bob Larkin June 2020 * * MIT License. Use at your own risk. */ #ifndef _SerialManagerFormant_OA_h #define _SerialManagerFormant_OA_h #include //now, define the Serial Manager class class SerialManagerFormant_OA { public: void respondToByte(char c); void printHelp(void); int N_CHAN; float channelGainIncrement_dB = 2.5f; float formantScaleIncrement = powf(2.0,1.0/6.0); }; void SerialManagerFormant_OA::printHelp(void) { Serial.println(); Serial.println("SerialManager_OA Help: Available Commands:"); Serial.println(" h: Print this help"); Serial.println(" g: Print the gain settings of the device."); Serial.println(" C: Toggle printing of CPU and Memory usage"); Serial.print(" k: Increase the audio by "); Serial.print(channelGainIncrement_dB); Serial.println(" dB"); Serial.print(" K: Decrease the audio gain by "); Serial.print(-channelGainIncrement_dB); Serial.println(" dB"); Serial.print(" f: Raise formant shifting (change by "); Serial.print(formantScaleIncrement); Serial.println("x)"); Serial.print(" F: Lower formant shifting (change by "); Serial.print(1.0/formantScaleIncrement); Serial.println("x)"); Serial.println(); } //functions in the main sketch that I want to call from here extern void incrementKnobGain(float); extern void printGainSettings(void); extern void togglePrintMemoryAndCPU(void); extern float incrementFormantShift(float); //extern void switchToPCBMics(void); //extern void switchToMicInOnMicJack(void); //extern void switchToLineInOnMicJack(void); //switch yard to determine the desired action void SerialManagerFormant_OA::respondToByte(char c) { //float old_val = 0.0, new_val = 0.0; switch (c) { case 'h': case '?': printHelp(); break; case 'g': case 'G': printGainSettings(); break; case 'k': incrementKnobGain(channelGainIncrement_dB); break; case 'K': //which is "shift k" incrementKnobGain(-channelGainIncrement_dB); break; case 'C': case 'c': Serial.println("Received: toggle printing of memory and CPU usage."); togglePrintMemoryAndCPU(); break; case 'f': { float new_val = incrementFormantShift(formantScaleIncrement); Serial.print("Recieved: new formant scale = "); Serial.println(new_val);} break; case 'F': { float new_val = incrementFormantShift(1./formantScaleIncrement); Serial.print("Recieved: new formant scale = "); Serial.println(new_val);} break; } } #endif