ZIWEI LIU / Mbed 2 deprecated ELEC2645_Project_el19z2l

Dependencies:   mbed

Committer:
alexliu0812
Date:
Thu May 14 06:54:58 2020 +0000
Revision:
1:11854f815cc8
welcome

Who changed what in which revision?

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