// generated by lv2ttl2c from
// http://gareus.org/oss/lv2/b_whirl#extended

extern const LV2_Descriptor* lv2_descriptor(uint32_t index);
extern const LV2UI_Descriptor* lv2ui_descriptor(uint32_t index);

static const RtkLv2Description _plugin = {
	&lv2_descriptor,
	&lv2ui_descriptor
	, 1 // uint32_t dsp_descriptor_id
	, 0 // uint32_t gui_descriptor_id
	, "x42 Whirl - Rotary Speaker" // const char *plugin_human_id
	, (const struct LV2Port[44])
	{
		{ "in", AUDIO_IN, nan, nan, nan, "Input"},
		{ "left", AUDIO_OUT, nan, nan, nan, "Left Output"},
		{ "right", AUDIO_OUT, nan, nan, nan, "Right Output"},
		{ "enable", CONTROL_IN, 1.000000, 0.000000, 1.000000, "Enable"},
		{ "rt_speed", CONTROL_IN, 4.000000, 0.000000, 8.000000, "Motor control"},
		{ "hornlvl", CONTROL_IN, 0.000000, -20.000000, 20.000000, "Horn wet-signal volume"},
		{ "drumlvl", CONTROL_IN, 0.000000, -20.000000, 20.000000, "Drum wet-signal level"},
		{ "drumwidth", CONTROL_IN, 1.000000, 0.000000, 2.000000, "Microphone angle/setup for the baffle"},
		{ "hornrpmslow", CONTROL_IN, 40.320000, 5.000000, 200.000000, "Target RPM for slow (aka choral) horn speed"},
		{ "hornrpmfast", CONTROL_IN, 423.359985, 100.000000, 1000.000000, "Target RPM for fask (aka tremolo) horn speed"},
		{ "hornaccel", CONTROL_IN, 0.161000, 0.001000, 10.000000, "Time required to accelerate the horn (exponential time constant)"},
		{ "horndecel", CONTROL_IN, 0.321000, 0.001000, 10.000000, "Time required to decelerate the horn (exponential time constant)"},
		{ "hornbrakepos", CONTROL_IN, 0.000000, 0.000000, 1.000000, "Horn stop position. Clockwise position where to stop. (0: free-stop, 1.0:front-center). Note, the original Leslie can not do this, yet sometimes the horn is aimed at the back of the cabinet when it comes to a halt, which results in a less than desirable sound."},
		{ "filtatype", CONTROL_IN, 0.000000, 0.000000, 8.000000, "This is the first of two filters to shape the signal to be sent to the horn-speaker. Changing the type will fade the audio."},
		{ "filtafreq", CONTROL_IN, 4500.000000, 250.000000, 8000.000000, "Filter frequency"},
		{ "filtaq", CONTROL_IN, 2.745600, 0.010000, 6.000000, "Filter bandwidth"},
		{ "filtagain", CONTROL_IN, -30.000000, -48.000000, 48.000000, "Horn Filter-1 Gain"},
		{ "filtbtype", CONTROL_IN, 7.000000, 0.000000, 8.000000, "This is the second of two filters to shape the signal to be sent to the horn-speaker, by default a low-shelf filter with negative gain to remove frequencies which are sent to the drum. Changing the type will fade the audio."},
		{ "filtbfreq", CONTROL_IN, 300.000000, 250.000000, 8000.000000, "Filter frequency"},
		{ "filtbq", CONTROL_IN, 1.000000, 0.010000, 6.000000, "Filter bandwidth"},
		{ "filtbgain", CONTROL_IN, -30.000000, -48.000000, 48.000000, "Horn Filter-2 Gain"},
		{ "drumrpmslow", CONTROL_IN, 36.000000, 5.000000, 100.000000, "Target RPM for slow (aka choral) drum speed"},
		{ "drumrpmfast", CONTROL_IN, 357.299988, 60.000000, 600.000000, "Target RPM for fast (aka tremolo) drum speed"},
		{ "drumaccel", CONTROL_IN, 4.127000, 0.010000, 20.000000, "Time required to accelerate the drum (exponential time constant)"},
		{ "drumdecel", CONTROL_IN, 1.371000, 0.010000, 20.000000, "Time required to decelerate the drum (exponential time constant)"},
		{ "drumbrake", CONTROL_IN, 0.000000, 0.000000, 1.000000, "Drum stop position. Clockwise position where to stop. (0: free-stop, 1.0:front-center)"},
		{ "filtdtype", CONTROL_IN, 8.000000, 0.000000, 8.000000, "This filter separates the signal to be sent to the drum-speaker. It should be a high-shelf filter with negative gain. Changing the type will fade the audio."},
		{ "filtdfreq", CONTROL_IN, 811.969482, 50.000000, 8000.000000, "Filter frequency"},
		{ "filtdq", CONTROL_IN, 1.601600, 0.010000, 6.000000, "Filter bandwidth"},
		{ "filtdgain", CONTROL_IN, -38.929100, -48.000000, 48.000000, "Drum Filter Gain"},
		{ "hornleak", CONTROL_IN, -16.469999, -80.000000, -3.000000, "Horn Signal Leakage"},
		{ "hornradius", CONTROL_IN, 19.200001, 9.000000, 50.000000, "Radius of the speaker horn. Changing this value will reinitialize the effect."},
		{ "drumradius", CONTROL_IN, 22.000000, 9.000000, 50.000000, "Radius of the baffle. Changing this value will reinitialize the effect."},
		{ "hornxoff", CONTROL_IN, 0.000000, -20.000000, 20.000000, "Offset of horn towards left mic in centimeters. Changing this value will reinitialize the effect."},
		{ "hornzoff", CONTROL_IN, 0.000000, -20.000000, 20.000000, "Offset of horn perpendicular to mic to front in centimeters. Changing this value will reinitialize the effect."},
		{ "micdist", CONTROL_IN, 42.000000, 9.000000, 150.000000, "Distance from mic to origin in centimeters. Changing this value will reinitialize the effect."},
		{ "hornrpm", CONTROL_OUT, nan, 0.000000, 1000.000000, "Current Horn speed"},
		{ "drumrpm", CONTROL_OUT, nan, 0.000000, 600.000000, "Current Drum speed"},
		{ "hornang", CONTROL_OUT, nan, 0.000000, 1.000000, "Current Horn position"},
		{ "drumang", CONTROL_OUT, nan, 0.000000, 1.000000, "Current Drum position"},
		{ "guitrigger", CONTROL_IN, 0.000000, 0.000000, 1.000000, "GUI to Plugin Notifications"},
		{ "link", CONTROL_IN, 0.000000, -1.000000, 1.000000, "Link Speed Control"},
		{ "micangle", CONTROL_IN, 180.000000, 0.000000, 180.000000, "Microphone Angle"},
		{ "hornwidth", CONTROL_IN, 1.000000, 0.000000, 2.000000, "Microphone angle/setup for the horn"},
	}
	, 44 // uint32_t nports_total
	, 1 // uint32_t nports_audio_in
	, 2 // uint32_t nports_audio_out
	, 0 // uint32_t nports_midi_in
	, 0 // uint32_t nports_midi_out
	, 0 // uint32_t nports_atom_in
	, 0 // uint32_t nports_atom_out
	, 41 // uint32_t nports_ctrl
	, 37 // uint32_t nports_ctrl_in
	, 4 // uint32_t nports_ctrl_out
	, 8192 // uint32_t min_atom_bufsiz
	, false // bool send_time_info
	, UINT32_MAX // uint32_t latency_ctrl_port
};
