fmod 0.9.0 → 0.9.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,54 +1,118 @@
1
1
 
2
2
  module FMOD
3
+
4
+ # Represents a logical grouping of {Channel} and/or {ChannelGroup} objects
5
+ # that can be manipulated as one.
3
6
  class ChannelGroup < ChannelControl
4
7
 
5
8
  include Fiddle
6
9
  include Enumerable
7
10
 
11
+ # @!attribute [r] subgroup_count
12
+ # @return [Integer] the number of sub groups under this channel group.
8
13
  integer_reader(:subgroup_count, :ChannelGroup_GetNumGroups)
14
+
15
+ # @!attribute [r] channel_count
16
+ # @return [Integer] the number of assigned channels to this channel group.
9
17
  integer_reader(:channel_count, :ChannelGroup_GetNumChannels)
10
18
 
19
+ ##
20
+ # @return [String] the name of the channel group set when the group was
21
+ # created.
11
22
  def name
12
23
  buffer = "\0" * 512
13
24
  FMOD.invoke(:ChannelGroup_GetName, self, buffer, 512)
14
25
  buffer.delete("\0")
15
26
  end
16
27
 
28
+ ##
29
+ # Retrieves the sub-group at the specified index.
30
+ #
31
+ # @param index [Integer] Index to specify which sub channel group to get.
32
+ # @return [ChannelGroup, nil] the group or +nil+ if no group was found at
33
+ # the specified index.
17
34
  def subgroup(index)
18
- FMOD.valid_range?(index, 0, subgroup_count - 1)
35
+ return nil unless FMOD.valid_range?(index, 0, subgroup_count - 1, false)
19
36
  FMOD.invoke(:ChannelGroup_GetGroup, self, index, group = int_ptr)
20
37
  ChannelGroup.new(group)
21
38
  end
22
39
 
40
+ ##
41
+ # @!attribute [r] parent_group
42
+ # @return [ChannelGroup, nil] the channel group parent.
23
43
  def parent_group
24
44
  FMOD.invoke(:ChannelGroup_GetParentGroup, self, group = int_ptr)
25
45
  group.null? ? nil : ChannelGroup.new(group)
26
46
  end
27
47
 
48
+ ##
49
+ # Retrieves the {Channel} within this group at the specified index.
50
+ #
51
+ # @param index [Integer] Index within the group of the channel.
52
+ #
53
+ # @return [Channel, nil] the specified {Channel}, or +nil+ if no channel
54
+ # exists at the specified index.
28
55
  def [](index)
29
- FMOD.valid_range?(index, 0, channel_count - 1)
56
+ return nil unless FMOD.valid_range?(index, 0, channel_count - 1, false)
30
57
  FMOD.invoke(:ChannelGroup_GetChannel, self, index, channel = int_ptr)
31
58
  Channel.new(channel)
32
59
  end
33
60
 
61
+ ##
62
+ # Enumerates the channels contained within the {ChannelGroup}.
63
+ #
64
+ # @overload each
65
+ # When called with block, yields each {Channel} within the object before
66
+ # returning self.
67
+ # @yield [channel] Yields a channel to the block.
68
+ # @yieldparam channel [Channel] The current enumerated channel.
69
+ # @return [self]
70
+ # @overload each
71
+ # When no block specified, returns an Enumerator for the {ChannelGroup}.
72
+ # @return [Enumerator]
34
73
  def each
35
74
  return to_enum(:each) unless block_given?
36
75
  (0...channel_count).each { |i| yield self[i] }
37
76
  self
38
77
  end
39
78
 
79
+ ##
80
+ # Adds a {Channel} or a {ChannelGroup} as a child of this group.
81
+ #
82
+ # @param channel_control [Channel, ChannelGroup] The channel or group to
83
+ # add as a child.
84
+ #
85
+ # @return [self, DspConnection] either self if a {Channel} was added, or a
86
+ # {DspConnection} if a group was added.
40
87
  def <<(channel_control)
41
88
  return add_channel(channel_control) if channel_control.is_a?(Channel)
42
89
  return add_group(channel_control) if channel_control.is_a?(ChannelGroup)
43
90
  raise TypeError, "#{channel_control} is not a #{ChannelControl}."
44
91
  end
