{
  "_note": "Sprecher-Pool fuer die Funk-Pille. Pro Audio-ID festes Mapping. 8 Profile, davon 4 Pilot*innen rotierend ueber die 14 Helis (Heli-Key bestimmt zugewiesenen Pool-Eintrag).",
  "speakers": {
    "tower_f": {
      "label": "Tower",
      "role": "Tower-Lotsin",
      "gender": "female",
      "image": "img/speakers/tower_f.png"
    },
    "briefing_f": {
      "label": "Briefing",
      "role": "Briefing-Offizierin",
      "gender": "female",
      "image": "img/speakers/briefing_f.png"
    },
    "pilot_a_m": {
      "label": "Pilot Hannes",
      "role": "Pilot",
      "gender": "male",
      "image": "img/speakers/pilot_a_m.png"
    },
    "pilot_b_f": {
      "label": "Pilotin Marlene",
      "role": "Pilotin",
      "gender": "female",
      "image": "img/speakers/pilot_b_f.png"
    },
    "pilot_c_m": {
      "label": "Pilot Stefan",
      "role": "Pilot",
      "gender": "male",
      "image": "img/speakers/pilot_c_m.png"
    },
    "pilot_d_f": {
      "label": "Pilotin Sarah",
      "role": "Pilotin",
      "gender": "female",
      "image": "img/speakers/pilot_d_f.png"
    },
    "retter_m": {
      "label": "Flugretter",
      "role": "Bergrettung",
      "gender": "male",
      "image": "img/speakers/retter_m.png"
    },
    "sani_f": {
      "label": "Sanitäterin",
      "role": "Notfallsanitaeterin",
      "gender": "female",
      "image": "img/speakers/sani_f.png"
    }
  },
  "_pilot_by_helikey": "Welcher Pilot*innen-Pool-Eintrag zu welchem Heli-Stuetzpunkt gehoert. Ab 2026-05-31: ALLE Stützpunkte sind Marlene (pilot_b_f) zugewiesen — konsistent mit Onboarding (Marlene = zentrale Chefpilotin/Mentorin). Die Profile pilot_a_m / pilot_c_m / pilot_d_f bleiben im System fuer spaetere Versionen mit erweiterter Pilot*innen-Vielfalt.",
  "pilot_by_helikey": {
    "c1": "pilot_b_f",
    "c2": "pilot_b_f",
    "c3": "pilot_b_f",
    "c4": "pilot_b_f",
    "c5": "pilot_b_f",
    "c6": "pilot_b_f",
    "c7": "pilot_b_f",
    "c8": "pilot_b_f",
    "c9": "pilot_b_f",
    "c10": "pilot_b_f",
    "c11": "pilot_b_f",
    "c12": "pilot_b_f",
    "c14": "pilot_b_f",
    "c16": "pilot_b_f",
    "ara": "pilot_b_f"
  },
  "_rules": "Erste passende Regel gewinnt. Die {pilot}-Variable wird via pilot_by_helikey aufgeloest, abhaengig von der Mission. Tower-Audios bekommen weiter ein wechselndes Label-Suffix (Innsbruck/Wien/Salzburg/...) — Bild bleibt aber immer tower_f.",
  "rules": [
    {
      "match": "^r_mission_intro_",
      "speaker": "tower_f",
      "label": "Tower {tower_city}"
    },
    {
      "match": "^r_tower\\d+$",
      "speaker": "tower_f",
      "label": "Tower {tower_city}"
    },
    {
      "match": "^r_success\\d?$",
      "speaker": "tower_f",
      "label": "Tower {tower_city}"
    },
    {
      "match": "^r_zwischenlandung_pflicht",
      "speaker": "pilot_b_f",
      "label": "Pilotin Marlene"
    },
    {
      "match": "^r_start_erfolg",
      "speaker": "tower_f",
      "label": "Tower {tower_city}"
    },
    {
      "match": "^r_nachtrag_",
      "speaker": "pilot_b_f",
      "label": "Pilotin Marlene"
    },
    {
      "match": "^r_mission_geo_",
      "speaker": "briefing_f",
      "label": "Briefing-Offizierin"
    },
    {
      "match": "^r_mission_start_",
      "speaker": "tower_f",
      "label": "Tower {tower_city}"
    },
    {
      "match": "^r_caution_",
      "speaker": "{pilot}",
      "label": "{pilot_label}"
    },
    {
      "match": "^r_patient_aboard_m$",
      "speaker": "retter_m",
      "label": "Flugretter"
    },
    {
      "match": "^r_patient_aboard$",
      "speaker": "sani_f",
      "label": "Sanitäterin"
    },
    {
      "match": "^r_kurs_klinik(_m)?$",
      "speaker": "{pilot}",
      "label": "{pilot_label}"
    },
    {
      "match": "^r_mission_success$",
      "speaker": "tower_f",
      "label": "Tower {tower_city}"
    },
    {
      "match": "^r_mission_abort(_m)?$",
      "speaker": "{pilot}",
      "label": "{pilot_label}"
    },
    {
      "match": "^r_im_zielgebiet(_m)?$",
      "speaker": "{pilot}",
      "label": "{pilot_label}"
    },
    {
      "match": "^r_warteschleife(_m)?$",
      "speaker": "{pilot}",
      "label": "{pilot_label}"
    },
    {
      "match": "^r_start_erfolg(_m)?$",
      "speaker": "{pilot}",
      "label": "{pilot_label}"
    },
    {
      "match": "^r_tower_geo_",
      "speaker": "briefing_f",
      "label": "Briefing-Offizierin"
    },
    {
      "match": "^r_tower_(approach|extract|start)_",
      "speaker": "tower_f",
      "label": "Tower {tower_city}"
    },
    {
      "match": "^r_tower_(hw|sea)_(approach|extract)_",
      "speaker": "tower_f",
      "label": "Tower {tower_city}"
    },
    {
      "match": "^r_tower_handover_",
      "speaker": "tower_f",
      "label": "Tower"
    },
    {
      "match": "^r_tower_lesson_",
      "speaker": "tower_f",
      "label": "Tower {tower_city}"
    },
    {
      "match": "^r_tower_strike_",
      "speaker": "tower_f",
      "label": "Tower {tower_city}"
    },
    {
      "match": "^r_wp_geo_",
      "speaker": "briefing_f",
      "label": "Briefing-Offizierin"
    },
    {
      "match": "^r_pilot_call_",
      "speaker": "{pilot}",
      "label": "{pilot_label}"
    },
    {
      "match": "^r_pilot_hw_",
      "speaker": "{pilot}",
      "label": "{pilot_label}"
    },
    {
      "match": "^r_pilot_",
      "speaker": "{pilot}",
      "label": "{pilot_label}"
    },
    {
      "match": "^r_retter_hw_",
      "speaker": "sani_f",
      "label": "Sanitäterin"
    },
    {
      "match": "^r_retter_",
      "speaker": "retter_m",
      "label": "Flugretter"
    },
    {
      "match": "^r_land_(rescuer_down|rescuer_ready)",
      "speaker": "retter_m",
      "label": "Flugretter"
    },
    {
      "match": "^r_land_disembark",
      "speaker": "tower_f",
      "label": "Tower {tower_city}"
    },
    {
      "match": "^r_land_",
      "speaker": "{pilot}",
      "label": "{pilot_label}"
    },
    {
      "match": "^r_nav_",
      "speaker": "{pilot}",
      "label": "{pilot_label}"
    },
    {
      "match": "^r_warn_",
      "speaker": "{pilot}",
      "label": "{pilot_label}"
    },
    {
      "match": "^r_strike|^r_ouch|^r_takeover",
      "speaker": "{pilot}",
      "label": "{pilot_label}"
    }
  ],
  "_tower_city_by_helikey": "Welche Tower-Stadt zu welchem Heli gehoert (real, nicht erfunden). c2/c3/c14/c16 sind AFIS-Plaetze und sprechen mit Wien Information.",
  "tower_city_by_helikey": {
    "c1": "Innsbruck Tower",
    "c2": "Wien Information",
    "c3": "Wien Information",
    "c4": "Innsbruck Tower",
    "c5": "Innsbruck Tower",
    "c6": "Salzburg Tower",
    "c7": "Klagenfurt Tower",
    "c8": "Innsbruck Tower",
    "c9": "Wien Tower",
    "c10": "Linz Tower",
    "c11": "Klagenfurt Tower",
    "c12": "Graz Tower",
    "c14": "Wien Information",
    "c16": "Wien Information",
    "ara": "Innsbruck Tower"
  }
}