from dataclasses import dataclass


@dataclass
class PluginInfo:
    name: str
    category: str       # eq, compressor, limiter, de_esser, reverb, delay, saturation, modulation, etc.
    character: str


AU_PLUGINS: dict[tuple[str, str], PluginInfo] = {
    # ── Waves (ksWV) ──────────────────────────────────────────────────────
    ("ksWV", "76CM"): PluginInfo("Waves CLA-76", "compressor", "FET compressor"),
    ("ksWV", "76CS"): PluginInfo("Waves CLA-76", "compressor", "FET compressor stereo"),
    ("ksWV", "TG5M"): PluginInfo("Waves Abbey Road TG Mastering Chain", "channel_strip", "vintage console"),
    ("ksWV", "TG5S"): PluginInfo("Waves Abbey Road TG Mastering Chain", "channel_strip", "vintage console stereo"),
    ("ksWV", "DSAM"): PluginInfo("Waves De-Esser", "de_esser", "sibilance de-esser"),
    ("ksWV", "DSAS"): PluginInfo("Waves De-Esser", "de_esser", "sibilance de-esser stereo"),
    ("ksWV", "LA2M"): PluginInfo("Waves CLA-2A", "compressor", "opto compressor"),
    ("ksWV", "LA2S"): PluginInfo("Waves CLA-2A", "compressor", "opto compressor stereo"),
    ("ksWV", "LA3M"): PluginInfo("Waves CLA-3A", "compressor", "opto compressor"),
    ("ksWV", "LA3S"): PluginInfo("Waves CLA-3A", "compressor", "opto compressor stereo"),
    ("ksWV", "L1CM"): PluginInfo("Waves L1 Limiter", "limiter", "brickwall peak limiter"),
    ("ksWV", "L1CS"): PluginInfo("Waves L1 Limiter", "limiter", "brickwall peak limiter stereo"),
    ("ksWV", "BSLM"): PluginInfo("Waves Bass Rider", "utility", "bass level rider"),
    ("ksWV", "BSLS"): PluginInfo("Waves Bass Rider", "utility", "bass level rider stereo"),
    ("ksWV", "T37M"): PluginInfo("Waves J37 Tape", "saturation", "tape saturation"),
    ("ksWV", "T37S"): PluginInfo("Waves J37 Tape", "saturation", "tape saturation stereo"),
    ("ksWV", "NIDM"): PluginInfo("Waves Renaissance De-Esser", "de_esser", "renaissance de-esser"),
    ("ksWV", "NIDS"): PluginInfo("Waves Renaissance De-Esser", "de_esser", "renaissance de-esser stereo"),
    ("ksWV", "APCM"): PluginInfo("Waves API 2500", "compressor", "bus compressor"),
    ("ksWV", "APCS"): PluginInfo("Waves API 2500", "compressor", "bus compressor stereo"),
    ("ksWV", "TAPM"): PluginInfo("Waves J37 Tape", "saturation", "tape emulation"),
    ("ksWV", "TAPS"): PluginInfo("Waves J37 Tape", "saturation", "tape emulation stereo"),
    ("ksWV", "PLTM"): PluginInfo("Waves PuigTec EQ", "eq", "tube equalizer"),
    ("ksWV", "PLTS"): PluginInfo("Waves PuigTec EQ", "eq", "tube equalizer stereo"),
    ("ksWV", "RDRM"): PluginInfo("Waves Renaissance De-Esser", "de_esser", "de-esser"),
    ("ksWV", "RDRS"): PluginInfo("Waves Renaissance De-Esser", "de_esser", "de-esser stereo"),
    ("ksWV", "RVXM"): PluginInfo("Waves Renaissance Vox", "compressor", "vocal compressor"),
    ("ksWV", "RVXS"): PluginInfo("Waves Renaissance Vox", "compressor", "vocal compressor stereo"),
    ("ksWV", "REQM"): PluginInfo("Waves Renaissance EQ", "eq", "parametric EQ"),
    ("ksWV", "REQS"): PluginInfo("Waves Renaissance EQ", "eq", "parametric EQ stereo"),
    ("ksWV", "RCRM"): PluginInfo("Waves Renaissance Compressor", "compressor", "vintage compressor"),
    ("ksWV", "RCRS"): PluginInfo("Waves Renaissance Compressor", "compressor", "vintage compressor stereo"),
    ("ksWV", "RABM"): PluginInfo("Waves Renaissance Axx", "compressor", "guitar compressor"),
    ("ksWV", "RABS"): PluginInfo("Waves Renaissance Axx", "compressor", "guitar compressor stereo"),
    ("ksWV", "RVSM"): PluginInfo("Waves Renaissance Reverb", "reverb", "digital reverb"),
    ("ksWV", "RVSS"): PluginInfo("Waves Renaissance Reverb", "reverb", "digital reverb stereo"),
    ("ksWV", "RBRM"): PluginInfo("Waves Renaissance Bass", "eq", "bass enhancer"),
    ("ksWV", "RBRS"): PluginInfo("Waves Renaissance Bass", "eq", "bass enhancer stereo"),
    ("ksWV", "RCHM"): PluginInfo("Waves Renaissance Channel", "channel_strip", "channel strip"),
    ("ksWV", "RCHS"): PluginInfo("Waves Renaissance Channel", "channel_strip", "channel strip stereo"),
    ("ksWV", "S1SM"): PluginInfo("Waves S1 Stereo Imager", "utility", "stereo imaging"),
    ("ksWV", "S1SS"): PluginInfo("Waves S1 Stereo Imager", "utility", "stereo imaging stereo"),
    ("ksWV", "SSCM"): PluginInfo("Waves SSL Comp", "compressor", "SSL bus compressor"),
    ("ksWV", "SSCS"): PluginInfo("Waves SSL Comp", "compressor", "SSL bus compressor stereo"),
    ("ksWV", "SECM"): PluginInfo("Waves SSL E-Channel", "channel_strip", "SSL E-series channel"),
    ("ksWV", "SECS"): PluginInfo("Waves SSL E-Channel", "channel_strip", "SSL E-series channel stereo"),
    ("ksWV", "SGCM"): PluginInfo("Waves SSL G-Channel", "channel_strip", "SSL G-series channel"),
    ("ksWV", "SGCS"): PluginInfo("Waves SSL G-Channel", "channel_strip", "SSL G-series channel stereo"),
    ("ksWV", "H_DM"): PluginInfo("Waves H-Delay", "delay", "hybrid delay"),
    ("ksWV", "H_DS"): PluginInfo("Waves H-Delay", "delay", "hybrid delay stereo"),
    ("ksWV", "RVRM"): PluginInfo("Waves IR-L Convolution Reverb", "reverb", "convolution reverb"),
    ("ksWV", "RVRS"): PluginInfo("Waves IR-L Convolution Reverb", "reverb", "convolution reverb stereo"),
    ("ksWV", "C4_M"): PluginInfo("Waves C4 Multiband Compressor", "compressor", "multiband compressor"),
    ("ksWV", "C4_S"): PluginInfo("Waves C4 Multiband Compressor", "compressor", "multiband compressor stereo"),
    ("ksWV", "LNCM"): PluginInfo("Waves Linear Phase EQ", "eq", "linear phase EQ"),
    ("ksWV", "LNCS"): PluginInfo("Waves Linear Phase EQ", "eq", "linear phase EQ stereo"),
    ("ksWV", "VLRM"): PluginInfo("Waves Vocal Rider", "utility", "vocal level rider"),
    ("ksWV", "VLRS"): PluginInfo("Waves Vocal Rider", "utility", "vocal level rider stereo"),
    ("ksWV", "MXRM"): PluginInfo("Waves MV2", "compressor", "upward compressor"),
    ("ksWV", "MXRS"): PluginInfo("Waves MV2", "compressor", "upward compressor stereo"),
    ("ksWV", "L2CM"): PluginInfo("Waves L2 Ultramaximizer", "limiter", "look-ahead brickwall limiter"),
    ("ksWV", "L2CS"): PluginInfo("Waves L2 Ultramaximizer", "limiter", "look-ahead brickwall limiter stereo"),
    ("ksWV", "L3_M"): PluginInfo("Waves L3 Multimaximizer", "limiter", "multiband limiter"),
    ("ksWV", "L3_S"): PluginInfo("Waves L3 Multimaximizer", "limiter", "multiband limiter stereo"),
    ("ksWV", "PLEM"): PluginInfo("Waves PuigChild", "compressor", "Fairchild 670 compressor"),
    ("ksWV", "PLES"): PluginInfo("Waves PuigChild", "compressor", "Fairchild 670 compressor stereo"),
    ("ksWV", "FMXM"): PluginInfo("Waves F6 Floating-Band Dynamic EQ", "eq", "dynamic EQ"),
    ("ksWV", "FMXS"): PluginInfo("Waves F6 Floating-Band Dynamic EQ", "eq", "dynamic EQ stereo"),
    ("ksWV", "CNTM"): PluginInfo("Waves Center", "utility", "center/side processing"),
    ("ksWV", "CNTS"): PluginInfo("Waves Center", "utility", "center/side processing stereo"),

    # ── Apple built-in (appl) ─────────────────────────────────────────────
    ("appl", "bceq"): PluginInfo("Channel EQ", "eq", "parametric EQ"),
    ("appl", "chor"): PluginInfo("Chorus", "modulation", "chorus effect"),
    ("appl", "pdlb"): PluginInfo("Pedalboard", "multi_fx", "guitar effect pedalboard"),
    ("appl", "lmtr"): PluginInfo("Limiter", "limiter", "brickwall limiter"),
    ("appl", "mcmp"): PluginInfo("Multipressor", "compressor", "multiband compressor"),
    ("appl", "cmpr"): PluginInfo("Compressor", "compressor", "general compressor"),
    ("appl", "spdz"): PluginInfo("Space Designer", "reverb", "convolution reverb"),
    ("appl", "chrm"): PluginInfo("ChromaVerb", "reverb", "algorithmic reverb"),
    ("appl", "tdly"): PluginInfo("Tape Delay", "delay", "tape delay"),
    ("appl", "ngat"): PluginInfo("Noise Gate", "gate", "noise gate"),
    ("appl", "dees"): PluginInfo("DeEsser 2", "de_esser", "de-esser"),
    ("appl", "lpas"): PluginInfo("Linear Phase EQ", "eq", "linear phase EQ"),
    ("appl", "eqgr"): PluginInfo("Graphic EQ", "eq", "graphic equalizer"),
    ("appl", "matc"): PluginInfo("Match EQ", "eq", "spectral matching EQ"),
    ("appl", "sndd"): PluginInfo("Sample Delay", "delay", "sample-accurate delay"),
    ("appl", "echo"): PluginInfo("Echo", "delay", "echo effect"),
    ("appl", "dlys"): PluginInfo("Delay Designer", "delay", "multi-tap delay"),
    ("appl", "stdy"): PluginInfo("Stereo Delay", "delay", "stereo delay"),
    ("appl", "tmsc"): PluginInfo("Tremolo", "modulation", "tremolo effect"),
    ("appl", "flgr"): PluginInfo("Flanger", "modulation", "flanger effect"),
    ("appl", "phsr"): PluginInfo("Phaser", "modulation", "phaser effect"),
    ("appl", "spcl"): PluginInfo("Spectral Gate", "gate", "spectral gate"),
    ("appl", "dcmp"): PluginInfo("Decompressor", "utility", "transient shaper"),
    ("appl", "envm"): PluginInfo("Enveloper", "utility", "transient envelope shaper"),
    ("appl", "gneq"): PluginInfo("Gain", "utility", "gain utility"),
    ("appl", "aufc"): PluginInfo("AUFilter", "utility", "Apple AU filter"),
    ("appl", "dist"): PluginInfo("Distortion", "saturation", "distortion effect"),
    ("appl", "clip"): PluginInfo("Clip Distortion", "saturation", "clip distortion"),
    ("appl", "ovrd"): PluginInfo("Overdrive", "saturation", "overdrive effect"),
    ("appl", "bitc"): PluginInfo("Bitcrusher", "saturation", "bitcrusher"),
    ("appl", "rvb2"): PluginInfo("Reverb", "reverb", "simple reverb"),
    ("appl", "silv"): PluginInfo("SilverVerb", "reverb", "vintage reverb"),
    ("appl", "ptch"): PluginInfo("Pitch Shifter", "pitch_correction", "pitch shifter"),
    ("appl", "vocP"): PluginInfo("Vocal Transformer", "pitch_correction", "vocal pitch/formant"),
    ("appl", "audn"): PluginInfo("AUDynamicsProcessor", "compressor", "dynamics processor"),
    ("appl", "aumn"): PluginInfo("AUMultibandCompressor", "compressor", "multiband compressor"),
    ("appl", "robo"): PluginInfo("Ringshifter", "modulation", "ring modulator"),
    ("appl", "scnr"): PluginInfo("Scanner Vibrato", "modulation", "scanner vibrato"),
    ("appl", "sprd"): PluginInfo("Spreader", "utility", "stereo spreader"),
    ("appl", "spex"): PluginInfo("SubBass", "utility", "sub bass synthesizer"),
    ("appl", "tmpt"): PluginInfo("Test Oscillator", "utility", "test tone generator"),
    ("appl", "alcn"): PluginInfo("Alchemy", "synth", "advanced wavetable/sample synth"),
    ("appl", "essx"): PluginInfo("ES2", "synth", "subtractive/wavetable synth"),
    ("appl", "esmo"): PluginInfo("ES M", "synth", "mono synth"),
    ("appl", "espl"): PluginInfo("ES P", "synth", "poly synth"),
    ("appl", "esse"): PluginInfo("ES E", "synth", "ensemble synth"),
    ("appl", "es1 "): PluginInfo("ES1", "synth", "subtractive synth"),
    ("appl", "evoc"): PluginInfo("EVOC 20", "synth", "vocoder synth"),
    ("appl", "retr"): PluginInfo("Retro Synth", "synth", "vintage synth emulator"),
    ("appl", "smpn"): PluginInfo("Sampler", "sampler", "EXS24/Sampler"),
    ("appl", "qsmp"): PluginInfo("Quick Sampler", "sampler", "quick sampler"),
    ("appl", "drum"): PluginInfo("Drum Machine Designer", "sampler", "drum machine"),
    ("appl", "dkit"): PluginInfo("Drum Kit Designer", "sampler", "acoustic drum kit"),
    ("appl", "ulta"): PluginInfo("Ultrabeat", "sampler", "drum synth/sequencer"),
    ("appl", "step"): PluginInfo("Step Input Keyboard", "utility", "step MIDI input"),
    ("appl", "scfx"): PluginInfo("Sculpture", "synth", "physical modeling synth"),

    # ── iZotope (iZtp) ───────────────────────────────────────────────────
    ("iZtp", "ZnN2"): PluginInfo("iZotope Nectar", "channel_strip", "vocal processing suite"),
    ("iZtp", "ZNNZ"): PluginInfo("iZotope Neutron", "channel_strip", "intelligent mixing suite"),
    ("iZtp", "ZOZ4"): PluginInfo("iZotope Ozone", "mastering", "mastering suite"),
    ("iZtp", "ZRX8"): PluginInfo("iZotope RX", "noise_reduction", "audio repair suite"),
    ("iZtp", "ZTR2"): PluginInfo("iZotope Trash", "saturation", "distortion/saturation"),
    ("iZtp", "ZVNL"): PluginInfo("iZotope Vinyl", "utility", "lo-fi vinyl emulation"),

    # ── Soundtoys (SToy) ─────────────────────────────────────────────────
    ("SToy", "EB  "): PluginInfo("Soundtoys EchoBoy", "delay", "vintage echo/delay"),
    ("SToy", "CR  "): PluginInfo("Soundtoys Crystallizer", "delay", "granular pitch-shifting delay"),
    ("SToy", "DC  "): PluginInfo("Soundtoys Decapitator", "saturation", "analog saturation modeler"),
    ("SToy", "PT  "): PluginInfo("Soundtoys PrimalTap", "delay", "vintage digital delay"),
    ("SToy", "PM  "): PluginInfo("Soundtoys PanMan", "modulation", "auto-panner"),
    ("SToy", "MS  "): PluginInfo("Soundtoys MicroShift", "modulation", "micro pitch-shifting widener"),
    ("SToy", "LA  "): PluginInfo("Soundtoys Little AlterBoy", "pitch_correction", "vocal pitch/formant"),
    ("SToy", "DL  "): PluginInfo("Soundtoys Devil-Loc", "compressor", "distortion leveler"),
    ("SToy", "DLD "): PluginInfo("Soundtoys Devil-Loc Deluxe", "compressor", "distortion leveler deluxe"),
    ("SToy", "FX  "): PluginInfo("Soundtoys Effect Rack", "multi_fx", "modular effects rack"),
    ("SToy", "TW  "): PluginInfo("Soundtoys Tremolator", "modulation", "tremolo/auto-gate"),
    ("SToy", "FT  "): PluginInfo("Soundtoys FilterFreak", "modulation", "analog filter"),
    ("SToy", "PH  "): PluginInfo("Soundtoys PhaseMistress", "modulation", "phaser"),
    ("SToy", "RD  "): PluginInfo("Soundtoys Radiator", "saturation", "tube/transformer saturation"),
    ("SToy", "SL  "): PluginInfo("Soundtoys Sie-Q", "eq", "vintage Siemens passive EQ"),
    ("SToy", "LPF "): PluginInfo("Soundtoys Little Plate", "reverb", "EMT 140 plate reverb"),

    # ── Arturia (Artu) ───────────────────────────────────────────────────
    ("Artu", "Alav"): PluginInfo("Arturia Analog Lab V", "synth", "analog synth workstation"),
    ("Artu", "TnW2"): PluginInfo("Arturia B-3 V2", "synth", "Hammond organ emulation"),
    ("Artu", "Dx71"): PluginInfo("Arturia DX7 V", "synth", "FM synthesis emulation"),
    ("Artu", "JUP4"): PluginInfo("Arturia Jup-8 V4", "synth", "Jupiter-8 emulation"),
    ("Artu", "MIN3"): PluginInfo("Arturia Mini V3", "synth", "Minimoog emulation"),
    ("Artu", "CoDi"): PluginInfo("Arturia Comp DIODE-609", "compressor", "diode bridge compressor"),
    ("Artu", "RLex"): PluginInfo("Arturia Rev LX-24", "reverb", "Lexicon 224 reverb emulation"),
    ("Artu", "Pig3"): PluginInfo("Arturia Pigments 3", "synth", "wavetable/granular synth"),
    ("Artu", "PrV3"): PluginInfo("Arturia Prophet V", "synth", "Sequential Prophet-5 emulation"),
    ("Artu", "MtV2"): PluginInfo("Arturia Matrix-12 V2", "synth", "Oberheim Matrix-12 emulation"),
    ("Artu", "SEM2"): PluginInfo("Arturia SEM V2", "synth", "Oberheim SEM emulation"),
    ("Artu", "Wrli"): PluginInfo("Arturia Wurli V2", "synth", "Wurlitzer electric piano"),
    ("Artu", "CS80"): PluginInfo("Arturia CS-80 V4", "synth", "Yamaha CS-80 emulation"),
    ("Artu", "CoVc"): PluginInfo("Arturia Comp VCA-65", "compressor", "VCA compressor"),
    ("Artu", "CoFe"): PluginInfo("Arturia Comp FET-76", "compressor", "FET compressor"),
    ("Artu", "CoTu"): PluginInfo("Arturia Comp TUBE-STA", "compressor", "tube compressor"),
    ("Artu", "PrM3"): PluginInfo("Arturia Pre 1973", "eq", "Neve 1073 preamp/EQ"),
    ("Artu", "PrTQ"): PluginInfo("Arturia Pre TridA", "eq", "Trident A preamp/EQ"),
    ("Artu", "PrV7"): PluginInfo("Arturia Pre V76", "eq", "Telefunken V76 preamp"),
    ("Artu", "DlTe"): PluginInfo("Arturia Delay TAPE-201", "delay", "tape echo delay"),
    ("Artu", "DlMm"): PluginInfo("Arturia Delay MEMORY-BRIGADE", "delay", "analog delay"),
    ("Artu", "PhBI"): PluginInfo("Arturia Phaser BI-TRON", "modulation", "bi-phase modulator"),
    ("Artu", "ChJN"): PluginInfo("Arturia Chorus JUN-6", "modulation", "Juno chorus"),
    ("Artu", "FlBL"): PluginInfo("Arturia Flanger BL-20", "modulation", "analog flanger"),
    ("Artu", "RI28"): PluginInfo("Arturia Rev INTENSITY", "reverb", "spring/plate reverb"),
    ("Artu", "RPlT"): PluginInfo("Arturia Rev PLATE-140", "reverb", "EMT 140 plate reverb"),
    ("Artu", "RSpr"): PluginInfo("Arturia Rev SPRING-636", "reverb", "spring reverb"),
    ("Artu", "BusF"): PluginInfo("Arturia Bus FORCE", "compressor", "bus compressor/processor"),

    # ── Native Instruments (-NI-) ─────────────────────────────────────────
    ("-NI-", "NiK7"): PluginInfo("Native Instruments Kontakt 7", "sampler", "software sampler"),
    ("-NI-", "NiK6"): PluginInfo("Native Instruments Kontakt 6", "sampler", "software sampler"),
    ("-NI-", "Ni$R"): PluginInfo("Native Instruments Guitar Rig", "multi_fx", "guitar amp/effects"),
    ("-NI-", "NiMv"): PluginInfo("Native Instruments Massive", "synth", "wavetable synth"),
    ("-NI-", "NiMX"): PluginInfo("Native Instruments Massive X", "synth", "wavetable synth v2"),
    ("-NI-", "NiFM"): PluginInfo("Native Instruments FM8", "synth", "FM synth"),
    ("-NI-", "NiRe"): PluginInfo("Native Instruments Reaktor", "synth", "modular synth platform"),
    ("-NI-", "NiR6"): PluginInfo("Native Instruments Reaktor 6", "synth", "modular synth platform"),
    ("-NI-", "NiBa"): PluginInfo("Native Instruments Battery", "sampler", "drum sampler"),
    ("-NI-", "NiRp"): PluginInfo("Native Instruments Replika", "delay", "creative delay"),
    ("-NI-", "NiRX"): PluginInfo("Native Instruments Replika XT", "delay", "multi-mode delay"),
    ("-NI-", "NiSC"): PluginInfo("Native Instruments Supercharger", "compressor", "tube compressor"),
    ("-NI-", "NiRC"): PluginInfo("Native Instruments Raum", "reverb", "creative reverb"),
    ("-NI-", "NiPh"): PluginInfo("Native Instruments Phasis", "modulation", "phaser"),
    ("-NI-", "NiCh"): PluginInfo("Native Instruments Choral", "modulation", "ensemble effect"),

    # ── Brainworx / Plugin Alliance (Brwx) ────────────────────────────────
    ("Brwx", "bslj"): PluginInfo("bx_console SSL 9000 J", "channel_strip", "SSL 9000 J console emulation"),
    ("Brwx", "bsle"): PluginInfo("bx_console SSL 4000 E", "channel_strip", "SSL 4000 E console emulation"),
    ("Brwx", "bslg"): PluginInfo("bx_console SSL 4000 G", "channel_strip", "SSL 4000 G console emulation"),
    ("Brwx", "bnv7"): PluginInfo("bx_console Neve N", "channel_strip", "Neve console emulation"),
    ("Brwx", "bfoc"): PluginInfo("bx_console Focusrite SC", "channel_strip", "Focusrite console emulation"),
    ("Brwx", "btmb"): PluginInfo("bx_townhouse Bus Compressor", "compressor", "SSL bus compressor"),
    ("Brwx", "bsub"): PluginInfo("bx_subsynth", "utility", "sub bass synthesizer"),
    ("Brwx", "bcln"): PluginInfo("bx_cleansweep V2", "eq", "hi/lo pass filter"),
    ("Brwx", "bdig"): PluginInfo("bx_digital V3", "eq", "mid/side mastering EQ"),

    # ── Spectrasonics (GOSW) ──────────────────────────────────────────────
    ("GOSW", "Kstn"): PluginInfo("Spectrasonics Keyscape", "synth", "keyboard instrument collection"),
    ("GOSW", "Omn2"): PluginInfo("Spectrasonics Omnisphere 2", "synth", "power synth"),
    ("GOSW", "Trlg"): PluginInfo("Spectrasonics Trilian", "synth", "bass instrument"),
    ("GOSW", "Slvg"): PluginInfo("Spectrasonics Stylus RMX", "sampler", "groove instrument"),

    # ── Antares (Antr) ────────────────────────────────────────────────────
    ("Antr", "ATac"): PluginInfo("Auto-Tune Access", "pitch_correction", "automatic pitch correction"),
    ("Antr", "ATpr"): PluginInfo("Auto-Tune Pro", "pitch_correction", "professional pitch correction"),
    ("Antr", "ATar"): PluginInfo("Auto-Tune Artist", "pitch_correction", "artist pitch correction"),
    ("Antr", "ATef"): PluginInfo("Auto-Tune EFX+", "pitch_correction", "creative pitch effects"),
    ("Antr", "Hmny"): PluginInfo("Harmony Engine", "pitch_correction", "vocal harmony generator"),

    # ── Spitfire Audio (SpFi) ─────────────────────────────────────────────
    ("SpFi", "SfLb"): PluginInfo("Spitfire Audio LABS", "sampler", "free sample instruments"),
    ("SpFi", "SfBB"): PluginInfo("Spitfire Audio BBC Symphony Orchestra", "sampler", "orchestral library"),
    ("SpFi", "SfAP"): PluginInfo("Spitfire Audio Aperture", "sampler", "creative texture library"),

    # ── KORG (KORG) ───────────────────────────────────────────────────────
    ("KORG", "KLTR"): PluginInfo("KORG TRITON", "synth", "TRITON workstation emulation"),
    ("KORG", "KLTE"): PluginInfo("KORG TRITON Extreme", "synth", "TRITON Extreme emulation"),
    ("KORG", "KLM1"): PluginInfo("KORG M1", "synth", "M1 workstation emulation"),
    ("KORG", "KLWV"): PluginInfo("KORG Wavestation", "synth", "Wavestation emulation"),
    ("KORG", "KLMS"): PluginInfo("KORG MS-20", "synth", "MS-20 emulation"),
    ("KORG", "KLOD"): PluginInfo("KORG Odyssey", "synth", "ARP Odyssey emulation"),
    ("KORG", "KLP5"): PluginInfo("KORG Polysix", "synth", "Polysix emulation"),
    ("KORG", "KLMN"): PluginInfo("KORG Mono/Poly", "synth", "Mono/Poly emulation"),

    # ── Positive Grid (PosG) ─────────────────────────────────────────────
    ("PosG", "BiF2"): PluginInfo("BIAS FX 2", "multi_fx", "guitar amp/effects modeling"),
    ("PosG", "BiA2"): PluginInfo("BIAS Amp 2", "multi_fx", "guitar amp modeling"),

    # ── Blue Cat Audio (Bcau) ─────────────────────────────────────────────
    ("Bcau", "1kh1"): PluginInfo("Blue Cat PatchWork", "utility", "plugin patchbay/host"),

    # ── Pulsar (Pul$) ────────────────────────────────────────────────────
    ("Pul$", "P$Ec"): PluginInfo("Pulsar Echorec", "delay", "Binson Echorec emulation"),
    ("Pul$", "P$Mu"): PluginInfo("Pulsar Massive", "compressor", "Fairchild-style compressor"),
    ("Pul$", "P$W8"): PluginInfo("Pulsar W495", "eq", "passive EQ"),
    ("Pul$", "P$Sm"): PluginInfo("Pulsar Smasher", "compressor", "1176-style compressor"),

    # ── Celemony (Clny) ──────────────────────────────────────────────────
    ("Clny", "Mldy"): PluginInfo("Celemony Melodyne", "pitch_correction", "polyphonic pitch editor"),

    # ── Eventide (Evnt) ──────────────────────────────────────────────────
    ("Evnt", "SP28"): PluginInfo("Eventide SP2016", "reverb", "classic digital reverb"),
    ("Evnt", "H910"): PluginInfo("Eventide H910", "modulation", "harmonizer"),
    ("Evnt", "H949"): PluginInfo("Eventide H949", "modulation", "harmonizer v2"),
    ("Evnt", "H3KF"): PluginInfo("Eventide H3000 Factory", "multi_fx", "multi-effects"),
    ("Evnt", "EvBl"): PluginInfo("Eventide Blackhole", "reverb", "massive reverb"),
    ("Evnt", "UlTp"): PluginInfo("Eventide UltraTap", "delay", "multi-tap delay"),
    ("Evnt", "MnPt"): PluginInfo("Eventide MangledVerb", "reverb", "distorted reverb"),
    ("Evnt", "EqVb"): PluginInfo("Eventide EQuivocate", "eq", "graphic EQ"),

    # ── Output (Outp) ────────────────────────────────────────────────────
    ("Outp", "OpTH"): PluginInfo("Output Thermal", "saturation", "dual-stage distortion"),
    ("Outp", "OpPL"): PluginInfo("Output Portal", "modulation", "granular effects"),
    ("Outp", "OpMV"): PluginInfo("Output Movement", "modulation", "rhythm effects engine"),

    # ── XLN Audio (XLNa) ─────────────────────────────────────────────────
    ("XLNa", "AD2 "): PluginInfo("XLN Audio Addictive Drums 2", "sampler", "drum sampler"),
    ("XLNa", "AK2 "): PluginInfo("XLN Audio Addictive Keys", "sampler", "keyboard instrument"),
    ("XLNa", "XOAU"): PluginInfo("XLN Audio XO", "sampler", "AI beat-making"),
    ("XLNa", "RC20"): PluginInfo("XLN Audio RC-20 Retro Color", "saturation", "vintage texture"),

    # ── Slate Digital (Slat) ──────────────────────────────────────────────
    ("Slat", "SDVX"): PluginInfo("Slate Digital Virtual Mix Rack", "channel_strip", "modular channel strip"),
    ("Slat", "SDFG"): PluginInfo("Slate Digital FG-X", "mastering", "mastering processor"),
    ("Slat", "SDVC"): PluginInfo("Slate Digital VerbSuite Classics", "reverb", "classic reverb suite"),
    ("Slat", "SDMS"): PluginInfo("Slate Digital MetalTone", "saturation", "guitar amp sim"),
    ("Slat", "SDAS"): PluginInfo("Slate Digital All Access", "channel_strip", "subscription bundle host"),

    # ── Softube (SfTb) ───────────────────────────────────────────────────
    ("SfTb", "SbSa"): PluginInfo("Softube Saturation Knob", "saturation", "one-knob saturation"),
    ("SfTb", "SbTL"): PluginInfo("Softube Tube-Tech CL 1B", "compressor", "opto compressor"),
    ("SfTb", "SbWM"): PluginInfo("Softube Weiss MM-1", "mastering", "mastering maximizer"),
    ("SfTb", "SbCo"): PluginInfo("Softube Console 1", "channel_strip", "console emulation system"),
}


def lookup_au_plugin(manufacturer: str, subtype: str) -> PluginInfo | None:
    return AU_PLUGINS.get((manufacturer, subtype))
