from .base import BaseGenreProfile

# --- 2. TECHNO & MINIMAL ---

class HardTechnoProfile(BaseGenreProfile):
    name = "Hard Techno"
    description = "Punishing, distorted, industrial."
    target_lufs = -6.0
    slope_target = -3.2
    crest_target = 6.5
    width_high = 1.1
    vintage_mode = "Solid"
    saturation = 3.5
    mono_cutoff = 150

class PeakTimeTechnoProfile(BaseGenreProfile):
    name = "Peak Time Techno"
    description = "Drumcode style. Rolling bass."
    target_lufs = -7.0
    slope_target = -3.5
    crest_target = 8.0
    width_high = 1.2
    vintage_mode = "Solid"
    saturation = 2.0
    mono_cutoff = 140

class MelodicTechnoProfile(BaseGenreProfile):
    name = "Melodic Techno"
    description = "Afterlife style. Cinematic, wide synths."
    target_lufs = -7.5
    slope_target = -3.5
    crest_target = 9.0
    width_high = 1.45
    vintage_mode = "Tape"
    saturation = 1.0
    mono_cutoff = 130

class HypnoticTechnoProfile(BaseGenreProfile):
    name = "Hypnotic Techno"
    description = "Repetitive, high dynamic range."
    target_lufs = -9.0
    slope_target = -3.8
    crest_target = 10.5
    width_high = 1.25
    vintage_mode = "Tube"
    saturation = 1.0
    mono_cutoff = 120

class DubTechnoProfile(BaseGenreProfile):
    name = "Dub Techno"
    description = "Atmospheric, deep, dark."
    target_lufs = -11.0
    slope_target = -4.5
    crest_target = 11.0
    width_high = 1.3
    vintage_mode = "Tube"
    saturation = 2.0
    mono_cutoff = 110

class MinimalTechnoProfile(BaseGenreProfile):
    name = "Minimal Techno"
    description = "Sparse, clinical. Low noise floor."
    target_lufs = -9.0
    slope_target = -4.0
    crest_target = 10.0
    width_high = 1.1
    vintage_mode = "Solid"
    saturation = 0.5
    mono_cutoff = 100

class IndustrialTechnoProfile(BaseGenreProfile):
    name = "Industrial Techno"
    description = "Metallic textures, high-mid exciter."
    target_lufs = -6.5
    slope_target = -3.0
    crest_target = 7.0
    width_high = 1.1
    vintage_mode = "Solid"
    saturation = 3.0
    mono_cutoff = 150

class AcidTechnoProfile(BaseGenreProfile):
    name = "Acid Techno"
    description = "303 focused. Tamed resonances."
    target_lufs = -7.5
    slope_target = -3.0
    crest_target = 8.0
    width_high = 1.2
    vintage_mode = "Tube"
    saturation = 2.5
    mono_cutoff = 140

class GrooveTechnoProfile(BaseGenreProfile):
    name = "Groove Techno"
    description = "Percussion led. Swing focus."
    target_lufs = -7.5
    slope_target = -3.2
    crest_target = 8.5
    width_high = 1.15
    vintage_mode = "Solid"
    saturation = 1.5
    mono_cutoff = 130

class LeftfieldTechnoProfile(BaseGenreProfile):
    name = "Leftfield Techno"
    description = "Experimental. Lower loudness."
    target_lufs = -10.0
    slope_target = -3.8
    crest_target = 10.0
    width_high = 1.3
    vintage_mode = "Tape"
    saturation = 1.5
    mono_cutoff = 120
