fmod 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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