45
92
 
93
+ ##
94
+ # Adds a channel as a child of the this group. This detaches the channel
95
+ # from any group it may already be attached to.
96
+ #
97
+ # @param channel [Channel] Channel to add as a child.
98
+ #
99
+ # @return [self]
46
100
  def add_channel(channel)
47
101
  FMOD.type?(channel, Channel)
48
102
  channel.group = self
49
- channel
103
+ self
50
104
  end
51
105
 
106
+ ##
107
+ # Adds a channel group as a child of the current channel group.
108
+ #
109
+ # @param group [ChannelGroup] Channel group to add as a child.
110
+ # @param propagate_clock [Boolean] When a child group is added to a parent
111
+ # group, the clock values from the parent will be propagated down into
112
+ # the child.
113
+ #
114
+ # @return [DspConnection] a DSP connection, which is the connection between
115
+ # the parent and the child group's DSP units.
52
116
  def add_group(group, propagate_clock = true)
53
117
  FMOD.type?(group, ChannelGroup)
54
118
  FMOD.invoke(:ChannelGroup_AddGroup, self, group,
@@ -1,35 +1,44 @@
1
1
 
2
- require_relative './core/structure'
3
- require_relative './core/structures'
4
- require_relative './core/bool_description'
5
- require_relative './core/channel_mask'
6
- require_relative './core/data_description'
7
- require_relative './core/driver'
8
- require_relative './core/dsp_description'
9
- require_relative './core/dsp_index'
10
- require_relative './core/dsp_type'
11
- require_relative './core/extensions'
12
- require_relative './core/file_system'
13
- require_relative './core/filter_type'
14
- require_relative './core/float_description'
15
- require_relative './core/guid'
16
- require_relative './core/init_flags'
17
- require_relative './core/integer_description'
18
- require_relative './core/mode'
19
- require_relative './core/output_type'
20
- require_relative './core/parameter_info'
21
- require_relative './core/parameter_type'
22
- require_relative './core/result'
23
- require_relative './core/reverb'
24
- require_relative './core/sound_ex_info'
25
- require_relative './core/sound_format'
26
- require_relative './core/sound_group_behavior'
27
- require_relative './core/sound_type'
28
- require_relative './core/speaker_index'
29
- require_relative './core/speaker_mode'
30
- require_relative './core/spectrum_data'
31
- require_relative './core/tag'
32
- require_relative './core/tag_data_type'
33
- require_relative './core/time_unit'
34
- require_relative './core/vector'
35
- require_relative './core/window_type'
2
+ module FMOD
3
+
4
+ ##
5
+ # Namespace for classes and structures used primarily within the API, to
6
+ # create a logical separation of the native FMOD classes from enumerations,
7
+ # structures, and internally used data types.
8
+ module Core
9
+ require_relative './core/structure'
10
+ require_relative './core/structures'
11
+ require_relative './core/bool_description'
12
+ require_relative './core/channel_mask'
13
+ require_relative './core/data_description'
14
+ require_relative './core/driver'
15
+ require_relative './core/dsp_description'
16
+ require_relative './core/dsp_index'
17
+ require_relative './core/dsp_type'
18
+ require_relative './core/extensions'
19
+ require_relative './core/file_system'
20
+ require_relative './core/filter_type'
21
+ require_relative './core/float_description'
22
+ require_relative './core/guid'
23
+ require_relative './core/init_flags'
24
+ require_relative './core/integer_description'
25
+ require_relative './core/mode'
26
+ require_relative './core/output_type'
27
+ require_relative './core/parameter_info'
28
+ require_relative './core/parameter_type'
29
+ require_relative './core/result'
30
+ require_relative './core/reverb'
31
+ require_relative './core/sound_ex_info'
32
+ require_relative './core/sound_format'
33
+ require_relative './core/sound_group_behavior'
34
+ require_relative './core/sound_type'
35
+ require_relative './core/speaker_index'
36
+ require_relative './core/speaker_mode'
37
+ require_relative './core/spectrum_data'
38
+ require_relative './core/tag'
39
+ require_relative './core/tag_data_type'
40
+ require_relative './core/time_unit'
41
+ require_relative './core/vector'
42
+ require_relative './core/window_type'
43
+ end
44
+ end
@@ -1,35 +1,173 @@
1
1
  module FMOD
2
2
  module Core
3
+
4
+ ##
5
+ # Sound description bit-fields, bitwise OR them together for loading and
6
+ # describing sounds.
3
7
  module Mode
8
+
9
+ ##
10
+ # Default for all modes listed below. {LOOP_OFF}, {TWO_D},
11
+ # {WORLD_RELATIVE_3D}, {INVERSE_ROLLOFF_3D}
4
12
  DEFAULT = 0x00000000
13
+
14
+ ##
15
+ # For non looping sounds. (DEFAULT). Overrides {LOOP_NORMAL} /
16
+ # {LOOP_BIDI}.
5
17
  LOOP_OFF = 0x00000001
18
+
19
+ ##
20
+ # For forward looping sounds.
6
21
  LOOP_NORMAL= 0x00000002
22
+
23
+ ##
24
+ # For bidirectional looping sounds. (only works on software mixed static
25
+ # sounds).
7
26
  LOOP_BIDI = 0x00000004
27
+
28
+ ##
29
+ # Ignores any 3D processing. ({DEFAULT}).
8
30
  TWO_D = 0x00000008
31
+
32
+ ##
33
+ # Makes the sound positionable in 3D. Overrides {TWO_D}.
9
34
  THREE_D = 0x00000010
35
+
36
+ ##
37
+ # Decompress at runtime, streaming from the source provided (ie from
38
+ # disk). Overrides {CREATE_SAMPLE} and {CREATE_COMPRESSED_SAMPLE}. Note a
39
+ # stream can only be played once at a time due to a stream only having 1
40
+ # stream buffer and file handle. Open multiple streams to have them play
41
+ # concurrently.
10
42
  CREATE_STREAM = 0x00000080
43
+
44
+ ##
45
+ # Decompress at load time, decompressing or decoding whole file into
46
+ # memory as the target sample format (ie PCM). Fastest for playback and
47
+ # most flexible.
11
48
  CREATE_SAMPLE = 0x00000100
49
+
50
+ ##
51
+ # Load MP2/MP3/FADPCM/IMAADPCM/Vorbis/AT9 or XMA into memory and leave it
52
+ # compressed. Vorbis/AT9/FADPCM encoding only supported in the .FSB
53
+ # container format. During playback the FMOD software mixer will decode it
54
+ # in realtime as a 'compressed sample'. Overrides {CREATE_SAMPLE}. If the
55
+ # sound data is not one of the supported formats, it will behave as if it
56
+ # was created with {CREATE_SAMPLE} and decode the sound into PCM.
12
57
  CREATE_COMPRESSED_SAMPLE = 0x00000200
58
+
59
+ ##
60
+ # Opens a user created static sample or stream.
13
61
  OPEN_USER = 0x00000400
62
+
63
+ ##
64
+ # "source" will be interpreted as a pointer to memory instead of filename
65
+ # for creating sounds. If used with {CREATE_SAMPLE} or
66
+ # {CREATE_COMPRESSED_SAMPLE}, FMOD duplicates the memory into its own
67
+ # buffers. Your own buffer can be freed after open. If used with
68
+ # {CREATE_STREAM}, FMOD will stream out of the buffer whose pointer you
69
+ # passed in. In this case, your own buffer should not be freed until you
70
+ # have finished with and released the stream.
14
71
  OPEN_MEMORY = 0x00000800
72
+
73
+ ##
74
+ # "source" will be interpreted as a pointer to memory instead of filename
75
+ # for creating sounds. This differs to {OPEN_MEMORY} in that it uses the
76
+ # memory as is, without duplicating the memory into its own buffers.
77
+ # Cannot be freed after open, only after Sound::release. Will not work if
78
+ # the data is compressed and {CREATE_COMPRESSED_SAMPLE} is not used.
15
79
  OPEN_MEMORY_POINT = 0x10000000
80
+
81
+ ##
82
+ # Will ignore file format and treat as raw PCM.
16
83
  OPEN_RAW = 0x00001000
84
+
85
+ ##
86
+ # Just open the file, dont pre-buffer or read. Good for fast opens for
87
+ # info, or when Sound.read_data is to be used.
17
88
  OPEN_ONLY = 0x00002000
89
+
90
+ ##
91
+ # For System.create_sound - for accurate Sound.length/Channel.position on
92
+ # VBR MP3, and MOD/S3M/XM/IT/MIDI files. Scans file first, so takes longer
93
+ # to open. {OPEN_ONLY} does not affect this.
18
94
  ACCURATE_TIME = 0x00004000
95
+
96
+ ##
97
+ # For corrupted / bad MP3 files. This will search all the way through the
98
+ # file until it hits a valid MPEG header. Normally only searches for 4k.
19
99
  MPEG_SEARCH = 0x00008000
100
+
101
+ ##
102
+ # For opening sounds and getting streamed sub-sounds (seeking)
103
+ # asynchronously. Use Sound.open_state to poll the state of the sound as
104
+ # it opens or retrieves the sub-sound in the background.
20
105
  NON_BLOCKING = 0x00010000
106
+
107
+ ##
108
+ # Unique sound, can only be played one at a time
21
109
  UNIQUE = 0x00020000
110
+
111
+ ##
112
+ # Make the sound's position, velocity and orientation relative to the
113
+ # listener.
22
114
  HEAD_RELATIVE_3D = 0x00040000
115
+
116
+ ##
117
+ # Make the sound's position, velocity and orientation absolute (relative
118
+ # to the world). ({DEFAULT})
23
119
  WORLD_RELATIVE_3D = 0x00080000
120
+
121
+ ##
122
+ # This sound will follow the inverse rolloff model where min distance =
123
+ # full volume, max distance = where sound stops attenuating, and rolloff
124
+ # is fixed according to the global rolloff factor. ({DEFAULT})
24
125
  INVERSE_ROLLOFF_3D = 0x00100000
126
+
127
+ ##
128
+ # This sound will follow a linear rolloff model where min distance is full
129
+ # volume, max distance is silence.
25
130
  LINEAR_ROLLOFF_3D = 0x00200000
131
+
132
+ ##
133
+ # This sound will follow a linear-square rolloff model where min distance
134
+ # is full volume, max distance is silence.
26
135
  LINEAR_SQUARE_ROLLOFF_3D = 0x00400000
136
+
137
+ ##
138
+ # This sound will follow the inverse rolloff model at distances close to
139
+ # min distance and a linear-square rolloff close to max distance.
27
140
  INVERSE_TAPERED_ROLLOFF_3D = 0x00800000
141
+
142
+ ##
143
+ # is sound will follow a rolloff model defined by Sound.custom_rolloff /
144
+ # Channel.custom_rolloff.
28
145
  CUSTOM_ROLLOFF_3D = 0x04000000
146
+
147
+ ##
148
+ # Is not affect by geometry occlusion. If not specified in Sound:.mode, or
149
+ # Channel.mode, the flag is cleared and it is affected by geometry again.
29
150
  IGNORE_GEOMETRY_3D = 0x40000000
151
+
152
+ ##
153
+ # Skips id3v2/asf/etc tag checks when opening a sound, to reduce seek/read
154
+ # overhead when opening files (helps with CD performance).
30
155
  IGNORE_TAGS = 0x02000000
156
+
157
+ ##
158
+ # Removes some features from samples to give a lower memory overhead, like
159
+ # Sound.name.
31
160
  LOW_MEM = 0x08000000
161
+
162
+ ##
163
+ # Load sound into the secondary RAM of supported platform. On PS3, sounds
164
+ # will be loaded into RSX/VRAM.
32
165
  LOAD_SECONDARY_RAM = 0x20000000
166
+
167
+ ##
168
+ # For sounds that start virtual (due to being quiet or low importance),
169
+ # instead of swapping back to audible, and playing at the correct offset
170
+ # according to time, this flag makes the sound play from the start.
33
171
  VIRTUAL_PLAY_FROM_START = 0x80000000
34
172
  end
35
173
  end
@@ -1,87 +1,371 @@
1
1
  module FMOD
2
2
  module Core
3
+
4
+ ##
5
+ # Result codes returned from every function call to FMOD.
3
6
  module Result
7
+ ##
8
+ # No errors.
4
9
  OK = 0
10
+
11
+ ##
12
+ # Tried to call a function on a data type that does not allow this type of
13
+ # functionality (ie calling {Sound.lock} on a streaming sound).
5
14
  BAD_COMMAND = 1
15
+
16
+ ##
17
+ # Error trying to allocate a channel.
6
18
  CHANNEL_ALLOC = 2
19
+
20
+ ##
21
+ # The specified channel has been reused to play another sound.
7
22
  CHANNEL_STOLEN = 3
23
+
24
+ ##
25
+ # DMA Failure. See debug output for more information.
8
26
  DMA = 4
27
+
28
+ ##
29
+ # DSP connection error. Connection possibly caused a cyclic dependency or
30
+ # connected dsps with incompatible buffer counts.
9
31
  DSP_CONNECTION = 5
32
+
33
+ ##
34
+ # DSP return code from a DSP process query callback. Tells mixer not to
35
+ # call the process callback and therefore not consume CPU. Use this to
36
+ # optimize the DSP graph.
10
37
  DSP_DONT_PROCESS = 6
38
+
39
+ ##
40
+ # DSP Format error. A DSP unit may have attempted to connect to this
41
+ # network with the wrong format, or a matrix may have been set with the
42
+ # wrong size if the target unit has a specified channel map.
11
43
  DSP_FORMAT = 7
44
+
45
+ ##
46
+ # DSP is already in the mixer's DSP network. It must be removed before
47
+ # being reinserted or released.
12
48
  DSP_IN_USE = 8
49
+
50
+ ##
51
+ # DSP connection error. Couldn't find the DSP unit specified.
13
52
  DSP_NOT_FOUND = 9
53
+
54
+ ##
55
+ # DSP operation error. Cannot perform operation on this DSP as it is
56
+ # reserved by the system.
14
57
  DSP_RESERVED = 10
58
+
59
+ ##
60
+ # DSP return code from a DSP process query callback. Tells mixer silence
61
+ # would be produced from read, so go idle and not consume CPU. Use this to
62
+ # optimize the DSP graph.
15
63
  DSP_SILENCE = 11
64
+
65
+ ##
66
+ # DSP operation cannot be performed on a DSP of this type.
16
67
  DSP_TYPE = 12
68
+
69
+ ##
70
+ # Error loading file.
17
71
  FILE_BAD = 13
72
+
73
+ ##
74
+ # Couldn't perform seek operation. This is a limitation of the medium (ie
75
+ # net-streams) or the file format.
18
76
  FILE_COULD__SEEK = 14
77
+
78
+ ##
79
+ # Media was ejected while reading.
19
80
  FILE_DISK_EJECTED = 15
81
+
82
+ ##
83
+ # End of file unexpectedly reached while trying to read essential data
84
+ # (truncated?).
20
85
  FILE_EOF = 16
86
+
87
+ ##
88
+ # End of current chunk reached while trying to read data.
21
89
  FILE_END_OF_DATA = 17
90
+
91
+ ##
92
+ # File not found.
22
93
  FILE_NOT_FOUND = 18
94
+
95
+ ##
96
+ # Unsupported file or audio format.
23
97
  FORMAT = 19
98
+
99
+ ##
100
+ # There is a version mismatch between the FMOD header and either the FMOD
101
+ # Studio library or the FMOD Low Level library.
24
102
  HEADER_MISMATCH = 20
103
+
104
+ ##
105
+ # A HTTP error occurred. This is a catch-all for HTTP errors not listed
106
+ # elsewhere.
25
107
  HTTP = 21
108
+
109
+ ##
110
+ # The specified resource requires authentication or is forbidden.
26
111
  HTTP_ACCESS = 22
112
+
113
+ ##
114
+ # Proxy authentication is required to access the specified resource.
27
115
  HTTP_PROXY_AUTH = 23
116
+
117
+ ##
118
+ # A HTTP server error occurred.
28
119
  HTTP_SERVER_ERROR = 24
120
+
121
+ ##
122
+ # The HTTP request timed out.
29
123
  HTTP_TIMEOUT = 25
124
+
125
+ ##
126
+ # FMOD was not initialized correctly to support this function.
30
127
  INITIALIZATION = 26
128
+
129
+ ##
130
+ # Cannot call this command after FMOD::System.create.
31
131
  INITIALIZED = 27
132
+
133
+ ##
134
+ # An error occurred that wasn't supposed to. Contact support.
32
135
  INTERNAL = 28
136
+
137
+ ##
138
+ # Value passed in was a NaN, Inf or de-normalized float.
33
139
  INVALID_FLOAT = 29
140
+
141
+ ##
142
+ # An invalid object handle was used.
34
143
  INVALID_HANDLE = 30
144
+
145
+ ##
146
+ # An invalid parameter was passed to a function.
35
147
  INVALID_PARAM = 31
148
+
149
+ ##
150
+ # An invalid seek position was passed to a function.
36
151
  INVALID_POSITION = 32
152
+
153
+ ##
154
+ # An invalid speaker was passed to this function based on the current
155
+ # speaker mode.
37
156
  INVALID_SPEAKER = 33
157
+
158
+ ##
159
+ # The syncpoint did not come from this sound handle.
38
160
  INVALID_SYNC_POINT = 34
161
+
162
+ ##
163
+ # Tried to call a function on a thread that is not supported.
39
164
  INVALID_THREAD = 35
165
+
166
+ ##
167
+ # The vectors passed in are not unit length, or perpendicular.
40
168
  INVALID_VECTOR = 36
169
+
170
+ ##
171
+ # Reached maximum audible playback count for this sound's sound group.
41
172
  MAX_AUDIBLE = 37
173
+
174
+ ##
175
+ # Not enough memory or resources.
42
176
  MEMORY = 38
177
+
178
+ ##
179
+ # Can't use "open memory point" on non PCM source data, or non
180
+ # mp3/xma/adpcm data if "create compressed sample" was used.
43
181
  MEMORY_CANT_POINT = 39
182
+
183
+ ##
184
+ # Tried to call a command on a 2d sound when the command was meant for 3D
185
+ # sound.
44
186
  NEEDS_3D = 40
187
+
188
+ ##
189
+ # Tried to use a feature that requires hardware support.
45
190
  NEEDS_HARDWARE = 41
191
+
192
+ ##
193
+ # Couldn't connect to the specified host.
46
194
  NET_CONNECT = 42
195
+
196
+ ##
197
+ # A socket error occurred. This is a catch-all for socket-related errors
198
+ # not listed elsewhere.
47
199
  NET_SOCKET_ERROR = 43
200
+
201
+ ##
202
+ # The specified URL couldn't be resolved.
48
203
  NET_URL = 44
204
+
205
+ ##
206
+ # Operation on a non-blocking socket could not complete immediately.
49
207
  NET_WOULD_BLOCK = 45
208
+
209
+ ##
210
+ # Operation could not be performed because specified sound/DSP connection
211
+ # is not ready.
50
212
  NOT_READY = 46
213
+
214
+ ##
215
+ # Error initializing output device, but more specifically, the output
216
+ # device is already in use and cannot be reused.
51
217
  OUTPUT_ALLOCATED = 47
218
+
219
+ ##
220
+ # Error creating hardware sound buffer.
52
221
  OUTPUT_CREATE_BUFFER = 48
222
+
223
+ ##
224
+ # A call to a standard soundcard driver failed, which could possibly mean
225
+ # a bug in the driver or resources were missing or exhausted.
53
226
  OUTPUT_DRIVER_CALL = 49
227
+
228
+ ##
229
+ # Sound card does not support the specified format.
54
230
  OUTPUT_FORMAT = 50
231
+
232
+ ##
233
+ # Error initializing output device.
55
234
  OUTPUT_INIT = 51
235
+
236
+ ##
237
+ # The output device has no drivers installed. If pre-init, NO_SOUND is
238
+ # selected as the output mode. If post-init, the function just fails.
56
239
  OUTPUT_NO_DRIVERS = 52
240
+
241
+ ##
242
+ # An unspecified error has been returned from a plugin.
57
243
  PLUGIN = 53
244
+
245
+ ##
246
+ # A requested output, DSP unit type or codec was not available.
58
247
  PLUGIN_MISSING = 54
248
+
249
+ ##
250
+ # A resource that the plugin requires cannot be found. (ie the DLS file
251
+ # for MIDI playback)
59
252
  PLUGIN_RESOURCE = 55
253
+
254
+ ##
255
+ # A plugin was built with an unsupported SDK version.
60
256
  PLUGIN_VERSION = 56
257
+
258
+ ##
259
+ # An error occurred trying to initialize the recording device.
61
260
  RECORD = 57
261
+
262
+ ##
263
+ # Reverb properties cannot be set on this channel because a parent channel
264
+ # group owns the reverb connection.
62
265
  REVERB_CHANNEL_GROUP = 58
266
+
267
+ ##
268
+ # Specified instance in Reverb couldn't be set. Most likely because it is
269
+ # an invalid instance number or the reverb doesn't exist.
63
270
  REVERB_INSTANCE = 59
271
+
272
+ ##
273
+ # The error occurred because the sound referenced contains sub-sounds when
274
+ # it shouldn't have, or it doesn't contain sub-sounds when it should have.
275
+ # The operation may also not be able to be performed on a parent sound.
64
276
  SUBSOUNDS = 60
277
+
278
+ ##
279
+ # This subsound is already being used by another sound, you cannot have
280
+ # more than one parent to a sound. Null out the other parent's entry
281
+ # first.
65
282
  SUBSOUND_ALLOCATED = 61
283
+
284
+ ##
285
+ # Shared subsounds cannot be replaced or moved from their parent stream,
286
+ # such as when the parent stream is an FSB file.
66
287
  SUBSOUND_CANT_MOVE = 62
288
+
289
+ ##
290
+ # The specified tag could not be found or there are no tags.
67
291
  TAG_NOT_FOUND = 63
292
+
293
+ ##
294
+ # The sound created exceeds the allowable input channel count.
68
295
  TOO_MANY_CHANNELS = 64
296
+
297
+ ##
298
+ # The retrieved string is too long to fit in the supplied buffer and has
299
+ # been truncated.
69
300
  TRUNCATED = 65
301
+
302
+ ##
303
+ # Something in FMOD hasn't been implemented when it should be! Contact
304
+ # support!
70
305
  UNIMPLEMENTED = 66
306
+
307
+ ##
308
+ # This command failed because System.create or System.output was not
309
+ # called.
71
310
  UNINITIALIZED = 67
311
+
312
+ ##
313
+ # A command issued was not supported by this object. Possibly a plugin
314
+ # without certain callbacks specified.
72
315
  UNSUPPORTED = 68
316
+
317
+ ##
318
+ # The version number of this file format is not supported.
73
319
  VERSION = 69
320
+
321
+ ##
322
+ # The specified bank has already been loaded.
74
323
  EVENT_ALREADY_LOADED = 70
324
+
325
+ ##
326
+ # The live update connection failed due to the game already being
327
+ # connected.
75
328
  EVENT_LIVE_UPDATE_BUSY = 71
329
+
330
+ ##
331
+ # The live update connection failed due to the game data being out of sync
332
+ # with the tool.
76
333
  EVENT_LIVE_UPDATE_MISMATCH = 72
334
+
335
+ ##
336
+ # The live update connection timed out.
77
337
  EVENT_LIVE_UPDATE_TIMEOUT = 73
338
+
339
+ ##
340
+ # The requested event, bus or vca could not be found.
78
341
  EVENT_NOT_FOUND = 74
342
+
343
+ ##
344
+ # The Studio::System object is not yet initialized.
79
345
  STUDIO_UNINITIALIZED = 75
346
+
347
+ ##
348
+ # The specified resource is not loaded, so it can't be unloaded.
80
349
  STUDIO_NOT_LOADED = 76
350
+
351
+ ##
352
+ # An invalid string was passed to this function.
81
353
  INVALID_STRING = 77
354
+
355
+ ##
356
+ # The specified resource is already locked.
82
357
  ALREADY_LOCKED = 78
358
+
359
+ ##
360
+ # The specified resource is not locked, so it can't be unlocked.
83
361
  NOT_LOCKED = 79
362
+
363
+ ##
364
+ # The specified recording driver has been disconnected.
84
365
  RECORD_DISCONNECTED = 80
366
+
367
+ ##
368
+ # The length provided exceeds the allowable limit.
85
369
  TOO_MANY_SAMPLES = 81
86
370
  end
87
371
  end