1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
ix!();

//TODO: this is a little fishy
bitflags! {
    pub struct ControlStyle: u32 {
        const OFF        = 0b00000000000000000000000000000000;
        const HORIZONTAL = 0b00000000000000000000000000000001;
        const VERTICAL   = 0b00000000000000000000000000000010;
        const BIPOLAR    = 0b00000000000000001000000000000000;
        const WHITE      = 0b00000000000000010000000000000000;
        const SEMITONE   = 0b00000000000000100000000000000000;
        const MINI       = 0b00000000000001000000000000000000;
        const META       = 0b00000000000010000000000000000000;
        const EASY       = 0b00000000000100000000000000000000;
        const HIDE       = 0b00000000001000000000000000000000;
        const NOPOPUP    = 0b00000000010000000000000000000000;
    }
}

enhanced_enum![
    ControlGroup {
        Nil,
        Global,
        Osc,
        Mix,
        Filter,
        Env,
        Lfo,
        Fx,
    }
];

enhanced_enum![
    ControlType {
        Nil,
        Percent,
        PercentBidirectional,
        PitchOctave,
        PitchSemi7BP,
        PitchSemi7BPAbsolutable,
        Pitch,
        FMRatio,
        FMRatioInt,
        PBDepth,
        SyncPitch,
        Amplitude,
        ReverbShape,
        Decibel,
        DecibelNarrow,
        DecibelNarrowExtendable,
        DecibelExtraNarrow,
        DecibelAttenuation,
        DecibelAttenuationLarge,
        DecibelFMDepth,
        DecibelExtendable,
        FreqAudible,
        FreqMod,
        FreqHpf,
        FreqShift,
        FreqVocoderLow,
        FreqVocoderHigh,
        Bandwidth,
        EnvTime,
        EnvTimeLfoDecay,
        EnvShape,
        EnvelopeMode,
        DelayModTime,
        ReverbTime,
        ReverbPreDelayTime,
        PortaTime,
        LfoRate,
        LfoShape,
        LfoTrigMode,
        Detuning,
        OscType,
        FxType,
        FxBypass,
        FbConfig,
        FmConfig,
        FilterType,
        FilterSubType,
        WaveshapeType,
        Wt2Window,
        OscCount,
        OscCountWT,
        OscSpread,
        SceneMode,
        SceneSel,
        PolyMode,
        PolyLimit,
        MidiKey,
        MidiKeyOrChannel,
        Bool,
        BoolRelativeSwitch,
        BoolLinkSwitch,
        BoolKeytrack,
        BoolRetrigger,
        BoolUnipolar,
        BoolMute,
        BoolSolo,
        OscRoute,
        StereoWidth,
        BoolFM,
        Character,
        SineOscMode,
        SineFMLegacy,
        CountedSetPercent,// what % through a counted set are you
        VocoderBandcount,
        DistortionWaveshape,
        FlangerPitch,
        FlangerMode,
        FlangerVoices,
        //TODO: unknown is temporary until 
        //we find out the true value
        Unknown, 
    }
];