All there but errors need fixing

Dependencies:   mbed

Overview:

Rookie Tetris is a jigsaw style game based on the classic Tetris.

A block will appear at the top of the screen, you must move it (your options for movement are left, right and down - you cannot move up the board). The block will stop when it if placed either on the floor of the board or on-top of another block.

Your goal is to fill a complete row of the board with the blocks; when you do so the row will delete and the pattern above it will drop down. The game is over when your pattern is tall enough to reach to the top of the board!

Controls:

Use the joystick to move your block! Your block cannot move out of the parameters of the board.

Pot 2 controls the contrast of the screen.

Committer:
el18rs
Date:
Fri May 22 10:36:01 2020 +0000
Revision:
1:35dba0833c7d
Start

Who changed what in which revision?

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