//Attempts to provide a complete framework for reading everything from a fortress needed for vizualization package ItemdefInstrument; option optimize_for = LITE_RUNTIME; // Plugin: RemoteFortressReader message InstrumentFlags { optional bool indefinite_pitch = 1; optional bool placed_as_building = 2; optional bool metal_mat = 3; optional bool stone_mat = 4; optional bool wood_mat = 5; optional bool glass_mat = 6; optional bool ceramic_mat = 7; optional bool shell_mat = 8; optional bool bone_mat = 9; } enum PitchChoiceType { MEMBRANE_POSITION = 0; SUBPART_CHOICE = 1; KEYBOARD = 2; STOPPING_FRET = 3; STOPPING_AGAINST_BODY = 4; STOPPING_HOLE = 5; STOPPING_HOLE_KEY = 6; SLIDE = 7; HARMONIC_SERIES = 8; VALVE_ROUTES_AIR = 9; BP_IN_BELL = 10; FOOT_PEDALS = 11; } enum SoundProductionType { PLUCKED_BY_BP = 0; PLUCKED = 1; BOWED = 2; STRUCK_BY_BP = 3; STRUCK = 4; VIBRATE_BP_AGAINST_OPENING = 5; BLOW_AGAINST_FIPPLE = 6; BLOW_OVER_OPENING_SIDE = 7; BLOW_OVER_OPENING_END = 8; BLOW_OVER_SINGLE_REED = 9; BLOW_OVER_DOUBLE_REED = 10; BLOW_OVER_FREE_REED = 11; STRUCK_TOGETHER = 12; SHAKEN = 13; SCRAPED = 14; FRICTION = 15; RESONATOR = 16; BAG_OVER_REED = 17; AIR_OVER_REED = 18; AIR_OVER_FREE_REED = 19; AIR_AGAINST_FIPPLE = 20; } enum TuningType { PEGS = 0; ADJUSTABLE_BRIDGES = 1; CROOKS = 2; TIGHTENING = 3; LEVERS = 4; } message InstrumentPiece { optional string type = 1; optional string id = 2; optional string name = 3; optional string name_plural = 4; } message InstrumentRegister { optional int32 pitch_range_min = 1; optional int32 pitch_range_max = 2; } message InstrumentDef { optional InstrumentFlags flags = 1; optional int32 size = 2; optional int32 value = 3; optional int32 material_size = 4; repeated InstrumentPiece pieces = 5; optional int32 pitch_range_min = 6; optional int32 pitch_range_max = 7; optional int32 volume_mb_min = 8; optional int32 volume_mb_max = 9; repeated SoundProductionType sound_production = 10; repeated string sound_production_parm1 = 11; repeated string sound_production_parm2 = 12; repeated PitchChoiceType pitch_choice = 13; repeated string pitch_choice_parm1 = 14; repeated string pitch_choice_parm2 = 15; repeated TuningType tuning = 16; repeated string tuning_parm = 17; repeated InstrumentRegister registers = 18; optional string description = 19; }