1 /**
2 Adds a chorus audio effect.
3 
4 Copyright:
5 Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur.  
6 Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md)  
7 Copyright (c) 2017-2018 Godot-D contributors  
8 
9 License: $(LINK2 https://opensource.org/licenses/MIT, MIT License)
10 
11 
12 */
13 module godot.audioeffectchorus;
14 import std.meta : AliasSeq, staticIndexOf;
15 import std.traits : Unqual;
16 import godot.d.traits;
17 import godot.core;
18 import godot.c;
19 import godot.d.bind;
20 import godot.d.reference;
21 import godot.globalenums;
22 import godot.object;
23 import godot.classdb;
24 import godot.audioeffect;
25 import godot.resource;
26 /**
27 Adds a chorus audio effect.
28 
29 The effect applies a filter with voices to duplicate the audio source and manipulate it through the filter.
30 */
31 @GodotBaseClass struct AudioEffectChorus
32 {
33 	package(godot) enum string _GODOT_internal_name = "AudioEffectChorus";
34 public:
35 @nogc nothrow:
36 	union { /** */ godot_object _godot_object; /** */ AudioEffect _GODOT_base; }
37 	alias _GODOT_base this;
38 	alias BaseClasses = AliasSeq!(typeof(_GODOT_base), typeof(_GODOT_base).BaseClasses);
39 	package(godot) __gshared bool _classBindingInitialized = false;
40 	package(godot) static struct GDNativeClassBinding
41 	{
42 		__gshared:
43 		@GodotName("get_dry") GodotMethod!(double) getDry;
44 		@GodotName("get_voice_count") GodotMethod!(long) getVoiceCount;
45 		@GodotName("get_voice_cutoff_hz") GodotMethod!(double, long) getVoiceCutoffHz;
46 		@GodotName("get_voice_delay_ms") GodotMethod!(double, long) getVoiceDelayMs;
47 		@GodotName("get_voice_depth_ms") GodotMethod!(double, long) getVoiceDepthMs;
48 		@GodotName("get_voice_level_db") GodotMethod!(double, long) getVoiceLevelDb;
49 		@GodotName("get_voice_pan") GodotMethod!(double, long) getVoicePan;
50 		@GodotName("get_voice_rate_hz") GodotMethod!(double, long) getVoiceRateHz;
51 		@GodotName("get_wet") GodotMethod!(double) getWet;
52 		@GodotName("set_dry") GodotMethod!(void, double) setDry;
53 		@GodotName("set_voice_count") GodotMethod!(void, long) setVoiceCount;
54 		@GodotName("set_voice_cutoff_hz") GodotMethod!(void, long, double) setVoiceCutoffHz;
55 		@GodotName("set_voice_delay_ms") GodotMethod!(void, long, double) setVoiceDelayMs;
56 		@GodotName("set_voice_depth_ms") GodotMethod!(void, long, double) setVoiceDepthMs;
57 		@GodotName("set_voice_level_db") GodotMethod!(void, long, double) setVoiceLevelDb;
58 		@GodotName("set_voice_pan") GodotMethod!(void, long, double) setVoicePan;
59 		@GodotName("set_voice_rate_hz") GodotMethod!(void, long, double) setVoiceRateHz;
60 		@GodotName("set_wet") GodotMethod!(void, double) setWet;
61 	}
62 	/// 
63 	pragma(inline, true) bool opEquals(in AudioEffectChorus other) const
64 	{ return _godot_object.ptr is other._godot_object.ptr; }
65 	/// 
66 	pragma(inline, true) typeof(null) opAssign(typeof(null) n)
67 	{ _godot_object.ptr = n; return null; }
68 	/// 
69 	pragma(inline, true) bool opEquals(typeof(null) n) const
70 	{ return _godot_object.ptr is n; }
71 	/// 
72 	size_t toHash() const @trusted { return cast(size_t)_godot_object.ptr; }
73 	mixin baseCasts;
74 	/// Construct a new instance of AudioEffectChorus.
75 	/// Note: use `memnew!AudioEffectChorus` instead.
76 	static AudioEffectChorus _new()
77 	{
78 		static godot_class_constructor constructor;
79 		if(constructor is null) constructor = _godot_api.godot_get_class_constructor("AudioEffectChorus");
80 		if(constructor is null) return typeof(this).init;
81 		return cast(AudioEffectChorus)(constructor());
82 	}
83 	@disable new(size_t s);
84 	/**
85 	
86 	*/
87 	double getDry() const
88 	{
89 		checkClassBinding!(typeof(this))();
90 		return ptrcall!(double)(GDNativeClassBinding.getDry, _godot_object);
91 	}
92 	/**
93 	
94 	*/
95 	long getVoiceCount() const
96 	{
97 		checkClassBinding!(typeof(this))();
98 		return ptrcall!(long)(GDNativeClassBinding.getVoiceCount, _godot_object);
99 	}
100 	/**
101 	
102 	*/
103 	double getVoiceCutoffHz(in long voice_idx) const
104 	{
105 		checkClassBinding!(typeof(this))();
106 		return ptrcall!(double)(GDNativeClassBinding.getVoiceCutoffHz, _godot_object, voice_idx);
107 	}
108 	/**
109 	
110 	*/
111 	double getVoiceDelayMs(in long voice_idx) const
112 	{
113 		checkClassBinding!(typeof(this))();
114 		return ptrcall!(double)(GDNativeClassBinding.getVoiceDelayMs, _godot_object, voice_idx);
115 	}
116 	/**
117 	
118 	*/
119 	double getVoiceDepthMs(in long voice_idx) const
120 	{
121 		checkClassBinding!(typeof(this))();
122 		return ptrcall!(double)(GDNativeClassBinding.getVoiceDepthMs, _godot_object, voice_idx);
123 	}
124 	/**
125 	
126 	*/
127 	double getVoiceLevelDb(in long voice_idx) const
128 	{
129 		checkClassBinding!(typeof(this))();
130 		return ptrcall!(double)(GDNativeClassBinding.getVoiceLevelDb, _godot_object, voice_idx);
131 	}
132 	/**
133 	
134 	*/
135 	double getVoicePan(in long voice_idx) const
136 	{
137 		checkClassBinding!(typeof(this))();
138 		return ptrcall!(double)(GDNativeClassBinding.getVoicePan, _godot_object, voice_idx);
139 	}
140 	/**
141 	
142 	*/
143 	double getVoiceRateHz(in long voice_idx) const
144 	{
145 		checkClassBinding!(typeof(this))();
146 		return ptrcall!(double)(GDNativeClassBinding.getVoiceRateHz, _godot_object, voice_idx);
147 	}
148 	/**
149 	
150 	*/
151 	double getWet() const
152 	{
153 		checkClassBinding!(typeof(this))();
154 		return ptrcall!(double)(GDNativeClassBinding.getWet, _godot_object);
155 	}
156 	/**
157 	
158 	*/
159 	void setDry(in double amount)
160 	{
161 		checkClassBinding!(typeof(this))();
162 		ptrcall!(void)(GDNativeClassBinding.setDry, _godot_object, amount);
163 	}
164 	/**
165 	
166 	*/
167 	void setVoiceCount(in long voices)
168 	{
169 		checkClassBinding!(typeof(this))();
170 		ptrcall!(void)(GDNativeClassBinding.setVoiceCount, _godot_object, voices);
171 	}
172 	/**
173 	
174 	*/
175 	void setVoiceCutoffHz(in long voice_idx, in double cutoff_hz)
176 	{
177 		checkClassBinding!(typeof(this))();
178 		ptrcall!(void)(GDNativeClassBinding.setVoiceCutoffHz, _godot_object, voice_idx, cutoff_hz);
179 	}
180 	/**
181 	
182 	*/
183 	void setVoiceDelayMs(in long voice_idx, in double delay_ms)
184 	{
185 		checkClassBinding!(typeof(this))();
186 		ptrcall!(void)(GDNativeClassBinding.setVoiceDelayMs, _godot_object, voice_idx, delay_ms);
187 	}
188 	/**
189 	
190 	*/
191 	void setVoiceDepthMs(in long voice_idx, in double depth_ms)
192 	{
193 		checkClassBinding!(typeof(this))();
194 		ptrcall!(void)(GDNativeClassBinding.setVoiceDepthMs, _godot_object, voice_idx, depth_ms);
195 	}
196 	/**
197 	
198 	*/
199 	void setVoiceLevelDb(in long voice_idx, in double level_db)
200 	{
201 		checkClassBinding!(typeof(this))();
202 		ptrcall!(void)(GDNativeClassBinding.setVoiceLevelDb, _godot_object, voice_idx, level_db);
203 	}
204 	/**
205 	
206 	*/
207 	void setVoicePan(in long voice_idx, in double pan)
208 	{
209 		checkClassBinding!(typeof(this))();
210 		ptrcall!(void)(GDNativeClassBinding.setVoicePan, _godot_object, voice_idx, pan);
211 	}
212 	/**
213 	
214 	*/
215 	void setVoiceRateHz(in long voice_idx, in double rate_hz)
216 	{
217 		checkClassBinding!(typeof(this))();
218 		ptrcall!(void)(GDNativeClassBinding.setVoiceRateHz, _godot_object, voice_idx, rate_hz);
219 	}
220 	/**
221 	
222 	*/
223 	void setWet(in double amount)
224 	{
225 		checkClassBinding!(typeof(this))();
226 		ptrcall!(void)(GDNativeClassBinding.setWet, _godot_object, amount);
227 	}
228 	/**
229 	The effect's raw signal.
230 	*/
231 	@property double dry()
232 	{
233 		return getDry();
234 	}
235 	/// ditto
236 	@property void dry(double v)
237 	{
238 		setDry(v);
239 	}
240 	/**
241 	The voice's cutoff frequency.
242 	*/
243 	@property double voice1CutoffHz()
244 	{
245 		return getVoiceCutoffHz(0);
246 	}
247 	/// ditto
248 	@property void voice1CutoffHz(double v)
249 	{
250 		setVoiceCutoffHz(0, v);
251 	}
252 	/**
253 	The voice's signal delay.
254 	*/
255 	@property double voice1DelayMs()
256 	{
257 		return getVoiceDelayMs(0);
258 	}
259 	/// ditto
260 	@property void voice1DelayMs(double v)
261 	{
262 		setVoiceDelayMs(0, v);
263 	}
264 	/**
265 	The voice filter's depth.
266 	*/
267 	@property double voice1DepthMs()
268 	{
269 		return getVoiceDepthMs(0);
270 	}
271 	/// ditto
272 	@property void voice1DepthMs(double v)
273 	{
274 		setVoiceDepthMs(0, v);
275 	}
276 	/**
277 	The voice's volume.
278 	*/
279 	@property double voice1LevelDb()
280 	{
281 		return getVoiceLevelDb(0);
282 	}
283 	/// ditto
284 	@property void voice1LevelDb(double v)
285 	{
286 		setVoiceLevelDb(0, v);
287 	}
288 	/**
289 	The voice's pan level.
290 	*/
291 	@property double voice1Pan()
292 	{
293 		return getVoicePan(0);
294 	}
295 	/// ditto
296 	@property void voice1Pan(double v)
297 	{
298 		setVoicePan(0, v);
299 	}
300 	/**
301 	The voice's filter rate.
302 	*/
303 	@property double voice1RateHz()
304 	{
305 		return getVoiceRateHz(0);
306 	}
307 	/// ditto
308 	@property void voice1RateHz(double v)
309 	{
310 		setVoiceRateHz(0, v);
311 	}
312 	/**
313 	The voice's cutoff frequency.
314 	*/
315 	@property double voice2CutoffHz()
316 	{
317 		return getVoiceCutoffHz(1);
318 	}
319 	/// ditto
320 	@property void voice2CutoffHz(double v)
321 	{
322 		setVoiceCutoffHz(1, v);
323 	}
324 	/**
325 	The voice's signal delay.
326 	*/
327 	@property double voice2DelayMs()
328 	{
329 		return getVoiceDelayMs(1);
330 	}
331 	/// ditto
332 	@property void voice2DelayMs(double v)
333 	{
334 		setVoiceDelayMs(1, v);
335 	}
336 	/**
337 	The voice filter's depth.
338 	*/
339 	@property double voice2DepthMs()
340 	{
341 		return getVoiceDepthMs(1);
342 	}
343 	/// ditto
344 	@property void voice2DepthMs(double v)
345 	{
346 		setVoiceDepthMs(1, v);
347 	}
348 	/**
349 	The voice's volume.
350 	*/
351 	@property double voice2LevelDb()
352 	{
353 		return getVoiceLevelDb(1);
354 	}
355 	/// ditto
356 	@property void voice2LevelDb(double v)
357 	{
358 		setVoiceLevelDb(1, v);
359 	}
360 	/**
361 	The voice's pan level.
362 	*/
363 	@property double voice2Pan()
364 	{
365 		return getVoicePan(1);
366 	}
367 	/// ditto
368 	@property void voice2Pan(double v)
369 	{
370 		setVoicePan(1, v);
371 	}
372 	/**
373 	The voice's filter rate.
374 	*/
375 	@property double voice2RateHz()
376 	{
377 		return getVoiceRateHz(1);
378 	}
379 	/// ditto
380 	@property void voice2RateHz(double v)
381 	{
382 		setVoiceRateHz(1, v);
383 	}
384 	/**
385 	The voice's cutoff frequency.
386 	*/
387 	@property double voice3CutoffHz()
388 	{
389 		return getVoiceCutoffHz(2);
390 	}
391 	/// ditto
392 	@property void voice3CutoffHz(double v)
393 	{
394 		setVoiceCutoffHz(2, v);
395 	}
396 	/**
397 	The voice's signal delay.
398 	*/
399 	@property double voice3DelayMs()
400 	{
401 		return getVoiceDelayMs(2);
402 	}
403 	/// ditto
404 	@property void voice3DelayMs(double v)
405 	{
406 		setVoiceDelayMs(2, v);
407 	}
408 	/**
409 	The voice filter's depth.
410 	*/
411 	@property double voice3DepthMs()
412 	{
413 		return getVoiceDepthMs(2);
414 	}
415 	/// ditto
416 	@property void voice3DepthMs(double v)
417 	{
418 		setVoiceDepthMs(2, v);
419 	}
420 	/**
421 	The voice's volume.
422 	*/
423 	@property double voice3LevelDb()
424 	{
425 		return getVoiceLevelDb(2);
426 	}
427 	/// ditto
428 	@property void voice3LevelDb(double v)
429 	{
430 		setVoiceLevelDb(2, v);
431 	}
432 	/**
433 	The voice's pan level.
434 	*/
435 	@property double voice3Pan()
436 	{
437 		return getVoicePan(2);
438 	}
439 	/// ditto
440 	@property void voice3Pan(double v)
441 	{
442 		setVoicePan(2, v);
443 	}
444 	/**
445 	The voice's filter rate.
446 	*/
447 	@property double voice3RateHz()
448 	{
449 		return getVoiceRateHz(2);
450 	}
451 	/// ditto
452 	@property void voice3RateHz(double v)
453 	{
454 		setVoiceRateHz(2, v);
455 	}
456 	/**
457 	The voice's cutoff frequency.
458 	*/
459 	@property double voice4CutoffHz()
460 	{
461 		return getVoiceCutoffHz(3);
462 	}
463 	/// ditto
464 	@property void voice4CutoffHz(double v)
465 	{
466 		setVoiceCutoffHz(3, v);
467 	}
468 	/**
469 	The voice's signal delay.
470 	*/
471 	@property double voice4DelayMs()
472 	{
473 		return getVoiceDelayMs(3);
474 	}
475 	/// ditto
476 	@property void voice4DelayMs(double v)
477 	{
478 		setVoiceDelayMs(3, v);
479 	}
480 	/**
481 	The voice filter's depth.
482 	*/
483 	@property double voice4DepthMs()
484 	{
485 		return getVoiceDepthMs(3);
486 	}
487 	/// ditto
488 	@property void voice4DepthMs(double v)
489 	{
490 		setVoiceDepthMs(3, v);
491 	}
492 	/**
493 	The voice's volume.
494 	*/
495 	@property double voice4LevelDb()
496 	{
497 		return getVoiceLevelDb(3);
498 	}
499 	/// ditto
500 	@property void voice4LevelDb(double v)
501 	{
502 		setVoiceLevelDb(3, v);
503 	}
504 	/**
505 	The voice's pan level.
506 	*/
507 	@property double voice4Pan()
508 	{
509 		return getVoicePan(3);
510 	}
511 	/// ditto
512 	@property void voice4Pan(double v)
513 	{
514 		setVoicePan(3, v);
515 	}
516 	/**
517 	The voice's filter rate.
518 	*/
519 	@property double voice4RateHz()
520 	{
521 		return getVoiceRateHz(3);
522 	}
523 	/// ditto
524 	@property void voice4RateHz(double v)
525 	{
526 		setVoiceRateHz(3, v);
527 	}
528 	/**
529 	The amount of voices in the effect.
530 	*/
531 	@property long voiceCount()
532 	{
533 		return getVoiceCount();
534 	}
535 	/// ditto
536 	@property void voiceCount(long v)
537 	{
538 		setVoiceCount(v);
539 	}
540 	/**
541 	The effect's processed signal.
542 	*/
543 	@property double wet()
544 	{
545 		return getWet();
546 	}
547 	/// ditto
548 	@property void wet(double v)
549 	{
550 		setWet(v);
551 	}
552 }