// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: enum.proto

#ifndef GOOGLE_PROTOBUF_INCLUDED_enum_2eproto
#define GOOGLE_PROTOBUF_INCLUDED_enum_2eproto

#include <limits>
#include <string>

#include <google/protobuf/port_def.inc>
#if PROTOBUF_VERSION < 3015000
#error This file was generated by a newer version of protoc which is
#error incompatible with your Protocol Buffer headers. Please update
#error your headers.
#endif
#if 3015008 < PROTOBUF_MIN_PROTOC_VERSION
#error This file was generated by an older version of protoc which is
#error incompatible with your Protocol Buffer headers. Please
#error regenerate this file with a newer version of protoc.
#endif

#include <google/protobuf/port_undef.inc>
#include <google/protobuf/io/coded_stream.h>
#include <google/protobuf/arena.h>
#include <google/protobuf/arenastring.h>
#include <google/protobuf/generated_message_table_driven.h>
#include <google/protobuf/generated_message_util.h>
#include <google/protobuf/metadata_lite.h>
#include <google/protobuf/generated_message_reflection.h>
#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
#include <google/protobuf/extension_set.h>  // IWYU pragma: export
#include <google/protobuf/generated_enum_reflection.h>
// @@protoc_insertion_point(includes)
#include <google/protobuf/port_def.inc>
#define PROTOBUF_INTERNAL_EXPORT_enum_2eproto
PROTOBUF_NAMESPACE_OPEN
namespace internal {
class AnyMetadata;
}  // namespace internal
PROTOBUF_NAMESPACE_CLOSE

