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,19 @@
1
+ module FMOD
2
+ module Core
3
+ module InitFlags
4
+ NORMAL = 0x00000000
5
+ STREAM_FROM_UPDATE = 0x00000001
6
+ MIX_FROM_UPDATE = 0x00000002
7
+ RIGHT_HANDED_3D = 0x00000004
8
+ CHANNEL_LOW_PASS = 0x00000100
9
+ CHANNEL_DISTANCE_FILTER = 0x00000200
10
+ PROFILE_ENABLE = 0x00010000
11
+ VOL0_BECOMES_VIRTUAL = 0x00020000
12
+ GEOMETRY_USE_CLOSEST = 0x00040000
13
+ PREFER_DOLBY_DOWN_MIX = 0x00080000
14
+ THREAD_UNSAFE = 0x00100000
15
+ PROFILE_METER_ALL = 0x00200000
16
+ DISABLE_SRS_HIGH_PASS_FILTER = 0x00400000
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,26 @@
1
+ module FMOD
2
+ module Core
3
+ class IntegerDescription < Structure
4
+
5
+ def initialize(address = nil)
6
+ types = [TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_VOIDP]
7
+ members = [:min, :max, :default, :infinite, :names]
8
+ super(address, types, members)
9
+ end
10
+
11
+ [:min, :max, :default].each do |symbol|
12
+ define_method(symbol) { self[symbol] }
13
+ end
14
+
15
+ def infinite
16
+ self[:infinite] != 0
17
+ end
18
+
19
+ def names
20
+ return [] if self[:names].null?
21
+ count = max - min + 1
22
+ (0...count).map { |i| (self[:names] + (i * SIZEOF_INTPTR_T)).ptr.to_s }
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,36 @@
1
+ module FMOD
2
+ module Core
3
+ module Mode
4
+ DEFAULT = 0x00000000
5
+ LOOP_OFF = 0x00000001
6
+ LOOP_NORMAL= 0x00000002
7
+ LOOP_BIDI = 0x00000004
8
+ TWO_D = 0x00000008
9
+ THREE_D = 0x00000010
10
+ CREATE_STREAM = 0x00000080
11
+ CREATE_SAMPLE = 0x00000100
12
+ CREATE_COMPRESSED_SAMPLE = 0x00000200
13
+ OPEN_USER = 0x00000400
14
+ OPEN_MEMORY = 0x00000800
15
+ OPEN_MEMORY_POINT = 0x10000000
16
+ OPEN_RAW = 0x00001000
17
+ OPEN_ONLY = 0x00002000
18
+ ACCURATE_TIME = 0x00004000
19
+ MPEG_SEARCH = 0x00008000
20
+ NON_BLOCKING = 0x00010000
21
+ UNIQUE = 0x00020000
22
+ HEAD_RELATIVE_3D = 0x00040000
23
+ WORLD_RELATIVE_3D = 0x00080000
24
+ INVERSE_ROLLOFF_3D = 0x00100000
25
+ LINEAR_ROLLOFF_3D = 0x00200000
26
+ LINEAR_SQUARE_ROLLOFF_3D = 0x00400000
27
+ INVERSE_TAPERED_ROLLOFF_3D = 0x00800000
28
+ CUSTOM_ROLLOFF_3D = 0x04000000
29
+ IGNORE_GEOMETRY_3D = 0x40000000
30
+ IGNORE_TAGS = 0x02000000
31
+ LOW_MEM = 0x08000000
32
+ LOAD_SECONDARY_RAM = 0x20000000
33
+ VIRTUAL_PLAY_FROM_START = 0x80000000
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,30 @@
1
+ module FMOD
2
+ module Core
3
+ module OutputType
4
+ AUTODETECT = 0
5
+ UNKNOWN = 1
6
+ NO_SOUND = 2
7
+ WAV_WRITER = 3
8
+ NOSOUND_NRT = 4
9
+ WAV_WRITER_NRT = 5
10
+ DSOUND = 6
11
+ WINMM = 7
12
+ WASAPI = 8
13
+ ASIO = 9
14
+ PULSE_AUDIO = 10
15
+ ALSA = 11
16
+ CORE_AUDIO = 12
17
+ X_AUDIO = 13
18
+ PS3 = 14
19
+ AUDIO_TRACK = 15
20
+ OPEN_SL = 16
21
+ WII_U = 17
22
+ AUDIO_OUT, = 18
23
+ AUDIO3D = 19
24
+ ATMOS = 20
25
+ WEB_AUDIO = 21
26
+ NN_AUDIO = 22
27
+ WIN_SONIC = 23
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,41 @@
1
+ module FMOD
2
+ module Core
3
+ class ParameterInfo < Structure
4
+
5
+ include Fiddle
6
+
7
+ def initialize(address = nil)
8
+ types = [TYPE_INT, [TYPE_CHAR, 16], [TYPE_CHAR, 16], TYPE_VOIDP, TYPE_VOIDP]
9
+ members = [:type, :name, :label, :description, :info]
10
+ super(address, types, members)
11
+ end
12
+
13
+ def type
14
+ self[:type]
15
+ end
16
+
17
+ def name
18
+ (self + SIZEOF_INT).to_s(16).delete("\0").force_encoding('UTF-8')
19
+ end
20
+
21
+ def label
22
+ (self + SIZEOF_INT + 16).to_s(16).delete("\0")
23
+ end
24
+
25
+ def description
26
+ self[:description].to_s
27
+ end
28
+
29
+ def info
30
+ pointer = self + SIZEOF_INT + (SIZEOF_CHAR * 32) + SIZEOF_INTPTR_T
31
+ case self[:type]
32
+ when ParameterType::FLOAT then FloatDescription.new(pointer)
33
+ when ParameterType::INT then IntegerDescription.new(pointer)
34
+ when ParameterType::BOOL then BoolDescription.new(pointer)
35
+ when ParameterType::DATA then DataDescription.new(pointer)
36
+ else raise RangeError, "Invalid data type for parameter."
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,10 @@
1
+ module FMOD
2
+ module Core
3
+ module ParameterType
4
+ FLOAT = 0
5
+ INT = 1
6
+ BOOL = 2
7
+ DATA = 3
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,88 @@
1
+ module FMOD
2
+ module Core
3
+ module Result
4
+ OK = 0
5
+ BAD_COMMAND = 1
6
+ CHANNEL_ALLOC = 2
7
+ CHANNEL_STOLEN = 3
8
+ DMA = 4
9
+ DSP_CONNECTION = 5
10
+ DSP_DONT_PROCESS = 6
11
+ DSP_FORMAT = 7
12
+ DSP_IN_USE = 8
13
+ DSP_NOT_FOUND = 9
14
+ DSP_RESERVED = 10
15
+ DSP_SILENCE = 11
16
+ DSP_TYPE = 12
17
+ FILE_BAD = 13
18
+ FILE_COULD__SEEK = 14
19
+ FILE_DISK_EJECTED = 15
20
+ FILE_EOF = 16
21
+ FILE_END_OF_DATA = 17
22
+ FILE_NOT_FOUND = 18
23
+ FORMAT = 19
24
+ HEADER_MISMATCH = 20
25
+ HTTP = 21
26
+ HTTP_ACCESS = 22
27
+ HTTP_PROXY_AUTH = 23
28
+ HTTP_SERVER_ERROR = 24
29
+ HTTP_TIMEOUT = 25
30
+ INITIALIZATION = 26
31
+ INITIALIZED = 27
32
+ INTERNAL = 28
33
+ INVALID_FLOAT = 29
34
+ INVALID_HANDLE = 30
35
+ INVALID_PARAM = 31
36
+ INVALID_POSITION = 32
37
+ INVALID_SPEAKER = 33
38
+ INVALID_SYNC_POINT = 34
39
+ INVALID_THREAD = 35
40
+ INVALID_VECTOR = 36
41
+ MAX_AUDIBLE = 37
42
+ MEMORY = 38
43
+ MEMORY_CANT_POINT = 39
44
+ NEEDS_3D = 40
45
+ NEEDS_HARDWARE = 41
46
+ NET_CONNECT = 42
47
+ NET_SOCKET_ERROR = 43
48
+ NET_URL = 44
49
+ NET_WOULD_BLOCK = 45
50
+ NOT_READY = 46
51
+ OUTPUT_ALLOCATED = 47
52
+ OUTPUT_CREATE_BUFFER = 48
53
+ OUTPUT_DRIVER_CALL = 49
54
+ OUTPUT_FORMAT = 50
55
+ OUTPUT_INIT = 51
56
+ OUTPUT_NO_DRIVERS = 52
57
+ PLUGIN = 53
58
+ PLUGIN_MISSING = 54
59
+ PLUGIN_RESOURCE = 55
60
+ PLUGIN_VERSION = 56
61
+ RECORD = 57
62
+ REVERB_CHANNEL_GROUP = 58
63
+ REVERB_INSTANCE = 59
64
+ SUBSOUNDS = 60
65
+ SUBSOUND_ALLOCATED = 61
66
+ SUBSOUND_CANT_MOVE = 62
67
+ TAG_NOT_FOUND = 63
68
+ TOO_MANY_CHANNELS = 64
69
+ TRUNCATED = 65
70
+ UNIMPLEMENTED = 66
71
+ UNINITIALIZED = 67
72
+ UNSUPPORTED = 68
73
+ VERSION = 69
74
+ EVENT_ALREADY_LOADED = 70
75
+ EVENT_LIVE_UPDATE_BUSY = 71
76
+ EVENT_LIVE_UPDATE_MISMATCH = 72
77
+ EVENT_LIVE_UPDATE_TIMEOUT = 73
78
+ EVENT_NOT_FOUND = 74
79
+ STUDIO_UNINITIALIZED = 75
80
+ STUDIO_NOT_LOADED = 76
81
+ INVALID_STRING = 77
82
+ ALREADY_LOCKED = 78
83
+ NOT_LOCKED = 79
84
+ RECORD_DISCONNECTED = 80
85
+ TOO_MANY_SAMPLES = 81
86
+ end
87
+ end
88
+ end
@@ -0,0 +1,217 @@
1
+
2
+
3
+ module FMOD
4
+
5
+ module Core
6
+ ##
7
+ # Structure defining a reverb environment.
8
+ class Reverb < Structure
9
+
10
+ def initialize(address = nil)
11
+ types = Array.new(12, TYPE_FLOAT)
12
+ members = [:decay_time, :early_delay, :late_delay,
13
+ :hf_reference, :hf_decay_ratio, :diffusion, :density, :low_shelf_freq,
14
+ :low_shelf_gain, :high_cut, :early_late_mix, :wet_level]
15
+ super(address, types, members)
16
+ end
17
+
18
+ [:decay_time, :early_delay, :late_delay, :hf_reference, :hf_decay_ratio,
19
+ :diffusion, :density, :low_shelf_freq, :low_shelf_gain, :high_cut,
20
+ :early_late_mix, :wet_level].each do |symbol|
21
+ define_method(symbol) {self[symbol]}
22
+ end
23
+
24
+ def decay_time=(value)
25
+ self[:decay_time] = value.clamp(0.0, 20000.0)
26
+ end
27
+
28
+ def early_delay=(value)
29
+ self[:early_delay] = value.clamp(0.0, 300.0)
30
+ end
31
+
32
+ def late_delay=(value)
33
+ self[:late_delay] = value.clamp(0.0, 100.0)
34
+ end
35
+
36
+ def hf_reference=(value)
37
+ self[:hf_reference] = value.clamp(20.0, 20000.0)
38
+ end
39
+
40
+ def hf_decay_ratio=(value)
41
+ self[:hf_decay_ratio] = value.clamp(10.0, 100.0)
42
+ end
43
+
44
+ def diffusion=(value)
45
+ self[:diffusion] = value.clamp(0.0, 100.0)
46
+ end
47
+
48
+ def density=(value)
49
+ self[:density] = value.clamp(0.0, 100.0)
50
+ end
51
+
52
+ def low_shelf_freq=(value)
53
+ self[:low_shelf_freq] = value.clamp(20.0, 1000.0)
54
+ end
55
+
56
+ def low_shelf_gain=(value)
57
+ self[:low_shelf_gain] = value.clamp(-36.0, 12.0)
58
+ end
59
+
60
+ def high_cut=(value)
61
+ self[:high_cut] = value.clamp(20.0, 20000.0)
62
+ end
63
+
64
+ def early_late_mix=(value)
65
+ self[:early_late_mix] = value.clamp(0.0, 100.0)
66
+ end
67
+
68
+ def wet_level=(value)
69
+ self[:wet_level] = value.clamp(-80.0, 20.0)
70
+ end
71
+
72
+ ##
73
+ # @return [Reverb] no reverberation.
74
+ def self.off
75
+ new [1000, 7, 11, 5000, 100, 100, 100, 250, 0, 20, 96, -80.0].pack('f*')
76
+ end
77
+
78
+ ##
79
+ # @return [Reverb] a generic reverb environment.
80
+ def self.generic
81
+ new [1500, 7, 11, 5000, 83, 100, 100, 250, 0, 14500, 96, -8.0].pack('f*')
82
+ end
83
+
84
+ ##
85
+ # @return [Reverb] a padded cell environment.
86
+ def self.padded_cell
87
+ new [170, 1, 2, 5000, 10, 100, 100, 250, 0, 160, 84, -7.8].pack('f*')
88
+ end
89
+
90
+ ##
91
+ # @return [Reverb] a room environment.
92
+ def self.room
93
+ new [400, 2, 3, 5000, 83, 100, 100, 250, 0, 6050, 88, -9.4].pack('f*')
94
+ end
95
+
96
+ ##
97
+ # @return [Reverb] a bathroom environment.
98
+ def self.bathroom
99
+ new [1500, 7, 11, 5000, 54, 100, 60, 250, 0, 2900, 83, 0.5].pack('f*')
100
+ end
101
+
102
+ ##
103
+ # @return [Reverb] a living room environment.
104
+ def self.living_room
105
+ new [500, 3, 4, 5000, 10, 100, 100, 250, 0, 160, 58, -19.0].pack('f*')
106
+ end
107
+
108
+ ##
109
+ # @return [Reverb] a stone room environment.
110
+ def self.stone_room
111
+ new [2300, 12, 17, 5000, 64, 100, 100, 250, 0, 7800, 71, -8.5].pack('f*')
112
+ end
113
+
114
+ ##
115
+ # @return [Reverb] an auditorium environment.
116
+ def self.auditorium
117
+ new [4300, 20, 30, 5000, 59, 100, 100, 250, 0, 5850, 64, -11.7].pack('f*')
118
+ end
119
+
120
+ ##
121
+ # @return [Reverb] a concert hall environment.
122
+ def self.concert_hall
123
+ new [3900, 20, 29, 5000, 70, 100, 100, 250, 0, 5650, 80, -9.8].pack('f*')
124
+ end
125
+
126
+ ##
127
+ # @return [Reverb] a cave environment.
128
+ def self.cave
129
+ new [2900, 15, 22, 5000, 100, 100, 100, 250, 0, 20000, 59, -11.3].pack('f*')
130
+ end
131
+
132
+ ##
133
+ # @return [Reverb] an arena environment.
134
+ def self.arena
135
+ new [7200, 20, 30, 5000, 33, 100, 100, 250, 0, 4500, 80, -9.6].pack('f*')
136
+ end
137
+
138
+ ##
139
+ # @return [Reverb] a hangar environment.
140
+ def self.hangar
141
+ new [10000, 20, 30, 5000, 23, 100, 100, 250, 0, 3400, 72, -7.4].pack('f*')
142
+ end
143
+
144
+ ##
145
+ # @return [Reverb] a carpeted hallway environment.
146
+ def self.carpeted_hallway
147
+ new [300, 2, 30, 5000, 10, 100, 100, 250, 0, 500, 56, -24.0].pack('f*')
148
+ end
149
+
150
+ ##
151
+ # @return [Reverb] a hallway environment.
152
+ def self.hallway
153
+ new [1500, 7, 11, 5000, 59, 100, 100, 250, 0, 7800, 87, -5.5].pack('f*')
154
+ end
155
+
156
+ ##
157
+ # @return [Reverb] a stone corridor environment.
158
+ def self.stone_corridor
159
+ new [270, 13, 20, 5000, 79, 100, 100, 250, 0, 9000, 86, -6.0].pack('f*')
160
+ end
161
+
162
+ ##
163
+ # @return [Reverb] an alley environment.
164
+ def self.alley
165
+ new [1500, 7, 11, 5000, 86, 100, 100, 250, 0, 8300, 80, -9.8].pack('f*')
166
+ end
167
+
168
+ ##
169
+ # @return [Reverb] a forest environment.
170
+ def self.forest
171
+ new [1500, 162, 88, 5000, 54, 79, 100, 250, 0, 760, 94, -12.3].pack('f*')
172
+ end
173
+
174
+ ##
175
+ # @return [Reverb] a city environment.
176
+ def self.city
177
+ new [1500, 7, 11, 5000, 67, 50, 100, 250, 0, 4050, 66, -26.0].pack('f*')
178
+ end
179
+
180
+ ##
181
+ # @return [Reverb] a mountain environment.
182
+ def self.mountains
183
+ new [1500, 300, 100, 5000, 21, 27, 100, 250, 0, 1220, 82, -24.0].pack('f*')
184
+ end
185
+
186
+ ##
187
+ # @return [Reverb] a quarry environment.
188
+ def self.quarry
189
+ new [1500, 61, 25, 5000, 83, 100, 100, 250, 0, 3400, 100, -5.0].pack('f*')
190
+ end
191
+
192
+ ##
193
+ # @return [Reverb] a plain environment.
194
+ def self.plain
195
+ new [1500, 179, 100, 5000, 50, 21, 100, 250, 0, 1670, 65, -28.0].pack('f*')
196
+ end
197
+
198
+ ##
199
+ # @return [Reverb] a parking lot environment.
200
+ def self.parking_lot
201
+ new [1700, 8, 12, 5000, 100, 100, 100, 250, 0, 20000, 56, -19.5].pack('f*')
202
+ end
203
+
204
+ ##
205
+ # @return [Reverb] a sewer-pipe environment.
206
+ def self.sewer_pipe
207
+ new [2800, 14, 21, 5000, 14, 80, 60, 250, 0, 3400, 66, 1.2].pack('f*')
208
+ end
209
+
210
+ ##
211
+ # @return [Reverb] an underwater environment.
212
+ def self.underwater
213
+ new [1500, 7, 11, 5000, 10, 100, 100, 250, 0, 500, 92, 7.0].pack('f*')
214
+ end
215
+ end
216
+ end
217
+ end