1+ /**
2+ * Plugin categories are derived from the official Steinberg VST3 Plug-in
3+ * Type definitions (plugType) provided by the VST3 SDK.
4+ *
5+ * The VST3 SDK defines a large set of hierarchical category strings
6+ * (e.g. "Fx|Dynamics", "Fx|EQ", "Instrument|Synth") which serve multiple
7+ * purposes including host routing, UI grouping, and capability flags.
8+ *
9+ * This project intentionally normalizes and consolidates those categories
10+ * into a smaller, format-agnostic set suitable for a plugin registry and
11+ * tagging system. Not all VST3 plugType values map 1:1 to public categories.
12+ *
13+ * Authoritative source (VST3 SDK):
14+ * https://steinbergmedia.github.io/vst3_doc/vstinterfaces/group__plugType.html
15+ */
16+
117export enum PluginCategoryEffect {
2- Chorus = 'chorus' ,
3- Compression = 'compression' ,
18+ Delay = 'delay' ,
19+ Distortion = 'distortion' ,
20+ Dynamics = 'dynamics' ,
421 Eq = 'eq' ,
522 Filter = 'filter' ,
23+ Modulation = 'modulation' ,
24+ Pitch = 'pitch' ,
625 Reverb = 'reverb' ,
26+ Spatial = 'spatial' ,
27+ Utility = 'utility' ,
728}
829
930export enum PluginCategoryInstrument {
10- Drums = 'drums' ,
31+ Bass = 'bass' ,
32+ Brass = 'brass' ,
33+ Drum = 'drum' ,
34+ Fx = 'fx' ,
1135 Guitar = 'guitar' ,
12- Keys = 'keys' ,
13- Orchestral = 'orchestral' ,
14- Samplers = 'samplers' ,
15- Synths = 'synths' ,
16- Vocals = 'vocals' ,
36+ Piano = 'piano' ,
37+ Sampler = 'sampler' ,
38+ Strings = 'strings' ,
39+ Synth = 'synth' ,
40+ Voice = 'voice' ,
41+ Woodwinds = 'woodwinds' ,
1742}
1843
1944export interface PluginCategoryOption {
@@ -25,78 +50,132 @@ export interface PluginCategoryOption {
2550
2651export const pluginCategoryEffects : PluginCategoryOption [ ] = [
2752 {
28- description : 'Spatial movement and modulation.' ,
29- value : PluginCategoryEffect . Chorus ,
30- name : 'Chorus/Phaser' ,
31- tags : [ 'Chorus' , 'Phaser' ] ,
53+ name : 'Delay' ,
54+ value : PluginCategoryEffect . Delay ,
55+ description : 'Echoes and rhythmic repeats.' ,
56+ tags : [ 'Delay' , 'Echo' , 'Tape Delay' , 'Ping Pong Delay' , 'Multi-Tap Delay' ] ,
57+ } ,
58+ {
59+ name : 'Distortion' ,
60+ value : PluginCategoryEffect . Distortion ,
61+ description : 'Add saturation, grit, or harmonic color.' ,
62+ tags : [ 'Distortion' , 'Saturation' , 'Overdrive' , 'Fuzz' , 'Amp' , 'Amplifier' , 'Exciter' , 'Waveshaper' ] ,
3263 } ,
3364 {
34- description : 'Shape dynamics, grit and amplification. ' ,
35- value : PluginCategoryEffect . Compression ,
36- name : 'Compression/Distortion ' ,
37- tags : [ 'Compression ' , 'Distortion ' , 'Amplifier ' , 'Amp ' ] ,
65+ name : 'Dynamics ' ,
66+ value : PluginCategoryEffect . Dynamics ,
67+ description : 'Control dynamics and signal level. ' ,
68+ tags : [ 'Dynamics ' , 'Compressor ' , 'Limiter ' , 'Expander' , 'Gate' , 'Noise Gate '] ,
3869 } ,
3970 {
40- description : 'Balance frequencies and position sounds in the stereo field. ' ,
71+ name : 'EQ ' ,
4172 value : PluginCategoryEffect . Eq ,
42- name : 'EQ/Pan ' ,
43- tags : [ 'EQ' , 'Equalizer' , 'Pan ' ] ,
73+ description : 'Shape and balance frequency content. ' ,
74+ tags : [ 'EQ' , 'Equalizer' , 'Parametric EQ' , 'Graphic EQ' , 'Tone Control '] ,
4475 } ,
4576 {
46- description : 'Adjust tone and sculpt frequencies.' ,
47- value : PluginCategoryEffect . Filter ,
4877 name : 'Filter' ,
49- tags : [ 'Filter' ] ,
78+ value : PluginCategoryEffect . Filter ,
79+ description : 'Sculpt sound using frequency filtering.' ,
80+ tags : [ 'Filter' , 'Lowpass' , 'Highpass' , 'Bandpass' , 'Notch' , 'Resonant' , 'Auto Filter' ] ,
81+ } ,
82+ {
83+ name : 'Modulation' ,
84+ value : PluginCategoryEffect . Modulation ,
85+ description : 'Create motion, width, and modulation.' ,
86+ tags : [ 'Modulation' , 'Chorus' , 'Flanger' , 'Phaser' , 'Tremolo' , 'Vibrato' , 'Rotary' , 'Ensemble' ] ,
87+ } ,
88+ {
89+ name : 'Pitch' ,
90+ value : PluginCategoryEffect . Pitch ,
91+ description : 'Pitch shifting and harmonic processing.' ,
92+ tags : [ 'Pitch' , 'Pitch Shifter' , 'Harmonizer' , 'Vocoder' , 'Octaver' , 'Formant' ] ,
5093 } ,
5194 {
52- description : 'Create depth with echoes, ambience, and space. ' ,
95+ name : 'Reverb ' ,
5396 value : PluginCategoryEffect . Reverb ,
54- name : 'Reverb/Delay' ,
55- tags : [ 'Reverb' , 'Delay' ] ,
97+ description : 'Simulate space, depth, and ambience.' ,
98+ tags : [ 'Reverb' , 'Room' , 'Hall' , 'Plate' , 'Spring' , 'Convolution' , 'Ambience' ] ,
99+ } ,
100+ {
101+ name : 'Spatial' ,
102+ value : PluginCategoryEffect . Spatial ,
103+ description : 'Stereo positioning and spatial control.' ,
104+ tags : [ 'Spatial' , 'Stereo' , 'Panner' , 'Width' , 'Imager' , 'Mid/Side' , 'Binaural' ] ,
105+ } ,
106+ {
107+ name : 'Utility' ,
108+ value : PluginCategoryEffect . Utility ,
109+ description : 'Analysis, routing, and signal tools.' ,
110+ tags : [ 'Utility' , 'Gain' , 'Trim' , 'Analyzer' , 'Meter' , 'Phase' , 'Mono' , 'Polarity' ] ,
56111 } ,
57112] ;
58113
59114export const pluginCategoryInstruments : PluginCategoryOption [ ] = [
60115 {
61- description : '' ,
62- value : PluginCategoryInstrument . Drums ,
116+ name : 'Bass' ,
117+ value : PluginCategoryInstrument . Bass ,
118+ description : 'Bass instruments.' ,
119+ tags : [ 'Bass' ] ,
120+ } ,
121+ {
122+ name : 'Brass' ,
123+ value : PluginCategoryInstrument . Brass ,
124+ description : 'Brass instruments.' ,
125+ tags : [ 'Brass' ] ,
126+ } ,
127+ {
63128 name : 'Drums' ,
64- tags : [ 'Drums' , 'Percussion' ] ,
129+ value : PluginCategoryInstrument . Drum ,
130+ description : 'Drum and percussion instruments.' ,
131+ tags : [ 'Drums' , 'Drum Kit' , 'Percussion' ] ,
132+ } ,
133+ {
134+ name : 'FX Instrument' ,
135+ value : PluginCategoryInstrument . Fx ,
136+ description : 'Sound-effect or experimental instruments.' ,
137+ tags : [ 'FX' , 'Sound Effects' ] ,
65138 } ,
66139 {
67- description : '' ,
68- value : PluginCategoryInstrument . Guitar ,
69140 name : 'Guitar' ,
70- tags : [ 'Guitar' , 'String' ] ,
141+ value : PluginCategoryInstrument . Guitar ,
142+ description : 'Guitar instruments.' ,
143+ tags : [ 'Guitar' ] ,
144+ } ,
145+ {
146+ name : 'Piano / Keys' ,
147+ value : PluginCategoryInstrument . Piano ,
148+ description : 'Piano and keyboard instruments.' ,
149+ tags : [ 'Piano' , 'Keys' , 'Keyboard' ] ,
71150 } ,
72151 {
73- description : '' ,
74- value : PluginCategoryInstrument . Keys ,
75- name : 'Keys ' ,
76- tags : [ 'Keys ' , 'Piano ' ] ,
152+ name : 'Sampler ' ,
153+ value : PluginCategoryInstrument . Sampler ,
154+ description : 'Sample-based instruments. ' ,
155+ tags : [ 'Sampler ' , 'Sample ' ] ,
77156 } ,
78157 {
79- description : '' ,
80- value : PluginCategoryInstrument . Orchestral ,
81- name : 'Orchestral ' ,
82- tags : [ 'Orchestral' , 'Orchestra' , ' Strings', 'Woodwind' , 'Brass '] ,
158+ name : 'Strings ' ,
159+ value : PluginCategoryInstrument . Strings ,
160+ description : 'String instruments. ' ,
161+ tags : [ 'Strings' , 'String Ensemble ' ] ,
83162 } ,
84163 {
85- description : '' ,
86- value : PluginCategoryInstrument . Samplers ,
87- name : 'Samplers ' ,
88- tags : [ 'Samplers ' , 'Sampler' , 'Sample '] ,
164+ name : 'Synth ' ,
165+ value : PluginCategoryInstrument . Synth ,
166+ description : 'Sound synthesis instruments. ' ,
167+ tags : [ 'Synth ' , 'Synthesizer ' ] ,
89168 } ,
90169 {
91- description : '' ,
92- value : PluginCategoryInstrument . Synths ,
93- name : 'Synths ' ,
94- tags : [ 'Synths ' , 'Synth ' , 'Synthesizer ' ] ,
170+ name : 'Voice ' ,
171+ value : PluginCategoryInstrument . Voice ,
172+ description : 'Vocal and choir instruments. ' ,
173+ tags : [ 'Voice ' , 'Vocal ' , 'Choir ' ] ,
95174 } ,
96175 {
97- description : '' ,
98- value : PluginCategoryInstrument . Vocals ,
99- name : 'Vocals ' ,
100- tags : [ 'Vocals ' ] ,
176+ name : 'Woodwinds ' ,
177+ value : PluginCategoryInstrument . Woodwinds ,
178+ description : 'Woodwind instruments. ' ,
179+ tags : [ 'Woodwinds ' ] ,
101180 } ,
102181] ;
0 commit comments