// Internal implementation detail -- do not use these members.
struct TableStruct_enum_2eproto {
  static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTableField entries[]
    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
  static const ::PROTOBUF_NAMESPACE_ID::internal::AuxiliaryParseTableField aux[]
    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
  static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTable schema[1]
    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
  static const ::PROTOBUF_NAMESPACE_ID::internal::FieldMetadata field_metadata[];
  static const ::PROTOBUF_NAMESPACE_ID::internal::SerializationTable serialization_table[];
  static const ::PROTOBUF_NAMESPACE_ID::uint32 offsets[];
};
extern const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_enum_2eproto;
::PROTOBUF_NAMESPACE_ID::Metadata descriptor_table_enum_2eproto_metadata_getter(int index);
PROTOBUF_NAMESPACE_OPEN
PROTOBUF_NAMESPACE_CLOSE
namespace midi {

enum GM_TYPE : int {
  any = 0,
  piano = 1,
  chromatic_perc = 2,
  organ = 3,
  guitar = 4,
  bass = 5,
  strings = 6,
  ensemble = 7,
  brass = 8,
  reed = 9,
  pipe = 10,
  synth_lead = 11,
  synth_pad = 12,
  synth_effects = 13,
  ethnic = 14,
  percussive = 15,
  sound_fx = 16,
  no_drums = 17,
  drums = 18,
  acoustic_grand_piano = 19,
  bright_acoustic_piano = 20,
  electric_grand_piano = 21,
  honky_tonk_piano = 22,
  electric_piano_1 = 23,
  electric_piano_2 = 24,
  harpsichord = 25,
  clavi = 26,
  celesta = 27,
  glockenspiel = 28,
  music_box = 29,
  vibraphone = 30,
  marimba = 31,
  xylophone = 32,
  tubular_bells = 33,
  dulcimer = 34,
  drawbar_organ = 35,
  percussive_organ = 36,
  rock_organ = 37,
  church_organ = 38,
  reed_organ = 39,
  accordion = 40,
  harmonica = 41,
  tango_accordion = 42,
  acoustic_guitar_nylon = 43,
  acoustic_guitar_steel = 44,
  electric_guitar_jazz = 45,
  electric_guitar_clean = 46,
  electric_guitar_muted = 47,
  overdriven_guitar = 48,
  distortion_guitar = 49,
  guitar_harmonics = 50,
  acoustic_bass = 51,
  electric_bass_finger = 52,
  electric_bass_pick = 53,
  fretless_bass = 54,
  slap_bass_1 = 55,
  slap_bass_2 = 56,
  synth_bass_1 = 57,
  synth_bass_2 = 58,
  violin = 59,
  viola = 60,
  cello = 61,
  contrabass = 62,
  tremolo_strings = 63,
  pizzicato_strings = 64,
  orchestral_harp = 65,
  timpani = 66,
  string_ensemble_1 = 67,
  string_ensemble_2 = 68,
  synth_strings_1 = 69,
  synth_strings_2 = 70,
  choir_aahs = 71,
  voice_oohs = 72,
  synth_voice = 73,
  orchestra_hit = 74,
  trumpet = 75,
  trombone = 76,
  tuba = 77,
  muted_trumpet = 78,
  french_horn = 79,
  brass_section = 80,
  synth_brass_1 = 81,
  synth_brass_2 = 82,
  soprano_sax = 83,
  alto_sax = 84,
  tenor_sax = 85,
  baritone_sax = 86,
  oboe = 87,
  english_horn = 88,
  bassoon = 89,
  clarinet = 90,
  piccolo = 91,
  flute = 92,
  recorder = 93,
  pan_flute = 94,
  blown_bottle = 95,
  shakuhachi = 96,
  whistle = 97,
  ocarina = 98,
  lead_1_square = 99,
  lead_2_sawtooth = 100,
  lead_3_calliope = 101,
  lead_4_chiff = 102,
  lead_5_charang = 103,
  lead_6_voice = 104,
  lead_7_fifths = 105,
  lead_8_bass__lead = 106,
  pad_1_new_age = 107,
  pad_2_warm = 108,
  pad_3_polysynth = 109,
  pad_4_choir = 110,
  pad_5_bowed = 111,
  pad_6_metallic = 112,
  pad_7_halo = 113,
  pad_8_sweep = 114,
  fx_1_rain = 115,
  fx_2_soundtrack = 116,
  fx_3_crystal = 117,
  fx_4_atmosphere = 118,
  fx_5_brightness = 119,
  fx_6_goblins = 120,
  fx_7_echoes = 121,
  fx_8_sci_fi = 122,
  sitar = 123,
  banjo = 124,
  shamisen = 125,
  koto = 126,
  kalimba = 127,
  bag_pipe = 128,
  fiddle = 129,
  shanai = 130,
  tinkle_bell = 131,
  agogo = 132,
  steel_drums = 133,
  woodblock = 134,
  taiko_drum = 135,
  melodic_tom = 136,
  synth_drum = 137,
  reverse_cymbal = 138,
  guitar_fret_noise = 139,
  breath_noise = 140,
  seashore = 141,
  bird_tweet = 142,
  telephone_ring = 143,
  helicopter = 144,
  applause = 145,
  gunshot = 146,
  drum_0 = 147,
  drum_1 = 148,
  drum_2 = 149,
  drum_3 = 150,
  drum_4 = 151,
  drum_5 = 152,
  drum_6 = 153,
  drum_7 = 154,
  drum_8 = 155,
  drum_9 = 156,
  drum_10 = 157,
  drum_11 = 158,
  drum_12 = 159,
  drum_13 = 160,
  drum_14 = 161,
  drum_15 = 162,
  drum_16 = 163,
  drum_17 = 164,
  drum_18 = 165,
  drum_19 = 166,
  drum_20 = 167,
  drum_21 = 168,
  drum_22 = 169,
  drum_23 = 170,
  drum_24 = 171,
  drum_25 = 172,
  drum_26 = 173,
  drum_27 = 174,
  drum_28 = 175,
  drum_29 = 176,
  drum_30 = 177,
  drum_31 = 178,
  drum_32 = 179,
  drum_33 = 180,
  drum_34 = 181,
  drum_35 = 182,
  drum_36 = 183,
  drum_37 = 184,
  drum_38 = 185,
  drum_39 = 186,
  drum_40 = 187,
  drum_41 = 188,
  drum_42 = 189,
  drum_43 = 190,
  drum_44 = 191,
  drum_45 = 192,
  drum_46 = 193,
  drum_47 = 194,
  drum_48 = 195,
  drum_49 = 196,
  drum_50 = 197,
  drum_51 = 198,
  drum_52 = 199,
  drum_53 = 200,
  drum_54 = 201,
  drum_55 = 202,
  drum_56 = 203,
  drum_57 = 204,
  drum_58 = 205,
  drum_59 = 206,
  drum_60 = 207,
  drum_61 = 208,
  drum_62 = 209,
  drum_63 = 210,
  drum_64 = 211,
  drum_65 = 212,
  drum_66 = 213,
  drum_67 = 214,
  drum_68 = 215,
  drum_69 = 216,
  drum_70 = 217,
  drum_71 = 218,
  drum_72 = 219,
  drum_73 = 220,
  drum_74 = 221,
  drum_75 = 222,
  drum_76 = 223,
  drum_77 = 224,
  drum_78 = 225,
  drum_79 = 226,
  drum_80 = 227,
  drum_81 = 228,
  drum_82 = 229,
  drum_83 = 230,
  drum_84 = 231,
  drum_85 = 232,
  drum_86 = 233,
  drum_87 = 234,
  drum_88 = 235,
  drum_89 = 236,
  drum_90 = 237,
  drum_91 = 238,
  drum_92 = 239,
  drum_93 = 240,
  drum_94 = 241,
  drum_95 = 242,
  drum_96 = 243,
  drum_97 = 244,
  drum_98 = 245,
  drum_99 = 246,
  drum_100 = 247,
  drum_101 = 248,
  drum_102 = 249,
  drum_103 = 250,
  drum_104 = 251,
  drum_105 = 252,
  drum_106 = 253,
  drum_107 = 254,
  drum_108 = 255,
  drum_109 = 256,
  drum_110 = 257,
  drum_111 = 258,
  drum_112 = 259,
  drum_113 = 260,
  drum_114 = 261,
  drum_115 = 262,
  drum_116 = 263,
  drum_117 = 264,
  drum_118 = 265,
  drum_119 = 266,
  drum_120 = 267,
  drum_121 = 268,
  drum_122 = 269,
  drum_123 = 270,
  drum_124 = 271,
  drum_125 = 272,
  drum_126 = 273,
  drum_127 = 274
};
bool GM_TYPE_IsValid(int value);
constexpr GM_TYPE GM_TYPE_MIN = any;
constexpr GM_TYPE GM_TYPE_MAX = drum_127;
constexpr int GM_TYPE_ARRAYSIZE = GM_TYPE_MAX + 1;

const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* GM_TYPE_descriptor();
template<typename T>
inline const std::string& GM_TYPE_Name(T enum_t_value) {
  static_assert(::std::is_same<T, GM_TYPE>::value ||
    ::std::is_integral<T>::value,
    "Incorrect type passed to function GM_TYPE_Name.");
  return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum(
    GM_TYPE_descriptor(), enum_t_value);
}
inline bool GM_TYPE_Parse(
    ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, GM_TYPE* value) {
  return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<GM_TYPE>(
    GM_TYPE_descriptor(), name, value);
}
// ===================================================================


// ===================================================================


// ===================================================================

#ifdef __GNUC__
  #pragma GCC diagnostic push
  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
#endif  // __GNUC__
#ifdef __GNUC__
  #pragma GCC diagnostic pop
#endif  // __GNUC__

// @@protoc_insertion_point(namespace_scope)

}  // namespace midi

PROTOBUF_NAMESPACE_OPEN

template <> struct is_proto_enum< ::midi::GM_TYPE> : ::std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor< ::midi::GM_TYPE>() {
  return ::midi::GM_TYPE_descriptor();
}

PROTOBUF_NAMESPACE_CLOSE

// @@protoc_insertion_point(global_scope)

#include <google/protobuf/port_undef.inc>
#endif  // GOOGLE_PROTOBUF_INCLUDED_GOOGLE_PROTOBUF_INCLUDED_enum_2eproto
