fmod 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (105) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +14 -0
  3. data/.travis.yml +5 -0
  4. data/.yardopts +2 -0
  5. data/CODE_OF_CONDUCT.md +74 -0
  6. data/Gemfile +5 -0
  7. data/LICENSE.txt +21 -0
  8. data/README.md +96 -0
  9. data/Rakefile +1 -0
  10. data/bin/console +28 -0
  11. data/bin/setup +8 -0
  12. data/ext/fmod.dll +0 -0
  13. data/ext/fmod64.dll +0 -0
  14. data/ext/libfmod.dylib +0 -0
  15. data/ext/llbfmod.zip +0 -0
  16. data/extras/FMOD Studio Programmers API for Windows.chm +0 -0
  17. data/fmod.gemspec +58 -0
  18. data/lib/fmod.rb +564 -0
  19. data/lib/fmod/channel.rb +151 -0
  20. data/lib/fmod/channel_control.rb +821 -0
  21. data/lib/fmod/channel_group.rb +61 -0
  22. data/lib/fmod/core.rb +35 -0
  23. data/lib/fmod/core/bool_description.rb +18 -0
  24. data/lib/fmod/core/channel_mask.rb +24 -0
  25. data/lib/fmod/core/data_description.rb +14 -0
  26. data/lib/fmod/core/driver.rb +59 -0
  27. data/lib/fmod/core/dsp_description.rb +7 -0
  28. data/lib/fmod/core/dsp_index.rb +9 -0
  29. data/lib/fmod/core/dsp_type.rb +43 -0
  30. data/lib/fmod/core/extensions.rb +28 -0
  31. data/lib/fmod/core/file_system.rb +86 -0
  32. data/lib/fmod/core/filter_type.rb +19 -0
  33. data/lib/fmod/core/float_description.rb +16 -0
  34. data/lib/fmod/core/guid.rb +50 -0
  35. data/lib/fmod/core/init_flags.rb +19 -0
  36. data/lib/fmod/core/integer_description.rb +26 -0
  37. data/lib/fmod/core/mode.rb +36 -0
  38. data/lib/fmod/core/output_type.rb +30 -0
  39. data/lib/fmod/core/parameter_info.rb +41 -0
  40. data/lib/fmod/core/parameter_type.rb +10 -0
  41. data/lib/fmod/core/result.rb +88 -0
  42. data/lib/fmod/core/reverb.rb +217 -0
  43. data/lib/fmod/core/sound_ex_info.rb +7 -0
  44. data/lib/fmod/core/sound_format.rb +30 -0
  45. data/lib/fmod/core/sound_group_behavior.rb +9 -0
  46. data/lib/fmod/core/sound_type.rb +80 -0
  47. data/lib/fmod/core/speaker_index.rb +18 -0
  48. data/lib/fmod/core/speaker_mode.rb +16 -0
  49. data/lib/fmod/core/spectrum_data.rb +12 -0
  50. data/lib/fmod/core/structure.rb +23 -0
  51. data/lib/fmod/core/structures.rb +41 -0
  52. data/lib/fmod/core/tag.rb +51 -0
  53. data/lib/fmod/core/tag_data_type.rb +14 -0
  54. data/lib/fmod/core/time_unit.rb +40 -0
  55. data/lib/fmod/core/vector.rb +42 -0
  56. data/lib/fmod/core/window_type.rb +12 -0
  57. data/lib/fmod/dsp.rb +510 -0
  58. data/lib/fmod/dsp_connection.rb +113 -0
  59. data/lib/fmod/effects.rb +38 -0
  60. data/lib/fmod/effects/channel_mix.rb +101 -0
  61. data/lib/fmod/effects/chorus.rb +30 -0
  62. data/lib/fmod/effects/compressor.rb +52 -0
  63. data/lib/fmod/effects/convolution_reverb.rb +31 -0
  64. data/lib/fmod/effects/delay.rb +44 -0
  65. data/lib/fmod/effects/distortion.rb +16 -0
  66. data/lib/fmod/effects/dsps.rb +10 -0
  67. data/lib/fmod/effects/echo.rb +37 -0
  68. data/lib/fmod/effects/envelope_follower.rb +31 -0
  69. data/lib/fmod/effects/fader.rb +16 -0
  70. data/lib/fmod/effects/fft.rb +38 -0
  71. data/lib/fmod/effects/flange.rb +37 -0
  72. data/lib/fmod/effects/high_pass.rb +24 -0
  73. data/lib/fmod/effects/high_pass_simple.rb +25 -0
  74. data/lib/fmod/effects/it_echo.rb +56 -0
  75. data/lib/fmod/effects/it_lowpass.rb +36 -0
  76. data/lib/fmod/effects/ladspa_plugin.rb +14 -0
  77. data/lib/fmod/effects/limiter.rb +32 -0
  78. data/lib/fmod/effects/loudness_meter.rb +19 -0
  79. data/lib/fmod/effects/low_pass.rb +25 -0
  80. data/lib/fmod/effects/low_pass_simple.rb +26 -0
  81. data/lib/fmod/effects/mixer.rb +11 -0
  82. data/lib/fmod/effects/multiband_eq.rb +153 -0
  83. data/lib/fmod/effects/normalize.rb +47 -0
  84. data/lib/fmod/effects/object_pan.rb +62 -0
  85. data/lib/fmod/effects/oscillator.rb +52 -0
  86. data/lib/fmod/effects/pan.rb +166 -0
  87. data/lib/fmod/effects/param_eq.rb +36 -0
  88. data/lib/fmod/effects/pitch_shift.rb +47 -0
  89. data/lib/fmod/effects/return.rb +18 -0
  90. data/lib/fmod/effects/send.rb +21 -0
  91. data/lib/fmod/effects/sfx_reverb.rb +87 -0
  92. data/lib/fmod/effects/three_eq.rb +41 -0
  93. data/lib/fmod/effects/transceiver.rb +57 -0
  94. data/lib/fmod/effects/tremolo.rb +67 -0
  95. data/lib/fmod/effects/vst_plugin.rb +12 -0
  96. data/lib/fmod/effects/winamp_plugin.rb +12 -0
  97. data/lib/fmod/error.rb +108 -0
  98. data/lib/fmod/geometry.rb +380 -0
  99. data/lib/fmod/handle.rb +129 -0
  100. data/lib/fmod/reverb3D.rb +98 -0
  101. data/lib/fmod/sound.rb +810 -0
  102. data/lib/fmod/sound_group.rb +54 -0
  103. data/lib/fmod/system.rb +1242 -0
  104. data/lib/fmod/version.rb +3 -0
  105. metadata +220 -0
