One thing I was planning on doing is letting the user provide their own unit library specification as a text file. In this text file you would be able to specify:
- Which units to include or not include in the unit selection screen.
- The order that units appear in the unit selection screen.
- The list of keywords associated which each unit for use in the keyword filter.
- (optional) In case you want to specify a hierarchy, you would define folders here also.
In the future, I may add an option that would let you associate an 32x32(?) grayscale icon png file with each unit for use in place of the text.
The current unit library specification looks something like this:
{
{name="Custom Unit",path="custom/CustomUnit",keywords="utility, effect, source, custom"},
{name="Mixer Channel",path="MixerUnit",keywords="mixing, routing"},
{name="Sample Recorder (Looper)",path="Looper/LooperUnit",keywords="sampling, effect"},
{name="Sample Player",path="Player/PlayerUnit",keywords="sampling, source"},
{name="Native Player",path="Player/NativeSpeedPlayerUnit",keywords="sampling, source"},
{name="Manual Grains",path="Player/ManualGrains",keywords="sampling, source"},
{name="Card Player",path="File/CardPlayerUnit",keywords="source, sampling"},
{name="Fixed Delay",path="Delay/DelayUnit",keywords="delay, effect"},
{name="Clocked Delay",path="Delay/ClockedDelayUnit",keywords="delay, effect"},
{name="Variable Delay",path="Delay/VariableDelayUnit",keywords="delay, effect"},
{name="Pitch Shifting Delay",path="Delay/GrainDelayUnit",keywords="delay, effect"},
{name="EQ3",path="EQ3Unit",keywords="filter, mixing"},
{name="Ladder Filter", path="LadderFilterUnit",keywords="filter, pitched"},
{name="Limiter",path="LimiterUnit",keywords="utility, effect, mixing"},
{name="Quant- izer",path="QuantizerUnit",keywords="effect"},
{name="Sine Osc",path="SineOscillatorUnit",keywords="source, pitched, modulate"},
{name="Aliasing Triangle",path="AliasingTriangleUnit",keywords="source, pitched, modulate"},
{name="Aliasing Saw",path="AliasingSawUnit",keywords="source, pitched, modulate"},
{name="White Noise",path="Noise/WhiteNoiseUnit",keywords="source, noise"},
{name="Pink Noise",path="Noise/PinkNoiseUnit",keywords="source, noise"},
{name="ADSR",path="ADSRUnit",keywords="modulate, source, utility"},
{name="Skewed Sine Env",path="SineEnvelopeUnit",keywords="modulate, source, utility"},
{name="Offset",path="OffsetUnit",keywords="utility"},
{name="Rectify",path="RectifierUnit",keywords="utility"},
{name="Fold",path="FoldUnit",keywords="effect"},
{name="Linear VCA",path="LinearVcaUnit",keywords="modulate, utility"},
{name="Rational VCA",path="RationalVcaUnit",keywords="modulate, utility"},
{name="Env- elope Follower",path="EnvelopeFollowerUnit",keywords="modulate, measure"},
{name="Sample & Hold",path="SampleHoldUnit",keywords="utility, effect, modulate"},
{name="Track & Hold",path="TrackHoldUnit",keywords="utility, effect, modulate"},
{name="Tap Tempo",path="TapTempoUnit",keywords="measure, source, timing"},
{name="Period -o- Meter",path="PeriodMeterUnit",keywords="measure, timing"},
{name="Stress",path="StressUnit",keywords="debug"},
}