ELEC2645 (2019/20) / Mbed 2 deprecated ELEC2645_Project_el19tb

Dependencies:   mbed

Committer:
el19tb
Date:
Mon Mar 09 17:52:38 2020 +0000
Revision:
1:6afa6a6a8131
initial commit

Who changed what in which revision?

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