@@ -0,0 +1,47 @@
1
+
2
+ module FMOD
3
+ module Effects
4
+
5
+ ##
6
+ # This unit normalizes or amplifies the sound to a certain level.
7
+ #
8
+ # Normalize amplifies the sound based on the maximum peaks within the
9
+ # signal.
10
+ #
11
+ # For example if the maximum peaks in the signal were 50% of the bandwidth,
12
+ # it would scale the whole sound by 2.
13
+ #
14
+ # The lower threshold value makes the normalizer ignores peaks below a
15
+ # certain point, to avoid over-amplification if a loud signal suddenly came
16
+ # in, and also to avoid amplifying to maximum things like background hiss.
17
+ #
18
+ # Because FMOD is a realtime audio processor, it doesn't have the luxury of
19
+ # knowing the peak for the whole sound (ie it can't see into the future), so
20
+ # it has to process data as it comes in.
21
+ #
22
+ #
23
+ # To avoid very sudden changes in volume level based on small samples of new
24
+ # data, fmod fades towards the desired amplification which makes for smooth
25
+ # gain control. The fade-time parameter can control this.
26
+ #
27
+ # @attr fade_time [Float] Time to ramp the silence to full in ms.
28
+ # * *Minimum:* 0.0
29
+ # * *Maximum:* 20000.0
30
+ # * *Default:* 5000.0
31
+ # @attr threshold [Float] Lower volume range threshold to ignore. Raise
32
+ # higher to stop amplification of very quiet signals.
33
+ # * *Minimum:* 0.0
34
+ # * *Maximum:* 1.0
35
+ # * *Default:* 0.1
36
+ # @attr max_amp [Float] Maximum amplification allowed. Higher values allow
37
+ # more boost.
38
+ # * *Minimum:* 1.0 (no amplification)
39
+ # * *Maximum:* 100000.0
40
+ # * *Default:* 20.0
41
+ class Normalize < Dsp
42
+ float_param(0, :fade_time, min: 0.0, max: 20000.0)
43
+ float_param(1, :threshold, min: 0.0, max: 1.0)
44
+ float_param(2, :max_amp, min: 1.0, max: 100000.0)
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,62 @@
1
+ module FMOD
2
+ module Effects
3
+
4
+ ##
5
+ # This unit sends the signal to a 3d object encoder like Dolby Atmos.
6
+ # Supports a subset of the {DspType::PAN} parameters.
7
+ #
8
+ # 3D Object panners are meant for hardware 3d object systems like Dolby
9
+ # Atmos or Sony Morpheus. These object panners take input in, and send it to
10
+ # the 7.1 bed, but do not send the signal further down the DSP chain (the
11
+ # output of the dsp is silence).
12
+ #
13
+ # @attr position [Pointer|String] 3D Position
14
+ # @attr rolloff [Integer] 3D Rolloff
15
+ # * *Minimum:* 0
16
+ # * *Maximum:* 4
17
+ # * *Default:* 0 (linear-squared)
18
+ # @see Pan::ROLLOFF_LINEAR_SQUARED
19
+ # @see Pan::ROLLOFF_LINEAR
20
+ # @see Pan::ROLLOFF_INVERSE
21
+ # @see Pan::ROLLOFF_INVERSE_TAPERED
22
+ # @see Pan::ROLLOFF_CUSTOM
23
+ # @attr min_distance [Float] 3D Min Distance
24
+ # * *Minimum:* 0.0
25
+ # * *Default:* 1.0
26
+ # @attr max_distance [Float] 3D Max Distance
27
+ # * *Minimum:* 0.0
28
+ # * *Default:* 1.0
29
+ # @attr extent_mode [Integer] 3D Extent Mode
30
+ # * *Minimum:* 0 (auto)
31
+ # * *Maximum:* 2 (off)
32
+ # * *Default:* 0 (auto)
33
+ # @see Pan::EXTENT_AUTO
34
+ # @see Pan::EXTENT_USER
35
+ # @see Pan::EXTENT_OFF
36
+ # @attr sound_size [Float] 3D Sound Size
37
+ # * *Minimum:* 0.0
38
+ # * *Default:* 0.0
39
+ # @attr min_extent [Float] 3D Min Extent (degrees)
40
+ # * *Minimum:* 0.0
41
+ # * *Maximum:* 360.0
42
+ # * *Default:* 0.0
43
+ # @attr overall_gain [Pointer|String] Overall gain. For information only,
44
+ # not set by user. Allows FMOD to know the DSP is scaling the signal for
45
+ # virtualization purposes.
46
+ # @attr output_gain [Float] Output gain level, linear scale. For the user to
47
+ # scale the output of the object panner's signal.
48
+ # * *Minimum:* 0.0
49
+ # * *Maximum:* 1.0
50
+ class ObjectPan < Dsp
51
+ data_param(0, :position)
52
+ integer_param(1, :rolloff, min: 0, max: 4)
53
+ float_param(2, :min_distance, min: 0.0)
54
+ float_param(3, :max_distance, min: 0.0)
55
+ integer_param(4, :extent_mode, min: 0, max: 2)
56
+ float_param(5, :sound_size, min: 0.0)
57
+ float_param(6, :min_extent, min: 0.0, max: 360.0)
58
+ data_param(7, :overall_gain)
59
+ float_param(8, :output_gain, min: 0.0, max: 20.0)
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,52 @@
1
+
2
+ module FMOD
3
+ module Effects
4
+
5
+ ##
6
+ # This unit generates sine/square/saw/triangle or noise tones.
7
+ #
8
+ # @attr waveform [Integer] Waveform type.
9
+ # * *Minimum:* 0
10
+ # * *Maximum:* 5
11
+ # * *Default:* 0 (sine)
12
+ # @see SINE
13
+ # @see SQUARE
14
+ # @see SAW_UP
15
+ # @see SAW_DOWN
16
+ # @see TRIANGLE
17
+ # @see NOISE
18
+ # @attr rate [Float] Frequency of the sine-wave in Hz.
19
+ # * *Minimum:* 1.0
20
+ # * *Maximum:* 22000.0
21
+ # * *Default:* 220.0
22
+ class Oscillator < Dsp
23
+
24
+ ##
25
+ # Strongly-typed waveform shape for {#waveform} parameter.
26
+ SINE = 0
27
+
28
+ ##
29
+ # Strongly-typed waveform shape for {#waveform} parameter.
30
+ SQUARE = 1
31
+
32
+ ##
33
+ # Strongly-typed waveform shape for {#waveform} parameter.
34
+ SAW_UP = 2
35
+
36
+ ##
37
+ # Strongly-typed waveform shape for {#waveform} parameter.
38
+ SAW_DOWN = 3
39
+
40
+ ##
41
+ # Strongly-typed waveform shape for {#waveform} parameter.
42
+ TRIANGLE = 4
43
+
44
+ ##
45
+ # Strongly-typed waveform shape for {#waveform} parameter.
46
+ NOISE = 5
47
+
48
+ integer_param(0, :waveform, min: 0, max: 5)
49
+ float_param(1, :rate, min: 1.0, max: 22000.0)
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,166 @@
1
+ module FMOD
2
+ module Effects
3
+
4
+ ##
5
+ # This unit pans the signal, possibly up-mixing or down-mixing as well.
6
+ #
7
+ # @attr panning_mode [Integer] Panner mode.
8
+ # * *0:* Mono down-mix
9
+ # * *1:* Stereo panning
10
+ # * *2:* Surround panning
11
+ # @attr stereo_position [Float] 2D Stereo pan position.
12
+ # * *Minimum:* -100.0
13
+ # * *Maximum:* 100.0
14
+ # * *Default:* 0.0
15
+ # @attr surround_direction [Float] 2D Surround pan direction. Direction from
16
+ # center point of panning circle, in degrees.
17
+ # * *Minimum:* -180.0 (rear-speakers center point)
18
+ # * *Maximum:* 180.0 (rear-speakers center point)
19
+ # * *Default:* 0.0 (front-center)
20
+ # @attr surround_extent [Float] 2D Surround pan extent. Distance from center
21
+ # point of panning circle, in degrees.
22
+ # * *Minimum:* 0.0
23
+ # * *Maximum:* 360.0
24
+ # * *Default:* 360.0
25
+ # @attr surround_rotation [Float] 2D Surround pan rotation.
26
+ # * *Minimum:* -180.0 (degrees)
27
+ # * *Maximum:* 180.0 (degrees)
28
+ # * *Default:* 0.0
29
+ # @attr surround_lfe_level [Float] 2D Surround pan LFE level. 2D LFE level
30
+ # in dB.
31
+ # * *Minimum:* -80.0
32
+ # * *Maximum:* 20.0
33
+ # * *Default:* 0.0
34
+ # @attr stereo_surround [Integer] Stereo-to-surround mode.
35
+ # * *0:* Distributed
36
+ # * *1:* Discrete (default)
37
+ # @attr surround_stereo_separation [Float] Stereo-To-Surround Stereo (only
38
+ # for {#stereo_surround}) "discrete" mode). Separation/width of L/R parts
39
+ # of stereo sound, in degrees.
40
+ # * *Minimum:* -180.0
41
+ # * *Maximum:* 180.0
42
+ # * *Default:* 60.0
43
+ # @attr surround_stereo_axis [Float] Stereo-To-Surround Stereo (only for
44
+ # {#stereo_surround}) "discrete" mode). Axis/rotation of L/R parts of
45
+ # stereo sound, in degrees.
46
+ # * *Minimum:* -180.0
47
+ # * *Maximum:* 180.0
48
+ # * *Default:* 0.0
49
+ # @attr surround_speakers [Integer] Speakers Enabled. Bit-mask for each
50
+ # speaker from 0 to 32 to be considered by panner. Use to disable speakers
51
+ # from being panned to.
52
+ # * *Minimum:* 0
53
+ # * *Maximum:* 0xFFF
54
+ # * *Default:* 0xFFF (all on)
55
+ # @attr position [Pointer|String] 3D Position.
56
+ # @attr rolloff [Integer] 3D Rolloff.
57
+ # * *Minimum:* 0
58
+ # * *Maximum:* 4
59
+ # * *Default:* 0 (linear-squared)
60
+ # @see ROLLOFF_LINEAR_SQUARED
61
+ # @see ROLLOFF_LINEAR
62
+ # @see ROLLOFF_INVERSE
63
+ # @see ROLLOFF_INVERSE_TAPERED
64
+ # @see ROLLOFF_CUSTOM
65
+ # @attr min_distance [Float] 3D Min Distance.
66
+ # * *Minimum:* 0.0
67
+ # * *Default:* 1.0
68
+ # @attr max_distance [Float] 3D Max Distance.
69
+ # * *Minimum:* 0.0
70
+ # * *Default:* 20.0
71
+ # @attr extent_mode [Integer] 3D Extent Mode.
72
+ # * *Minimum:* 0 (auto)
73
+ # * *Maximum:* 2 (off)
74
+ # * *Default:* 0 (auto)
75
+ # @see EXTENT_AUTO
76
+ # @see EXTENT_USER
77
+ # @see EXTENT_OFF
78
+ # @attr sound_size [Float] 3D Sound Size.
79
+ # * *Minimum:* 0.0
80
+ # * *Default:* 0.0
81
+ # @attr min_extent [Float] 3D Min Extent.
82
+ # * *Minimum:* 0.0 (degrees)
83
+ # * *Maximum:* 360.0 (degrees)
84
+ # * *Default:* 0.0
85
+ # @attr pan_blend [Float] 3D Pan Blend.
86
+ # * *Minimum:* 0.0 (fully 2D)
87
+ # * *Maximum:* 1.0 (fully 3D)
88
+ # * *Default:* 0.0
89
+ # @attr lfe_upmix_enabled [Integer] LFE Up-mix Enabled. Determines whether
90
+ # non-LFE source channels should mix to the LFE or leave it alone.
91
+ # * *Minimum:* 0 (off)
92
+ # * *Maximum:* 1 (on)
93
+ # * *Default:* 0 (off)
94
+ # @attr overall_gain [Pointer] Overall gain. For information only,
95
+ # not set by user. Data to provide to FMOD, to allow FMOD to know the DSP
96
+ # is scaling the signal for virtualization purposes.
97
+ # @attr speaker_mode [Integer] Surround speaker mode. Target speaker mode
98
+ # for surround panning.
99
+ # * *Minimum:* 0
100
+ # * *Maximum:* 9
101
+ # * *Default:* {SpeakerMode::DEFAULT}
102
+ # @see SpeakerMode
103
+ # @attr height_blend [Float] 2D Height blend. When the input or
104
+ # {#speaker_mode} has height speakers, control the blend between ground
105
+ # and height.
106
+ # * *Minimum:* -1.0 (push top speakers to ground)
107
+ # * *Maximum:* 1.0 (push ground speakers to top)
108
+ # * *Default:* 0.0 (preserve top / ground separation)
109
+ class Pan < Dsp
110
+ integer_param(0, :panning_mode, min: 0, max: 2)
111
+ float_param(1, :stereo_position, min: -100.0, max: 100.0)
112
+ float_param(2, :surround_direction, min: -180.0, max: 180.0)
113
+ float_param(3, :surround_extent, min: 0.0, max: 360.0)
114
+ float_param(4, :surround_rotation, min: -180.0, max: 180.0)
115
+ float_param(5, :surround_lfe_level, min: -80.0, max: 20.0)
116
+ integer_param(6, :stereo_surround, min: 0, max: 1)
117
+ float_param(7, :surround_stereo_separation, min: -180.0, max: 180.0)
118
+ float_param(8, :surround_stereo_axis, min: -180.0, max: 180.0)
119
+ integer_param(9, :surround_speakers, min: 0, max: 4095)
120
+ data_param(10, :position)
121
+ integer_param(11, :rolloff, min: 0, max: 4)
122
+ float_param(12, :min_distance, min: 0.0)
123
+ float_param(13, :max_distance, min: 0.0)
124
+ integer_param(14, :extent_mode, min: 0, max: 2)
125
+ float_param(15, :sound_size, min: 0.0)
126
+ float_param(16, :min_extent, min: 0.0, max: 360.0)
127
+ float_param(17, :pan_blend, min: 0.0, max: 1.0)
128
+ integer_param(18, :lfe_upmix_enabled, min: 0, max: 1)
129
+ data_param(19, :overall_gain)
130
+ integer_param(20, :speaker_mode, min: 0, max: 8)
131
+ float_param(21, :height_blend, min: -1.0, max: 1.0)
132
+
133
+ ##
134
+ # Strongly-typed value used with {#extent_mode}.
135
+ EXTENT_AUTO = 0
136
+
137
+ ##
138
+ # Strongly-typed value used with {#extent_mode}.
139
+ EXTENT_USER = 1
140
+
141
+ ##
142
+ # Strongly-typed value used with {#extent_mode}.
143
+ EXTENT_OFF = 2
144
+
145
+ ##
146
+ # Strongly typed 3D rolloff value used with {#rolloff}.
147
+ ROLLOFF_LINEAR_SQUARED = 0
148
+
149
+ ##
150
+ # Strongly typed 3D rolloff value used with {#rolloff}.
151
+ ROLLOFF_LINEAR = 1
152
+
153
+ ##
154
+ # Strongly typed 3D rolloff value used with {#rolloff}.
155
+ ROLLOFF_INVERSE = 2
156
+
157
+ ##
158
+ # Strongly typed 3D rolloff value used with {#rolloff}.
159
+ ROLLOFF_INVERSE_TAPERED = 3
160
+
161
+ ##
162
+ # Strongly typed 3D rolloff value used with {#rolloff}.
163
+ ROLLOFF_CUSTOM = 4
164
+ end
165
+ end
166
+ end
@@ -0,0 +1,36 @@
1
+
2
+ module FMOD
3
+ module Effects
4
+
5
+ ##
6
+ # @deprecated Will be removed in a future FMOD version. See {MultibandEq}
7
+ # for alternatives.
8
+ #
9
+ # This unit attenuates or amplifies a selected frequency range.
10
+ #
11
+ # Parametric EQ is a single band peaking EQ filter that attenuates or
12
+ # amplifies a selected frequency and its neighbouring frequencies.
13
+ #
14
+ # When a frequency has its gain set to 1.0, the sound will be unaffected and
15
+ # represents the original signal exactly.
16
+ #
17
+ # @attr center [Float] Frequency center.
18
+ # * *Minimum:* 20.0
19
+ # * *Maximum:* 22000.0
20
+ # * *Default:* 8000.0
21
+ # @attr bandwidth [Float] Octave range around the center frequency to
22
+ # filter.
23
+ # * *Minimum:* 0.2
24
+ # * *Maximum:* 5.0
25
+ # * *Default:* 1.0
26
+ # @attr gain [Float] Frequency gain in dB.
27
+ # * *Minimum:* -30.0
28
+ # * *Maximum:* 30.0
29
+ # * *Default:* 0.0
30
+ class ParamEq < Dsp
31
+ float_param(0, :center, min: 20.0, max: 22000.0)
32
+ float_param(1, :bandwidth, min: 0.2, max: 5.0)
33
+ float_param(2, :gain, min: -30.0, max: 30.0)
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,47 @@
1
+ module FMOD
2
+ module Effects
3
+
4
+ ##
5
+ # This unit bends the pitch of a sound without changing the speed of playback.
6
+ #
7
+ # This pitch shifting unit can be used to change the pitch of a sound
8
+ # without speeding it up or slowing it down.
9
+ #
10
+ # It can also be used for time stretching or scaling, for example if the
11
+ # pitch was doubled, and the frequency of the sound was halved, the pitch of
12
+ # the sound would sound correct but it would be twice as slow.
13
+ #
14
+ # @note This filter is very computationally expensive! Similar to a vocoder,
15
+ # it requires several overlapping FFT and IFFT's to produce smooth output,
16
+ # and can require around 440mhz for 1 stereo 48khz signal using the
17
+ # default settings.
18
+ #
19
+ # Reducing the signal to mono will half the CPU usage.
20
+ #
21
+ # Reducing this will lower audio quality, but what settings to use are
22
+ # largely dependant on the sound being played. A noisy polyphonic signal
23
+ # will need higher FFT size compared to a speaking voice for example.
24
+ #
25
+ # @attr pitch [Float] Pitch value.
26
+ # * *Minimum:* 0.5 (one octave lower)
27
+ # * *Maximum:* 2.0 (one octave higher)
28
+ # * *Default:* 1.0 (normal)
29
+ # @attr window_size [Float] FFT window size. Increase this to reduce
30
+ # "smearing". This effect is a warbling sound similar to when an MP3 is
31
+ # encoded at very low bit-rates.
32
+ # * *Minimum:* 256
33
+ # * *Maximum:* 4096
34
+ # * *Default:* 1024
35
+ # * *Valid:* 256, 512, 1024, 2048, 4096
36
+ # @attr max_channels [Float] Maximum channels supported. 0 = same
37
+ # as FMOD's default output polyphony, 1 = mono, 2 = stereo etc.
38
+ # * *Minimum:* 0
39
+ # * *Maximum:* 16
40
+ # * *Default:* 0 (strongly recommended to leave at 0!)
41
+ class PitchShift < Dsp
42
+ float_param(0, :pitch, min: 0.5, max: 2.0)
43
+ float_param(1, :window_size, min: 256, max: 4096)
44
+ float_param(3, :max_channels, min: 0, max: 16)
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,18 @@
1
+
2
+ module FMOD
3
+ module Effects
4
+
5
+ ##
6
+ # This unit receives signals from a number of send DSPs.
7
+ #
8
+ # @attr_reader id [Integer] ID of this Return DSP.
9
+ # * *Default:* -1
10
+ # @attr speaker_mode [Integer] Input speaker mode of this return.
11
+ # * *Default:* {SpeakerMode::DEFAULT}
12
+ # @see SpeakerMode
13
+ class Return < Dsp
14
+ integer_param(0, :id, readonly: true)
15
+ integer_param(1, :speaker_mode, min: 0, max: 9)
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,21 @@
1
+
2
+ module FMOD
3
+ module Effects
4
+
5
+ ##
6
+ # This unit sends a copy of the signal to a return DSP anywhere in the DSP
7
+ # tree.
8
+ #
9
+ # @attr id [Integer] ID of the Return DSP this send is connected to (integer
10
+ # values only).
11
+ # * *Default:* -1 (indicates no connected {Return} DSP)
12
+ # @attr level [Float] Send level.
13
+ # * *Minimum:* 0.0
14
+ # * *Maximum:* 1.0
15
+ # * *Default:* 1.0
16
+ class Send < Dsp
17
+ integer_param(0, :id, min: -1)
18
+ integer_param(1, :level, min: 0.0, max: 1.0)
19
+ end
20
+ end
21
+ end