fmod 0.9.1 → 0.9.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/HISTORY.txt +23 -1
- data/README.md +1 -3
- data/Rakefile +2 -1
- data/bin/console +1 -0
- data/fmod.gemspec +1 -2
- data/lib/fmod/channel_control.rb +47 -0
- data/lib/fmod/core.rb +1 -0
- data/lib/fmod/core/bool_description.rb +9 -4
- data/lib/fmod/core/channel_mask.rb +61 -0
- data/lib/fmod/core/data_description.rb +44 -0
- data/lib/fmod/core/dsp_description.rb +172 -1
- data/lib/fmod/core/dsp_index.rb +13 -0
- data/lib/fmod/core/dsp_type.rb +154 -0
- data/lib/fmod/core/extensions.rb +19 -0
- data/lib/fmod/core/file_system.rb +1 -0
- data/lib/fmod/core/filter_type.rb +62 -0
- data/lib/fmod/core/float_description.rb +38 -0
- data/lib/fmod/core/guid.rb +27 -0
- data/lib/fmod/core/init_flags.rb +66 -0
- data/lib/fmod/core/integer_description.rb +22 -2
- data/lib/fmod/core/output_type.rb +81 -2
- data/lib/fmod/core/parameter_info.rb +36 -0
- data/lib/fmod/core/parameter_type.rb +15 -0
- data/lib/fmod/core/reverb.rb +113 -2
- data/lib/fmod/core/reverb_index.rb +105 -0
- data/lib/fmod/core/sound_ex_info.rb +4 -0
- data/lib/fmod/core/sound_group_behavior.rb +14 -0
- data/lib/fmod/core/sound_type.rb +1 -0
- data/lib/fmod/core/spectrum_data.rb +35 -0
- data/lib/fmod/core/structures.rb +10 -4
- data/lib/fmod/core/tag.rb +72 -11
- data/lib/fmod/core/tag_data_type.rb +30 -0
- data/lib/fmod/core/tag_type.rb +55 -0
- data/lib/fmod/core/time_unit.rb +3 -0
- data/lib/fmod/core/vector.rb +40 -3
- data/lib/fmod/core/window_type.rb +46 -0
- data/lib/fmod/dsp.rb +427 -98
- data/lib/fmod/dsp_connection.rb +3 -0
- data/lib/fmod/effects.rb +51 -37
- data/lib/fmod/error.rb +3 -0
- data/lib/fmod/geometry.rb +7 -0
- data/lib/fmod/handle.rb +82 -0
- data/lib/fmod/reverb3D.rb +25 -26
- data/lib/fmod/sound.rb +21 -1
- data/lib/fmod/sound_group.rb +79 -3
- data/lib/fmod/system.rb +301 -154
- data/lib/fmod/version.rb +4 -1
- metadata +6 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ab0b3cff45deeb4271467582cab4249c7841e315
|
4
|
+
data.tar.gz: d087b00bd2bfecea2864e9eddb927104ce5ffe96
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7dbef60ec374a31a856f152ba889c61c508888556c7219aafd1eb3c851f88753e59b195aa3a6a1eb50ce038d69c5f3e946aee66e94942e21f7ca9771ab1e67ae
|
7
|
+
data.tar.gz: bac72c7849c3cd063f5260c05fe771ac0a6e078279c4cf9a71f200f4fc6bdce68fd0f6d8beaca54b88ce011962a6d40b4ec83cedd8aa6a1735f743945651a0c0
|
data/HISTORY.txt
CHANGED
@@ -1,4 +1,26 @@
|
|
1
|
-
=== 0.9.
|
1
|
+
=== 0.9.2 / 2018/07/11
|
2
|
+
|
3
|
+
* Added ReverbIndex class
|
4
|
+
|
5
|
+
* Added .from_index class function to Reverb class
|
6
|
+
|
7
|
+
* Implemented skeleton DspDescription structure
|
8
|
+
|
9
|
+
* Deprecated constants in DspType:
|
10
|
+
* LOW_PASS
|
11
|
+
* LOW_PASS_SIMPLE
|
12
|
+
* HIGH_PASS
|
13
|
+
* HIGH_PASS_SIMPLE
|
14
|
+
* LADSPA_PLUGIN
|
15
|
+
|
16
|
+
* Deprecated constants in Effects:
|
17
|
+
* LowPass
|
18
|
+
* LowPassSimple
|
19
|
+
* HighPass
|
20
|
+
* HighPassSimple
|
21
|
+
* LadspaPlugin
|
22
|
+
|
23
|
+
=== 0.9.1 / 2018-07-10
|
2
24
|
|
3
25
|
* Added Features
|
4
26
|
* Expanded methods to FMOD::Core::Structure
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# FMOD
|
2
2
|
|
3
|
-
[![Gem Version](https://badge.fury.io/rb/fmod.svg)](https://badge.fury.io/rb/fmod) ![Documentation](https://img.shields.io/badge/Documentation-
|
3
|
+
[![Gem Version](https://badge.fury.io/rb/fmod.svg)](https://badge.fury.io/rb/fmod) ![Documentation](https://img.shields.io/badge/Documentation-99.22%25-green.svg)
|
4
4
|
|
5
5
|
|
6
6
|
A full-featured (*complete* Ruby wrapper) of the ultra-powerful FMOD Low-Level API. Uses the built-in Fiddle library (Ruby 2.0+), and has no external gem dependencies, all that is needed is the native FMOD platform-specific native FMOD libraries.
|
@@ -72,8 +72,6 @@ Each get/set method in the FMOD API has been converted to an "attribute" that ca
|
|
72
72
|
|
73
73
|
## Future Releases
|
74
74
|
|
75
|
-
As of the current release, only slightly better than 71% of documentation is complete. The scripts are highly technical, and good documentation takes time, but it is actively being updated, and will be completed at the highest priority level. If you are using version `1.0.0`, you will have to rely more heavily upon the included FMOD Low-Level API Reference that is included in the `./extras` folder.
|
76
|
-
|
77
75
|
There is still yet to be a few areas that need completed, and are in active development. Included are the following known issues:
|
78
76
|
* FMOD plugin support (including 3rd party codecs)
|
79
77
|
* Loading custom sound formats (related to plugin support)
|
data/Rakefile
CHANGED
@@ -1 +1,2 @@
|
|
1
|
-
require "bundler/gem_tasks"
|
1
|
+
require "bundler/gem_tasks"
|
2
|
+
|
data/bin/console
CHANGED
data/fmod.gemspec
CHANGED
@@ -9,8 +9,7 @@ Gem::Specification.new do |spec|
|
|
9
9
|
spec.authors = ['Eric "ForeverZer0" Freed']
|
10
10
|
spec.email = ['efreed09@gmail.com']
|
11
11
|
spec.summary = %q{Ruby wrapper around the high performance, cross-platform FMOD low-level sound library. You get all the benefits of the FMOD library, but in the object-oriented Ruby way!}
|
12
|
-
spec.description = %q{A full-featured (complete Ruby wrapper) of the ultra-powerful FMOD Low-Level API. Uses the built-in Fiddle library (Ruby 2.0+), and has no external gem dependencies, all that is needed is the FMOD platform-specific libraries (included). FMOD supports a host of audio formats including .aiff, .asf, .asx, .dls, .flac, .fsb, .it, .m3u, .mid, .midi, .mod, .mp2, .mp3, .ogg .pls, .s3m , vag, .wav, .wax, .wma, .xm, and.xma.}
|
13
|
-
|
12
|
+
spec.description = %q{A full-featured (complete Ruby wrapper) of the ultra-powerful FMOD Low-Level API. Uses the built-in Fiddle library (Ruby 2.0+), and has no external gem dependencies, all that is needed is the FMOD platform-specific libraries (included). FMOD supports a host of audio formats including .aiff, .asf, .asx, .dls, .flac, .fsb, .it, .m3u, .mid, .midi, .mod, .mp2, .mp3, .ogg .pls, .s3m , vag, .wav, .wax, .wma, .xm, and .xma.}
|
14
13
|
spec.homepage = 'https://github.com/ForeverZer0/fmod'
|
15
14
|
spec.license = 'MIT'
|
16
15
|
spec.has_rdoc = 'yard'
|
data/lib/fmod/channel_control.rb
CHANGED
@@ -6,6 +6,16 @@ module FMOD
|
|
6
6
|
# The base class for both {Channel} and {ChannelGroup} objects.
|
7
7
|
class ChannelControl < Handle
|
8
8
|
|
9
|
+
##
|
10
|
+
# Describes a volume point to fade from or towards, using a clock offset and
|
11
|
+
# 0.0 to 1.0 volume level.
|
12
|
+
#
|
13
|
+
# @attr clock [Integer] DSP clock of the parent channel group to set the
|
14
|
+
# fade point volume.
|
15
|
+
# @attr volume [Float] lume level where 0.0 is silent and 1.0 is normal
|
16
|
+
# volume. Amplification is supported.
|
17
|
+
FadePoint = Struct.new(:clock, :volume)
|
18
|
+
|
9
19
|
##
|
10
20
|
# Emulates an Array-type container of a {ChannelControl}'s DSP chain.
|
11
21
|
class DspChain
|
@@ -520,6 +530,43 @@ module FMOD
|
|
520
530
|
vector
|
521
531
|
end
|
522
532
|
|
533
|
+
##
|
534
|
+
# @!attribute cone_settings
|
535
|
+
# The angles that define the sound projection cone including the volume when
|
536
|
+
# outside the cone.
|
537
|
+
# @since 0.9.2
|
538
|
+
# @return [ConeSettings] the sound projection cone.
|
539
|
+
def cone_settings
|
540
|
+
args = ["\0" * SIZEOF_FLOAT, "\0" * SIZEOF_FLOAT, "\0" * SIZEOF_FLOAT]
|
541
|
+
FMOD.invoke(:ChannelGroup_Get3DConeSettings, self, *args)
|
542
|
+
ConeSettings.new(*args.map { |arg| arg.unpack1('f') } )
|
543
|
+
end
|
544
|
+
|
545
|
+
def cone_settings=(settings)
|
546
|
+
FMOD.type?(settings, ConeSettings)
|
547
|
+
set_cone(*settings.values)
|
548
|
+
settings
|
549
|
+
end
|
550
|
+
|
551
|
+
##
|
552
|
+
# Sets the angles that define the sound projection cone including the volume
|
553
|
+
# when outside the cone.
|
554
|
+
# @param inside_angle [Float] Inside cone angle, in degrees. This is the
|
555
|
+
# angle within which the sound is at its normal volume.
|
556
|
+
# @param outside_angle [Float] Outside cone angle, in degrees. This is the
|
557
|
+
# angle outside of which the sound is at its outside volume.
|
558
|
+
# @param outside_volume [Float] Cone outside volume.
|
559
|
+
# @since 0.9.2
|
560
|
+
# @return [void]
|
561
|
+
def set_cone(inside_angle, outside_angle, outside_volume)
|
562
|
+
if outside_angle < inside_angle
|
563
|
+
raise Error, 'Outside angle must be greater than inside angle.'
|
564
|
+
end
|
565
|
+
FMOD.invoke(:ChaennlGroup_Set3DConeSettings, self, inside_angle,
|
566
|
+
outside_angle, outside_volume)
|
567
|
+
self
|
568
|
+
end
|
569
|
+
|
523
570
|
# @!endgroup
|
524
571
|
|
525
572
|
##
|
data/lib/fmod/core.rb
CHANGED
@@ -27,6 +27,7 @@ module FMOD
|
|
27
27
|
require_relative './core/parameter_info'
|
28
28
|
require_relative './core/parameter_type'
|
29
29
|
require_relative './core/result'
|
30
|
+
require_relative './core/reverb_index'
|
30
31
|
require_relative './core/reverb'
|
31
32
|
require_relative './core/sound_ex_info'
|
32
33
|
require_relative './core/sound_format'
|
@@ -1,18 +1,23 @@
|
|
1
1
|
module FMOD
|
2
2
|
module Core
|
3
|
+
|
4
|
+
##
|
5
|
+
# Structure describing a boolean parameter for a DSP unit.
|
3
6
|
class BoolDescription < Structure
|
4
7
|
|
8
|
+
##
|
9
|
+
# @param address [Pointer, Integer, String, nil] The address in memory
|
10
|
+
# where the structure will be created from. If no address is given, new
|
11
|
+
# memory will be allocated.
|
5
12
|
def initialize(address = nil)
|
6
13
|
super(address, [TYPE_INT, TYPE_VOIDP], [:default, :names])
|
7
14
|
end
|
8
15
|
|
16
|
+
# @!attribute [r] default
|
17
|
+
# @return [Boolean] the default value for the parameter.
|
9
18
|
def default
|
10
19
|
self[:default] != 0
|
11
20
|
end
|
12
|
-
|
13
|
-
def names
|
14
|
-
%w(true false)
|
15
|
-
end
|
16
21
|
end
|
17
22
|
end
|
18
23
|
end
|
@@ -1,23 +1,84 @@
|
|
1
1
|
module FMOD
|
2
2
|
module Core
|
3
|
+
|
4
|
+
##
|
5
|
+
# These are bit-fields to describe for a certain number of channels in a
|
6
|
+
# signal, which channels are being represented.
|
7
|
+
#
|
8
|
+
# For example, a signal could be 1 channel, but contain the LFE channel
|
9
|
+
# only.
|
3
10
|
module ChannelMask
|
11
|
+
|
12
|
+
##
|
13
|
+
# Front-left
|
4
14
|
FRONT_LEFT = 0x00000001
|
15
|
+
|
16
|
+
##
|
17
|
+
# Front-right
|
5
18
|
FRONT_RIGHT = 0x00000002
|
19
|
+
|
20
|
+
##
|
21
|
+
# Front-center
|
6
22
|
FRONT_CENTER = 0x00000004
|
23
|
+
|
24
|
+
##
|
25
|
+
# Low-frequency or sub-woofer
|
7
26
|
LOW_FREQUENCY = 0x00000008
|
27
|
+
|
28
|
+
##
|
29
|
+
# Surround-left
|
8
30
|
SURROUND_LEFT = 0x00000010
|
31
|
+
|
32
|
+
##
|
33
|
+
# Surround-right
|
9
34
|
SURROUND_RIGHT = 0x00000020
|
35
|
+
|
36
|
+
##
|
37
|
+
# Back-left
|
10
38
|
BACK_LEFT = 0x00000040
|
39
|
+
|
40
|
+
##
|
41
|
+
# Back-right
|
11
42
|
BACK_RIGHT = 0x00000080
|
43
|
+
|
44
|
+
##
|
45
|
+
# Back-center
|
12
46
|
BACK_CENTER = 0x00000100
|
47
|
+
|
48
|
+
##
|
49
|
+
# Mono, single speaker
|
13
50
|
MONO = FRONT_LEFT
|
51
|
+
|
52
|
+
##
|
53
|
+
# Stereo
|
14
54
|
STEREO = FRONT_LEFT | FRONT_RIGHT
|
55
|
+
|
56
|
+
##
|
57
|
+
# Left-Right-Center
|
15
58
|
LRC = FRONT_LEFT | FRONT_RIGHT | FRONT_CENTER
|
59
|
+
|
60
|
+
##
|
61
|
+
# Quads
|
16
62
|
QUAD = FRONT_LEFT | FRONT_RIGHT | SURROUND_LEFT | SURROUND_RIGHT
|
63
|
+
|
64
|
+
##
|
65
|
+
# Surround
|
17
66
|
SURROUND = FRONT_LEFT | FRONT_RIGHT | FRONT_CENTER | SURROUND_LEFT | SURROUND_RIGHT
|
67
|
+
|
68
|
+
##
|
69
|
+
# 5.1
|
18
70
|
FIVE_POINT_ONE = FRONT_LEFT | FRONT_RIGHT | FRONT_CENTER | LOW_FREQUENCY | SURROUND_LEFT | SURROUND_RIGHT
|
71
|
+
|
72
|
+
##
|
73
|
+
# 5.1 with Rears
|
19
74
|
FIVE_POINT_ONE_REARS = FRONT_LEFT | FRONT_RIGHT | FRONT_CENTER | LOW_FREQUENCY | BACK_LEFT | BACK_RIGHT
|
75
|
+
|
76
|
+
##
|
77
|
+
# 7.0 Surround
|
20
78
|
SEVEN_POINT_ZERO = FRONT_LEFT | FRONT_RIGHT | FRONT_CENTER | SURROUND_LEFT | SURROUND_RIGHT | BACK_LEFT | BACK_RIGHT
|
79
|
+
|
80
|
+
##
|
81
|
+
# 7.1 Surround
|
21
82
|
SEVEN_POINT_ONE = FRONT_LEFT | FRONT_RIGHT | FRONT_CENTER | LOW_FREQUENCY | SURROUND_LEFT | SURROUND_RIGHT | BACK_LEFT | BACK_RIGHT
|
22
83
|
end
|
23
84
|
end
|
@@ -1,11 +1,55 @@
|
|
1
1
|
module FMOD
|
2
2
|
module Core
|
3
|
+
|
4
|
+
##
|
5
|
+
# Structure describing a data parameter for a DSP unit.
|
3
6
|
class DataDescription < Structure
|
4
7
|
|
8
|
+
##
|
9
|
+
# The default data type. All user data types should be 0 or above.
|
10
|
+
TYPE_USER = 0
|
11
|
+
|
12
|
+
##
|
13
|
+
# The data type for overall-gain parameters. There should a maximum of one
|
14
|
+
# per DSP.
|
15
|
+
TYPE_OVERALLGAIN = 1
|
16
|
+
|
17
|
+
##
|
18
|
+
# The data type for 3D attribute parameters. There should a maximum of one
|
19
|
+
# per DSP.
|
20
|
+
TYPE_3DATTRIBUTES = 2
|
21
|
+
|
22
|
+
##
|
23
|
+
# The data type for side-chain parameters. There should a maximum of one
|
24
|
+
# per DSP.
|
25
|
+
TYPE_SIDECHAIN = 3
|
26
|
+
|
27
|
+
##
|
28
|
+
# The data type for FFT parameters. There should a maximum of one per DSP.
|
29
|
+
TYPE_FFT = 4
|
30
|
+
|
31
|
+
##
|
32
|
+
# The data type for multiple 3D attribute parameters. There should a
|
33
|
+
# maximum of one per DSP.
|
34
|
+
TYPE_3DATTRIBUTES_MULTI = 5
|
35
|
+
|
36
|
+
##
|
37
|
+
# @param address [Pointer, Integer, String, nil] The address in memory
|
38
|
+
# where the structure will be created from. If no address is given, new
|
39
|
+
# memory will be allocated.
|
5
40
|
def initialize(address = nil)
|
6
41
|
super(address, [TYPE_INT], [:data_type])
|
7
42
|
end
|
8
43
|
|
44
|
+
##
|
45
|
+
# The type of data for this parameter. Use 0 or above for custom types or
|
46
|
+
# set to one of the following are possible values:
|
47
|
+
# * {TYPE_USER}
|
48
|
+
# * {TYPE_OVERALLGAIN}
|
49
|
+
# * {TYPE_3DATTRIBUTES}
|
50
|
+
# * {TYPE_SIDECHAIN}
|
51
|
+
# * {TYPE_FFT}
|
52
|
+
# * {TYPE_3DATTRIBUTES_MULTI}
|
9
53
|
def data_type
|
10
54
|
self[:data_type]
|
11
55
|
end
|
@@ -1,7 +1,178 @@
|
|
1
1
|
module FMOD
|
2
2
|
module Core
|
3
|
+
|
4
|
+
##
|
5
|
+
# When creating a DSP unit, declare one of these and provide the relevant
|
6
|
+
# callbacks and name for FMOD to use when it creates and uses a DSP unit of
|
7
|
+
# this type.
|
8
|
+
# @since 0.9.2
|
3
9
|
class DspDescription < Structure
|
4
|
-
|
10
|
+
|
11
|
+
# @param address [Pointer, Integer, String, nil] The address in memory
|
12
|
+
# where the structure will be created from. If no address is given, new
|
13
|
+
# memory will be allocated.
|
14
|
+
def initialize(address)
|
15
|
+
types = [:plugin_sdk_version, :name, :version, :input_buffers,
|
16
|
+
:output_buffers, :create, :release, :reset, :read, :process,
|
17
|
+
:set_position, :parameter_count, :parameter_description,
|
18
|
+
:set_param_float, :set_param_int, :set_param_bool,
|
19
|
+
:set_param_data, :get_param_float, :get_param_int,
|
20
|
+
:get_param_bool, :get_param_data, :should_process, :user_data,
|
21
|
+
:register, :deregister, :mix]
|
22
|
+
members = [TYPE_INT, [TYPE_CHAR, 32], TYPE_INT, TYPE_INT, TYPE_INT,
|
23
|
+
TYPE_VOIDP, TYPE_VOIDP, TYPE_VOIDP, TYPE_VOIDP, TYPE_VOIDP,
|
24
|
+
TYPE_VOIDP, TYPE_INT, TYPE_VOIDP, TYPE_VOIDP, TYPE_VOIDP,
|
25
|
+
TYPE_VOIDP, TYPE_VOIDP, TYPE_VOIDP, TYPE_VOIDP, TYPE_VOIDP,
|
26
|
+
TYPE_VOIDP, TYPE_VOIDP, TYPE_VOIDP, TYPE_VOIDP, TYPE_VOIDP,
|
27
|
+
TYPE_VOIDP]
|
28
|
+
super(address, types, members)
|
29
|
+
end
|
30
|
+
|
31
|
+
[:plugin_sdk_version, :name, :version, :input_buffers, :output_buffers,
|
32
|
+
:create, :release, :reset, :read, :process, :set_position,
|
33
|
+
:parameter_count, :parameter_description, :set_param_float,
|
34
|
+
:set_param_int, :set_param_bool, :set_param_data, :get_param_float,
|
35
|
+
:get_param_int, :get_param_bool, :get_param_data, :should_process,
|
36
|
+
:user_data, :register, :deregister, :mix].each do |symbol|
|
37
|
+
|
38
|
+
define_method(symbol) { self[symbol] }
|
39
|
+
define_method("#{symbol}=") { |value| self[symbol] = value }
|
40
|
+
end
|
41
|
+
|
42
|
+
##
|
43
|
+
# @!attribute plugin_sdk_version
|
44
|
+
# @return [Integer] the plugin SDK version this plugin is built for.
|
45
|
+
|
46
|
+
##
|
47
|
+
# @!attribute name
|
48
|
+
# @return [String] the identifier of the DSP. This will also be used as
|
49
|
+
# the name of DSP and shouldn't change between versions.
|
50
|
+
|
51
|
+
def name
|
52
|
+
self[:name].join.delete("\0")
|
53
|
+
end
|
54
|
+
|
55
|
+
def name=(name)
|
56
|
+
chars = name.chars.slice(0, 32)
|
57
|
+
chars << "\0" while chars.size < 32
|
58
|
+
self[:name] = chars
|
59
|
+
end
|
60
|
+
|
61
|
+
##
|
62
|
+
# @!attribute version
|
63
|
+
# @return [Integer] the plugin writer's version number.
|
64
|
+
|
65
|
+
# @!attribute input_buffers
|
66
|
+
# @return [Integer] the number of input buffers to process. Use 0 for DSPs
|
67
|
+
# that only generate sound and 1 for effects that process incoming sound
|
68
|
+
|
69
|
+
##
|
70
|
+
# @!attribute output_buffers
|
71
|
+
# @return [Integer] the number of audio output buffers. Only one output
|
72
|
+
# buffer is currently supported.
|
73
|
+
|
74
|
+
##
|
75
|
+
# @!attribute create
|
76
|
+
# @return [Closure] Create callback. This is called when DSP unit is
|
77
|
+
# created.
|
78
|
+
|
79
|
+
##
|
80
|
+
# @!attribute release
|
81
|
+
# @return [Closure] Release callback. This is called just before the unit
|
82
|
+
# is freed so the user can do any cleanup needed for the unit.
|
83
|
+
|
84
|
+
##
|
85
|
+
# @!attribute reset
|
86
|
+
# @return [Closure] Reset callback. This is called by the user to reset
|
87
|
+
# any history buffers that may need resetting for a filter, when it is
|
88
|
+
# to be used or re-used for the first time to its initial clean state.
|
89
|
+
# Use to avoid clicks or artifacts.
|
90
|
+
|
91
|
+
##
|
92
|
+
# @!attribute read
|
93
|
+
# @return [Closure] Read callback. Processing is done here.
|
94
|
+
|
95
|
+
##
|
96
|
+
# @!attribute process
|
97
|
+
# @return [Closure] Process callback. Can be specified instead of the read
|
98
|
+
# callback if any channel format changes occur between input and output.
|
99
|
+
# This also replaces {#should_process} and should return an error if the
|
100
|
+
# effect is to be bypassed.
|
101
|
+
|
102
|
+
##
|
103
|
+
# @!attribute set_position
|
104
|
+
# @return [Closure] Set position callback. This is called if the unit
|
105
|
+
# wants to update its position info but not process data, or reset a
|
106
|
+
# cursor position internally if it is reading data from a certain
|
107
|
+
# source.
|
108
|
+
|
109
|
+
##
|
110
|
+
# @!attribute parameter_count
|
111
|
+
# @return [Integer] the of parameters used in this filter.
|
112
|
+
|
113
|
+
##
|
114
|
+
# @!attribute parameter_description
|
115
|
+
# @return [Pointer] a variable number of parameter structures.
|
116
|
+
|
117
|
+
##
|
118
|
+
# @!attribute set_param_float
|
119
|
+
# @return [Closure] Called when the user sets a float parameter.
|
120
|
+
|
121
|
+
##
|
122
|
+
# @!attribute set_param_int
|
123
|
+
# @return [Closure] Called when the user sets an integer parameter.
|
124
|
+
|
125
|
+
##
|
126
|
+
# @!attribute set_param_bool
|
127
|
+
# @return [Closure] Called when the user sets a boolean parameter.
|
128
|
+
|
129
|
+
##
|
130
|
+
# @!attribute set_param_data
|
131
|
+
# @return [Closure] Called when the user sets a data parameter.
|
132
|
+
|
133
|
+
##
|
134
|
+
# @!attribute get_param_float
|
135
|
+
# @return [Closure] Called when the user gets a float parameter.
|
136
|
+
|
137
|
+
##
|
138
|
+
# @!attribute get_param_int
|
139
|
+
# @return [Closure] Called when the user gets an integer parameter.
|
140
|
+
|
141
|
+
##
|
142
|
+
# @!attribute get_param_bool
|
143
|
+
# @return [Closure] Called when the user sets a boolean parameter.
|
144
|
+
|
145
|
+
##
|
146
|
+
# @!attribute get_param_data
|
147
|
+
# @return [Closure] Called when the user sets a data parameter.
|
148
|
+
|
149
|
+
##
|
150
|
+
# @!attribute should_process
|
151
|
+
# @return [Closure] This is called before processing. You can detect if
|
152
|
+
# inputs are idle and return Result::OK to process, or any other error
|
153
|
+
# code to avoid processing the effect. Use a count down timer to allow
|
154
|
+
# effect tails to process before idling!
|
155
|
+
|
156
|
+
##
|
157
|
+
# @!attribute user_data
|
158
|
+
# @return [Pointer] the user data to be attached to the DSP unit during
|
159
|
+
# creation.
|
160
|
+
|
161
|
+
# @!attribute register
|
162
|
+
# @return [Closure] Register callback. This is called when DSP unit is
|
163
|
+
# loaded/registered. Useful for 'global'/per system object init for
|
164
|
+
# plugin.
|
165
|
+
|
166
|
+
# @!attribute register
|
167
|
+
# @return [Closure] Deregister callback. This is called when DSP unit is
|
168
|
+
# unloaded/deregistered. Useful as 'global'/per system object shutdown
|
169
|
+
# for plugin.
|
170
|
+
|
171
|
+
# @!attribute register
|
172
|
+
# @return [Closure] System mix stage callback. This is called when the
|
173
|
+
# mixer starts to execute or is just finishing executing. Useful for
|
174
|
+
# 'global'/per system object once a mix update calls for a plugin.
|
175
|
+
|
5
176
|
end
|
6
177
|
end
|
7
178
|
end
|