fmod 0.9.0 → 0.9.1
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.
- checksums.yaml +4 -4
- data/.github/ISSUE_TEMPLATE/bug_report.md +29 -0
- data/.github/ISSUE_TEMPLATE/feature_request.md +17 -0
- data/CONTRIBUTING.md +92 -0
- data/HISTORY.txt +23 -0
- data/PULL_REQUEST_TEMPLATE.md +17 -0
- data/README.md +23 -22
- data/fmod.gemspec +2 -30
- data/lib/fmod.rb +4 -1
- data/lib/fmod/channel.rb +3 -0
- data/lib/fmod/channel_control.rb +511 -311
- data/lib/fmod/channel_group.rb +67 -3
- data/lib/fmod/core.rb +43 -34
- data/lib/fmod/core/mode.rb +138 -0
- data/lib/fmod/core/result.rb +284 -0
- data/lib/fmod/core/sound_format.rb +8 -0
- data/lib/fmod/core/sound_type.rb +1 -0
- data/lib/fmod/core/speaker_index.rb +39 -0
- data/lib/fmod/core/speaker_mode.rb +38 -0
- data/lib/fmod/core/structure.rb +28 -1
- data/lib/fmod/system.rb +2 -2
- data/lib/fmod/version.rb +1 -1
- metadata +13 -33
data/lib/fmod/channel_group.rb
CHANGED
@@ -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
|
-
|
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,
|
data/lib/fmod/core.rb
CHANGED
@@ -1,35 +1,44 @@
|
|
1
1
|
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
require_relative './core/
|
10
|
-
require_relative './core/
|
11
|
-
require_relative './core/
|
12
|
-
require_relative './core/
|
13
|
-
require_relative './core/
|
14
|
-
require_relative './core/
|
15
|
-
require_relative './core/
|
16
|
-
require_relative './core/
|
17
|
-
require_relative './core/
|
18
|
-
require_relative './core/
|
19
|
-
require_relative './core/
|
20
|
-
require_relative './core/
|
21
|
-
require_relative './core/
|
22
|
-
require_relative './core/
|
23
|
-
require_relative './core/
|
24
|
-
require_relative './core/
|
25
|
-
require_relative './core/
|
26
|
-
require_relative './core/
|
27
|
-
require_relative './core/
|
28
|
-
require_relative './core/
|
29
|
-
require_relative './core/
|
30
|
-
require_relative './core/
|
31
|
-
require_relative './core/
|
32
|
-
require_relative './core/
|
33
|
-
require_relative './core/
|
34
|
-
require_relative './core/
|
35
|
-
require_relative './core/
|
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
|
data/lib/fmod/core/mode.rb
CHANGED
@@ -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
|
data/lib/fmod/core/result.rb
CHANGED
@@ -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
|