ffi-fluidsynth 0.0.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.
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2012 Jason Jones
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,2 @@
1
+ ffi-fluidsynth
2
+ ==============
@@ -0,0 +1,16 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |gem|
4
+ gem.authors = ["Jason Jones"]
5
+ gem.email = ["jasonedwardjones@gmail.com"]
6
+ gem.description = %q{FFI bindings for the FluidSynth library.}
7
+ gem.summary = %q{FFI bindings for the FluidSynth library.}
8
+ gem.homepage = ""
9
+
10
+ gem.files = `git ls-files`.split($\)
11
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
12
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
13
+ gem.name = "ffi-fluidsynth"
14
+ gem.require_paths = ["lib"]
15
+ gem.version = "0.0.1"
16
+ end
data/gen.rb ADDED
@@ -0,0 +1,30 @@
1
+ require "ffi_gen"
2
+
3
+ FFIGen.generate(
4
+ ruby_module: "FluidSynth",
5
+ ffi_lib: "fluidsynth",
6
+ prefixes: ["fluid_"],
7
+ headers: [
8
+ "fluidsynth.h",
9
+ "fluidsynth/audio.h",
10
+ "fluidsynth/midi.h",
11
+ "fluidsynth/seq.h",
12
+ "fluidsynth/voice.h",
13
+ "fluidsynth/event.h",
14
+ "fluidsynth/misc.h",
15
+ "fluidsynth/seqbind.h",
16
+ "fluidsynth/synth.h",
17
+ "fluidsynth/gen.h",
18
+ "fluidsynth/mod.h",
19
+ "fluidsynth/settings.h",
20
+ "fluidsynth/types.h",
21
+ "fluidsynth/log.h",
22
+
23
+ "fluidsynth/sfont.h",
24
+ "fluidsynth/version.h"
25
+ #"fluidsynth/shell.h"
26
+ ],
27
+ output: "lib/ffi-fluidsynth.rb"
28
+ )
29
+
30
+
@@ -0,0 +1,3447 @@
1
+ # Generated by ffi_gen. Please do not change this file by hand.
2
+
3
+ require 'ffi'
4
+
5
+ module FluidSynth
6
+ extend FFI::Library
7
+ ffi_lib 'fluidsynth'
8
+
9
+ FLUID_HINT_BOUNDED_BELOW = 0x1
10
+
11
+ FLUID_HINT_BOUNDED_ABOVE = 0x2
12
+
13
+ FLUID_HINT_TOGGLED = 0x4
14
+
15
+ FLUID_HINT_SAMPLE_RATE = 0x8
16
+
17
+ FLUID_HINT_LOGARITHMIC = 0x10
18
+
19
+ FLUID_HINT_INTEGER = 0x20
20
+
21
+ FLUID_HINT_FILENAME = 0x01
22
+
23
+ FLUID_HINT_OPTIONLIST = 0x02
24
+
25
+ FLUID_SYNTH_CHANNEL_INFO_NAME_SIZE = 32
26
+
27
+ FLUID_REVERB_DEFAULT_ROOMSIZE = 0.2
28
+
29
+ FLUID_REVERB_DEFAULT_DAMP = 0.0
30
+
31
+ FLUID_REVERB_DEFAULT_WIDTH = 0.5
32
+
33
+ FLUID_REVERB_DEFAULT_LEVEL = 0.9
34
+
35
+ FLUID_CHORUS_DEFAULT_N = 3
36
+
37
+ FLUID_CHORUS_DEFAULT_LEVEL = 2.0
38
+
39
+ FLUID_CHORUS_DEFAULT_SPEED = 0.3
40
+
41
+ FLUID_CHORUS_DEFAULT_DEPTH = 8.0
42
+
43
+ FLUID_SAMPLETYPE_MONO = 1
44
+
45
+ FLUID_SAMPLETYPE_RIGHT = 2
46
+
47
+ FLUID_SAMPLETYPE_LEFT = 4
48
+
49
+ FLUID_SAMPLETYPE_LINKED = 8
50
+
51
+ FLUID_SAMPLETYPE_ROM = 0x8000
52
+
53
+ FLUID_SEQ_WITH_TRACE = 0
54
+
55
+ FLUID_NUM_MOD = 64
56
+
57
+ FLUIDSYNTH_VERSION = "1.1.5"
58
+
59
+ FLUIDSYNTH_VERSION_MAJOR = 1
60
+
61
+ FLUIDSYNTH_VERSION_MINOR = 1
62
+
63
+ FLUIDSYNTH_VERSION_MICRO = 5
64
+
65
+ # (Not documented)
66
+ class FluidHashtableT < FFI::Struct
67
+ end
68
+
69
+ # < Configuration settings instance
70
+ class FluidSynthT < FFI::Struct
71
+ end
72
+
73
+ # < SoundFont channel info
74
+ class FluidVoiceT < FFI::Struct
75
+ end
76
+
77
+ # < SoundFont modulator
78
+ class FluidAudioDriverT < FFI::Struct
79
+ end
80
+
81
+ # < Audio driver instance
82
+ class FluidFileRendererT < FFI::Struct
83
+ end
84
+
85
+ # < Audio file renderer instance
86
+ class FluidPlayerT < FFI::Struct
87
+ end
88
+
89
+ # < MIDI player instance
90
+ class FluidMidiEventT < FFI::Struct
91
+ end
92
+
93
+ # < MIDI event
94
+ class FluidMidiDriverT < FFI::Struct
95
+ end
96
+
97
+ # < MIDI driver instance
98
+ class FluidMidiRouterT < FFI::Struct
99
+ end
100
+
101
+ # < MIDI router instance
102
+ class FluidMidiRouterRuleT < FFI::Struct
103
+ end
104
+
105
+ # < Command handler
106
+ class FluidShellT < FFI::Struct
107
+ end
108
+
109
+ # < Command shell
110
+ class FluidServerT < FFI::Struct
111
+ end
112
+
113
+ # < TCP/IP shell server instance
114
+ class FluidEventT < FFI::Struct
115
+ end
116
+
117
+ # < Sequencer event
118
+ class FluidSequencerT < FFI::Struct
119
+ end
120
+
121
+ # < Sequencer instance
122
+ class FluidRamsfontT < FFI::Struct
123
+ end
124
+
125
+ # < RAM SoundFont
126
+ class FluidRampresetT < FFI::Struct
127
+ end
128
+
129
+ # (Not documented)
130
+ #
131
+ # <em>This entry is only for documentation and no real method. The FFI::Enum can be accessed via #enum_type(:types_enum).</em>
132
+ #
133
+ # === Options:
134
+ # :num_ ::
135
+ # < Undefined type
136
+ # :int_ ::
137
+ # < Numeric (double)
138
+ # :str_ ::
139
+ # < Integer
140
+ # :set_ ::
141
+ # < String
142
+ #
143
+ # @method _enum_types_enum_
144
+ # @return [Symbol]
145
+ # @scope class
146
+ enum :types_enum, [
147
+ :num_,
148
+ :int_,
149
+ :str_,
150
+ :set_
151
+ ]
152
+
153
+ # (Not documented)
154
+ #
155
+ # @method new_fluid_settings()
156
+ # @return [FluidHashtableT]
157
+ # @scope class
158
+ attach_function :new_fluid_settings, :new_fluid_settings, [], FluidHashtableT
159
+
160
+ # (Not documented)
161
+ #
162
+ # @method delete_fluid_settings(settings)
163
+ # @param [FluidHashtableT] settings
164
+ # @return [nil]
165
+ # @scope class
166
+ attach_function :delete_fluid_settings, :delete_fluid_settings, [FluidHashtableT], :void
167
+
168
+ # (Not documented)
169
+ #
170
+ # @method settings_get_type(settings, name)
171
+ # @param [FluidHashtableT] settings
172
+ # @param [String] name
173
+ # @return [Integer]
174
+ # @scope class
175
+ attach_function :settings_get_type, :fluid_settings_get_type, [FluidHashtableT, :string], :int
176
+
177
+ # (Not documented)
178
+ #
179
+ # @method settings_get_hints(settings, name)
180
+ # @param [FluidHashtableT] settings
181
+ # @param [String] name
182
+ # @return [Integer]
183
+ # @scope class
184
+ attach_function :settings_get_hints, :fluid_settings_get_hints, [FluidHashtableT, :string], :int
185
+
186
+ # (Not documented)
187
+ #
188
+ # @method settings_is_realtime(settings, name)
189
+ # @param [FluidHashtableT] settings
190
+ # @param [String] name
191
+ # @return [Integer]
192
+ # @scope class
193
+ attach_function :settings_is_realtime, :fluid_settings_is_realtime, [FluidHashtableT, :string], :int
194
+
195
+ # (Not documented)
196
+ #
197
+ # @method settings_setstr(settings, name, str)
198
+ # @param [FluidHashtableT] settings
199
+ # @param [String] name
200
+ # @param [String] str
201
+ # @return [Integer]
202
+ # @scope class
203
+ attach_function :settings_setstr, :fluid_settings_setstr, [FluidHashtableT, :string, :string], :int
204
+
205
+ # (Not documented)
206
+ #
207
+ # @method settings_copystr(settings, name, str, len)
208
+ # @param [FluidHashtableT] settings
209
+ # @param [String] name
210
+ # @param [String] str
211
+ # @param [Integer] len
212
+ # @return [Integer]
213
+ # @scope class
214
+ attach_function :settings_copystr, :fluid_settings_copystr, [FluidHashtableT, :string, :string, :int], :int
215
+
216
+ # (Not documented)
217
+ #
218
+ # @method settings_dupstr(settings, name, str)
219
+ # @param [FluidHashtableT] settings
220
+ # @param [String] name
221
+ # @param [FFI::Pointer(**Char_S)] str
222
+ # @return [Integer]
223
+ # @scope class
224
+ attach_function :settings_dupstr, :fluid_settings_dupstr, [FluidHashtableT, :string, :pointer], :int
225
+
226
+ # (Not documented)
227
+ #
228
+ # @method settings_getstr(settings, name, str)
229
+ # @param [FluidHashtableT] settings
230
+ # @param [String] name
231
+ # @param [FFI::Pointer(**Char_S)] str
232
+ # @return [Integer]
233
+ # @scope class
234
+ attach_function :settings_getstr, :fluid_settings_getstr, [FluidHashtableT, :string, :pointer], :int
235
+
236
+ # (Not documented)
237
+ #
238
+ # @method settings_getstr_default(settings, name)
239
+ # @param [FluidHashtableT] settings
240
+ # @param [String] name
241
+ # @return [String]
242
+ # @scope class
243
+ attach_function :settings_getstr_default, :fluid_settings_getstr_default, [FluidHashtableT, :string], :string
244
+
245
+ # (Not documented)
246
+ #
247
+ # @method settings_str_equal(settings, name, value)
248
+ # @param [FluidHashtableT] settings
249
+ # @param [String] name
250
+ # @param [String] value
251
+ # @return [Integer]
252
+ # @scope class
253
+ attach_function :settings_str_equal, :fluid_settings_str_equal, [FluidHashtableT, :string, :string], :int
254
+
255
+ # (Not documented)
256
+ #
257
+ # @method settings_setnum(settings, name, val)
258
+ # @param [FluidHashtableT] settings
259
+ # @param [String] name
260
+ # @param [Float] val
261
+ # @return [Integer]
262
+ # @scope class
263
+ attach_function :settings_setnum, :fluid_settings_setnum, [FluidHashtableT, :string, :double], :int
264
+
265
+ # (Not documented)
266
+ #
267
+ # @method settings_getnum(settings, name, val)
268
+ # @param [FluidHashtableT] settings
269
+ # @param [String] name
270
+ # @param [FFI::Pointer(*Double)] val
271
+ # @return [Integer]
272
+ # @scope class
273
+ attach_function :settings_getnum, :fluid_settings_getnum, [FluidHashtableT, :string, :pointer], :int
274
+
275
+ # (Not documented)
276
+ #
277
+ # @method settings_getnum_default(settings, name)
278
+ # @param [FluidHashtableT] settings
279
+ # @param [String] name
280
+ # @return [Float]
281
+ # @scope class
282
+ attach_function :settings_getnum_default, :fluid_settings_getnum_default, [FluidHashtableT, :string], :double
283
+
284
+ # (Not documented)
285
+ #
286
+ # @method settings_getnum_range(settings, name, min, max)
287
+ # @param [FluidHashtableT] settings
288
+ # @param [String] name
289
+ # @param [FFI::Pointer(*Double)] min
290
+ # @param [FFI::Pointer(*Double)] max
291
+ # @return [nil]
292
+ # @scope class
293
+ attach_function :settings_getnum_range, :fluid_settings_getnum_range, [FluidHashtableT, :string, :pointer, :pointer], :void
294
+
295
+ # (Not documented)
296
+ #
297
+ # @method settings_setint(settings, name, val)
298
+ # @param [FluidHashtableT] settings
299
+ # @param [String] name
300
+ # @param [Integer] val
301
+ # @return [Integer]
302
+ # @scope class
303
+ attach_function :settings_setint, :fluid_settings_setint, [FluidHashtableT, :string, :int], :int
304
+
305
+ # (Not documented)
306
+ #
307
+ # @method settings_getint(settings, name, val)
308
+ # @param [FluidHashtableT] settings
309
+ # @param [String] name
310
+ # @param [FFI::Pointer(*Int)] val
311
+ # @return [Integer]
312
+ # @scope class
313
+ attach_function :settings_getint, :fluid_settings_getint, [FluidHashtableT, :string, :pointer], :int
314
+
315
+ # (Not documented)
316
+ #
317
+ # @method settings_getint_default(settings, name)
318
+ # @param [FluidHashtableT] settings
319
+ # @param [String] name
320
+ # @return [Integer]
321
+ # @scope class
322
+ attach_function :settings_getint_default, :fluid_settings_getint_default, [FluidHashtableT, :string], :int
323
+
324
+ # (Not documented)
325
+ #
326
+ # @method settings_getint_range(settings, name, min, max)
327
+ # @param [FluidHashtableT] settings
328
+ # @param [String] name
329
+ # @param [FFI::Pointer(*Int)] min
330
+ # @param [FFI::Pointer(*Int)] max
331
+ # @return [nil]
332
+ # @scope class
333
+ attach_function :settings_getint_range, :fluid_settings_getint_range, [FluidHashtableT, :string, :pointer, :pointer], :void
334
+
335
+ # Callback function type used with fluid_settings_foreach_option()
336
+ # @param data User defined data pointer
337
+ # @param name Setting name
338
+ # @param option A string option for this setting (iterates through the list)
339
+ #
340
+ # <em>This entry is only for documentation and no real method.</em>
341
+ #
342
+ # @method _callback_settings_foreach_option_t_(name, option)
343
+ # @param [String] name
344
+ # @param [String] option
345
+ # @return [FFI::Pointer(*Void)]
346
+ # @scope class
347
+ callback :settings_foreach_option_t, [:string, :string], :pointer
348
+
349
+ # (Not documented)
350
+ #
351
+ # @method settings_foreach_option(settings, name, data, func)
352
+ # @param [FluidHashtableT] settings
353
+ # @param [String] name
354
+ # @param [FFI::Pointer(*Void)] data
355
+ # @param [Proc(_callback_settings_foreach_option_t_)] func
356
+ # @return [nil]
357
+ # @scope class
358
+ attach_function :settings_foreach_option, :fluid_settings_foreach_option, [FluidHashtableT, :string, :pointer, :settings_foreach_option_t], :void
359
+
360
+ # (Not documented)
361
+ #
362
+ # @method settings_option_count(settings, name)
363
+ # @param [FluidHashtableT] settings
364
+ # @param [String] name
365
+ # @return [Integer]
366
+ # @scope class
367
+ attach_function :settings_option_count, :fluid_settings_option_count, [FluidHashtableT, :string], :int
368
+
369
+ # (Not documented)
370
+ #
371
+ # @method settings_option_concat(settings, name, separator)
372
+ # @param [FluidHashtableT] settings
373
+ # @param [String] name
374
+ # @param [String] separator
375
+ # @return [String]
376
+ # @scope class
377
+ attach_function :settings_option_concat, :fluid_settings_option_concat, [FluidHashtableT, :string, :string], :string
378
+
379
+ # Callback function type used with fluid_settings_foreach()
380
+ # @param data User defined data pointer
381
+ # @param name Setting name
382
+ # @param type Setting type (#fluid_types_enum)
383
+ #
384
+ # <em>This entry is only for documentation and no real method.</em>
385
+ #
386
+ # @method _callback_settings_foreach_t_(name, type)
387
+ # @param [String] name
388
+ # @param [Integer] type
389
+ # @return [FFI::Pointer(*Void)]
390
+ # @scope class
391
+ callback :settings_foreach_t, [:string, :int], :pointer
392
+
393
+ # (Not documented)
394
+ #
395
+ # @method settings_foreach(settings, data, func)
396
+ # @param [FluidHashtableT] settings
397
+ # @param [FFI::Pointer(*Void)] data
398
+ # @param [Proc(_callback_settings_foreach_t_)] func
399
+ # @return [nil]
400
+ # @scope class
401
+ attach_function :settings_foreach, :fluid_settings_foreach, [FluidHashtableT, :pointer, :settings_foreach_t], :void
402
+
403
+ # < Synthesizer instance
404
+ #
405
+ # = Fields:
406
+ # :assigned ::
407
+ # (Integer) < TRUE if a preset is assigned, FALSE otherwise
408
+ # :sfont_id ::
409
+ # (Integer) < ID of parent SoundFont
410
+ # :bank ::
411
+ # (Integer) < MIDI bank number (0-16383)
412
+ # :program ::
413
+ # (Integer) < MIDI program number (0-127)
414
+ # :name ::
415
+ # (Array<Integer>) < Channel preset name
416
+ # :reserved ::
417
+ # (Array<Integer>) < Reserved data for future expansion
418
+ class FluidSynthChannelInfoT < FFI::Struct
419
+ layout :assigned, :int,
420
+ :sfont_id, :int,
421
+ :bank, :int,
422
+ :program, :int,
423
+ :name, [:char, 32],
424
+ :reserved, [:char, 32]
425
+ end
426
+
427
+ # (Not documented)
428
+ #
429
+ # @method new_fluid_synth(settings)
430
+ # @param [FluidHashtableT] settings
431
+ # @return [FluidSynthT]
432
+ # @scope class
433
+ attach_function :new_fluid_synth, :new_fluid_synth, [FluidHashtableT], FluidSynthT
434
+
435
+ # (Not documented)
436
+ #
437
+ # @method delete_fluid_synth(synth)
438
+ # @param [FluidSynthT] synth
439
+ # @return [Integer]
440
+ # @scope class
441
+ attach_function :delete_fluid_synth, :delete_fluid_synth, [FluidSynthT], :int
442
+
443
+ # (Not documented)
444
+ #
445
+ # @method synth_get_settings(synth)
446
+ # @param [FluidSynthT] synth
447
+ # @return [FluidHashtableT]
448
+ # @scope class
449
+ attach_function :synth_get_settings, :fluid_synth_get_settings, [FluidSynthT], FluidHashtableT
450
+
451
+ # MIDI channel messages
452
+ #
453
+ # @method synth_noteon(synth, chan, key, vel)
454
+ # @param [FluidSynthT] synth
455
+ # @param [Integer] chan
456
+ # @param [Integer] key
457
+ # @param [Integer] vel
458
+ # @return [Integer]
459
+ # @scope class
460
+ attach_function :synth_noteon, :fluid_synth_noteon, [FluidSynthT, :int, :int, :int], :int
461
+
462
+ # (Not documented)
463
+ #
464
+ # @method synth_noteoff(synth, chan, key)
465
+ # @param [FluidSynthT] synth
466
+ # @param [Integer] chan
467
+ # @param [Integer] key
468
+ # @return [Integer]
469
+ # @scope class
470
+ attach_function :synth_noteoff, :fluid_synth_noteoff, [FluidSynthT, :int, :int], :int
471
+
472
+ # (Not documented)
473
+ #
474
+ # @method synth_cc(synth, chan, ctrl, val)
475
+ # @param [FluidSynthT] synth
476
+ # @param [Integer] chan
477
+ # @param [Integer] ctrl
478
+ # @param [Integer] val
479
+ # @return [Integer]
480
+ # @scope class
481
+ attach_function :synth_cc, :fluid_synth_cc, [FluidSynthT, :int, :int, :int], :int
482
+
483
+ # (Not documented)
484
+ #
485
+ # @method synth_get_cc(synth, chan, ctrl, pval)
486
+ # @param [FluidSynthT] synth
487
+ # @param [Integer] chan
488
+ # @param [Integer] ctrl
489
+ # @param [FFI::Pointer(*Int)] pval
490
+ # @return [Integer]
491
+ # @scope class
492
+ attach_function :synth_get_cc, :fluid_synth_get_cc, [FluidSynthT, :int, :int, :pointer], :int
493
+
494
+ # (Not documented)
495
+ #
496
+ # @method synth_sysex(synth, data, len, response, response_len, handled, dryrun)
497
+ # @param [FluidSynthT] synth
498
+ # @param [String] data
499
+ # @param [Integer] len
500
+ # @param [String] response
501
+ # @param [FFI::Pointer(*Int)] response_len
502
+ # @param [FFI::Pointer(*Int)] handled
503
+ # @param [Integer] dryrun
504
+ # @return [Integer]
505
+ # @scope class
506
+ attach_function :synth_sysex, :fluid_synth_sysex, [FluidSynthT, :string, :int, :string, :pointer, :pointer, :int], :int
507
+
508
+ # (Not documented)
509
+ #
510
+ # @method synth_pitch_bend(synth, chan, val)
511
+ # @param [FluidSynthT] synth
512
+ # @param [Integer] chan
513
+ # @param [Integer] val
514
+ # @return [Integer]
515
+ # @scope class
516
+ attach_function :synth_pitch_bend, :fluid_synth_pitch_bend, [FluidSynthT, :int, :int], :int
517
+
518
+ # (Not documented)
519
+ #
520
+ # @method synth_get_pitch_bend(synth, chan, ppitch_bend)
521
+ # @param [FluidSynthT] synth
522
+ # @param [Integer] chan
523
+ # @param [FFI::Pointer(*Int)] ppitch_bend
524
+ # @return [Integer]
525
+ # @scope class
526
+ attach_function :synth_get_pitch_bend, :fluid_synth_get_pitch_bend, [FluidSynthT, :int, :pointer], :int
527
+
528
+ # (Not documented)
529
+ #
530
+ # @method synth_pitch_wheel_sens(synth, chan, val)
531
+ # @param [FluidSynthT] synth
532
+ # @param [Integer] chan
533
+ # @param [Integer] val
534
+ # @return [Integer]
535
+ # @scope class
536
+ attach_function :synth_pitch_wheel_sens, :fluid_synth_pitch_wheel_sens, [FluidSynthT, :int, :int], :int
537
+
538
+ # (Not documented)
539
+ #
540
+ # @method synth_get_pitch_wheel_sens(synth, chan, pval)
541
+ # @param [FluidSynthT] synth
542
+ # @param [Integer] chan
543
+ # @param [FFI::Pointer(*Int)] pval
544
+ # @return [Integer]
545
+ # @scope class
546
+ attach_function :synth_get_pitch_wheel_sens, :fluid_synth_get_pitch_wheel_sens, [FluidSynthT, :int, :pointer], :int
547
+
548
+ # (Not documented)
549
+ #
550
+ # @method synth_program_change(synth, chan, program)
551
+ # @param [FluidSynthT] synth
552
+ # @param [Integer] chan
553
+ # @param [Integer] program
554
+ # @return [Integer]
555
+ # @scope class
556
+ attach_function :synth_program_change, :fluid_synth_program_change, [FluidSynthT, :int, :int], :int
557
+
558
+ # (Not documented)
559
+ #
560
+ # @method synth_channel_pressure(synth, chan, val)
561
+ # @param [FluidSynthT] synth
562
+ # @param [Integer] chan
563
+ # @param [Integer] val
564
+ # @return [Integer]
565
+ # @scope class
566
+ attach_function :synth_channel_pressure, :fluid_synth_channel_pressure, [FluidSynthT, :int, :int], :int
567
+
568
+ # (Not documented)
569
+ #
570
+ # @method synth_bank_select(synth, chan, bank)
571
+ # @param [FluidSynthT] synth
572
+ # @param [Integer] chan
573
+ # @param [Integer] bank
574
+ # @return [Integer]
575
+ # @scope class
576
+ attach_function :synth_bank_select, :fluid_synth_bank_select, [FluidSynthT, :int, :uint], :int
577
+
578
+ # (Not documented)
579
+ #
580
+ # @method synth_sfont_select(synth, chan, sfont_id)
581
+ # @param [FluidSynthT] synth
582
+ # @param [Integer] chan
583
+ # @param [Integer] sfont_id
584
+ # @return [Integer]
585
+ # @scope class
586
+ attach_function :synth_sfont_select, :fluid_synth_sfont_select, [FluidSynthT, :int, :uint], :int
587
+
588
+ # (Not documented)
589
+ #
590
+ # @method synth_program_select(synth, chan, sfont_id, bank_num, preset_num)
591
+ # @param [FluidSynthT] synth
592
+ # @param [Integer] chan
593
+ # @param [Integer] sfont_id
594
+ # @param [Integer] bank_num
595
+ # @param [Integer] preset_num
596
+ # @return [Integer]
597
+ # @scope class
598
+ attach_function :synth_program_select, :fluid_synth_program_select, [FluidSynthT, :int, :uint, :uint, :uint], :int
599
+
600
+ # (Not documented)
601
+ #
602
+ # @method synth_program_select_by_sfont_name(synth, chan, sfont_name, bank_num, preset_num)
603
+ # @param [FluidSynthT] synth
604
+ # @param [Integer] chan
605
+ # @param [String] sfont_name
606
+ # @param [Integer] bank_num
607
+ # @param [Integer] preset_num
608
+ # @return [Integer]
609
+ # @scope class
610
+ attach_function :synth_program_select_by_sfont_name, :fluid_synth_program_select_by_sfont_name, [FluidSynthT, :int, :string, :uint, :uint], :int
611
+
612
+ # (Not documented)
613
+ #
614
+ # @method synth_get_program(synth, chan, sfont_id, bank_num, preset_num)
615
+ # @param [FluidSynthT] synth
616
+ # @param [Integer] chan
617
+ # @param [FFI::Pointer(*UInt)] sfont_id
618
+ # @param [FFI::Pointer(*UInt)] bank_num
619
+ # @param [FFI::Pointer(*UInt)] preset_num
620
+ # @return [Integer]
621
+ # @scope class
622
+ attach_function :synth_get_program, :fluid_synth_get_program, [FluidSynthT, :int, :pointer, :pointer, :pointer], :int
623
+
624
+ # (Not documented)
625
+ #
626
+ # @method synth_unset_program(synth, chan)
627
+ # @param [FluidSynthT] synth
628
+ # @param [Integer] chan
629
+ # @return [Integer]
630
+ # @scope class
631
+ attach_function :synth_unset_program, :fluid_synth_unset_program, [FluidSynthT, :int], :int
632
+
633
+ # (Not documented)
634
+ #
635
+ # @method synth_get_channel_info(synth, chan, info)
636
+ # @param [FluidSynthT] synth
637
+ # @param [Integer] chan
638
+ # @param [FluidSynthChannelInfoT] info
639
+ # @return [Integer]
640
+ # @scope class
641
+ attach_function :synth_get_channel_info, :fluid_synth_get_channel_info, [FluidSynthT, :int, FluidSynthChannelInfoT], :int
642
+
643
+ # (Not documented)
644
+ #
645
+ # @method synth_program_reset(synth)
646
+ # @param [FluidSynthT] synth
647
+ # @return [Integer]
648
+ # @scope class
649
+ attach_function :synth_program_reset, :fluid_synth_program_reset, [FluidSynthT], :int
650
+
651
+ # (Not documented)
652
+ #
653
+ # @method synth_system_reset(synth)
654
+ # @param [FluidSynthT] synth
655
+ # @return [Integer]
656
+ # @scope class
657
+ attach_function :synth_system_reset, :fluid_synth_system_reset, [FluidSynthT], :int
658
+
659
+ # (Not documented)
660
+ #
661
+ # @method synth_all_notes_off(synth, chan)
662
+ # @param [FluidSynthT] synth
663
+ # @param [Integer] chan
664
+ # @return [Integer]
665
+ # @scope class
666
+ attach_function :synth_all_notes_off, :fluid_synth_all_notes_off, [FluidSynthT, :int], :int
667
+
668
+ # (Not documented)
669
+ #
670
+ # @method synth_all_sounds_off(synth, chan)
671
+ # @param [FluidSynthT] synth
672
+ # @param [Integer] chan
673
+ # @return [Integer]
674
+ # @scope class
675
+ attach_function :synth_all_sounds_off, :fluid_synth_all_sounds_off, [FluidSynthT, :int], :int
676
+
677
+ # (Not documented)
678
+ #
679
+ # <em>This entry is only for documentation and no real method. The FFI::Enum can be accessed via #enum_type(:midi_channel_type).</em>
680
+ #
681
+ # === Options:
682
+ # :melodic ::
683
+ #
684
+ # :drum ::
685
+ #
686
+ #
687
+ # @method _enum_midi_channel_type_
688
+ # @return [Symbol]
689
+ # @scope class
690
+ enum :midi_channel_type, [
691
+ :melodic, 0,
692
+ :drum, 1
693
+ ]
694
+
695
+ # (Not documented)
696
+ #
697
+ # @method synth_set_channel_type(synth, chan, type)
698
+ # @param [FluidSynthT] synth
699
+ # @param [Integer] chan
700
+ # @param [Integer] type
701
+ # @return [Integer]
702
+ # @scope class
703
+ attach_function :synth_set_channel_type, :fluid_synth_set_channel_type, [FluidSynthT, :int, :int], :int
704
+
705
+ # Low level access
706
+ #
707
+ # @method synth_get_channel_preset(synth, chan)
708
+ # @param [FluidSynthT] synth
709
+ # @param [Integer] chan
710
+ # @return [FFI::Pointer(*PresetT)]
711
+ # @scope class
712
+ attach_function :synth_get_channel_preset, :fluid_synth_get_channel_preset, [FluidSynthT, :int], :pointer
713
+
714
+ # (Not documented)
715
+ #
716
+ # @method synth_start(synth, id, preset, audio_chan, midi_chan, key, vel)
717
+ # @param [FluidSynthT] synth
718
+ # @param [Integer] id
719
+ # @param [FFI::Pointer(*PresetT)] preset
720
+ # @param [Integer] audio_chan
721
+ # @param [Integer] midi_chan
722
+ # @param [Integer] key
723
+ # @param [Integer] vel
724
+ # @return [Integer]
725
+ # @scope class
726
+ attach_function :synth_start, :fluid_synth_start, [FluidSynthT, :uint, :pointer, :int, :int, :int, :int], :int
727
+
728
+ # (Not documented)
729
+ #
730
+ # @method synth_stop(synth, id)
731
+ # @param [FluidSynthT] synth
732
+ # @param [Integer] id
733
+ # @return [Integer]
734
+ # @scope class
735
+ attach_function :synth_stop, :fluid_synth_stop, [FluidSynthT, :uint], :int
736
+
737
+ # SoundFont management
738
+ #
739
+ # @method synth_sfload(synth, filename, reset_presets)
740
+ # @param [FluidSynthT] synth
741
+ # @param [String] filename
742
+ # @param [Integer] reset_presets
743
+ # @return [Integer]
744
+ # @scope class
745
+ attach_function :synth_sfload, :fluid_synth_sfload, [FluidSynthT, :string, :int], :int
746
+
747
+ # (Not documented)
748
+ #
749
+ # @method synth_sfreload(synth, id)
750
+ # @param [FluidSynthT] synth
751
+ # @param [Integer] id
752
+ # @return [Integer]
753
+ # @scope class
754
+ attach_function :synth_sfreload, :fluid_synth_sfreload, [FluidSynthT, :uint], :int
755
+
756
+ # (Not documented)
757
+ #
758
+ # @method synth_sfunload(synth, id, reset_presets)
759
+ # @param [FluidSynthT] synth
760
+ # @param [Integer] id
761
+ # @param [Integer] reset_presets
762
+ # @return [Integer]
763
+ # @scope class
764
+ attach_function :synth_sfunload, :fluid_synth_sfunload, [FluidSynthT, :uint, :int], :int
765
+
766
+ # (Not documented)
767
+ #
768
+ # @method synth_add_sfont(synth, sfont)
769
+ # @param [FluidSynthT] synth
770
+ # @param [FFI::Pointer(*SfontT)] sfont
771
+ # @return [Integer]
772
+ # @scope class
773
+ attach_function :synth_add_sfont, :fluid_synth_add_sfont, [FluidSynthT, :pointer], :int
774
+
775
+ # (Not documented)
776
+ #
777
+ # @method synth_remove_sfont(synth, sfont)
778
+ # @param [FluidSynthT] synth
779
+ # @param [FFI::Pointer(*SfontT)] sfont
780
+ # @return [nil]
781
+ # @scope class
782
+ attach_function :synth_remove_sfont, :fluid_synth_remove_sfont, [FluidSynthT, :pointer], :void
783
+
784
+ # (Not documented)
785
+ #
786
+ # @method synth_sfcount(synth)
787
+ # @param [FluidSynthT] synth
788
+ # @return [Integer]
789
+ # @scope class
790
+ attach_function :synth_sfcount, :fluid_synth_sfcount, [FluidSynthT], :int
791
+
792
+ # (Not documented)
793
+ #
794
+ # @method synth_get_sfont(synth, num)
795
+ # @param [FluidSynthT] synth
796
+ # @param [Integer] num
797
+ # @return [FFI::Pointer(*SfontT)]
798
+ # @scope class
799
+ attach_function :synth_get_sfont, :fluid_synth_get_sfont, [FluidSynthT, :uint], :pointer
800
+
801
+ # (Not documented)
802
+ #
803
+ # @method synth_get_sfont_by_id(synth, id)
804
+ # @param [FluidSynthT] synth
805
+ # @param [Integer] id
806
+ # @return [FFI::Pointer(*SfontT)]
807
+ # @scope class
808
+ attach_function :synth_get_sfont_by_id, :fluid_synth_get_sfont_by_id, [FluidSynthT, :uint], :pointer
809
+
810
+ # (Not documented)
811
+ #
812
+ # @method synth_get_sfont_by_name(synth, name)
813
+ # @param [FluidSynthT] synth
814
+ # @param [String] name
815
+ # @return [FFI::Pointer(*SfontT)]
816
+ # @scope class
817
+ attach_function :synth_get_sfont_by_name, :fluid_synth_get_sfont_by_name, [FluidSynthT, :string], :pointer
818
+
819
+ # (Not documented)
820
+ #
821
+ # @method synth_set_bank_offset(synth, sfont_id, offset)
822
+ # @param [FluidSynthT] synth
823
+ # @param [Integer] sfont_id
824
+ # @param [Integer] offset
825
+ # @return [Integer]
826
+ # @scope class
827
+ attach_function :synth_set_bank_offset, :fluid_synth_set_bank_offset, [FluidSynthT, :int, :int], :int
828
+
829
+ # (Not documented)
830
+ #
831
+ # @method synth_get_bank_offset(synth, sfont_id)
832
+ # @param [FluidSynthT] synth
833
+ # @param [Integer] sfont_id
834
+ # @return [Integer]
835
+ # @scope class
836
+ attach_function :synth_get_bank_offset, :fluid_synth_get_bank_offset, [FluidSynthT, :int], :int
837
+
838
+ # Reverb
839
+ #
840
+ # @method synth_set_reverb(synth, roomsize, damping, width, level)
841
+ # @param [FluidSynthT] synth
842
+ # @param [Float] roomsize
843
+ # @param [Float] damping
844
+ # @param [Float] width
845
+ # @param [Float] level
846
+ # @return [nil]
847
+ # @scope class
848
+ attach_function :synth_set_reverb, :fluid_synth_set_reverb, [FluidSynthT, :double, :double, :double, :double], :void
849
+
850
+ # (Not documented)
851
+ #
852
+ # @method synth_set_reverb_on(synth, on)
853
+ # @param [FluidSynthT] synth
854
+ # @param [Integer] on
855
+ # @return [nil]
856
+ # @scope class
857
+ attach_function :synth_set_reverb_on, :fluid_synth_set_reverb_on, [FluidSynthT, :int], :void
858
+
859
+ # (Not documented)
860
+ #
861
+ # @method synth_get_reverb_roomsize(synth)
862
+ # @param [FluidSynthT] synth
863
+ # @return [Float]
864
+ # @scope class
865
+ attach_function :synth_get_reverb_roomsize, :fluid_synth_get_reverb_roomsize, [FluidSynthT], :double
866
+
867
+ # (Not documented)
868
+ #
869
+ # @method synth_get_reverb_damp(synth)
870
+ # @param [FluidSynthT] synth
871
+ # @return [Float]
872
+ # @scope class
873
+ attach_function :synth_get_reverb_damp, :fluid_synth_get_reverb_damp, [FluidSynthT], :double
874
+
875
+ # (Not documented)
876
+ #
877
+ # @method synth_get_reverb_level(synth)
878
+ # @param [FluidSynthT] synth
879
+ # @return [Float]
880
+ # @scope class
881
+ attach_function :synth_get_reverb_level, :fluid_synth_get_reverb_level, [FluidSynthT], :double
882
+
883
+ # (Not documented)
884
+ #
885
+ # @method synth_get_reverb_width(synth)
886
+ # @param [FluidSynthT] synth
887
+ # @return [Float]
888
+ # @scope class
889
+ attach_function :synth_get_reverb_width, :fluid_synth_get_reverb_width, [FluidSynthT], :double
890
+
891
+ # Chorus modulation waveform type.
892
+ #
893
+ # <em>This entry is only for documentation and no real method. The FFI::Enum can be accessed via #enum_type(:chorus_mod).</em>
894
+ #
895
+ # === Options:
896
+ # :sine ::
897
+ #
898
+ # :triangle ::
899
+ # < Sine wave chorus modulation
900
+ #
901
+ # @method _enum_chorus_mod_
902
+ # @return [Symbol]
903
+ # @scope class
904
+ enum :chorus_mod, [
905
+ :sine, 0,
906
+ :triangle, 1
907
+ ]
908
+
909
+ # < Triangle wave chorus modulation
910
+ #
911
+ # @method synth_set_chorus(synth, nr, level, speed, depth_ms, type)
912
+ # @param [FluidSynthT] synth
913
+ # @param [Integer] nr
914
+ # @param [Float] level
915
+ # @param [Float] speed
916
+ # @param [Float] depth_ms
917
+ # @param [Integer] type
918
+ # @return [nil]
919
+ # @scope class
920
+ attach_function :synth_set_chorus, :fluid_synth_set_chorus, [FluidSynthT, :int, :double, :double, :double, :int], :void
921
+
922
+ # (Not documented)
923
+ #
924
+ # @method synth_set_chorus_on(synth, on)
925
+ # @param [FluidSynthT] synth
926
+ # @param [Integer] on
927
+ # @return [nil]
928
+ # @scope class
929
+ attach_function :synth_set_chorus_on, :fluid_synth_set_chorus_on, [FluidSynthT, :int], :void
930
+
931
+ # (Not documented)
932
+ #
933
+ # @method synth_get_chorus_nr(synth)
934
+ # @param [FluidSynthT] synth
935
+ # @return [Integer]
936
+ # @scope class
937
+ attach_function :synth_get_chorus_nr, :fluid_synth_get_chorus_nr, [FluidSynthT], :int
938
+
939
+ # (Not documented)
940
+ #
941
+ # @method synth_get_chorus_level(synth)
942
+ # @param [FluidSynthT] synth
943
+ # @return [Float]
944
+ # @scope class
945
+ attach_function :synth_get_chorus_level, :fluid_synth_get_chorus_level, [FluidSynthT], :double
946
+
947
+ # (Not documented)
948
+ #
949
+ # @method synth_get_chorus_speed_hz(synth)
950
+ # @param [FluidSynthT] synth
951
+ # @return [Float]
952
+ # @scope class
953
+ attach_function :synth_get_chorus_speed_hz, :fluid_synth_get_chorus_speed_Hz, [FluidSynthT], :double
954
+
955
+ # (Not documented)
956
+ #
957
+ # @method synth_get_chorus_depth_ms(synth)
958
+ # @param [FluidSynthT] synth
959
+ # @return [Float]
960
+ # @scope class
961
+ attach_function :synth_get_chorus_depth_ms, :fluid_synth_get_chorus_depth_ms, [FluidSynthT], :double
962
+
963
+ # (Not documented)
964
+ #
965
+ # @method synth_get_chorus_type(synth)
966
+ # @param [FluidSynthT] synth
967
+ # @return [Integer]
968
+ # @scope class
969
+ attach_function :synth_get_chorus_type, :fluid_synth_get_chorus_type, [FluidSynthT], :int
970
+
971
+ # Audio and MIDI channels
972
+ #
973
+ # @method synth_count_midi_channels(synth)
974
+ # @param [FluidSynthT] synth
975
+ # @return [Integer]
976
+ # @scope class
977
+ attach_function :synth_count_midi_channels, :fluid_synth_count_midi_channels, [FluidSynthT], :int
978
+
979
+ # (Not documented)
980
+ #
981
+ # @method synth_count_audio_channels(synth)
982
+ # @param [FluidSynthT] synth
983
+ # @return [Integer]
984
+ # @scope class
985
+ attach_function :synth_count_audio_channels, :fluid_synth_count_audio_channels, [FluidSynthT], :int
986
+
987
+ # (Not documented)
988
+ #
989
+ # @method synth_count_audio_groups(synth)
990
+ # @param [FluidSynthT] synth
991
+ # @return [Integer]
992
+ # @scope class
993
+ attach_function :synth_count_audio_groups, :fluid_synth_count_audio_groups, [FluidSynthT], :int
994
+
995
+ # (Not documented)
996
+ #
997
+ # @method synth_count_effects_channels(synth)
998
+ # @param [FluidSynthT] synth
999
+ # @return [Integer]
1000
+ # @scope class
1001
+ attach_function :synth_count_effects_channels, :fluid_synth_count_effects_channels, [FluidSynthT], :int
1002
+
1003
+ # Synthesis parameters
1004
+ #
1005
+ # @method synth_set_sample_rate(synth, sample_rate)
1006
+ # @param [FluidSynthT] synth
1007
+ # @param [Float] sample_rate
1008
+ # @return [nil]
1009
+ # @scope class
1010
+ attach_function :synth_set_sample_rate, :fluid_synth_set_sample_rate, [FluidSynthT, :float], :void
1011
+
1012
+ # (Not documented)
1013
+ #
1014
+ # @method synth_set_gain(synth, gain)
1015
+ # @param [FluidSynthT] synth
1016
+ # @param [Float] gain
1017
+ # @return [nil]
1018
+ # @scope class
1019
+ attach_function :synth_set_gain, :fluid_synth_set_gain, [FluidSynthT, :float], :void
1020
+
1021
+ # (Not documented)
1022
+ #
1023
+ # @method synth_get_gain(synth)
1024
+ # @param [FluidSynthT] synth
1025
+ # @return [Float]
1026
+ # @scope class
1027
+ attach_function :synth_get_gain, :fluid_synth_get_gain, [FluidSynthT], :float
1028
+
1029
+ # (Not documented)
1030
+ #
1031
+ # @method synth_set_polyphony(synth, polyphony)
1032
+ # @param [FluidSynthT] synth
1033
+ # @param [Integer] polyphony
1034
+ # @return [Integer]
1035
+ # @scope class
1036
+ attach_function :synth_set_polyphony, :fluid_synth_set_polyphony, [FluidSynthT, :int], :int
1037
+
1038
+ # (Not documented)
1039
+ #
1040
+ # @method synth_get_polyphony(synth)
1041
+ # @param [FluidSynthT] synth
1042
+ # @return [Integer]
1043
+ # @scope class
1044
+ attach_function :synth_get_polyphony, :fluid_synth_get_polyphony, [FluidSynthT], :int
1045
+
1046
+ # (Not documented)
1047
+ #
1048
+ # @method synth_get_active_voice_count(synth)
1049
+ # @param [FluidSynthT] synth
1050
+ # @return [Integer]
1051
+ # @scope class
1052
+ attach_function :synth_get_active_voice_count, :fluid_synth_get_active_voice_count, [FluidSynthT], :int
1053
+
1054
+ # (Not documented)
1055
+ #
1056
+ # @method synth_get_internal_bufsize(synth)
1057
+ # @param [FluidSynthT] synth
1058
+ # @return [Integer]
1059
+ # @scope class
1060
+ attach_function :synth_get_internal_bufsize, :fluid_synth_get_internal_bufsize, [FluidSynthT], :int
1061
+
1062
+ # (Not documented)
1063
+ #
1064
+ # @method synth_set_interp_method(synth, chan, interp_method)
1065
+ # @param [FluidSynthT] synth
1066
+ # @param [Integer] chan
1067
+ # @param [Integer] interp_method
1068
+ # @return [Integer]
1069
+ # @scope class
1070
+ attach_function :synth_set_interp_method, :fluid_synth_set_interp_method, [FluidSynthT, :int, :int], :int
1071
+
1072
+ # Synthesis interpolation method.
1073
+ #
1074
+ # <em>This entry is only for documentation and no real method. The FFI::Enum can be accessed via #enum_type(:interp).</em>
1075
+ #
1076
+ # === Options:
1077
+ # :none ::
1078
+ #
1079
+ # :linear ::
1080
+ # < No interpolation: Fastest, but questionable audio quality
1081
+ # :_4thorder ::
1082
+ # < Straight-line interpolation: A bit slower, reasonable audio quality
1083
+ # :_7thorder ::
1084
+ # < Fourth-order interpolation, good quality, the default
1085
+ #
1086
+ # @method _enum_interp_
1087
+ # @return [Symbol]
1088
+ # @scope class
1089
+ enum :interp, [
1090
+ :none, 0,
1091
+ :linear, 1,
1092
+ :_4thorder, 4,
1093
+ :_7thorder, 7
1094
+ ]
1095
+
1096
+ # Generator interface
1097
+ #
1098
+ # @method synth_set_gen(synth, chan, param, value)
1099
+ # @param [FluidSynthT] synth
1100
+ # @param [Integer] chan
1101
+ # @param [Integer] param
1102
+ # @param [Float] value
1103
+ # @return [Integer]
1104
+ # @scope class
1105
+ attach_function :synth_set_gen, :fluid_synth_set_gen, [FluidSynthT, :int, :int, :float], :int
1106
+
1107
+ # (Not documented)
1108
+ #
1109
+ # @method synth_set_gen2(synth, chan, param, value, absolute, normalized)
1110
+ # @param [FluidSynthT] synth
1111
+ # @param [Integer] chan
1112
+ # @param [Integer] param
1113
+ # @param [Float] value
1114
+ # @param [Integer] absolute
1115
+ # @param [Integer] normalized
1116
+ # @return [Integer]
1117
+ # @scope class
1118
+ attach_function :synth_set_gen2, :fluid_synth_set_gen2, [FluidSynthT, :int, :int, :float, :int, :int], :int
1119
+
1120
+ # (Not documented)
1121
+ #
1122
+ # @method synth_get_gen(synth, chan, param)
1123
+ # @param [FluidSynthT] synth
1124
+ # @param [Integer] chan
1125
+ # @param [Integer] param
1126
+ # @return [Float]
1127
+ # @scope class
1128
+ attach_function :synth_get_gen, :fluid_synth_get_gen, [FluidSynthT, :int, :int], :float
1129
+
1130
+ # Tuning
1131
+ #
1132
+ # @method synth_create_key_tuning(synth, bank, prog, name, pitch)
1133
+ # @param [FluidSynthT] synth
1134
+ # @param [Integer] bank
1135
+ # @param [Integer] prog
1136
+ # @param [String] name
1137
+ # @param [FFI::Pointer(*Double)] pitch
1138
+ # @return [Integer]
1139
+ # @scope class
1140
+ attach_function :synth_create_key_tuning, :fluid_synth_create_key_tuning, [FluidSynthT, :int, :int, :string, :pointer], :int
1141
+
1142
+ # (Not documented)
1143
+ #
1144
+ # @method synth_activate_key_tuning(synth, bank, prog, name, pitch, apply)
1145
+ # @param [FluidSynthT] synth
1146
+ # @param [Integer] bank
1147
+ # @param [Integer] prog
1148
+ # @param [String] name
1149
+ # @param [FFI::Pointer(*Double)] pitch
1150
+ # @param [Integer] apply
1151
+ # @return [Integer]
1152
+ # @scope class
1153
+ attach_function :synth_activate_key_tuning, :fluid_synth_activate_key_tuning, [FluidSynthT, :int, :int, :string, :pointer, :int], :int
1154
+
1155
+ # (Not documented)
1156
+ #
1157
+ # @method synth_create_octave_tuning(synth, bank, prog, name, pitch)
1158
+ # @param [FluidSynthT] synth
1159
+ # @param [Integer] bank
1160
+ # @param [Integer] prog
1161
+ # @param [String] name
1162
+ # @param [FFI::Pointer(*Double)] pitch
1163
+ # @return [Integer]
1164
+ # @scope class
1165
+ attach_function :synth_create_octave_tuning, :fluid_synth_create_octave_tuning, [FluidSynthT, :int, :int, :string, :pointer], :int
1166
+
1167
+ # (Not documented)
1168
+ #
1169
+ # @method synth_activate_octave_tuning(synth, bank, prog, name, pitch, apply)
1170
+ # @param [FluidSynthT] synth
1171
+ # @param [Integer] bank
1172
+ # @param [Integer] prog
1173
+ # @param [String] name
1174
+ # @param [FFI::Pointer(*Double)] pitch
1175
+ # @param [Integer] apply
1176
+ # @return [Integer]
1177
+ # @scope class
1178
+ attach_function :synth_activate_octave_tuning, :fluid_synth_activate_octave_tuning, [FluidSynthT, :int, :int, :string, :pointer, :int], :int
1179
+
1180
+ # (Not documented)
1181
+ #
1182
+ # @method synth_tune_notes(synth, bank, prog, len, keys, pitch, apply)
1183
+ # @param [FluidSynthT] synth
1184
+ # @param [Integer] bank
1185
+ # @param [Integer] prog
1186
+ # @param [Integer] len
1187
+ # @param [FFI::Pointer(*Int)] keys
1188
+ # @param [FFI::Pointer(*Double)] pitch
1189
+ # @param [Integer] apply
1190
+ # @return [Integer]
1191
+ # @scope class
1192
+ attach_function :synth_tune_notes, :fluid_synth_tune_notes, [FluidSynthT, :int, :int, :int, :pointer, :pointer, :int], :int
1193
+
1194
+ # (Not documented)
1195
+ #
1196
+ # @method synth_select_tuning(synth, chan, bank, prog)
1197
+ # @param [FluidSynthT] synth
1198
+ # @param [Integer] chan
1199
+ # @param [Integer] bank
1200
+ # @param [Integer] prog
1201
+ # @return [Integer]
1202
+ # @scope class
1203
+ attach_function :synth_select_tuning, :fluid_synth_select_tuning, [FluidSynthT, :int, :int, :int], :int
1204
+
1205
+ # (Not documented)
1206
+ #
1207
+ # @method synth_activate_tuning(synth, chan, bank, prog, apply)
1208
+ # @param [FluidSynthT] synth
1209
+ # @param [Integer] chan
1210
+ # @param [Integer] bank
1211
+ # @param [Integer] prog
1212
+ # @param [Integer] apply
1213
+ # @return [Integer]
1214
+ # @scope class
1215
+ attach_function :synth_activate_tuning, :fluid_synth_activate_tuning, [FluidSynthT, :int, :int, :int, :int], :int
1216
+
1217
+ # (Not documented)
1218
+ #
1219
+ # @method synth_reset_tuning(synth, chan)
1220
+ # @param [FluidSynthT] synth
1221
+ # @param [Integer] chan
1222
+ # @return [Integer]
1223
+ # @scope class
1224
+ attach_function :synth_reset_tuning, :fluid_synth_reset_tuning, [FluidSynthT, :int], :int
1225
+
1226
+ # (Not documented)
1227
+ #
1228
+ # @method synth_deactivate_tuning(synth, chan, apply)
1229
+ # @param [FluidSynthT] synth
1230
+ # @param [Integer] chan
1231
+ # @param [Integer] apply
1232
+ # @return [Integer]
1233
+ # @scope class
1234
+ attach_function :synth_deactivate_tuning, :fluid_synth_deactivate_tuning, [FluidSynthT, :int, :int], :int
1235
+
1236
+ # (Not documented)
1237
+ #
1238
+ # @method synth_tuning_iteration_start(synth)
1239
+ # @param [FluidSynthT] synth
1240
+ # @return [nil]
1241
+ # @scope class
1242
+ attach_function :synth_tuning_iteration_start, :fluid_synth_tuning_iteration_start, [FluidSynthT], :void
1243
+
1244
+ # (Not documented)
1245
+ #
1246
+ # @method synth_tuning_iteration_next(synth, bank, prog)
1247
+ # @param [FluidSynthT] synth
1248
+ # @param [FFI::Pointer(*Int)] bank
1249
+ # @param [FFI::Pointer(*Int)] prog
1250
+ # @return [Integer]
1251
+ # @scope class
1252
+ attach_function :synth_tuning_iteration_next, :fluid_synth_tuning_iteration_next, [FluidSynthT, :pointer, :pointer], :int
1253
+
1254
+ # (Not documented)
1255
+ #
1256
+ # @method synth_tuning_dump(synth, bank, prog, name, len, pitch)
1257
+ # @param [FluidSynthT] synth
1258
+ # @param [Integer] bank
1259
+ # @param [Integer] prog
1260
+ # @param [String] name
1261
+ # @param [Integer] len
1262
+ # @param [FFI::Pointer(*Double)] pitch
1263
+ # @return [Integer]
1264
+ # @scope class
1265
+ attach_function :synth_tuning_dump, :fluid_synth_tuning_dump, [FluidSynthT, :int, :int, :string, :int, :pointer], :int
1266
+
1267
+ # Misc
1268
+ #
1269
+ # @method synth_get_cpu_load(synth)
1270
+ # @param [FluidSynthT] synth
1271
+ # @return [Float]
1272
+ # @scope class
1273
+ attach_function :synth_get_cpu_load, :fluid_synth_get_cpu_load, [FluidSynthT], :double
1274
+
1275
+ # (Not documented)
1276
+ #
1277
+ # @method synth_error(synth)
1278
+ # @param [FluidSynthT] synth
1279
+ # @return [String]
1280
+ # @scope class
1281
+ attach_function :synth_error, :fluid_synth_error, [FluidSynthT], :string
1282
+
1283
+ # Synthesizer plugin
1284
+ #
1285
+ # To create a synthesizer plugin, create the synthesizer as
1286
+ # explained above. Once the synthesizer is created you can call
1287
+ # any of the functions below to get the audio.
1288
+ #
1289
+ # @method synth_write_s16(synth, len, lout, loff, lincr, rout, roff, rincr)
1290
+ # @param [FluidSynthT] synth
1291
+ # @param [Integer] len
1292
+ # @param [FFI::Pointer(*Void)] lout
1293
+ # @param [Integer] loff
1294
+ # @param [Integer] lincr
1295
+ # @param [FFI::Pointer(*Void)] rout
1296
+ # @param [Integer] roff
1297
+ # @param [Integer] rincr
1298
+ # @return [Integer]
1299
+ # @scope class
1300
+ attach_function :synth_write_s16, :fluid_synth_write_s16, [FluidSynthT, :int, :pointer, :int, :int, :pointer, :int, :int], :int
1301
+
1302
+ # (Not documented)
1303
+ #
1304
+ # @method synth_write_float(synth, len, lout, loff, lincr, rout, roff, rincr)
1305
+ # @param [FluidSynthT] synth
1306
+ # @param [Integer] len
1307
+ # @param [FFI::Pointer(*Void)] lout
1308
+ # @param [Integer] loff
1309
+ # @param [Integer] lincr
1310
+ # @param [FFI::Pointer(*Void)] rout
1311
+ # @param [Integer] roff
1312
+ # @param [Integer] rincr
1313
+ # @return [Integer]
1314
+ # @scope class
1315
+ attach_function :synth_write_float, :fluid_synth_write_float, [FluidSynthT, :int, :pointer, :int, :int, :pointer, :int, :int], :int
1316
+
1317
+ # (Not documented)
1318
+ #
1319
+ # @method synth_nwrite_float(synth, len, left, right, fx_left, fx_right)
1320
+ # @param [FluidSynthT] synth
1321
+ # @param [Integer] len
1322
+ # @param [FFI::Pointer(**Float)] left
1323
+ # @param [FFI::Pointer(**Float)] right
1324
+ # @param [FFI::Pointer(**Float)] fx_left
1325
+ # @param [FFI::Pointer(**Float)] fx_right
1326
+ # @return [Integer]
1327
+ # @scope class
1328
+ attach_function :synth_nwrite_float, :fluid_synth_nwrite_float, [FluidSynthT, :int, :pointer, :pointer, :pointer, :pointer], :int
1329
+
1330
+ # (Not documented)
1331
+ #
1332
+ # @method synth_process(synth, len, nin, in, nout, out)
1333
+ # @param [FluidSynthT] synth
1334
+ # @param [Integer] len
1335
+ # @param [Integer] nin
1336
+ # @param [FFI::Pointer(**Float)] in
1337
+ # @param [Integer] nout
1338
+ # @param [FFI::Pointer(**Float)] out
1339
+ # @return [Integer]
1340
+ # @scope class
1341
+ attach_function :synth_process, :fluid_synth_process, [FluidSynthT, :int, :int, :pointer, :int, :pointer], :int
1342
+
1343
+ # Type definition of the synthesizer's audio callback function.
1344
+ # @param synth FluidSynth instance
1345
+ # @param len Count of audio frames to synthesize
1346
+ # @param out1 Array to store left channel of audio to
1347
+ # @param loff Offset index in 'out1' for first sample
1348
+ # @param lincr Increment between samples stored to 'out1'
1349
+ # @param out2 Array to store right channel of audio to
1350
+ # @param roff Offset index in 'out2' for first sample
1351
+ # @param rincr Increment between samples stored to 'out2'
1352
+ #
1353
+ # <em>This entry is only for documentation and no real method.</em>
1354
+ #
1355
+ # @method _callback_audio_callback_t_(len, out1, loff, lincr, out2, roff, rincr)
1356
+ # @param [Integer] len
1357
+ # @param [FFI::Pointer(*Void)] out1
1358
+ # @param [Integer] loff
1359
+ # @param [Integer] lincr
1360
+ # @param [FFI::Pointer(*Void)] out2
1361
+ # @param [Integer] roff
1362
+ # @param [Integer] rincr
1363
+ # @return [FluidSynthT]
1364
+ # @scope class
1365
+ callback :audio_callback_t, [:int, :pointer, :int, :int, :pointer, :int, :int], FluidSynthT
1366
+
1367
+ # Synthesizer's interface to handle SoundFont loaders
1368
+ #
1369
+ # @method synth_add_sfloader(synth, loader)
1370
+ # @param [FluidSynthT] synth
1371
+ # @param [FFI::Pointer(*SfloaderT)] loader
1372
+ # @return [nil]
1373
+ # @scope class
1374
+ attach_function :synth_add_sfloader, :fluid_synth_add_sfloader, [FluidSynthT, :pointer], :void
1375
+
1376
+ # (Not documented)
1377
+ #
1378
+ # @method synth_alloc_voice(synth, sample, channum, key, vel)
1379
+ # @param [FluidSynthT] synth
1380
+ # @param [FFI::Pointer(*SampleT)] sample
1381
+ # @param [Integer] channum
1382
+ # @param [Integer] key
1383
+ # @param [Integer] vel
1384
+ # @return [FluidVoiceT]
1385
+ # @scope class
1386
+ attach_function :synth_alloc_voice, :fluid_synth_alloc_voice, [FluidSynthT, :pointer, :int, :int, :int], FluidVoiceT
1387
+
1388
+ # (Not documented)
1389
+ #
1390
+ # @method synth_start_voice(synth, voice)
1391
+ # @param [FluidSynthT] synth
1392
+ # @param [FluidVoiceT] voice
1393
+ # @return [nil]
1394
+ # @scope class
1395
+ attach_function :synth_start_voice, :fluid_synth_start_voice, [FluidSynthT, FluidVoiceT], :void
1396
+
1397
+ # (Not documented)
1398
+ #
1399
+ # @method synth_get_voicelist(synth, buf, bufsize, id)
1400
+ # @param [FluidSynthT] synth
1401
+ # @param [FFI::Pointer(**VoiceT)] buf
1402
+ # @param [Integer] bufsize
1403
+ # @param [Integer] id
1404
+ # @return [nil]
1405
+ # @scope class
1406
+ attach_function :synth_get_voicelist, :fluid_synth_get_voicelist, [FluidSynthT, :pointer, :int, :int], :void
1407
+
1408
+ # (Not documented)
1409
+ #
1410
+ # @method synth_handle_midi_event(data, event)
1411
+ # @param [FFI::Pointer(*Void)] data
1412
+ # @param [FluidMidiEventT] event
1413
+ # @return [Integer]
1414
+ # @scope class
1415
+ attach_function :synth_handle_midi_event, :fluid_synth_handle_midi_event, [:pointer, FluidMidiEventT], :int
1416
+
1417
+ # (Not documented)
1418
+ #
1419
+ # @method synth_set_midi_router(synth, router)
1420
+ # @param [FluidSynthT] synth
1421
+ # @param [FluidMidiRouterT] router
1422
+ # @return [nil]
1423
+ # @scope class
1424
+ attach_function :synth_set_midi_router, :fluid_synth_set_midi_router, [FluidSynthT, FluidMidiRouterT], :void
1425
+
1426
+ # < Synthesis voice instance
1427
+ #
1428
+ # = Fields:
1429
+ # :data ::
1430
+ # (FFI::Pointer(*Void)) < User defined data pointer
1431
+ # :free ::
1432
+ # (FFI::Pointer(*)) The free method should free the memory allocated for the loader in
1433
+ # addition to any private data.
1434
+ # @param loader SoundFont loader
1435
+ # @return Should return 0 if no error occured, non-zero otherwise
1436
+ # :load ::
1437
+ # (FFI::Pointer(*)) Method to load an instrument file (does not actually need to be a real file name,
1438
+ # could be another type of string identifier that the \a loader understands).
1439
+ # @param loader SoundFont loader
1440
+ # @param filename File name or other string identifier
1441
+ # @return The loaded instrument file (SoundFont) or NULL if an error occured.
1442
+ class FluidSfloaderT < FFI::Struct
1443
+ layout :data, :pointer,
1444
+ :free, :pointer,
1445
+ :load, :pointer
1446
+ end
1447
+
1448
+ # < SoundFont loader plugin
1449
+ #
1450
+ # = Fields:
1451
+ # :data ::
1452
+ # (FFI::Pointer(*Void)) < User defined data
1453
+ # :id ::
1454
+ # (Integer) < SoundFont ID
1455
+ # :free ::
1456
+ # (FFI::Pointer(*)) Method to free a virtual SoundFont bank.
1457
+ # @param sfont Virtual SoundFont to free.
1458
+ # @return Should return 0 when it was able to free all resources or non-zero
1459
+ # if some of the samples could not be freed because they are still in use,
1460
+ # in which case the free will be tried again later, until success.
1461
+ # :get_name ::
1462
+ # (FFI::Pointer(*)) Method to return the name of a virtual SoundFont.
1463
+ # @param sfont Virtual SoundFont
1464
+ # @return The name of the virtual SoundFont.
1465
+ # :get_preset ::
1466
+ # (FFI::Pointer(*)) Get a virtual SoundFont preset by bank and program numbers.
1467
+ # @param sfont Virtual SoundFont
1468
+ # @param bank MIDI bank number (0-16384)
1469
+ # @param prenum MIDI preset number (0-127)
1470
+ # @return Should return an allocated virtual preset or NULL if it could not
1471
+ # be found.
1472
+ # :iteration_start ::
1473
+ # (FFI::Pointer(*)) Start virtual SoundFont preset iteration method.
1474
+ # @param sfont Virtual SoundFont
1475
+ #
1476
+ # Starts/re-starts virtual preset iteration in a SoundFont.
1477
+ # :iteration_next ::
1478
+ # (FFI::Pointer(*)) Virtual SoundFont preset iteration function.
1479
+ # @param sfont Virtual SoundFont
1480
+ # @param preset Caller supplied preset to fill in with current preset information
1481
+ # @return 0 when no more presets are available, 1 otherwise
1482
+ #
1483
+ # Should store preset information to the caller supplied \a preset structure
1484
+ # and advance the internal iteration state to the next preset for subsequent
1485
+ # calls.
1486
+ class FluidSfontT < FFI::Struct
1487
+ layout :data, :pointer,
1488
+ :id, :uint,
1489
+ :free, :pointer,
1490
+ :get_name, :pointer,
1491
+ :get_preset, :pointer,
1492
+ :iteration_start, :pointer,
1493
+ :iteration_next, :pointer
1494
+ end
1495
+
1496
+ # < SoundFont
1497
+ #
1498
+ # = Fields:
1499
+ # :data ::
1500
+ # (FFI::Pointer(*Void)) < User supplied data
1501
+ # :sfont ::
1502
+ # (FluidSfontT) < Parent virtual SoundFont
1503
+ # :free ::
1504
+ # (FFI::Pointer(*)) Method to free a virtual SoundFont preset.
1505
+ # @param preset Virtual SoundFont preset
1506
+ # @return Should return 0
1507
+ # :get_name ::
1508
+ # (FFI::Pointer(*)) Method to get a virtual SoundFont preset name.
1509
+ # @param preset Virtual SoundFont preset
1510
+ # @return Should return the name of the preset. The returned string must be
1511
+ # valid for the duration of the virtual preset (or the duration of the
1512
+ # SoundFont, in the case of preset iteration).
1513
+ # :get_banknum ::
1514
+ # (FFI::Pointer(*)) Method to get a virtual SoundFont preset MIDI bank number.
1515
+ # @param preset Virtual SoundFont preset
1516
+ # @param return The bank number of the preset
1517
+ # :get_num ::
1518
+ # (FFI::Pointer(*)) Method to get a virtual SoundFont preset MIDI program number.
1519
+ # @param preset Virtual SoundFont preset
1520
+ # @param return The program number of the preset
1521
+ # :noteon ::
1522
+ # (FFI::Pointer(*)) Method to handle a noteon event (synthesize the instrument).
1523
+ # @param preset Virtual SoundFont preset
1524
+ # @param synth Synthesizer instance
1525
+ # @param chan MIDI channel number of the note on event
1526
+ # @param key MIDI note number (0-127)
1527
+ # @param vel MIDI velocity (0-127)
1528
+ # @return #FLUID_OK on success (0) or #FLUID_FAILED (-1) otherwise
1529
+ #
1530
+ # This method may be called from within synthesis context and therefore
1531
+ # should be as efficient as possible and not perform any operations considered
1532
+ # bad for realtime audio output (memory allocations and other OS calls).
1533
+ #
1534
+ # Call fluid_synth_alloc_voice() for every sample that has
1535
+ # to be played. fluid_synth_alloc_voice() expects a pointer to a
1536
+ # #fluid_sample_t structure and returns a pointer to the opaque
1537
+ # #fluid_voice_t structure. To set or increment the values of a
1538
+ # generator, use fluid_voice_gen_set() or fluid_voice_gen_incr(). When you are
1539
+ # finished initializing the voice call fluid_voice_start() to
1540
+ # start playing the synthesis voice. Starting with FluidSynth 1.1.0 all voices
1541
+ # created will be started at the same time.
1542
+ # :notify ::
1543
+ # (FFI::Pointer(*)) Virtual SoundFont preset notify method.
1544
+ # @param preset Virtual SoundFont preset
1545
+ # @param reason #FLUID_PRESET_SELECTED or #FLUID_PRESET_UNSELECTED
1546
+ # @param chan MIDI channel number
1547
+ # @return Should return #FLUID_OK
1548
+ #
1549
+ # Implement this optional method if the preset needs to be notified about
1550
+ # preset select and unselect events.
1551
+ #
1552
+ # This method may be called from within synthesis context and therefore
1553
+ # should be as efficient as possible and not perform any operations considered
1554
+ # bad for realtime audio output (memory allocations and other OS calls).
1555
+ class FluidPresetT < FFI::Struct
1556
+ layout :data, :pointer,
1557
+ :sfont, FluidSfontT,
1558
+ :free, :pointer,
1559
+ :get_name, :pointer,
1560
+ :get_banknum, :pointer,
1561
+ :get_num, :pointer,
1562
+ :noteon, :pointer,
1563
+ :notify, :pointer
1564
+ end
1565
+
1566
+ # < SoundFont preset
1567
+ #
1568
+ # = Fields:
1569
+ # :name ::
1570
+ # (Array<Integer>) < Sample name
1571
+ # :start ::
1572
+ # (Integer) < Start index
1573
+ # :end ::
1574
+ # (Integer) < End index, index of last valid sample point (contrary to SF spec)
1575
+ # :loopstart ::
1576
+ # (Integer) < Loop start index
1577
+ # :loopend ::
1578
+ # (Integer) < Loop end index, first point following the loop (superimposed on loopstart)
1579
+ # :samplerate ::
1580
+ # (Integer) < Sample rate
1581
+ # :origpitch ::
1582
+ # (Integer) < Original pitch (MIDI note number, 0-127)
1583
+ # :pitchadj ::
1584
+ # (Integer) < Fine pitch adjustment (+/- 99 cents)
1585
+ # :sampletype ::
1586
+ # (Integer) < Values: #FLUID_SAMPLETYPE_MONO, FLUID_SAMPLETYPE_RIGHT, FLUID_SAMPLETYPE_LEFT, FLUID_SAMPLETYPE_ROM
1587
+ # :valid ::
1588
+ # (Integer) < Should be TRUE if sample data is valid, FALSE otherwise (in which case it will not be synthesized)
1589
+ # :data ::
1590
+ # (FFI::Pointer(*Short)) < Pointer to the sample's data
1591
+ # :amplitude_that_reaches_noise_floor_is_valid ::
1592
+ # (Integer) < Indicates if \a amplitude_that_reaches_noise_floor is valid (TRUE), set to FALSE initially to calculate.
1593
+ # :amplitude_that_reaches_noise_floor ::
1594
+ # (Float) < The amplitude at which the sample's loop will be below the noise floor. For voice off optimization, calculated automatically.
1595
+ # :refcount ::
1596
+ # (Integer) < Count of voices using this sample (use #fluid_sample_refcount to access this field)
1597
+ # :notify ::
1598
+ # (FFI::Pointer(*)) Implement this function to receive notification when sample is no longer used.
1599
+ # @param sample Virtual SoundFont sample
1600
+ # @param reason #FLUID_SAMPLE_DONE only currently
1601
+ # @return Should return #FLUID_OK
1602
+ # :userdata ::
1603
+ # (FFI::Pointer(*Void)) < User defined data
1604
+ class FluidSampleT < FFI::Struct
1605
+ layout :name, [:char, 21],
1606
+ :start, :uint,
1607
+ :end, :uint,
1608
+ :loopstart, :uint,
1609
+ :loopend, :uint,
1610
+ :samplerate, :uint,
1611
+ :origpitch, :int,
1612
+ :pitchadj, :int,
1613
+ :sampletype, :int,
1614
+ :valid, :int,
1615
+ :data, :pointer,
1616
+ :amplitude_that_reaches_noise_floor_is_valid, :int,
1617
+ :amplitude_that_reaches_noise_floor, :double,
1618
+ :refcount, :uint,
1619
+ :notify, :pointer,
1620
+ :userdata, :pointer
1621
+ end
1622
+
1623
+ # (Not documented)
1624
+ #
1625
+ # <em>This entry is only for documentation and no real method.</em>
1626
+ #
1627
+ # @method _callback_audio_func_t_(len, nin, in, nout, out)
1628
+ # @param [Integer] len
1629
+ # @param [Integer] nin
1630
+ # @param [FFI::Pointer(**Float)] in
1631
+ # @param [Integer] nout
1632
+ # @param [FFI::Pointer(**Float)] out
1633
+ # @return [FFI::Pointer(*Void)]
1634
+ # @scope class
1635
+ callback :audio_func_t, [:int, :int, :pointer, :int, :pointer], :pointer
1636
+
1637
+ # (Not documented)
1638
+ #
1639
+ # @method new_fluid_audio_driver(settings, synth)
1640
+ # @param [FluidHashtableT] settings
1641
+ # @param [FluidSynthT] synth
1642
+ # @return [FluidAudioDriverT]
1643
+ # @scope class
1644
+ attach_function :new_fluid_audio_driver, :new_fluid_audio_driver, [FluidHashtableT, FluidSynthT], FluidAudioDriverT
1645
+
1646
+ # (Not documented)
1647
+ #
1648
+ # @method new_fluid_audio_driver2(settings, func, data)
1649
+ # @param [FluidHashtableT] settings
1650
+ # @param [Proc(_callback_audio_func_t_)] func
1651
+ # @param [FFI::Pointer(*Void)] data
1652
+ # @return [FluidAudioDriverT]
1653
+ # @scope class
1654
+ attach_function :new_fluid_audio_driver2, :new_fluid_audio_driver2, [FluidHashtableT, :audio_func_t, :pointer], FluidAudioDriverT
1655
+
1656
+ # (Not documented)
1657
+ #
1658
+ # @method delete_fluid_audio_driver(driver)
1659
+ # @param [FluidAudioDriverT] driver
1660
+ # @return [nil]
1661
+ # @scope class
1662
+ attach_function :delete_fluid_audio_driver, :delete_fluid_audio_driver, [FluidAudioDriverT], :void
1663
+
1664
+ # (Not documented)
1665
+ #
1666
+ # @method new_fluid_file_renderer(synth)
1667
+ # @param [FluidSynthT] synth
1668
+ # @return [FluidFileRendererT]
1669
+ # @scope class
1670
+ attach_function :new_fluid_file_renderer, :new_fluid_file_renderer, [FluidSynthT], FluidFileRendererT
1671
+
1672
+ # (Not documented)
1673
+ #
1674
+ # @method file_renderer_process_block(dev)
1675
+ # @param [FluidFileRendererT] dev
1676
+ # @return [Integer]
1677
+ # @scope class
1678
+ attach_function :file_renderer_process_block, :fluid_file_renderer_process_block, [FluidFileRendererT], :int
1679
+
1680
+ # (Not documented)
1681
+ #
1682
+ # @method delete_fluid_file_renderer(dev)
1683
+ # @param [FluidFileRendererT] dev
1684
+ # @return [nil]
1685
+ # @scope class
1686
+ attach_function :delete_fluid_file_renderer, :delete_fluid_file_renderer, [FluidFileRendererT], :void
1687
+
1688
+ # (Not documented)
1689
+ #
1690
+ # <em>This entry is only for documentation and no real method. The FFI::Enum can be accessed via #enum_type(:seq_event_type).</em>
1691
+ #
1692
+ # === Options:
1693
+ # :note ::
1694
+ #
1695
+ # :noteon ::
1696
+ # < Note event with duration
1697
+ # :noteoff ::
1698
+ # < Note on event
1699
+ # :allsoundsoff ::
1700
+ # < Note off event
1701
+ # :allnotesoff ::
1702
+ # < All sounds off event
1703
+ # :bankselect ::
1704
+ # < All notes off event
1705
+ # :programchange ::
1706
+ # < Bank select message
1707
+ # :programselect ::
1708
+ # < Program change message
1709
+ # :pitchbend ::
1710
+ # < Program select message (DOCME)
1711
+ # :pitchwheelsens ::
1712
+ # < Pitch bend message
1713
+ # :modulation ::
1714
+ # < Pitch wheel sensitivity set message @since 1.1.0 was mispelled previously
1715
+ # :sustain ::
1716
+ # < Modulation controller event
1717
+ # :controlchange ::
1718
+ # < Sustain controller event
1719
+ # :pan ::
1720
+ # < MIDI control change event
1721
+ # :volume ::
1722
+ # < Stereo pan set event
1723
+ # :reverbsend ::
1724
+ # < Volume set event
1725
+ # :chorussend ::
1726
+ # < Reverb send set event
1727
+ # :timer ::
1728
+ # < Chorus send set event
1729
+ # :anycontrolchange ::
1730
+ # < Timer event (DOCME)
1731
+ # :channelpressure ::
1732
+ # < DOCME (used for remove_events only)
1733
+ # :systemreset ::
1734
+ # < Channel aftertouch event @since 1.1.0
1735
+ # :unregistering ::
1736
+ # < System reset event @since 1.1.0
1737
+ # :lastevent ::
1738
+ # < Called when a sequencer client is being unregistered. @since 1.1.0
1739
+ #
1740
+ # @method _enum_seq_event_type_
1741
+ # @return [Symbol]
1742
+ # @scope class
1743
+ enum :seq_event_type, [
1744
+ :note, 0,
1745
+ :noteon,
1746
+ :noteoff,
1747
+ :allsoundsoff,
1748
+ :allnotesoff,
1749
+ :bankselect,
1750
+ :programchange,
1751
+ :programselect,
1752
+ :pitchbend,
1753
+ :pitchwheelsens,
1754
+ :modulation,
1755
+ :sustain,
1756
+ :controlchange,
1757
+ :pan,
1758
+ :volume,
1759
+ :reverbsend,
1760
+ :chorussend,
1761
+ :timer,
1762
+ :anycontrolchange,
1763
+ :channelpressure,
1764
+ :systemreset,
1765
+ :unregistering,
1766
+ :lastevent
1767
+ ]
1768
+
1769
+ # (Not documented)
1770
+ #
1771
+ # @method new_fluid_event()
1772
+ # @return [FluidEventT]
1773
+ # @scope class
1774
+ attach_function :new_fluid_event, :new_fluid_event, [], FluidEventT
1775
+
1776
+ # (Not documented)
1777
+ #
1778
+ # @method delete_fluid_event(evt)
1779
+ # @param [FluidEventT] evt
1780
+ # @return [nil]
1781
+ # @scope class
1782
+ attach_function :delete_fluid_event, :delete_fluid_event, [FluidEventT], :void
1783
+
1784
+ # Initializing events
1785
+ #
1786
+ # @method event_set_source(evt, src)
1787
+ # @param [FluidEventT] evt
1788
+ # @param [Integer] src
1789
+ # @return [nil]
1790
+ # @scope class
1791
+ attach_function :event_set_source, :fluid_event_set_source, [FluidEventT, :short], :void
1792
+
1793
+ # (Not documented)
1794
+ #
1795
+ # @method event_set_dest(evt, dest)
1796
+ # @param [FluidEventT] evt
1797
+ # @param [Integer] dest
1798
+ # @return [nil]
1799
+ # @scope class
1800
+ attach_function :event_set_dest, :fluid_event_set_dest, [FluidEventT, :short], :void
1801
+
1802
+ # Timer events
1803
+ #
1804
+ # @method event_timer(evt, data)
1805
+ # @param [FluidEventT] evt
1806
+ # @param [FFI::Pointer(*Void)] data
1807
+ # @return [nil]
1808
+ # @scope class
1809
+ attach_function :event_timer, :fluid_event_timer, [FluidEventT, :pointer], :void
1810
+
1811
+ # Note events
1812
+ #
1813
+ # @method event_note(evt, channel, key, vel, duration)
1814
+ # @param [FluidEventT] evt
1815
+ # @param [Integer] channel
1816
+ # @param [Integer] key
1817
+ # @param [Integer] vel
1818
+ # @param [Integer] duration
1819
+ # @return [nil]
1820
+ # @scope class
1821
+ attach_function :event_note, :fluid_event_note, [FluidEventT, :int, :short, :short, :uint], :void
1822
+
1823
+ # (Not documented)
1824
+ #
1825
+ # @method event_noteon(evt, channel, key, vel)
1826
+ # @param [FluidEventT] evt
1827
+ # @param [Integer] channel
1828
+ # @param [Integer] key
1829
+ # @param [Integer] vel
1830
+ # @return [nil]
1831
+ # @scope class
1832
+ attach_function :event_noteon, :fluid_event_noteon, [FluidEventT, :int, :short, :short], :void
1833
+
1834
+ # (Not documented)
1835
+ #
1836
+ # @method event_noteoff(evt, channel, key)
1837
+ # @param [FluidEventT] evt
1838
+ # @param [Integer] channel
1839
+ # @param [Integer] key
1840
+ # @return [nil]
1841
+ # @scope class
1842
+ attach_function :event_noteoff, :fluid_event_noteoff, [FluidEventT, :int, :short], :void
1843
+
1844
+ # (Not documented)
1845
+ #
1846
+ # @method event_all_sounds_off(evt, channel)
1847
+ # @param [FluidEventT] evt
1848
+ # @param [Integer] channel
1849
+ # @return [nil]
1850
+ # @scope class
1851
+ attach_function :event_all_sounds_off, :fluid_event_all_sounds_off, [FluidEventT, :int], :void
1852
+
1853
+ # (Not documented)
1854
+ #
1855
+ # @method event_all_notes_off(evt, channel)
1856
+ # @param [FluidEventT] evt
1857
+ # @param [Integer] channel
1858
+ # @return [nil]
1859
+ # @scope class
1860
+ attach_function :event_all_notes_off, :fluid_event_all_notes_off, [FluidEventT, :int], :void
1861
+
1862
+ # Instrument selection
1863
+ #
1864
+ # @method event_bank_select(evt, channel, bank_num)
1865
+ # @param [FluidEventT] evt
1866
+ # @param [Integer] channel
1867
+ # @param [Integer] bank_num
1868
+ # @return [nil]
1869
+ # @scope class
1870
+ attach_function :event_bank_select, :fluid_event_bank_select, [FluidEventT, :int, :short], :void
1871
+
1872
+ # (Not documented)
1873
+ #
1874
+ # @method event_program_change(evt, channel, preset_num)
1875
+ # @param [FluidEventT] evt
1876
+ # @param [Integer] channel
1877
+ # @param [Integer] preset_num
1878
+ # @return [nil]
1879
+ # @scope class
1880
+ attach_function :event_program_change, :fluid_event_program_change, [FluidEventT, :int, :short], :void
1881
+
1882
+ # (Not documented)
1883
+ #
1884
+ # @method event_program_select(evt, channel, sfont_id, bank_num, preset_num)
1885
+ # @param [FluidEventT] evt
1886
+ # @param [Integer] channel
1887
+ # @param [Integer] sfont_id
1888
+ # @param [Integer] bank_num
1889
+ # @param [Integer] preset_num
1890
+ # @return [nil]
1891
+ # @scope class
1892
+ attach_function :event_program_select, :fluid_event_program_select, [FluidEventT, :int, :uint, :short, :short], :void
1893
+
1894
+ # Real-time generic instrument controllers
1895
+ #
1896
+ # @method event_control_change(evt, channel, control, val)
1897
+ # @param [FluidEventT] evt
1898
+ # @param [Integer] channel
1899
+ # @param [Integer] control
1900
+ # @param [Integer] val
1901
+ # @return [nil]
1902
+ # @scope class
1903
+ attach_function :event_control_change, :fluid_event_control_change, [FluidEventT, :int, :short, :short], :void
1904
+
1905
+ # Real-time instrument controllers shortcuts
1906
+ #
1907
+ # @method event_pitch_bend(evt, channel, val)
1908
+ # @param [FluidEventT] evt
1909
+ # @param [Integer] channel
1910
+ # @param [Integer] val
1911
+ # @return [nil]
1912
+ # @scope class
1913
+ attach_function :event_pitch_bend, :fluid_event_pitch_bend, [FluidEventT, :int, :int], :void
1914
+
1915
+ # (Not documented)
1916
+ #
1917
+ # @method event_pitch_wheelsens(evt, channel, val)
1918
+ # @param [FluidEventT] evt
1919
+ # @param [Integer] channel
1920
+ # @param [Integer] val
1921
+ # @return [nil]
1922
+ # @scope class
1923
+ attach_function :event_pitch_wheelsens, :fluid_event_pitch_wheelsens, [FluidEventT, :int, :short], :void
1924
+
1925
+ # (Not documented)
1926
+ #
1927
+ # @method event_modulation(evt, channel, val)
1928
+ # @param [FluidEventT] evt
1929
+ # @param [Integer] channel
1930
+ # @param [Integer] val
1931
+ # @return [nil]
1932
+ # @scope class
1933
+ attach_function :event_modulation, :fluid_event_modulation, [FluidEventT, :int, :short], :void
1934
+
1935
+ # (Not documented)
1936
+ #
1937
+ # @method event_sustain(evt, channel, val)
1938
+ # @param [FluidEventT] evt
1939
+ # @param [Integer] channel
1940
+ # @param [Integer] val
1941
+ # @return [nil]
1942
+ # @scope class
1943
+ attach_function :event_sustain, :fluid_event_sustain, [FluidEventT, :int, :short], :void
1944
+
1945
+ # (Not documented)
1946
+ #
1947
+ # @method event_pan(evt, channel, val)
1948
+ # @param [FluidEventT] evt
1949
+ # @param [Integer] channel
1950
+ # @param [Integer] val
1951
+ # @return [nil]
1952
+ # @scope class
1953
+ attach_function :event_pan, :fluid_event_pan, [FluidEventT, :int, :short], :void
1954
+
1955
+ # (Not documented)
1956
+ #
1957
+ # @method event_volume(evt, channel, val)
1958
+ # @param [FluidEventT] evt
1959
+ # @param [Integer] channel
1960
+ # @param [Integer] val
1961
+ # @return [nil]
1962
+ # @scope class
1963
+ attach_function :event_volume, :fluid_event_volume, [FluidEventT, :int, :short], :void
1964
+
1965
+ # (Not documented)
1966
+ #
1967
+ # @method event_reverb_send(evt, channel, val)
1968
+ # @param [FluidEventT] evt
1969
+ # @param [Integer] channel
1970
+ # @param [Integer] val
1971
+ # @return [nil]
1972
+ # @scope class
1973
+ attach_function :event_reverb_send, :fluid_event_reverb_send, [FluidEventT, :int, :short], :void
1974
+
1975
+ # (Not documented)
1976
+ #
1977
+ # @method event_chorus_send(evt, channel, val)
1978
+ # @param [FluidEventT] evt
1979
+ # @param [Integer] channel
1980
+ # @param [Integer] val
1981
+ # @return [nil]
1982
+ # @scope class
1983
+ attach_function :event_chorus_send, :fluid_event_chorus_send, [FluidEventT, :int, :short], :void
1984
+
1985
+ # (Not documented)
1986
+ #
1987
+ # @method event_channel_pressure(evt, channel, val)
1988
+ # @param [FluidEventT] evt
1989
+ # @param [Integer] channel
1990
+ # @param [Integer] val
1991
+ # @return [nil]
1992
+ # @scope class
1993
+ attach_function :event_channel_pressure, :fluid_event_channel_pressure, [FluidEventT, :int, :short], :void
1994
+
1995
+ # (Not documented)
1996
+ #
1997
+ # @method event_system_reset(evt)
1998
+ # @param [FluidEventT] evt
1999
+ # @return [nil]
2000
+ # @scope class
2001
+ attach_function :event_system_reset, :fluid_event_system_reset, [FluidEventT], :void
2002
+
2003
+ # Only for removing events
2004
+ #
2005
+ # @method event_any_control_change(evt, channel)
2006
+ # @param [FluidEventT] evt
2007
+ # @param [Integer] channel
2008
+ # @return [nil]
2009
+ # @scope class
2010
+ attach_function :event_any_control_change, :fluid_event_any_control_change, [FluidEventT, :int], :void
2011
+
2012
+ # Only when unregistering clients
2013
+ #
2014
+ # @method event_unregistering(evt)
2015
+ # @param [FluidEventT] evt
2016
+ # @return [nil]
2017
+ # @scope class
2018
+ attach_function :event_unregistering, :fluid_event_unregistering, [FluidEventT], :void
2019
+
2020
+ # Accessing event data
2021
+ #
2022
+ # @method event_get_type(evt)
2023
+ # @param [FluidEventT] evt
2024
+ # @return [Integer]
2025
+ # @scope class
2026
+ attach_function :event_get_type, :fluid_event_get_type, [FluidEventT], :int
2027
+
2028
+ # (Not documented)
2029
+ #
2030
+ # @method event_get_source(evt)
2031
+ # @param [FluidEventT] evt
2032
+ # @return [Integer]
2033
+ # @scope class
2034
+ attach_function :event_get_source, :fluid_event_get_source, [FluidEventT], :short
2035
+
2036
+ # (Not documented)
2037
+ #
2038
+ # @method event_get_dest(evt)
2039
+ # @param [FluidEventT] evt
2040
+ # @return [Integer]
2041
+ # @scope class
2042
+ attach_function :event_get_dest, :fluid_event_get_dest, [FluidEventT], :short
2043
+
2044
+ # (Not documented)
2045
+ #
2046
+ # @method event_get_channel(evt)
2047
+ # @param [FluidEventT] evt
2048
+ # @return [Integer]
2049
+ # @scope class
2050
+ attach_function :event_get_channel, :fluid_event_get_channel, [FluidEventT], :int
2051
+
2052
+ # (Not documented)
2053
+ #
2054
+ # @method event_get_key(evt)
2055
+ # @param [FluidEventT] evt
2056
+ # @return [Integer]
2057
+ # @scope class
2058
+ attach_function :event_get_key, :fluid_event_get_key, [FluidEventT], :short
2059
+
2060
+ # (Not documented)
2061
+ #
2062
+ # @method event_get_velocity(evt)
2063
+ # @param [FluidEventT] evt
2064
+ # @return [Integer]
2065
+ # @scope class
2066
+ attach_function :event_get_velocity, :fluid_event_get_velocity, [FluidEventT], :short
2067
+
2068
+ # (Not documented)
2069
+ #
2070
+ # @method event_get_control(evt)
2071
+ # @param [FluidEventT] evt
2072
+ # @return [Integer]
2073
+ # @scope class
2074
+ attach_function :event_get_control, :fluid_event_get_control, [FluidEventT], :short
2075
+
2076
+ # (Not documented)
2077
+ #
2078
+ # @method event_get_value(evt)
2079
+ # @param [FluidEventT] evt
2080
+ # @return [Integer]
2081
+ # @scope class
2082
+ attach_function :event_get_value, :fluid_event_get_value, [FluidEventT], :short
2083
+
2084
+ # (Not documented)
2085
+ #
2086
+ # @method event_get_program(evt)
2087
+ # @param [FluidEventT] evt
2088
+ # @return [Integer]
2089
+ # @scope class
2090
+ attach_function :event_get_program, :fluid_event_get_program, [FluidEventT], :short
2091
+
2092
+ # (Not documented)
2093
+ #
2094
+ # @method event_get_data(evt)
2095
+ # @param [FluidEventT] evt
2096
+ # @return [FFI::Pointer(*Void)]
2097
+ # @scope class
2098
+ attach_function :event_get_data, :fluid_event_get_data, [FluidEventT], :pointer
2099
+
2100
+ # (Not documented)
2101
+ #
2102
+ # @method event_get_duration(evt)
2103
+ # @param [FluidEventT] evt
2104
+ # @return [Integer]
2105
+ # @scope class
2106
+ attach_function :event_get_duration, :fluid_event_get_duration, [FluidEventT], :uint
2107
+
2108
+ # (Not documented)
2109
+ #
2110
+ # @method event_get_bank(evt)
2111
+ # @param [FluidEventT] evt
2112
+ # @return [Integer]
2113
+ # @scope class
2114
+ attach_function :event_get_bank, :fluid_event_get_bank, [FluidEventT], :short
2115
+
2116
+ # (Not documented)
2117
+ #
2118
+ # @method event_get_pitch(evt)
2119
+ # @param [FluidEventT] evt
2120
+ # @return [Integer]
2121
+ # @scope class
2122
+ attach_function :event_get_pitch, :fluid_event_get_pitch, [FluidEventT], :int
2123
+
2124
+ # (Not documented)
2125
+ #
2126
+ # @method event_get_sfont_id(evt)
2127
+ # @param [FluidEventT] evt
2128
+ # @return [Integer]
2129
+ # @scope class
2130
+ attach_function :event_get_sfont_id, :fluid_event_get_sfont_id, [FluidEventT], :uint
2131
+
2132
+ # (Not documented)
2133
+ #
2134
+ # @method new_fluid_midi_event()
2135
+ # @return [FluidMidiEventT]
2136
+ # @scope class
2137
+ attach_function :new_fluid_midi_event, :new_fluid_midi_event, [], FluidMidiEventT
2138
+
2139
+ # (Not documented)
2140
+ #
2141
+ # @method delete_fluid_midi_event(event)
2142
+ # @param [FluidMidiEventT] event
2143
+ # @return [Integer]
2144
+ # @scope class
2145
+ attach_function :delete_fluid_midi_event, :delete_fluid_midi_event, [FluidMidiEventT], :int
2146
+
2147
+ # (Not documented)
2148
+ #
2149
+ # @method midi_event_set_type(evt, type)
2150
+ # @param [FluidMidiEventT] evt
2151
+ # @param [Integer] type
2152
+ # @return [Integer]
2153
+ # @scope class
2154
+ attach_function :midi_event_set_type, :fluid_midi_event_set_type, [FluidMidiEventT, :int], :int
2155
+
2156
+ # (Not documented)
2157
+ #
2158
+ # @method midi_event_get_type(evt)
2159
+ # @param [FluidMidiEventT] evt
2160
+ # @return [Integer]
2161
+ # @scope class
2162
+ attach_function :midi_event_get_type, :fluid_midi_event_get_type, [FluidMidiEventT], :int
2163
+
2164
+ # (Not documented)
2165
+ #
2166
+ # @method midi_event_set_channel(evt, chan)
2167
+ # @param [FluidMidiEventT] evt
2168
+ # @param [Integer] chan
2169
+ # @return [Integer]
2170
+ # @scope class
2171
+ attach_function :midi_event_set_channel, :fluid_midi_event_set_channel, [FluidMidiEventT, :int], :int
2172
+
2173
+ # (Not documented)
2174
+ #
2175
+ # @method midi_event_get_channel(evt)
2176
+ # @param [FluidMidiEventT] evt
2177
+ # @return [Integer]
2178
+ # @scope class
2179
+ attach_function :midi_event_get_channel, :fluid_midi_event_get_channel, [FluidMidiEventT], :int
2180
+
2181
+ # (Not documented)
2182
+ #
2183
+ # @method midi_event_get_key(evt)
2184
+ # @param [FluidMidiEventT] evt
2185
+ # @return [Integer]
2186
+ # @scope class
2187
+ attach_function :midi_event_get_key, :fluid_midi_event_get_key, [FluidMidiEventT], :int
2188
+
2189
+ # (Not documented)
2190
+ #
2191
+ # @method midi_event_set_key(evt, key)
2192
+ # @param [FluidMidiEventT] evt
2193
+ # @param [Integer] key
2194
+ # @return [Integer]
2195
+ # @scope class
2196
+ attach_function :midi_event_set_key, :fluid_midi_event_set_key, [FluidMidiEventT, :int], :int
2197
+
2198
+ # (Not documented)
2199
+ #
2200
+ # @method midi_event_get_velocity(evt)
2201
+ # @param [FluidMidiEventT] evt
2202
+ # @return [Integer]
2203
+ # @scope class
2204
+ attach_function :midi_event_get_velocity, :fluid_midi_event_get_velocity, [FluidMidiEventT], :int
2205
+
2206
+ # (Not documented)
2207
+ #
2208
+ # @method midi_event_set_velocity(evt, vel)
2209
+ # @param [FluidMidiEventT] evt
2210
+ # @param [Integer] vel
2211
+ # @return [Integer]
2212
+ # @scope class
2213
+ attach_function :midi_event_set_velocity, :fluid_midi_event_set_velocity, [FluidMidiEventT, :int], :int
2214
+
2215
+ # (Not documented)
2216
+ #
2217
+ # @method midi_event_get_control(evt)
2218
+ # @param [FluidMidiEventT] evt
2219
+ # @return [Integer]
2220
+ # @scope class
2221
+ attach_function :midi_event_get_control, :fluid_midi_event_get_control, [FluidMidiEventT], :int
2222
+
2223
+ # (Not documented)
2224
+ #
2225
+ # @method midi_event_set_control(evt, ctrl)
2226
+ # @param [FluidMidiEventT] evt
2227
+ # @param [Integer] ctrl
2228
+ # @return [Integer]
2229
+ # @scope class
2230
+ attach_function :midi_event_set_control, :fluid_midi_event_set_control, [FluidMidiEventT, :int], :int
2231
+
2232
+ # (Not documented)
2233
+ #
2234
+ # @method midi_event_get_value(evt)
2235
+ # @param [FluidMidiEventT] evt
2236
+ # @return [Integer]
2237
+ # @scope class
2238
+ attach_function :midi_event_get_value, :fluid_midi_event_get_value, [FluidMidiEventT], :int
2239
+
2240
+ # (Not documented)
2241
+ #
2242
+ # @method midi_event_set_value(evt, val)
2243
+ # @param [FluidMidiEventT] evt
2244
+ # @param [Integer] val
2245
+ # @return [Integer]
2246
+ # @scope class
2247
+ attach_function :midi_event_set_value, :fluid_midi_event_set_value, [FluidMidiEventT, :int], :int
2248
+
2249
+ # (Not documented)
2250
+ #
2251
+ # @method midi_event_get_program(evt)
2252
+ # @param [FluidMidiEventT] evt
2253
+ # @return [Integer]
2254
+ # @scope class
2255
+ attach_function :midi_event_get_program, :fluid_midi_event_get_program, [FluidMidiEventT], :int
2256
+
2257
+ # (Not documented)
2258
+ #
2259
+ # @method midi_event_set_program(evt, val)
2260
+ # @param [FluidMidiEventT] evt
2261
+ # @param [Integer] val
2262
+ # @return [Integer]
2263
+ # @scope class
2264
+ attach_function :midi_event_set_program, :fluid_midi_event_set_program, [FluidMidiEventT, :int], :int
2265
+
2266
+ # (Not documented)
2267
+ #
2268
+ # @method midi_event_get_pitch(evt)
2269
+ # @param [FluidMidiEventT] evt
2270
+ # @return [Integer]
2271
+ # @scope class
2272
+ attach_function :midi_event_get_pitch, :fluid_midi_event_get_pitch, [FluidMidiEventT], :int
2273
+
2274
+ # (Not documented)
2275
+ #
2276
+ # @method midi_event_set_pitch(evt, val)
2277
+ # @param [FluidMidiEventT] evt
2278
+ # @param [Integer] val
2279
+ # @return [Integer]
2280
+ # @scope class
2281
+ attach_function :midi_event_set_pitch, :fluid_midi_event_set_pitch, [FluidMidiEventT, :int], :int
2282
+
2283
+ # (Not documented)
2284
+ #
2285
+ # @method midi_event_set_sysex(evt, data, size, dynamic)
2286
+ # @param [FluidMidiEventT] evt
2287
+ # @param [FFI::Pointer(*Void)] data
2288
+ # @param [Integer] size
2289
+ # @param [Integer] dynamic
2290
+ # @return [Integer]
2291
+ # @scope class
2292
+ attach_function :midi_event_set_sysex, :fluid_midi_event_set_sysex, [FluidMidiEventT, :pointer, :int, :int], :int
2293
+
2294
+ # MIDI router rule type.
2295
+ # @since 1.1.0
2296
+ #
2297
+ # <em>This entry is only for documentation and no real method. The FFI::Enum can be accessed via #enum_type(:midi_router_rule_type).</em>
2298
+ #
2299
+ # === Options:
2300
+ # :note ::
2301
+ #
2302
+ # :cc ::
2303
+ # < MIDI note rule
2304
+ # :prog_change ::
2305
+ # < MIDI controller rule
2306
+ # :pitch_bend ::
2307
+ # < MIDI program change rule
2308
+ # :channel_pressure ::
2309
+ # < MIDI pitch bend rule
2310
+ # :key_pressure ::
2311
+ # < MIDI channel pressure rule
2312
+ # :count ::
2313
+ # < MIDI key pressure rule
2314
+ #
2315
+ # @method _enum_midi_router_rule_type_
2316
+ # @return [Symbol]
2317
+ # @scope class
2318
+ enum :midi_router_rule_type, [
2319
+ :note,
2320
+ :cc,
2321
+ :prog_change,
2322
+ :pitch_bend,
2323
+ :channel_pressure,
2324
+ :key_pressure,
2325
+ :count
2326
+ ]
2327
+
2328
+ # Generic callback function for MIDI events.
2329
+ # @param data User defined data pointer
2330
+ # @param event The MIDI event
2331
+ # @return Should return #FLUID_OK on success, #FLUID_FAILED otherwise
2332
+ #
2333
+ # Will be used between
2334
+ # - MIDI driver and MIDI router
2335
+ # - MIDI router and synth
2336
+ # to communicate events.
2337
+ # In the not-so-far future...
2338
+ #
2339
+ # <em>This entry is only for documentation and no real method.</em>
2340
+ #
2341
+ # @method _callback_handle_midi_event_func_t_(event)
2342
+ # @param [FluidMidiEventT] event
2343
+ # @return [FFI::Pointer(*Void)]
2344
+ # @scope class
2345
+ callback :handle_midi_event_func_t, [FluidMidiEventT], :pointer
2346
+
2347
+ # (Not documented)
2348
+ #
2349
+ # @method new_fluid_midi_router(settings, handler, event_handler_data)
2350
+ # @param [FluidHashtableT] settings
2351
+ # @param [Proc(_callback_handle_midi_event_func_t_)] handler
2352
+ # @param [FFI::Pointer(*Void)] event_handler_data
2353
+ # @return [FluidMidiRouterT]
2354
+ # @scope class
2355
+ attach_function :new_fluid_midi_router, :new_fluid_midi_router, [FluidHashtableT, :handle_midi_event_func_t, :pointer], FluidMidiRouterT
2356
+
2357
+ # (Not documented)
2358
+ #
2359
+ # @method delete_fluid_midi_router(handler)
2360
+ # @param [FluidMidiRouterT] handler
2361
+ # @return [Integer]
2362
+ # @scope class
2363
+ attach_function :delete_fluid_midi_router, :delete_fluid_midi_router, [FluidMidiRouterT], :int
2364
+
2365
+ # (Not documented)
2366
+ #
2367
+ # @method midi_router_set_default_rules(router)
2368
+ # @param [FluidMidiRouterT] router
2369
+ # @return [Integer]
2370
+ # @scope class
2371
+ attach_function :midi_router_set_default_rules, :fluid_midi_router_set_default_rules, [FluidMidiRouterT], :int
2372
+
2373
+ # (Not documented)
2374
+ #
2375
+ # @method midi_router_clear_rules(router)
2376
+ # @param [FluidMidiRouterT] router
2377
+ # @return [Integer]
2378
+ # @scope class
2379
+ attach_function :midi_router_clear_rules, :fluid_midi_router_clear_rules, [FluidMidiRouterT], :int
2380
+
2381
+ # (Not documented)
2382
+ #
2383
+ # @method midi_router_add_rule(router, rule, type)
2384
+ # @param [FluidMidiRouterT] router
2385
+ # @param [FluidMidiRouterRuleT] rule
2386
+ # @param [Integer] type
2387
+ # @return [Integer]
2388
+ # @scope class
2389
+ attach_function :midi_router_add_rule, :fluid_midi_router_add_rule, [FluidMidiRouterT, FluidMidiRouterRuleT, :int], :int
2390
+
2391
+ # (Not documented)
2392
+ #
2393
+ # @method new_fluid_midi_router_rule()
2394
+ # @return [FluidMidiRouterRuleT]
2395
+ # @scope class
2396
+ attach_function :new_fluid_midi_router_rule, :new_fluid_midi_router_rule, [], FluidMidiRouterRuleT
2397
+
2398
+ # (Not documented)
2399
+ #
2400
+ # @method delete_fluid_midi_router_rule(rule)
2401
+ # @param [FluidMidiRouterRuleT] rule
2402
+ # @return [nil]
2403
+ # @scope class
2404
+ attach_function :delete_fluid_midi_router_rule, :delete_fluid_midi_router_rule, [FluidMidiRouterRuleT], :void
2405
+
2406
+ # (Not documented)
2407
+ #
2408
+ # @method midi_router_rule_set_chan(rule, min, max, mul, add)
2409
+ # @param [FluidMidiRouterRuleT] rule
2410
+ # @param [Integer] min
2411
+ # @param [Integer] max
2412
+ # @param [Float] mul
2413
+ # @param [Integer] add
2414
+ # @return [nil]
2415
+ # @scope class
2416
+ attach_function :midi_router_rule_set_chan, :fluid_midi_router_rule_set_chan, [FluidMidiRouterRuleT, :int, :int, :float, :int], :void
2417
+
2418
+ # (Not documented)
2419
+ #
2420
+ # @method midi_router_rule_set_param1(rule, min, max, mul, add)
2421
+ # @param [FluidMidiRouterRuleT] rule
2422
+ # @param [Integer] min
2423
+ # @param [Integer] max
2424
+ # @param [Float] mul
2425
+ # @param [Integer] add
2426
+ # @return [nil]
2427
+ # @scope class
2428
+ attach_function :midi_router_rule_set_param1, :fluid_midi_router_rule_set_param1, [FluidMidiRouterRuleT, :int, :int, :float, :int], :void
2429
+
2430
+ # (Not documented)
2431
+ #
2432
+ # @method midi_router_rule_set_param2(rule, min, max, mul, add)
2433
+ # @param [FluidMidiRouterRuleT] rule
2434
+ # @param [Integer] min
2435
+ # @param [Integer] max
2436
+ # @param [Float] mul
2437
+ # @param [Integer] add
2438
+ # @return [nil]
2439
+ # @scope class
2440
+ attach_function :midi_router_rule_set_param2, :fluid_midi_router_rule_set_param2, [FluidMidiRouterRuleT, :int, :int, :float, :int], :void
2441
+
2442
+ # (Not documented)
2443
+ #
2444
+ # @method midi_router_handle_midi_event(data, event)
2445
+ # @param [FFI::Pointer(*Void)] data
2446
+ # @param [FluidMidiEventT] event
2447
+ # @return [Integer]
2448
+ # @scope class
2449
+ attach_function :midi_router_handle_midi_event, :fluid_midi_router_handle_midi_event, [:pointer, FluidMidiEventT], :int
2450
+
2451
+ # (Not documented)
2452
+ #
2453
+ # @method midi_dump_prerouter(data, event)
2454
+ # @param [FFI::Pointer(*Void)] data
2455
+ # @param [FluidMidiEventT] event
2456
+ # @return [Integer]
2457
+ # @scope class
2458
+ attach_function :midi_dump_prerouter, :fluid_midi_dump_prerouter, [:pointer, FluidMidiEventT], :int
2459
+
2460
+ # (Not documented)
2461
+ #
2462
+ # @method midi_dump_postrouter(data, event)
2463
+ # @param [FFI::Pointer(*Void)] data
2464
+ # @param [FluidMidiEventT] event
2465
+ # @return [Integer]
2466
+ # @scope class
2467
+ attach_function :midi_dump_postrouter, :fluid_midi_dump_postrouter, [:pointer, FluidMidiEventT], :int
2468
+
2469
+ # (Not documented)
2470
+ #
2471
+ # @method new_fluid_midi_driver(settings, handler, event_handler_data)
2472
+ # @param [FluidHashtableT] settings
2473
+ # @param [Proc(_callback_handle_midi_event_func_t_)] handler
2474
+ # @param [FFI::Pointer(*Void)] event_handler_data
2475
+ # @return [FluidMidiDriverT]
2476
+ # @scope class
2477
+ attach_function :new_fluid_midi_driver, :new_fluid_midi_driver, [FluidHashtableT, :handle_midi_event_func_t, :pointer], FluidMidiDriverT
2478
+
2479
+ # (Not documented)
2480
+ #
2481
+ # @method delete_fluid_midi_driver(driver)
2482
+ # @param [FluidMidiDriverT] driver
2483
+ # @return [nil]
2484
+ # @scope class
2485
+ attach_function :delete_fluid_midi_driver, :delete_fluid_midi_driver, [FluidMidiDriverT], :void
2486
+
2487
+ # MIDI player status enum.
2488
+ # @since 1.1.0
2489
+ #
2490
+ # <em>This entry is only for documentation and no real method. The FFI::Enum can be accessed via #enum_type(:player_status).</em>
2491
+ #
2492
+ # === Options:
2493
+ # :ready ::
2494
+ #
2495
+ # :playing ::
2496
+ # < Player is ready
2497
+ # :done ::
2498
+ # < Player is currently playing
2499
+ #
2500
+ # @method _enum_player_status_
2501
+ # @return [Symbol]
2502
+ # @scope class
2503
+ enum :player_status, [
2504
+ :ready,
2505
+ :playing,
2506
+ :done
2507
+ ]
2508
+
2509
+ # < Player is finished playing
2510
+ #
2511
+ # @method new_fluid_player(synth)
2512
+ # @param [FluidSynthT] synth
2513
+ # @return [FluidPlayerT]
2514
+ # @scope class
2515
+ attach_function :new_fluid_player, :new_fluid_player, [FluidSynthT], FluidPlayerT
2516
+
2517
+ # (Not documented)
2518
+ #
2519
+ # @method delete_fluid_player(player)
2520
+ # @param [FluidPlayerT] player
2521
+ # @return [Integer]
2522
+ # @scope class
2523
+ attach_function :delete_fluid_player, :delete_fluid_player, [FluidPlayerT], :int
2524
+
2525
+ # (Not documented)
2526
+ #
2527
+ # @method player_add(player, midifile)
2528
+ # @param [FluidPlayerT] player
2529
+ # @param [String] midifile
2530
+ # @return [Integer]
2531
+ # @scope class
2532
+ attach_function :player_add, :fluid_player_add, [FluidPlayerT, :string], :int
2533
+
2534
+ # (Not documented)
2535
+ #
2536
+ # @method player_add_mem(player, buffer, len)
2537
+ # @param [FluidPlayerT] player
2538
+ # @param [FFI::Pointer(*Void)] buffer
2539
+ # @param [Integer] len
2540
+ # @return [Integer]
2541
+ # @scope class
2542
+ attach_function :player_add_mem, :fluid_player_add_mem, [FluidPlayerT, :pointer, :ulong], :int
2543
+
2544
+ # (Not documented)
2545
+ #
2546
+ # @method player_play(player)
2547
+ # @param [FluidPlayerT] player
2548
+ # @return [Integer]
2549
+ # @scope class
2550
+ attach_function :player_play, :fluid_player_play, [FluidPlayerT], :int
2551
+
2552
+ # (Not documented)
2553
+ #
2554
+ # @method player_stop(player)
2555
+ # @param [FluidPlayerT] player
2556
+ # @return [Integer]
2557
+ # @scope class
2558
+ attach_function :player_stop, :fluid_player_stop, [FluidPlayerT], :int
2559
+
2560
+ # (Not documented)
2561
+ #
2562
+ # @method player_join(player)
2563
+ # @param [FluidPlayerT] player
2564
+ # @return [Integer]
2565
+ # @scope class
2566
+ attach_function :player_join, :fluid_player_join, [FluidPlayerT], :int
2567
+
2568
+ # (Not documented)
2569
+ #
2570
+ # @method player_set_loop(player, loop)
2571
+ # @param [FluidPlayerT] player
2572
+ # @param [Integer] loop
2573
+ # @return [Integer]
2574
+ # @scope class
2575
+ attach_function :player_set_loop, :fluid_player_set_loop, [FluidPlayerT, :int], :int
2576
+
2577
+ # (Not documented)
2578
+ #
2579
+ # @method player_set_midi_tempo(player, tempo)
2580
+ # @param [FluidPlayerT] player
2581
+ # @param [Integer] tempo
2582
+ # @return [Integer]
2583
+ # @scope class
2584
+ attach_function :player_set_midi_tempo, :fluid_player_set_midi_tempo, [FluidPlayerT, :int], :int
2585
+
2586
+ # (Not documented)
2587
+ #
2588
+ # @method player_set_bpm(player, bpm)
2589
+ # @param [FluidPlayerT] player
2590
+ # @param [Integer] bpm
2591
+ # @return [Integer]
2592
+ # @scope class
2593
+ attach_function :player_set_bpm, :fluid_player_set_bpm, [FluidPlayerT, :int], :int
2594
+
2595
+ # (Not documented)
2596
+ #
2597
+ # @method player_get_status(player)
2598
+ # @param [FluidPlayerT] player
2599
+ # @return [Integer]
2600
+ # @scope class
2601
+ attach_function :player_get_status, :fluid_player_get_status, [FluidPlayerT], :int
2602
+
2603
+ # (Not documented)
2604
+ #
2605
+ # @method player_set_playback_callback(player, handler, handler_data)
2606
+ # @param [FluidPlayerT] player
2607
+ # @param [Proc(_callback_handle_midi_event_func_t_)] handler
2608
+ # @param [FFI::Pointer(*Void)] handler_data
2609
+ # @return [Integer]
2610
+ # @scope class
2611
+ attach_function :player_set_playback_callback, :fluid_player_set_playback_callback, [FluidPlayerT, :handle_midi_event_func_t, :pointer], :int
2612
+
2613
+ # (Not documented)
2614
+ #
2615
+ # <em>This entry is only for documentation and no real method.</em>
2616
+ #
2617
+ # @method _callback_event_callback_t_(event, seq, data)
2618
+ # @param [FluidEventT] event
2619
+ # @param [FluidSequencerT] seq
2620
+ # @param [FFI::Pointer(*Void)] data
2621
+ # @return [Integer]
2622
+ # @scope class
2623
+ callback :event_callback_t, [FluidEventT, FluidSequencerT, :pointer], :uint
2624
+
2625
+ # (Not documented)
2626
+ #
2627
+ # @method new_fluid_sequencer()
2628
+ # @return [FluidSequencerT]
2629
+ # @scope class
2630
+ attach_function :new_fluid_sequencer, :new_fluid_sequencer, [], FluidSequencerT
2631
+
2632
+ # (Not documented)
2633
+ #
2634
+ # @method new_fluid_sequencer2(use_system_timer)
2635
+ # @param [Integer] use_system_timer
2636
+ # @return [FluidSequencerT]
2637
+ # @scope class
2638
+ attach_function :new_fluid_sequencer2, :new_fluid_sequencer2, [:int], FluidSequencerT
2639
+
2640
+ # (Not documented)
2641
+ #
2642
+ # @method delete_fluid_sequencer(seq)
2643
+ # @param [FluidSequencerT] seq
2644
+ # @return [nil]
2645
+ # @scope class
2646
+ attach_function :delete_fluid_sequencer, :delete_fluid_sequencer, [FluidSequencerT], :void
2647
+
2648
+ # (Not documented)
2649
+ #
2650
+ # @method sequencer_get_use_system_timer(seq)
2651
+ # @param [FluidSequencerT] seq
2652
+ # @return [Integer]
2653
+ # @scope class
2654
+ attach_function :sequencer_get_use_system_timer, :fluid_sequencer_get_use_system_timer, [FluidSequencerT], :int
2655
+
2656
+ # (Not documented)
2657
+ #
2658
+ # @method sequencer_register_client(seq, name, callback, data)
2659
+ # @param [FluidSequencerT] seq
2660
+ # @param [String] name
2661
+ # @param [Proc(_callback_event_callback_t_)] callback
2662
+ # @param [FFI::Pointer(*Void)] data
2663
+ # @return [Integer]
2664
+ # @scope class
2665
+ attach_function :sequencer_register_client, :fluid_sequencer_register_client, [FluidSequencerT, :string, :event_callback_t, :pointer], :short
2666
+
2667
+ # (Not documented)
2668
+ #
2669
+ # @method sequencer_unregister_client(seq, id)
2670
+ # @param [FluidSequencerT] seq
2671
+ # @param [Integer] id
2672
+ # @return [nil]
2673
+ # @scope class
2674
+ attach_function :sequencer_unregister_client, :fluid_sequencer_unregister_client, [FluidSequencerT, :short], :void
2675
+
2676
+ # (Not documented)
2677
+ #
2678
+ # @method sequencer_count_clients(seq)
2679
+ # @param [FluidSequencerT] seq
2680
+ # @return [Integer]
2681
+ # @scope class
2682
+ attach_function :sequencer_count_clients, :fluid_sequencer_count_clients, [FluidSequencerT], :int
2683
+
2684
+ # (Not documented)
2685
+ #
2686
+ # @method sequencer_get_client_id(seq, index)
2687
+ # @param [FluidSequencerT] seq
2688
+ # @param [Integer] index
2689
+ # @return [Integer]
2690
+ # @scope class
2691
+ attach_function :sequencer_get_client_id, :fluid_sequencer_get_client_id, [FluidSequencerT, :int], :short
2692
+
2693
+ # (Not documented)
2694
+ #
2695
+ # @method sequencer_get_client_name(seq, id)
2696
+ # @param [FluidSequencerT] seq
2697
+ # @param [Integer] id
2698
+ # @return [String]
2699
+ # @scope class
2700
+ attach_function :sequencer_get_client_name, :fluid_sequencer_get_client_name, [FluidSequencerT, :int], :string
2701
+
2702
+ # (Not documented)
2703
+ #
2704
+ # @method sequencer_client_is_dest(seq, id)
2705
+ # @param [FluidSequencerT] seq
2706
+ # @param [Integer] id
2707
+ # @return [Integer]
2708
+ # @scope class
2709
+ attach_function :sequencer_client_is_dest, :fluid_sequencer_client_is_dest, [FluidSequencerT, :int], :int
2710
+
2711
+ # (Not documented)
2712
+ #
2713
+ # @method sequencer_process(seq, msec)
2714
+ # @param [FluidSequencerT] seq
2715
+ # @param [Integer] msec
2716
+ # @return [nil]
2717
+ # @scope class
2718
+ attach_function :sequencer_process, :fluid_sequencer_process, [FluidSequencerT, :uint], :void
2719
+
2720
+ # (Not documented)
2721
+ #
2722
+ # @method sequencer_send_now(seq, evt)
2723
+ # @param [FluidSequencerT] seq
2724
+ # @param [FluidEventT] evt
2725
+ # @return [nil]
2726
+ # @scope class
2727
+ attach_function :sequencer_send_now, :fluid_sequencer_send_now, [FluidSequencerT, FluidEventT], :void
2728
+
2729
+ # (Not documented)
2730
+ #
2731
+ # @method sequencer_send_at(seq, evt, time, absolute)
2732
+ # @param [FluidSequencerT] seq
2733
+ # @param [FluidEventT] evt
2734
+ # @param [Integer] time
2735
+ # @param [Integer] absolute
2736
+ # @return [Integer]
2737
+ # @scope class
2738
+ attach_function :sequencer_send_at, :fluid_sequencer_send_at, [FluidSequencerT, FluidEventT, :uint, :int], :int
2739
+
2740
+ # (Not documented)
2741
+ #
2742
+ # @method sequencer_remove_events(seq, source, dest, type)
2743
+ # @param [FluidSequencerT] seq
2744
+ # @param [Integer] source
2745
+ # @param [Integer] dest
2746
+ # @param [Integer] type
2747
+ # @return [nil]
2748
+ # @scope class
2749
+ attach_function :sequencer_remove_events, :fluid_sequencer_remove_events, [FluidSequencerT, :short, :short, :int], :void
2750
+
2751
+ # (Not documented)
2752
+ #
2753
+ # @method sequencer_get_tick(seq)
2754
+ # @param [FluidSequencerT] seq
2755
+ # @return [Integer]
2756
+ # @scope class
2757
+ attach_function :sequencer_get_tick, :fluid_sequencer_get_tick, [FluidSequencerT], :uint
2758
+
2759
+ # (Not documented)
2760
+ #
2761
+ # @method sequencer_set_time_scale(seq, scale)
2762
+ # @param [FluidSequencerT] seq
2763
+ # @param [Float] scale
2764
+ # @return [nil]
2765
+ # @scope class
2766
+ attach_function :sequencer_set_time_scale, :fluid_sequencer_set_time_scale, [FluidSequencerT, :double], :void
2767
+
2768
+ # (Not documented)
2769
+ #
2770
+ # @method sequencer_get_time_scale(seq)
2771
+ # @param [FluidSequencerT] seq
2772
+ # @return [Float]
2773
+ # @scope class
2774
+ attach_function :sequencer_get_time_scale, :fluid_sequencer_get_time_scale, [FluidSequencerT], :double
2775
+
2776
+ # (Not documented)
2777
+ #
2778
+ # @method sequencer_register_fluidsynth(seq, synth)
2779
+ # @param [FluidSequencerT] seq
2780
+ # @param [FluidSynthT] synth
2781
+ # @return [Integer]
2782
+ # @scope class
2783
+ attach_function :sequencer_register_fluidsynth, :fluid_sequencer_register_fluidsynth, [FluidSequencerT, FluidSynthT], :short
2784
+
2785
+ # (Not documented)
2786
+ #
2787
+ # @method sequencer_add_midi_event_to_buffer(data, event)
2788
+ # @param [FFI::Pointer(*Void)] data
2789
+ # @param [FluidMidiEventT] event
2790
+ # @return [Integer]
2791
+ # @scope class
2792
+ attach_function :sequencer_add_midi_event_to_buffer, :fluid_sequencer_add_midi_event_to_buffer, [:pointer, FluidMidiEventT], :int
2793
+
2794
+ # (Not documented)
2795
+ #
2796
+ # <em>This entry is only for documentation and no real method. The FFI::Enum can be accessed via #enum_type(:log_level).</em>
2797
+ #
2798
+ # === Options:
2799
+ # :fluid_panic ::
2800
+ #
2801
+ # :fluid_err ::
2802
+ # < The synth can't function correctly any more
2803
+ # :fluid_warn ::
2804
+ # < Serious error occurred
2805
+ # :fluid_info ::
2806
+ # < Warning
2807
+ # :fluid_dbg ::
2808
+ # < Verbose informational messages
2809
+ # :last_log_level ::
2810
+ # < Debugging messages
2811
+ #
2812
+ # @method _enum_log_level_
2813
+ # @return [Symbol]
2814
+ # @scope class
2815
+ enum :log_level, [
2816
+ :fluid_panic,
2817
+ :fluid_err,
2818
+ :fluid_warn,
2819
+ :fluid_info,
2820
+ :fluid_dbg,
2821
+ :last_log_level
2822
+ ]
2823
+
2824
+ # (Not documented)
2825
+ #
2826
+ # <em>This entry is only for documentation and no real method.</em>
2827
+ #
2828
+ # @method _callback_log_function_t_(message, data)
2829
+ # @param [String] message
2830
+ # @param [FFI::Pointer(*Void)] data
2831
+ # @return [Integer]
2832
+ # @scope class
2833
+ callback :log_function_t, [:string, :pointer], :int
2834
+
2835
+ # (Not documented)
2836
+ #
2837
+ # @method set_log_function(level, fun, data)
2838
+ # @param [Integer] level
2839
+ # @param [Proc(_callback_log_function_t_)] fun
2840
+ # @param [FFI::Pointer(*Void)] data
2841
+ # @return [Proc(_callback_log_function_t_)]
2842
+ # @scope class
2843
+ attach_function :set_log_function, :fluid_set_log_function, [:int, :log_function_t, :pointer], :log_function_t
2844
+
2845
+ # (Not documented)
2846
+ #
2847
+ # @method default_log_function(level, message, data)
2848
+ # @param [Integer] level
2849
+ # @param [String] message
2850
+ # @param [FFI::Pointer(*Void)] data
2851
+ # @return [nil]
2852
+ # @scope class
2853
+ attach_function :default_log_function, :fluid_default_log_function, [:int, :string, :pointer], :void
2854
+
2855
+ # (Not documented)
2856
+ #
2857
+ # @method log(level, fmt)
2858
+ # @param [Integer] level
2859
+ # @param [String] fmt
2860
+ # @return [Integer]
2861
+ # @scope class
2862
+ attach_function :log, :fluid_log, [:int, :string], :int
2863
+
2864
+ # (Not documented)
2865
+ #
2866
+ # @method is_soundfont(filename)
2867
+ # @param [String] filename
2868
+ # @return [Integer]
2869
+ # @scope class
2870
+ attach_function :is_soundfont, :fluid_is_soundfont, [:string], :int
2871
+
2872
+ # (Not documented)
2873
+ #
2874
+ # @method is_midifile(filename)
2875
+ # @param [String] filename
2876
+ # @return [Integer]
2877
+ # @scope class
2878
+ attach_function :is_midifile, :fluid_is_midifile, [:string], :int
2879
+
2880
+ # < SoundFont sample
2881
+ #
2882
+ # = Fields:
2883
+ # :dest ::
2884
+ # (Integer) < Destination generator to control
2885
+ # :src1 ::
2886
+ # (Integer) < Source controller 1
2887
+ # :flags1 ::
2888
+ # (Integer) < Source controller 1 flags
2889
+ # :src2 ::
2890
+ # (Integer) < Source controller 2
2891
+ # :flags2 ::
2892
+ # (Integer) < Source controller 2 flags
2893
+ # :amount ::
2894
+ # (Float) < Multiplier amount
2895
+ # :next ::
2896
+ # (FFI::Pointer(*ModT)) The 'next' field allows to link modulators into a list. It is
2897
+ # not used in fluid_voice.c, there each voice allocates memory for a
2898
+ # fixed number of modulators. Since there may be a huge number of
2899
+ # different zones, this is more efficient.
2900
+ class FluidModT < FFI::Struct
2901
+ layout :dest, :uchar,
2902
+ :src1, :uchar,
2903
+ :flags1, :uchar,
2904
+ :src2, :uchar,
2905
+ :flags2, :uchar,
2906
+ :amount, :double,
2907
+ :next, :pointer
2908
+ end
2909
+
2910
+ # (Not documented)
2911
+ #
2912
+ # <em>This entry is only for documentation and no real method. The FFI::Enum can be accessed via #enum_type(:mod_flags).</em>
2913
+ #
2914
+ # === Options:
2915
+ # :positive ::
2916
+ #
2917
+ # :negative ::
2918
+ # < Mapping function is positive
2919
+ # :unipolar ::
2920
+ # < Mapping function is negative
2921
+ # :bipolar ::
2922
+ # < Mapping function is unipolar
2923
+ # :linear ::
2924
+ # < Mapping function is bipolar
2925
+ # :concave ::
2926
+ # < Linear mapping function
2927
+ # :convex ::
2928
+ # < Concave mapping function
2929
+ # :switch ::
2930
+ # < Convex mapping function
2931
+ # :gc ::
2932
+ # < Switch (on/off) mapping function
2933
+ # :cc ::
2934
+ # < General controller source type (#fluid_mod_src)
2935
+ #
2936
+ # @method _enum_mod_flags_
2937
+ # @return [Symbol]
2938
+ # @scope class
2939
+ enum :mod_flags, [
2940
+ :positive, 0,
2941
+ :negative, 1,
2942
+ :unipolar, 0,
2943
+ :bipolar, 2,
2944
+ :linear, 0,
2945
+ :concave, 4,
2946
+ :convex, 8,
2947
+ :switch, 12,
2948
+ :gc, 0,
2949
+ :cc, 16
2950
+ ]
2951
+
2952
+ # (Not documented)
2953
+ #
2954
+ # <em>This entry is only for documentation and no real method. The FFI::Enum can be accessed via #enum_type(:mod_src).</em>
2955
+ #
2956
+ # === Options:
2957
+ # :none ::
2958
+ #
2959
+ # :velocity ::
2960
+ # < No source controller
2961
+ # :key ::
2962
+ # < MIDI note-on velocity
2963
+ # :keypressure ::
2964
+ # < MIDI note-on note number
2965
+ # :channelpressure ::
2966
+ # < MIDI key pressure
2967
+ # :pitchwheel ::
2968
+ # < MIDI channel pressure
2969
+ # :pitchwheelsens ::
2970
+ # < Pitch wheel
2971
+ #
2972
+ # @method _enum_mod_src_
2973
+ # @return [Symbol]
2974
+ # @scope class
2975
+ enum :mod_src, [
2976
+ :none, 0,
2977
+ :velocity, 2,
2978
+ :key, 3,
2979
+ :keypressure, 10,
2980
+ :channelpressure, 13,
2981
+ :pitchwheel, 14,
2982
+ :pitchwheelsens, 16
2983
+ ]
2984
+
2985
+ # (Not documented)
2986
+ #
2987
+ # @method mod_new()
2988
+ # @return [FluidModT]
2989
+ # @scope class
2990
+ attach_function :mod_new, :fluid_mod_new, [], FluidModT
2991
+
2992
+ # (Not documented)
2993
+ #
2994
+ # @method mod_delete(mod)
2995
+ # @param [FluidModT] mod
2996
+ # @return [nil]
2997
+ # @scope class
2998
+ attach_function :mod_delete, :fluid_mod_delete, [FluidModT], :void
2999
+
3000
+ # (Not documented)
3001
+ #
3002
+ # @method mod_set_source1(mod, src, flags)
3003
+ # @param [FluidModT] mod
3004
+ # @param [Integer] src
3005
+ # @param [Integer] flags
3006
+ # @return [nil]
3007
+ # @scope class
3008
+ attach_function :mod_set_source1, :fluid_mod_set_source1, [FluidModT, :int, :int], :void
3009
+
3010
+ # (Not documented)
3011
+ #
3012
+ # @method mod_set_source2(mod, src, flags)
3013
+ # @param [FluidModT] mod
3014
+ # @param [Integer] src
3015
+ # @param [Integer] flags
3016
+ # @return [nil]
3017
+ # @scope class
3018
+ attach_function :mod_set_source2, :fluid_mod_set_source2, [FluidModT, :int, :int], :void
3019
+
3020
+ # (Not documented)
3021
+ #
3022
+ # @method mod_set_dest(mod, dst)
3023
+ # @param [FluidModT] mod
3024
+ # @param [Integer] dst
3025
+ # @return [nil]
3026
+ # @scope class
3027
+ attach_function :mod_set_dest, :fluid_mod_set_dest, [FluidModT, :int], :void
3028
+
3029
+ # (Not documented)
3030
+ #
3031
+ # @method mod_set_amount(mod, amount)
3032
+ # @param [FluidModT] mod
3033
+ # @param [Float] amount
3034
+ # @return [nil]
3035
+ # @scope class
3036
+ attach_function :mod_set_amount, :fluid_mod_set_amount, [FluidModT, :double], :void
3037
+
3038
+ # (Not documented)
3039
+ #
3040
+ # @method mod_get_source1(mod)
3041
+ # @param [FluidModT] mod
3042
+ # @return [Integer]
3043
+ # @scope class
3044
+ attach_function :mod_get_source1, :fluid_mod_get_source1, [FluidModT], :int
3045
+
3046
+ # (Not documented)
3047
+ #
3048
+ # @method mod_get_flags1(mod)
3049
+ # @param [FluidModT] mod
3050
+ # @return [Integer]
3051
+ # @scope class
3052
+ attach_function :mod_get_flags1, :fluid_mod_get_flags1, [FluidModT], :int
3053
+
3054
+ # (Not documented)
3055
+ #
3056
+ # @method mod_get_source2(mod)
3057
+ # @param [FluidModT] mod
3058
+ # @return [Integer]
3059
+ # @scope class
3060
+ attach_function :mod_get_source2, :fluid_mod_get_source2, [FluidModT], :int
3061
+
3062
+ # (Not documented)
3063
+ #
3064
+ # @method mod_get_flags2(mod)
3065
+ # @param [FluidModT] mod
3066
+ # @return [Integer]
3067
+ # @scope class
3068
+ attach_function :mod_get_flags2, :fluid_mod_get_flags2, [FluidModT], :int
3069
+
3070
+ # (Not documented)
3071
+ #
3072
+ # @method mod_get_dest(mod)
3073
+ # @param [FluidModT] mod
3074
+ # @return [Integer]
3075
+ # @scope class
3076
+ attach_function :mod_get_dest, :fluid_mod_get_dest, [FluidModT], :int
3077
+
3078
+ # (Not documented)
3079
+ #
3080
+ # @method mod_get_amount(mod)
3081
+ # @param [FluidModT] mod
3082
+ # @return [Float]
3083
+ # @scope class
3084
+ attach_function :mod_get_amount, :fluid_mod_get_amount, [FluidModT], :double
3085
+
3086
+ # (Not documented)
3087
+ #
3088
+ # @method mod_test_identity(mod1, mod2)
3089
+ # @param [FluidModT] mod1
3090
+ # @param [FluidModT] mod2
3091
+ # @return [Integer]
3092
+ # @scope class
3093
+ attach_function :mod_test_identity, :fluid_mod_test_identity, [FluidModT, FluidModT], :int
3094
+
3095
+ # (Not documented)
3096
+ #
3097
+ # <em>This entry is only for documentation and no real method. The FFI::Enum can be accessed via #enum_type(:gen_type).</em>
3098
+ #
3099
+ # === Options:
3100
+ # :startaddrofs ::
3101
+ #
3102
+ # :endaddrofs ::
3103
+ # < Sample start address offset (0-32767)
3104
+ # :startloopaddrofs ::
3105
+ # < Sample end address offset (-32767-0)
3106
+ # :endloopaddrofs ::
3107
+ # < Sample loop start address offset (-32767-32767)
3108
+ # :startaddrcoarseofs ::
3109
+ # < Sample loop end address offset (-32767-32767)
3110
+ # :modlfotopitch ::
3111
+ # < Sample start address coarse offset (X 32768)
3112
+ # :viblfotopitch ::
3113
+ # < Modulation LFO to pitch
3114
+ # :modenvtopitch ::
3115
+ # < Vibrato LFO to pitch
3116
+ # :filterfc ::
3117
+ # < Modulation envelope to pitch
3118
+ # :filterq ::
3119
+ # < Filter cutoff
3120
+ # :modlfotofilterfc ::
3121
+ # < Filter Q
3122
+ # :modenvtofilterfc ::
3123
+ # < Modulation LFO to filter cutoff
3124
+ # :endaddrcoarseofs ::
3125
+ # < Modulation envelope to filter cutoff
3126
+ # :modlfotovol ::
3127
+ # < Sample end address coarse offset (X 32768)
3128
+ # :unused1 ::
3129
+ # < Modulation LFO to volume
3130
+ # :chorussend ::
3131
+ # < Unused
3132
+ # :reverbsend ::
3133
+ # < Chorus send amount
3134
+ # :pan ::
3135
+ # < Reverb send amount
3136
+ # :unused2 ::
3137
+ # < Stereo panning
3138
+ # :unused3 ::
3139
+ # < Unused
3140
+ # :unused4 ::
3141
+ # < Unused
3142
+ # :modlfodelay ::
3143
+ # < Unused
3144
+ # :modlfofreq ::
3145
+ # < Modulation LFO delay
3146
+ # :viblfodelay ::
3147
+ # < Modulation LFO frequency
3148
+ # :viblfofreq ::
3149
+ # < Vibrato LFO delay
3150
+ # :modenvdelay ::
3151
+ # < Vibrato LFO frequency
3152
+ # :modenvattack ::
3153
+ # < Modulation envelope delay
3154
+ # :modenvhold ::
3155
+ # < Modulation envelope attack
3156
+ # :modenvdecay ::
3157
+ # < Modulation envelope hold
3158
+ # :modenvsustain ::
3159
+ # < Modulation envelope decay
3160
+ # :modenvrelease ::
3161
+ # < Modulation envelope sustain
3162
+ # :keytomodenvhold ::
3163
+ # < Modulation envelope release
3164
+ # :keytomodenvdecay ::
3165
+ # < Key to modulation envelope hold
3166
+ # :volenvdelay ::
3167
+ # < Key to modulation envelope decay
3168
+ # :volenvattack ::
3169
+ # < Volume envelope delay
3170
+ # :volenvhold ::
3171
+ # < Volume envelope attack
3172
+ # :volenvdecay ::
3173
+ # < Volume envelope hold
3174
+ # :volenvsustain ::
3175
+ # < Volume envelope decay
3176
+ # :volenvrelease ::
3177
+ # < Volume envelope sustain
3178
+ # :keytovolenvhold ::
3179
+ # < Volume envelope release
3180
+ # :keytovolenvdecay ::
3181
+ # < Key to volume envelope hold
3182
+ # :instrument ::
3183
+ # < Key to volume envelope decay
3184
+ # :reserved1 ::
3185
+ # < Instrument ID (shouldn't be set by user)
3186
+ # :keyrange ::
3187
+ # < Reserved
3188
+ # :velrange ::
3189
+ # < MIDI note range
3190
+ # :startloopaddrcoarseofs ::
3191
+ # < MIDI velocity range
3192
+ # :keynum ::
3193
+ # < Sample start loop address coarse offset (X 32768)
3194
+ # :velocity ::
3195
+ # < Fixed MIDI note number
3196
+ # :attenuation ::
3197
+ # < Fixed MIDI velocity value
3198
+ # :reserved2 ::
3199
+ # < Initial volume attenuation
3200
+ # :endloopaddrcoarseofs ::
3201
+ # < Reserved
3202
+ # :coarsetune ::
3203
+ # < Sample end loop address coarse offset (X 32768)
3204
+ # :finetune ::
3205
+ # < Coarse tuning
3206
+ # :sampleid ::
3207
+ # < Fine tuning
3208
+ # :samplemode ::
3209
+ # < Sample ID (shouldn't be set by user)
3210
+ # :reserved3 ::
3211
+ # < Sample mode flags
3212
+ # :scaletune ::
3213
+ # < Reserved
3214
+ # :exclusiveclass ::
3215
+ # < Scale tuning
3216
+ # :overriderootkey ::
3217
+ # < Exclusive class number
3218
+ # :pitch ::
3219
+ # the initial pitch is not a "standard" generator. It is not
3220
+ # mentioned in the list of generator in the SF2 specifications. It
3221
+ # is used, however, as the destination for the default pitch wheel
3222
+ # modulator.
3223
+ # :last ::
3224
+ # < Pitch (NOTE: Not a real SoundFont generator)
3225
+ #
3226
+ # @method _enum_gen_type_
3227
+ # @return [Symbol]
3228
+ # @scope class
3229
+ enum :gen_type, [
3230
+ :startaddrofs,
3231
+ :endaddrofs,
3232
+ :startloopaddrofs,
3233
+ :endloopaddrofs,
3234
+ :startaddrcoarseofs,
3235
+ :modlfotopitch,
3236
+ :viblfotopitch,
3237
+ :modenvtopitch,
3238
+ :filterfc,
3239
+ :filterq,
3240
+ :modlfotofilterfc,
3241
+ :modenvtofilterfc,
3242
+ :endaddrcoarseofs,
3243
+ :modlfotovol,
3244
+ :unused1,
3245
+ :chorussend,
3246
+ :reverbsend,
3247
+ :pan,
3248
+ :unused2,
3249
+ :unused3,
3250
+ :unused4,
3251
+ :modlfodelay,
3252
+ :modlfofreq,
3253
+ :viblfodelay,
3254
+ :viblfofreq,
3255
+ :modenvdelay,
3256
+ :modenvattack,
3257
+ :modenvhold,
3258
+ :modenvdecay,
3259
+ :modenvsustain,
3260
+ :modenvrelease,
3261
+ :keytomodenvhold,
3262
+ :keytomodenvdecay,
3263
+ :volenvdelay,
3264
+ :volenvattack,
3265
+ :volenvhold,
3266
+ :volenvdecay,
3267
+ :volenvsustain,
3268
+ :volenvrelease,
3269
+ :keytovolenvhold,
3270
+ :keytovolenvdecay,
3271
+ :instrument,
3272
+ :reserved1,
3273
+ :keyrange,
3274
+ :velrange,
3275
+ :startloopaddrcoarseofs,
3276
+ :keynum,
3277
+ :velocity,
3278
+ :attenuation,
3279
+ :reserved2,
3280
+ :endloopaddrcoarseofs,
3281
+ :coarsetune,
3282
+ :finetune,
3283
+ :sampleid,
3284
+ :samplemode,
3285
+ :reserved3,
3286
+ :scaletune,
3287
+ :exclusiveclass,
3288
+ :overriderootkey,
3289
+ :pitch,
3290
+ :last
3291
+ ]
3292
+
3293
+ # (Not documented)
3294
+ #
3295
+ # = Fields:
3296
+ # :flags ::
3297
+ # (Integer) < Is the generator set or not (#fluid_gen_flags)
3298
+ # :val ::
3299
+ # (Float) < The nominal value
3300
+ # :mod ::
3301
+ # (Float) < Change by modulators
3302
+ # :nrpn ::
3303
+ # (Float) < Change by NRPN messages
3304
+ class FluidGenT < FFI::Struct
3305
+ layout :flags, :uchar,
3306
+ :val, :double,
3307
+ :mod, :double,
3308
+ :nrpn, :double
3309
+ end
3310
+
3311
+ # (Not documented)
3312
+ #
3313
+ # = Fields:
3314
+ # :flags ::
3315
+ # (Integer) < Is the generator set or not (#fluid_gen_flags)
3316
+ # :val ::
3317
+ # (Float) < The nominal value
3318
+ # :mod ::
3319
+ # (Float) < Change by modulators
3320
+ # :nrpn ::
3321
+ # (Float) < Change by NRPN messages
3322
+ class GenT < FFI::Struct
3323
+ layout :flags, :uchar,
3324
+ :val, :double,
3325
+ :mod, :double,
3326
+ :nrpn, :double
3327
+ end
3328
+
3329
+ # Enum value for 'flags' field of #fluid_gen_t (not really flags).
3330
+ #
3331
+ # <em>This entry is only for documentation and no real method. The FFI::Enum can be accessed via #enum_type(:gen_flags).</em>
3332
+ #
3333
+ # === Options:
3334
+ # :unused ::
3335
+ #
3336
+ # :set ::
3337
+ # < Generator value is not set
3338
+ # :abs_nrpn ::
3339
+ # < Generator value is set
3340
+ #
3341
+ # @method _enum_gen_flags_
3342
+ # @return [Symbol]
3343
+ # @scope class
3344
+ enum :gen_flags, [
3345
+ :unused,
3346
+ :set,
3347
+ :abs_nrpn
3348
+ ]
3349
+
3350
+ # < Generator is an absolute value
3351
+ #
3352
+ # @method gen_set_default_values(gen)
3353
+ # @param [FluidGenT] gen
3354
+ # @return [Integer]
3355
+ # @scope class
3356
+ attach_function :gen_set_default_values, :fluid_gen_set_default_values, [FluidGenT], :int
3357
+
3358
+ # (Not documented)
3359
+ #
3360
+ # @method voice_update_param(voice, gen)
3361
+ # @param [FluidVoiceT] voice
3362
+ # @param [Integer] gen
3363
+ # @return [nil]
3364
+ # @scope class
3365
+ attach_function :voice_update_param, :fluid_voice_update_param, [FluidVoiceT, :int], :void
3366
+
3367
+ # < For default modulators only, no need to check for duplicates
3368
+ #
3369
+ # @method voice_add_mod(voice, mod, mode)
3370
+ # @param [FluidVoiceT] voice
3371
+ # @param [FluidModT] mod
3372
+ # @param [Integer] mode
3373
+ # @return [nil]
3374
+ # @scope class
3375
+ attach_function :voice_add_mod, :fluid_voice_add_mod, [FluidVoiceT, FluidModT, :int], :void
3376
+
3377
+ # (Not documented)
3378
+ #
3379
+ # @method voice_gen_set(voice, gen, val)
3380
+ # @param [FluidVoiceT] voice
3381
+ # @param [Integer] gen
3382
+ # @param [Float] val
3383
+ # @return [nil]
3384
+ # @scope class
3385
+ attach_function :voice_gen_set, :fluid_voice_gen_set, [FluidVoiceT, :int, :float], :void
3386
+
3387
+ # (Not documented)
3388
+ #
3389
+ # @method voice_gen_get(voice, gen)
3390
+ # @param [FluidVoiceT] voice
3391
+ # @param [Integer] gen
3392
+ # @return [Float]
3393
+ # @scope class
3394
+ attach_function :voice_gen_get, :fluid_voice_gen_get, [FluidVoiceT, :int], :float
3395
+
3396
+ # (Not documented)
3397
+ #
3398
+ # @method voice_gen_incr(voice, gen, val)
3399
+ # @param [FluidVoiceT] voice
3400
+ # @param [Integer] gen
3401
+ # @param [Float] val
3402
+ # @return [nil]
3403
+ # @scope class
3404
+ attach_function :voice_gen_incr, :fluid_voice_gen_incr, [FluidVoiceT, :int, :float], :void
3405
+
3406
+ # (Not documented)
3407
+ #
3408
+ # @method voice_get_id(voice)
3409
+ # @param [FluidVoiceT] voice
3410
+ # @return [Integer]
3411
+ # @scope class
3412
+ attach_function :voice_get_id, :fluid_voice_get_id, [FluidVoiceT], :uint
3413
+
3414
+ # (Not documented)
3415
+ #
3416
+ # @method voice_is_playing(voice)
3417
+ # @param [FluidVoiceT] voice
3418
+ # @return [Integer]
3419
+ # @scope class
3420
+ attach_function :voice_is_playing, :fluid_voice_is_playing, [FluidVoiceT], :int
3421
+
3422
+ # (Not documented)
3423
+ #
3424
+ # @method voice_optimize_sample(s)
3425
+ # @param [FluidSampleT] s
3426
+ # @return [Integer]
3427
+ # @scope class
3428
+ attach_function :voice_optimize_sample, :fluid_voice_optimize_sample, [FluidSampleT], :int
3429
+
3430
+ # (Not documented)
3431
+ #
3432
+ # @method version(major, minor, micro)
3433
+ # @param [FFI::Pointer(*Int)] major
3434
+ # @param [FFI::Pointer(*Int)] minor
3435
+ # @param [FFI::Pointer(*Int)] micro
3436
+ # @return [nil]
3437
+ # @scope class
3438
+ attach_function :version, :fluid_version, [:pointer, :pointer, :pointer], :void
3439
+
3440
+ # (Not documented)
3441
+ #
3442
+ # @method version_str()
3443
+ # @return [String]
3444
+ # @scope class
3445
+ attach_function :version_str, :fluid_version_str, [], :string
3446
+
3447
+ end