diff options
Diffstat (limited to 'libraries/Robot_Control/Melody.cpp')
-rw-r--r-- | libraries/Robot_Control/Melody.cpp | 100 |
1 files changed, 0 insertions, 100 deletions
diff --git a/libraries/Robot_Control/Melody.cpp b/libraries/Robot_Control/Melody.cpp deleted file mode 100644 index 0341c55..0000000 --- a/libraries/Robot_Control/Melody.cpp +++ /dev/null @@ -1,100 +0,0 @@ -#include "ArduinoRobot.h" -#include "SquawkSD.h" -#include "Fat16.h" - - - -SQUAWK_CONSTRUCT_ISR(SQUAWK_PWM_PIN5); - - -void RobotControl::beginSpeaker(uint16_t frequency){ - SquawkSynth::begin(frequency); - SquawkSynth::play(); - osc[2].vol = 0x7F; -} - -void RobotControl::playNote(byte period, word length, char modifier) { - // Modifier . makes note length 2/3 - if(modifier == '.') length = (length * 2) / 3; - // Set up the play frequency, 352800 is [sample_rate]=44100 * [tuning]=8.0 - osc[2].freq = 352800 / period; - // Delay, silence, delay - delay(length); - osc[2].freq = 0; - delay(length); -} - -void RobotControl::playMelody(char* script){ - // Find length of play string - word length = strlen(script); - // Set the default note time - word time = 500; - // Loop through each character in the play string - for(int n = 0; n < length; n++) { - // Fetch the character AFTER the current one - it may contain a modifier - char modifier = script[n + 1]; - // Fetch the current character and branch accordingly - switch(script[n]) { - // Notes - case 'c': playNote(214, time, modifier); break; // Play a C - case 'C': playNote(202, time, modifier); break; // Play a C# - case 'd': playNote(190, time, modifier); break; // Play a D - case 'D': playNote(180, time, modifier); break; // Play a D# - case 'e': playNote(170, time, modifier); break; // Play an F - case 'f': playNote(160, time, modifier); break; // Play an F - case 'F': playNote(151, time, modifier); break; // Play an F# - case 'g': playNote(143, time, modifier); break; // Play a G - case 'G': playNote(135, time, modifier); break; // Play a G# - case 'a': playNote(127, time, modifier); break; // Play an A - case 'A': playNote(120, time, modifier); break; // Play an A# - case 'b': playNote(113, time, modifier); break; // Play a B - // Delay - case '-': playNote(0, time, modifier); break; // Play a quiet note - // Note lengths - case '1': time = 1000; break; // Full note - case '2': time = 500; break; // Half note - case '4': time = 250; break; // Quarter note - case '8': time = 50; break; // Eigth note - // Modifier '.' makes note length 2/3 - - } - } -} - -void RobotControl::beep(int beep_length){ - char scr1[]="8F"; - char scr2[]="8Fe"; - char scr3[]="1F"; - - switch (beep_length) - { - case BEEP_SIMPLE: - default: - playMelody(scr1); - break; - - case BEEP_DOUBLE: - playMelody(scr2); - break; - - case BEEP_LONG: - playMelody(scr3); - } - -} - -void RobotControl::tempoWrite(int tempo){ - SquawkSynthSD::tempo(tempo); -} -void RobotControl::tuneWrite(float tune){ - SquawkSynthSD::tune(tune); -} - -void RobotControl::playFile(char* filename){ - melody.open(filename,O_READ); - SquawkSynthSD::play(melody); -} - -void RobotControl::stopPlayFile(){ - melody.close(); -}
\ No newline at end of file |