Demos/BeatPad/BeatPadKits.cs
namespace Sandbox.BeatPad;

// two 16-pad kits; .sound event paths under Assets/Sounds/{RolandTR909,RolandTR808}; index 0 = bottom-left, 15 = top-right (MPD order, low-row first).
public static class BeatPadKits
{
    public const int PadCount = 16;
    public const int KitCount = 2;

    // Kit A - Roland TR-909 (geikha/tidal-drum-machines)
    public static readonly string[] KitA =
    {
        "sounds/RolandTR909/rolandtr909-bd/bassdrum-01.sound",
        "sounds/RolandTR909/rolandtr909-rim/rs01.sound",
        "sounds/RolandTR909/rolandtr909-lt/lt01.sound",
        "sounds/RolandTR909/rolandtr909-mt/mt01.sound",
        "sounds/RolandTR909/rolandtr909-sd/sd01.sound",
        "sounds/RolandTR909/rolandtr909-cp/cp01.sound",
        "sounds/RolandTR909/rolandtr909-ht/ht01.sound",
        "sounds/RolandTR909/rolandtr909-ht/ht05.sound",
        "sounds/RolandTR909/rolandtr909-hh/hh01.sound",
        "sounds/RolandTR909/rolandtr909-hh/hh03.sound",
        "sounds/RolandTR909/rolandtr909-oh/oh01.sound",
        "sounds/RolandTR909/rolandtr909-sd/sd08.sound",
        "sounds/RolandTR909/rolandtr909-rd/rd01.sound",
        "sounds/RolandTR909/rolandtr909-cr/cr01.sound",
        "sounds/RolandTR909/rolandtr909-rim/rs02.sound",
        "sounds/RolandTR909/rolandtr909-cr/cr03.sound",
    };

    // Kit B - Roland TR-808
    public static readonly string[] KitB =
    {
        "sounds/RolandTR808/rolandtr808-bd/bd0000.sound",
        "sounds/RolandTR808/rolandtr808-rim/rs.sound",
        "sounds/RolandTR808/rolandtr808-lt/lt00.sound",
        "sounds/RolandTR808/rolandtr808-mt/mt00.sound",
        "sounds/RolandTR808/rolandtr808-sd/sd0000.sound",
        "sounds/RolandTR808/rolandtr808-cp/cp0.sound",
        "sounds/RolandTR808/rolandtr808-ht/ht00.sound",
        "sounds/RolandTR808/rolandtr808-cb/cb.sound",
        "sounds/RolandTR808/rolandtr808-hh/ch.sound",
        "sounds/RolandTR808/rolandtr808-oh/oh10.sound",
        "sounds/RolandTR808/rolandtr808-oh/oh75.sound",
        "sounds/RolandTR808/rolandtr808-sh/ma.sound",
        "sounds/RolandTR808/rolandtr808-cr/cy0000.sound",
        "sounds/RolandTR808/rolandtr808-perc/cl.sound",
        "sounds/RolandTR808/rolandtr808-perc/hc00.sound",
        "sounds/RolandTR808/rolandtr808-perc/lc00.sound",
    };

    // Labels match the chosen sample per pad (low row = kicks/toms, then snare/clap,
    // then hats, top row = cymbals/fx). 909 has no conga/maraca; 808 adds cowbell/clave/conga.
    public static readonly string[] LabelsA =
    {
        "BD", "RIM", "LT", "MT",
        "SD", "CLAP", "HT", "HT2",
        "CHH", "HH2", "OHH", "SD2",
        "RIDE", "CRASH", "RIM2", "CR2",
    };

    public static readonly string[] LabelsB =
    {
        "BD", "RIM", "LT", "MT",
        "SD", "CLAP", "HT", "COW",
        "CHH", "OHH", "OH2", "MARA",
        "CYM", "CLAV", "HCON", "LCON",
    };

    public static string[] Sounds(int kit) => kit == 0 ? KitA : KitB;
    public static string[] Labels(int kit) => kit == 0 ? LabelsA : LabelsB;
    public static string KitName(int kit) => kit == 0 ? "A" : "B";
}