Henry Triff / Mbed 2 deprecated ELEC2645_Project_el18ht

Dependencies:   mbed

Committer:
HenryWTriff
Date:
Fri May 22 18:22:04 2020 +0000
Revision:
27:7e230a7891f8
Parent:
1:8c335af04679
Final Submission. I have read and agreed with Statement of Academic Integrity.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
HenryWTriff 1:8c335af04679 1 #ifndef GAMEPAD_H
HenryWTriff 1:8c335af04679 2 #define GAMEPAD_H
HenryWTriff 1:8c335af04679 3
HenryWTriff 1:8c335af04679 4 #include <bitset>
HenryWTriff 1:8c335af04679 5
HenryWTriff 1:8c335af04679 6 // Forward declaration of the classes that we use from the mbed library
HenryWTriff 1:8c335af04679 7 // This avoids the need for us to include the huge mbed.h header inside our
HenryWTriff 1:8c335af04679 8 // own library API
HenryWTriff 1:8c335af04679 9 namespace mbed
HenryWTriff 1:8c335af04679 10 {
HenryWTriff 1:8c335af04679 11 class AnalogIn;
HenryWTriff 1:8c335af04679 12 class InterruptIn;
HenryWTriff 1:8c335af04679 13 class PwmOut;
HenryWTriff 1:8c335af04679 14 class AnalogOut;
HenryWTriff 1:8c335af04679 15 class Ticker;
HenryWTriff 1:8c335af04679 16 class Timeout;
HenryWTriff 1:8c335af04679 17 }
HenryWTriff 1:8c335af04679 18
HenryWTriff 1:8c335af04679 19 #define TOL 0.1f
HenryWTriff 1:8c335af04679 20 #define RAD2DEG 57.2957795131f
HenryWTriff 1:8c335af04679 21 #define PI 3.14159265359
HenryWTriff 1:8c335af04679 22
HenryWTriff 1:8c335af04679 23
HenryWTriff 1:8c335af04679 24 /** Enum for direction */
HenryWTriff 1:8c335af04679 25 enum Direction {
HenryWTriff 1:8c335af04679 26 CENTRE, /**< joystick centred */
HenryWTriff 1:8c335af04679 27 N, /**< pushed North (0)*/
HenryWTriff 1:8c335af04679 28 NE, /**< pushed North-East (45) */
HenryWTriff 1:8c335af04679 29 E, /**< pushed East (90) */
HenryWTriff 1:8c335af04679 30 SE, /**< pushed South-East (135) */
HenryWTriff 1:8c335af04679 31 S, /**< pushed South (180) */
HenryWTriff 1:8c335af04679 32 SW, /**< pushed South-West (225) */
HenryWTriff 1:8c335af04679 33 W, /**< pushed West (270) */
HenryWTriff 1:8c335af04679 34 NW /**< pushed North-West (315) */
HenryWTriff 1:8c335af04679 35 };
HenryWTriff 1:8c335af04679 36
HenryWTriff 1:8c335af04679 37 /** Vector 2D struct */
HenryWTriff 1:8c335af04679 38 struct Vector2D {
HenryWTriff 1:8c335af04679 39 float x; /**< float for x value */
HenryWTriff 1:8c335af04679 40 float y; /**< float for y value */
HenryWTriff 1:8c335af04679 41 };
HenryWTriff 1:8c335af04679 42
HenryWTriff 1:8c335af04679 43 /** Polar coordinate struct */
HenryWTriff 1:8c335af04679 44 struct Polar {
HenryWTriff 1:8c335af04679 45 float mag; /**< float for magnitude */
HenryWTriff 1:8c335af04679 46 float angle; /**< float for angle (in degrees) */
HenryWTriff 1:8c335af04679 47 };
HenryWTriff 1:8c335af04679 48
HenryWTriff 1:8c335af04679 49 /** Gamepad Class
HenryWTriff 1:8c335af04679 50 * @brief Library for interfacing with ELEC2645 Gamepad PCB, University of Leeds
HenryWTriff 1:8c335af04679 51 * @author Dr Craig A. Evans
HenryWTriff 1:8c335af04679 52 * @author Dr Alex Valavanis
HenryWTriff 1:8c335af04679 53 * @author Joshua Davy
HenryWTriff 1:8c335af04679 54 */
HenryWTriff 1:8c335af04679 55 class Gamepad
HenryWTriff 1:8c335af04679 56 {
HenryWTriff 1:8c335af04679 57
HenryWTriff 1:8c335af04679 58 private:
HenryWTriff 1:8c335af04679 59 mbed::PwmOut *_led1;
HenryWTriff 1:8c335af04679 60 mbed::PwmOut *_led2;
HenryWTriff 1:8c335af04679 61 mbed::PwmOut *_led3;
HenryWTriff 1:8c335af04679 62 mbed::PwmOut *_led4;
HenryWTriff 1:8c335af04679 63 mbed::PwmOut *_led5;
HenryWTriff 1:8c335af04679 64 mbed::PwmOut *_led6;
HenryWTriff 1:8c335af04679 65
HenryWTriff 1:8c335af04679 66 mbed::InterruptIn *_button_A;
HenryWTriff 1:8c335af04679 67 mbed::InterruptIn *_button_B;
HenryWTriff 1:8c335af04679 68 mbed::InterruptIn *_button_X;
HenryWTriff 1:8c335af04679 69 mbed::InterruptIn *_button_Y;
HenryWTriff 1:8c335af04679 70 mbed::InterruptIn *_button_start;
HenryWTriff 1:8c335af04679 71
HenryWTriff 1:8c335af04679 72 mbed::AnalogIn *_vert;
HenryWTriff 1:8c335af04679 73 mbed::AnalogIn *_horiz;
HenryWTriff 1:8c335af04679 74
HenryWTriff 1:8c335af04679 75 mbed::AnalogIn *_pot1;
HenryWTriff 1:8c335af04679 76 mbed::AnalogIn *_pot2;
HenryWTriff 1:8c335af04679 77
HenryWTriff 1:8c335af04679 78 mbed::AnalogOut *dac;
HenryWTriff 1:8c335af04679 79 mbed::Ticker *ticker;
HenryWTriff 1:8c335af04679 80 mbed::Timeout *timeout;
HenryWTriff 1:8c335af04679 81 mbed::Timeout *note_timeout;
HenryWTriff 1:8c335af04679 82
HenryWTriff 1:8c335af04679 83 // centred x,y values
HenryWTriff 1:8c335af04679 84 float _x0;
HenryWTriff 1:8c335af04679 85 float _y0;
HenryWTriff 1:8c335af04679 86
HenryWTriff 1:8c335af04679 87 float *_sample_array;
HenryWTriff 1:8c335af04679 88 const int *_notes;
HenryWTriff 1:8c335af04679 89 const int *_durations;
HenryWTriff 1:8c335af04679 90
HenryWTriff 1:8c335af04679 91 int _n;
HenryWTriff 1:8c335af04679 92 int _melody_length;
HenryWTriff 1:8c335af04679 93 volatile unsigned int _sample;
HenryWTriff 1:8c335af04679 94 volatile unsigned int _note;
HenryWTriff 1:8c335af04679 95 float _bpm;
HenryWTriff 1:8c335af04679 96 bool _repeat;
HenryWTriff 1:8c335af04679 97
HenryWTriff 1:8c335af04679 98
HenryWTriff 1:8c335af04679 99 public:
HenryWTriff 1:8c335af04679 100 /** Constructor */
HenryWTriff 1:8c335af04679 101 Gamepad();
HenryWTriff 1:8c335af04679 102
HenryWTriff 1:8c335af04679 103 /** Initialise all peripherals and configure interrupts */
HenryWTriff 1:8c335af04679 104 void init();
HenryWTriff 1:8c335af04679 105
HenryWTriff 1:8c335af04679 106 /** Turn all LEDs on */
HenryWTriff 1:8c335af04679 107 void leds_on();
HenryWTriff 1:8c335af04679 108
HenryWTriff 1:8c335af04679 109 /** Turn all LEDs off */
HenryWTriff 1:8c335af04679 110 void leds_off();
HenryWTriff 1:8c335af04679 111
HenryWTriff 1:8c335af04679 112 /** Set all LEDs to duty-cycle
HenryWTriff 1:8c335af04679 113 *@param value in range 0.0 to 1.0
HenryWTriff 1:8c335af04679 114 */
HenryWTriff 1:8c335af04679 115 void leds(float val) const;
HenryWTriff 1:8c335af04679 116
HenryWTriff 1:8c335af04679 117 /** Set LED to duty-cycle
HenryWTriff 1:8c335af04679 118 *@param led number (0 to 5)
HenryWTriff 1:8c335af04679 119 *@param value in range 0.0 to 1.0
HenryWTriff 1:8c335af04679 120 */
HenryWTriff 1:8c335af04679 121 void led(int n,float val) const;
HenryWTriff 1:8c335af04679 122
HenryWTriff 1:8c335af04679 123 /** Read potentiometer 1 value
HenryWTriff 1:8c335af04679 124 *@returns potentiometer value in range 0.0 to 1.0
HenryWTriff 1:8c335af04679 125 */
HenryWTriff 1:8c335af04679 126 float read_pot1() const;
HenryWTriff 1:8c335af04679 127
HenryWTriff 1:8c335af04679 128 /** Read potentiometer 2 value
HenryWTriff 1:8c335af04679 129 *@returns potentiometer value in range 0.0 to 1.0
HenryWTriff 1:8c335af04679 130 */
HenryWTriff 1:8c335af04679 131 float read_pot2() const;
HenryWTriff 1:8c335af04679 132
HenryWTriff 1:8c335af04679 133 /** Get magnitude of joystick movement
HenryWTriff 1:8c335af04679 134 * @returns value in range 0.0 to 1.0
HenryWTriff 1:8c335af04679 135 */
HenryWTriff 1:8c335af04679 136 float get_mag();
HenryWTriff 1:8c335af04679 137
HenryWTriff 1:8c335af04679 138 /** Get angle of joystick movement
HenryWTriff 1:8c335af04679 139 * @returns value in range 0.0 to 359.9. 0.0 corresponds to N, 180.0 to S. -1.0 is central
HenryWTriff 1:8c335af04679 140 */
HenryWTriff 1:8c335af04679 141 float get_angle();
HenryWTriff 1:8c335af04679 142
HenryWTriff 1:8c335af04679 143 /** Gets joystick direction
HenryWTriff 1:8c335af04679 144 * @returns an enum: CENTRE, N, NE, E, SE, S, SW, W, NW,
HenryWTriff 1:8c335af04679 145 */
HenryWTriff 1:8c335af04679 146 Direction get_direction(); // N,NE,E,SE etc.
HenryWTriff 1:8c335af04679 147
HenryWTriff 1:8c335af04679 148 /** Gets raw cartesian co-ordinates of joystick
HenryWTriff 1:8c335af04679 149 * @returns a struct with x,y members, each in the range 0.0 to 1.0
HenryWTriff 1:8c335af04679 150 */
HenryWTriff 1:8c335af04679 151 Vector2D get_coord(); // cartesian co-ordinates x,y
HenryWTriff 1:8c335af04679 152
HenryWTriff 1:8c335af04679 153 /** Gets cartesian coordinates mapped to circular grid
HenryWTriff 1:8c335af04679 154 * @returns a struct with x,y members, each in the range 0.0 to 1.0
HenryWTriff 1:8c335af04679 155 */
HenryWTriff 1:8c335af04679 156 Vector2D get_mapped_coord(); // x,y mapped to circle
HenryWTriff 1:8c335af04679 157
HenryWTriff 1:8c335af04679 158 /** Gets polar coordinates of the joystick
HenryWTriff 1:8c335af04679 159 * @returns a struct contains mag and angle
HenryWTriff 1:8c335af04679 160 */
HenryWTriff 1:8c335af04679 161 Polar get_polar(); // mag and angle in struct form
HenryWTriff 1:8c335af04679 162
HenryWTriff 1:8c335af04679 163
HenryWTriff 1:8c335af04679 164 /** Resets all button states. Useful for calling inbetween scenes
HenryWTriff 1:8c335af04679 165 * where you do not want button presses from the previous scene effecting
HenryWTriff 1:8c335af04679 166 * the current scene
HenryWTriff 1:8c335af04679 167 */
HenryWTriff 1:8c335af04679 168 void reset_buttons();
HenryWTriff 1:8c335af04679 169
HenryWTriff 1:8c335af04679 170 /** Returns true if A has been pressed
HenryWTriff 1:8c335af04679 171 * @returns a bool corresponding to A being pressed
HenryWTriff 1:8c335af04679 172 */
HenryWTriff 1:8c335af04679 173
HenryWTriff 1:8c335af04679 174 bool A_pressed();
HenryWTriff 1:8c335af04679 175
HenryWTriff 1:8c335af04679 176 /** Returns true if A is held
HenryWTriff 1:8c335af04679 177 * @returns a bool corresponding to A being held
HenryWTriff 1:8c335af04679 178 *
HenryWTriff 1:8c335af04679 179 */
HenryWTriff 1:8c335af04679 180 bool A_held();
HenryWTriff 1:8c335af04679 181
HenryWTriff 1:8c335af04679 182
HenryWTriff 1:8c335af04679 183 /** Returns true if B has been pressed
HenryWTriff 1:8c335af04679 184 * @returns a bool corresponding to B being pressed
HenryWTriff 1:8c335af04679 185 */
HenryWTriff 1:8c335af04679 186 bool B_pressed();
HenryWTriff 1:8c335af04679 187
HenryWTriff 1:8c335af04679 188 /** Returns true if B is held
HenryWTriff 1:8c335af04679 189 * @returns a bool corresponding to B being held
HenryWTriff 1:8c335af04679 190 *
HenryWTriff 1:8c335af04679 191 */
HenryWTriff 1:8c335af04679 192 bool B_held();
HenryWTriff 1:8c335af04679 193
HenryWTriff 1:8c335af04679 194 /** Returns true if B has been pressed
HenryWTriff 1:8c335af04679 195 * @returns a bool corresponding to B being pressed
HenryWTriff 1:8c335af04679 196 */
HenryWTriff 1:8c335af04679 197 bool X_pressed();
HenryWTriff 1:8c335af04679 198
HenryWTriff 1:8c335af04679 199 /** Returns true if X is held
HenryWTriff 1:8c335af04679 200 * @returns a bool corresponding to X being held
HenryWTriff 1:8c335af04679 201 *
HenryWTriff 1:8c335af04679 202 */
HenryWTriff 1:8c335af04679 203 bool X_held();
HenryWTriff 1:8c335af04679 204
HenryWTriff 1:8c335af04679 205 /** Returns true if Y has been pressed
HenryWTriff 1:8c335af04679 206 * @returns a bool corresponding to Y being pressed
HenryWTriff 1:8c335af04679 207 */
HenryWTriff 1:8c335af04679 208 bool Y_pressed();
HenryWTriff 1:8c335af04679 209
HenryWTriff 1:8c335af04679 210 /** Returns true if Y is held
HenryWTriff 1:8c335af04679 211 * @returns a bool corresponding to Y being held
HenryWTriff 1:8c335af04679 212 *
HenryWTriff 1:8c335af04679 213 */
HenryWTriff 1:8c335af04679 214 bool Y_held();
HenryWTriff 1:8c335af04679 215
HenryWTriff 1:8c335af04679 216
HenryWTriff 1:8c335af04679 217 /** Returns true if start has been pressed
HenryWTriff 1:8c335af04679 218 * @returns a bool corresponding to start being pressed
HenryWTriff 1:8c335af04679 219 */
HenryWTriff 1:8c335af04679 220 bool start_pressed();
HenryWTriff 1:8c335af04679 221
HenryWTriff 1:8c335af04679 222 /** Returns true if start is held
HenryWTriff 1:8c335af04679 223 * @returns a bool corresponding to start being held
HenryWTriff 1:8c335af04679 224 *
HenryWTriff 1:8c335af04679 225 */
HenryWTriff 1:8c335af04679 226 bool start_held();
HenryWTriff 1:8c335af04679 227
HenryWTriff 1:8c335af04679 228 /** Play a single tone for the specifed duration
HenryWTriff 1:8c335af04679 229 *@param note frequency (in Hz)
HenryWTriff 1:8c335af04679 230 *@param duration (in s)
HenryWTriff 1:8c335af04679 231 */
HenryWTriff 1:8c335af04679 232 void tone(const float frequency,const float duration);
HenryWTriff 1:8c335af04679 233
HenryWTriff 1:8c335af04679 234 /** Play a melody
HenryWTriff 1:8c335af04679 235 *@param length of note array
HenryWTriff 1:8c335af04679 236 *@param array of note frequencies (in Hz) - 0 treated as a rest
HenryWTriff 1:8c335af04679 237 *@param array of note durations (4 corresponds to 1/4, 8 is 1/8 etc.)
HenryWTriff 1:8c335af04679 238 *@param beats per minute
HenryWTriff 1:8c335af04679 239 *@param whether to repeat or play just once
HenryWTriff 1:8c335af04679 240 */
HenryWTriff 1:8c335af04679 241 void play_melody(int length,const int *notes,const int *durations,float bpm,bool repeat);
HenryWTriff 1:8c335af04679 242
HenryWTriff 1:8c335af04679 243 /** Set the BPM of the melody
HenryWTriff 1:8c335af04679 244 *@param beats per minute
HenryWTriff 1:8c335af04679 245 */
HenryWTriff 1:8c335af04679 246 void set_bpm(float bpm);
HenryWTriff 1:8c335af04679 247
HenryWTriff 1:8c335af04679 248 /** Write an analog voltage to the speaker
HenryWTriff 1:8c335af04679 249 *@param voltage in range 0.0 to 1.0 (corresponds 0.0 to 3.3 V)
HenryWTriff 1:8c335af04679 250 */
HenryWTriff 1:8c335af04679 251 void write_dac(float val);
HenryWTriff 1:8c335af04679 252
HenryWTriff 1:8c335af04679 253
HenryWTriff 1:8c335af04679 254
HenryWTriff 1:8c335af04679 255
HenryWTriff 1:8c335af04679 256 private:
HenryWTriff 1:8c335af04679 257
HenryWTriff 1:8c335af04679 258 volatile bool A_fall;
HenryWTriff 1:8c335af04679 259 void A_fall_interrupt();
HenryWTriff 1:8c335af04679 260
HenryWTriff 1:8c335af04679 261 volatile bool B_fall;
HenryWTriff 1:8c335af04679 262 void B_fall_interrupt();
HenryWTriff 1:8c335af04679 263
HenryWTriff 1:8c335af04679 264 volatile bool X_fall;
HenryWTriff 1:8c335af04679 265 void X_fall_interrupt();
HenryWTriff 1:8c335af04679 266
HenryWTriff 1:8c335af04679 267 volatile bool Y_fall;
HenryWTriff 1:8c335af04679 268 void Y_fall_interrupt();
HenryWTriff 1:8c335af04679 269
HenryWTriff 1:8c335af04679 270 volatile bool start_fall;
HenryWTriff 1:8c335af04679 271 void start_fall_interrupt();
HenryWTriff 1:8c335af04679 272
HenryWTriff 1:8c335af04679 273 // Tone functions
HenryWTriff 1:8c335af04679 274 void ticker_isr();
HenryWTriff 1:8c335af04679 275 void timeout_isr();
HenryWTriff 1:8c335af04679 276 void note_timeout_isr();
HenryWTriff 1:8c335af04679 277 void play_next_note();
HenryWTriff 1:8c335af04679 278
HenryWTriff 1:8c335af04679 279
HenryWTriff 1:8c335af04679 280
HenryWTriff 1:8c335af04679 281 };
HenryWTriff 1:8c335af04679 282
HenryWTriff 1:8c335af04679 283 // Note definitions from Arduino.cc
HenryWTriff 1:8c335af04679 284 #define NOTE_B0 31
HenryWTriff 1:8c335af04679 285 #define NOTE_C1 33
HenryWTriff 1:8c335af04679 286 #define NOTE_CS1 35
HenryWTriff 1:8c335af04679 287 #define NOTE_D1 37
HenryWTriff 1:8c335af04679 288 #define NOTE_DS1 39
HenryWTriff 1:8c335af04679 289 #define NOTE_E1 41
HenryWTriff 1:8c335af04679 290 #define NOTE_F1 44
HenryWTriff 1:8c335af04679 291 #define NOTE_FS1 46
HenryWTriff 1:8c335af04679 292 #define NOTE_G1 49
HenryWTriff 1:8c335af04679 293 #define NOTE_GS1 52
HenryWTriff 1:8c335af04679 294 #define NOTE_A1 55
HenryWTriff 1:8c335af04679 295 #define NOTE_AS1 58
HenryWTriff 1:8c335af04679 296 #define NOTE_B1 62
HenryWTriff 1:8c335af04679 297 #define NOTE_C2 65
HenryWTriff 1:8c335af04679 298 #define NOTE_CS2 69
HenryWTriff 1:8c335af04679 299 #define NOTE_D2 73
HenryWTriff 1:8c335af04679 300 #define NOTE_DS2 78
HenryWTriff 1:8c335af04679 301 #define NOTE_E2 82
HenryWTriff 1:8c335af04679 302 #define NOTE_F2 87
HenryWTriff 1:8c335af04679 303 #define NOTE_FS2 93
HenryWTriff 1:8c335af04679 304 #define NOTE_G2 98
HenryWTriff 1:8c335af04679 305 #define NOTE_GS2 104
HenryWTriff 1:8c335af04679 306 #define NOTE_A2 110
HenryWTriff 1:8c335af04679 307 #define NOTE_AS2 117
HenryWTriff 1:8c335af04679 308 #define NOTE_B2 123
HenryWTriff 1:8c335af04679 309 #define NOTE_C3 131
HenryWTriff 1:8c335af04679 310 #define NOTE_CS3 139
HenryWTriff 1:8c335af04679 311 #define NOTE_D3 147
HenryWTriff 1:8c335af04679 312 #define NOTE_DS3 156
HenryWTriff 1:8c335af04679 313 #define NOTE_E3 165
HenryWTriff 1:8c335af04679 314 #define NOTE_F3 175
HenryWTriff 1:8c335af04679 315 #define NOTE_FS3 185
HenryWTriff 1:8c335af04679 316 #define NOTE_G3 196
HenryWTriff 1:8c335af04679 317 #define NOTE_GS3 208
HenryWTriff 1:8c335af04679 318 #define NOTE_A3 220
HenryWTriff 1:8c335af04679 319 #define NOTE_AS3 233
HenryWTriff 1:8c335af04679 320 #define NOTE_B3 247
HenryWTriff 1:8c335af04679 321 #define NOTE_C4 262
HenryWTriff 1:8c335af04679 322 #define NOTE_CS4 277
HenryWTriff 1:8c335af04679 323 #define NOTE_D4 294
HenryWTriff 1:8c335af04679 324 #define NOTE_DS4 311
HenryWTriff 1:8c335af04679 325 #define NOTE_E4 330
HenryWTriff 1:8c335af04679 326 #define NOTE_F4 349
HenryWTriff 1:8c335af04679 327 #define NOTE_FS4 370
HenryWTriff 1:8c335af04679 328 #define NOTE_G4 392
HenryWTriff 1:8c335af04679 329 #define NOTE_GS4 415
HenryWTriff 1:8c335af04679 330 #define NOTE_A4 440
HenryWTriff 1:8c335af04679 331 #define NOTE_AS4 466
HenryWTriff 1:8c335af04679 332 #define NOTE_B4 494
HenryWTriff 1:8c335af04679 333 #define NOTE_C5 523
HenryWTriff 1:8c335af04679 334 #define NOTE_CS5 554
HenryWTriff 1:8c335af04679 335 #define NOTE_D5 587
HenryWTriff 1:8c335af04679 336 #define NOTE_DS5 622
HenryWTriff 1:8c335af04679 337 #define NOTE_E5 659
HenryWTriff 1:8c335af04679 338 #define NOTE_F5 698
HenryWTriff 1:8c335af04679 339 #define NOTE_FS5 740
HenryWTriff 1:8c335af04679 340 #define NOTE_G5 784
HenryWTriff 1:8c335af04679 341 #define NOTE_GS5 831
HenryWTriff 1:8c335af04679 342 #define NOTE_A5 880
HenryWTriff 1:8c335af04679 343 #define NOTE_AS5 932
HenryWTriff 1:8c335af04679 344 #define NOTE_B5 988
HenryWTriff 1:8c335af04679 345 #define NOTE_C6 1047
HenryWTriff 1:8c335af04679 346 #define NOTE_CS6 1109
HenryWTriff 1:8c335af04679 347 #define NOTE_D6 1175
HenryWTriff 1:8c335af04679 348 #define NOTE_DS6 1245
HenryWTriff 1:8c335af04679 349 #define NOTE_E6 1319
HenryWTriff 1:8c335af04679 350 #define NOTE_F6 1397
HenryWTriff 1:8c335af04679 351 #define NOTE_FS6 1480
HenryWTriff 1:8c335af04679 352 #define NOTE_G6 1568
HenryWTriff 1:8c335af04679 353 #define NOTE_GS6 1661
HenryWTriff 1:8c335af04679 354 #define NOTE_A6 1760
HenryWTriff 1:8c335af04679 355 #define NOTE_AS6 1865
HenryWTriff 1:8c335af04679 356 #define NOTE_B6 1976
HenryWTriff 1:8c335af04679 357 #define NOTE_C7 2093
HenryWTriff 1:8c335af04679 358 #define NOTE_CS7 2217
HenryWTriff 1:8c335af04679 359 #define NOTE_D7 2349
HenryWTriff 1:8c335af04679 360 #define NOTE_DS7 2489
HenryWTriff 1:8c335af04679 361 #define NOTE_E7 2637
HenryWTriff 1:8c335af04679 362 #define NOTE_F7 2794
HenryWTriff 1:8c335af04679 363 #define NOTE_FS7 2960
HenryWTriff 1:8c335af04679 364 #define NOTE_G7 3136
HenryWTriff 1:8c335af04679 365 #define NOTE_GS7 3322
HenryWTriff 1:8c335af04679 366 #define NOTE_A7 3520
HenryWTriff 1:8c335af04679 367 #define NOTE_AS7 3729
HenryWTriff 1:8c335af04679 368 #define NOTE_B7 3951
HenryWTriff 1:8c335af04679 369 #define NOTE_C8 4186
HenryWTriff 1:8c335af04679 370 #define NOTE_CS8 4435
HenryWTriff 1:8c335af04679 371 #define NOTE_D8 4699
HenryWTriff 1:8c335af04679 372 #define NOTE_DS8 4978
HenryWTriff 1:8c335af04679 373
HenryWTriff 1:8c335af04679 374 #endif