fiddle_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.
Files changed (85) hide show
  1. checksums.yaml +7 -0
  2. data/.standard.yml +3 -0
  3. data/CHANGELOG.md +5 -0
  4. data/LICENSE.txt +21 -0
  5. data/README.md +138 -0
  6. data/Rakefile +14 -0
  7. data/examples/enum.rb +30 -0
  8. data/examples/example.sf2 +0 -0
  9. data/examples/ffs_arpeggio.rb +252 -0
  10. data/examples/ffs_example.rb +47 -0
  11. data/examples/ffs_fx.rb +200 -0
  12. data/examples/ffs_metronome.rb +260 -0
  13. data/examples/ffs_midiplay.rb +122 -0
  14. data/examples/ffs_simple.rb +45 -0
  15. data/examples/ffs_test1.rb +41 -0
  16. data/examples/ffs_test3.rb +50 -0
  17. data/examples/fiddle-pointer.rb +18 -0
  18. data/examples/presets-each.rb +66 -0
  19. data/examples/presets-full_scan.rb +59 -0
  20. data/examples/settings-each.rb +106 -0
  21. data/exe/ffs_midiplay.rb +122 -0
  22. data/lib/fiddle_fluidsynth/audio_output/driver.rb +104 -0
  23. data/lib/fiddle_fluidsynth/audio_output/file_renderer.rb +84 -0
  24. data/lib/fiddle_fluidsynth/audio_output.rb +7 -0
  25. data/lib/fiddle_fluidsynth/command_interface/command_interface.rb +90 -0
  26. data/lib/fiddle_fluidsynth/command_interface/handler.rb +95 -0
  27. data/lib/fiddle_fluidsynth/command_interface/server.rb +79 -0
  28. data/lib/fiddle_fluidsynth/command_interface/shell.rb +76 -0
  29. data/lib/fiddle_fluidsynth/command_interface.rb +9 -0
  30. data/lib/fiddle_fluidsynth/core_ext/fiddle.rb +142 -0
  31. data/lib/fiddle_fluidsynth/core_ext/module.rb +123 -0
  32. data/lib/fiddle_fluidsynth/fiddle_fluidsynth.rb +172 -0
  33. data/lib/fiddle_fluidsynth/logging/logging.rb +82 -0
  34. data/lib/fiddle_fluidsynth/logging.rb +6 -0
  35. data/lib/fiddle_fluidsynth/midi_input/driver.rb +77 -0
  36. data/lib/fiddle_fluidsynth/midi_input/events.rb +255 -0
  37. data/lib/fiddle_fluidsynth/midi_input/midi_input.rb +70 -0
  38. data/lib/fiddle_fluidsynth/midi_input/player.rb +289 -0
  39. data/lib/fiddle_fluidsynth/midi_input/router.rb +225 -0
  40. data/lib/fiddle_fluidsynth/midi_input.rb +11 -0
  41. data/lib/fiddle_fluidsynth/misc/misc.rb +162 -0
  42. data/lib/fiddle_fluidsynth/misc.rb +6 -0
  43. data/lib/fiddle_fluidsynth/sequencer/events.rb +679 -0
  44. data/lib/fiddle_fluidsynth/sequencer/sequencer.rb +384 -0
  45. data/lib/fiddle_fluidsynth/sequencer.rb +7 -0
  46. data/lib/fiddle_fluidsynth/settings/settings.rb +465 -0
  47. data/lib/fiddle_fluidsynth/settings.rb +6 -0
  48. data/lib/fiddle_fluidsynth/soundfonts/generators.rb +128 -0
  49. data/lib/fiddle_fluidsynth/soundfonts/loader.rb +506 -0
  50. data/lib/fiddle_fluidsynth/soundfonts/modulators.rb +247 -0
  51. data/lib/fiddle_fluidsynth/soundfonts/soundfonts.rb +64 -0
  52. data/lib/fiddle_fluidsynth/soundfonts/voices.rb +178 -0
  53. data/lib/fiddle_fluidsynth/soundfonts.rb +11 -0
  54. data/lib/fiddle_fluidsynth/synth/audio_rendering.rb +100 -0
  55. data/lib/fiddle_fluidsynth/synth/effect/chorus.rb +269 -0
  56. data/lib/fiddle_fluidsynth/synth/effect/iir_filter.rb +81 -0
  57. data/lib/fiddle_fluidsynth/synth/effect/ladspa.rb +172 -0
  58. data/lib/fiddle_fluidsynth/synth/effect/reverb.rb +207 -0
  59. data/lib/fiddle_fluidsynth/synth/effect.rb +10 -0
  60. data/lib/fiddle_fluidsynth/synth/midi/messages.rb +292 -0
  61. data/lib/fiddle_fluidsynth/synth/midi/setup.rb +235 -0
  62. data/lib/fiddle_fluidsynth/synth/midi/tuning.rb +128 -0
  63. data/lib/fiddle_fluidsynth/synth/midi.rb +9 -0
  64. data/lib/fiddle_fluidsynth/synth/params/params.rb +200 -0
  65. data/lib/fiddle_fluidsynth/synth/params.rb +8 -0
  66. data/lib/fiddle_fluidsynth/synth/soundfont_management.rb +210 -0
  67. data/lib/fiddle_fluidsynth/synth/synth.rb +114 -0
  68. data/lib/fiddle_fluidsynth/synth/voice_control.rb +94 -0
  69. data/lib/fiddle_fluidsynth/synth.rb +18 -0
  70. data/lib/fiddle_fluidsynth/types/types.rb +131 -0
  71. data/lib/fiddle_fluidsynth/types.rb +10 -0
  72. data/lib/fiddle_fluidsynth/util/callback.rb +585 -0
  73. data/lib/fiddle_fluidsynth/util/interface/settings.rb +689 -0
  74. data/lib/fiddle_fluidsynth/util/interface/soundfont.rb +115 -0
  75. data/lib/fiddle_fluidsynth/util/interface/soundfont_preset.rb +69 -0
  76. data/lib/fiddle_fluidsynth/util/interface/soundfont_sample.rb +61 -0
  77. data/lib/fiddle_fluidsynth/util/interface.rb +11 -0
  78. data/lib/fiddle_fluidsynth/util/module_hier.rb +403 -0
  79. data/lib/fiddle_fluidsynth/util/util.rb +467 -0
  80. data/lib/fiddle_fluidsynth/util-after.rb +12 -0
  81. data/lib/fiddle_fluidsynth/util.rb +37 -0
  82. data/lib/fiddle_fluidsynth/version.rb +10 -0
  83. data/lib/fiddle_fluidsynth.rb +57 -0
  84. data/sig/fiddle_fluidsynth.rbs +4 -0
  85. metadata +128 -0
@@ -0,0 +1,506 @@
1
+ #
2
+ # filename: soundfonts/loader.rb
3
+ #
4
+
5
+
6
+ # References
7
+ # - fluidsynth.org, [API Reference](https://www.fluidsynth.org/api/modules.html)
8
+ #
9
+ class FiddleFluidSynth
10
+
11
+ # Create custom SoundFont loaders.
12
+ # ==== References
13
+ # - API Reference, SoundFont/[SoundFont Loader](https://www.fluidsynth.org/api/group__soundfont__loader.html)
14
+ # - [library fiddle](https://docs.ruby-lang.org/ja/latest/library/fiddle.html)
15
+ #
16
+
17
+ # Enumerations.
18
+ #
19
+ #
20
+
21
+ #
22
+ enum(
23
+ FLUID_PRESET_SELECTED: nil,
24
+ FLUID_PRESET_UNSELECTED: nil,
25
+ FLUID_SAMPLE_DONE: nil,
26
+ FLUID_PRESET_PIN: nil,
27
+ FLUID_PRESET_UNPIN: nil)
28
+
29
+ # fluid_sample_type
30
+ enum(
31
+ :fluid_sample_type,
32
+ FLUID_SAMPLETYPE_MONO: 0x1,
33
+ FLUID_SAMPLETYPE_RIGHT: 0x2,
34
+ FLUID_SAMPLETYPE_LEFT: 0x4,
35
+ FLUID_SAMPLETYPE_LINKED: 0x8,
36
+ FLUID_SAMPLETYPE_OGG_VORBIS: 0x10,
37
+ FLUID_SAMPLETYPE_ROM: 0x8000)
38
+
39
+ #
40
+ module C
41
+
42
+ # Typedefs.
43
+ #
44
+ #
45
+
46
+ typealias 'fluid_preset_free_t', 'void*'
47
+ typealias 'fluid_preset_get_banknum_t', 'void*'
48
+ typealias 'fluid_preset_get_name_t', 'void*'
49
+ typealias 'fluid_preset_get_num_t', 'void*'
50
+ typealias 'fluid_preset_noteon_t', 'void*'
51
+
52
+ #
53
+ typealias 'fluid_sfloader_callback_close_t', 'void*'
54
+ typealias 'fluid_sfloader_callback_open_t', 'void*'
55
+ typealias 'fluid_sfloader_callback_read_t', 'void*'
56
+ typealias 'fluid_sfloader_callback_seek_t', 'void*'
57
+ typealias 'fluid_sfloader_callback_tell_t', 'void*'
58
+ typealias 'fluid_sfloader_free_t', 'void*'
59
+ typealias 'fluid_sfloader_load_t', 'void*'
60
+
61
+ #
62
+ typealias 'fluid_sfont_free_t', 'void*'
63
+ typealias 'fluid_sfont_get_name_t', 'void*'
64
+ typealias 'fluid_sfont_get_preset_t', 'void*'
65
+ typealias 'fluid_sfont_iteration_next_t', 'void*'
66
+ typealias 'fluid_sfont_iteration_start_t', 'void*'
67
+
68
+
69
+
70
+
71
+ # Lifecycle Functions (SoundFont Loader).
72
+ #
73
+ #
74
+
75
+ # Creates a new SoundFont loader.
76
+ extern 'fluid_sfloader_t* new_fluid_sfloader' +
77
+ '(fluid_sfloader_load_t*, fluid_sfloader_free_t*)'
78
+
79
+ # Frees a SoundFont loader created with new_fluid_sfloader().
80
+ extern 'void delete_fluid_sfloader(fluid_sfloader_t*)'
81
+
82
+ # Creates a default soundfont2 loader that can be used with
83
+ # fluid_synth_add_sfloader().
84
+ extern 'fluid_sfloader_t* new_fluid_defsfloader(fluid_settings_t*)'
85
+
86
+
87
+ # Lifecycle Functions (SoundFont).
88
+ #
89
+ #
90
+
91
+ # Creates a new virtual SoundFont instance structure.
92
+ extern 'fluid_sfont_t* new_fluid_sfont' +
93
+ '(fluid_sfont_get_name_t, fluid_sfont_get_preset_t,' +
94
+ ' fluid_sfont_iteration_start_t, fluid_sfont_iteration_next_t,' +
95
+ ' fluid_sfont_free_t)'
96
+
97
+ # Destroys a SoundFont instance created with new_fluid_sfont().
98
+ extern 'int delete_fluid_sfont(fluid_sfont_t*)'
99
+
100
+
101
+ # Lifecycle Functions (Preset).
102
+ #
103
+ #
104
+
105
+ # Create a virtual SoundFont preset instance.
106
+ extern 'fluid_preset_t* new_fluid_preset' +
107
+ '(fluid_sfont_t*, fluid_preset_get_name_t*,' +
108
+ ' fluid_preset_get_banknum_t, fluid_preset_get_num_t,' +
109
+ ' fluid_preset_noteon_t, fluid_preset_free_t)'
110
+
111
+ # Destroys a SoundFont preset instance created with new_fluid_preset().
112
+ extern 'void delete_fluid_preset(fluid_preset_t*)'
113
+
114
+
115
+ # Lifecycle Functions (Sample).
116
+ #
117
+ #
118
+
119
+ # Create a new sample instance.
120
+ extern 'fluid_sample_t* new_fluid_sample(void)'
121
+
122
+ # Destroy a sample instance previously created with new_fluid_sample().
123
+ extern 'void delete_fluid_sample(fluid_sample_t*)'
124
+
125
+
126
+ # Functions.
127
+ #
128
+ #
129
+
130
+ # Retrieves the presets bank number by executing the get_bank function
131
+ # provided on its creation.
132
+ extern 'int fluid_preset_get_banknum(fluid_preset_t*)'
133
+
134
+ # Retrieve the private data of a SoundFont preset instance.
135
+ extern 'void* fluid_preset_get_data(fluid_preset_t*)'
136
+
137
+ # Retrieves the presets name by executing the get_name function provided
138
+ # on its creation.
139
+ extern 'char* fluid_preset_get_name(fluid_preset_t*)'
140
+
141
+ # Retrieves the presets (instrument) number by executing the get_num
142
+ # function provided on its creation.
143
+ extern 'int fluid_preset_get_num(fluid_preset_t*)'
144
+
145
+ # Retrieves the presets parent SoundFont instance.
146
+ extern 'fluid_sfont_t* fluid_preset_get_sfont(fluid_preset_t*)'
147
+
148
+ # Set private data to use with a SoundFont preset instance.
149
+ extern 'int fluid_preset_set_data(fluid_preset_t*, void*)'
150
+
151
+ ### .
152
+
153
+ # Set the loop of a sample.
154
+ extern 'int fluid_sample_set_loop' +
155
+ '(fluid_sample_t*, unsigned int, unsigned int)'
156
+
157
+ # Set the name of a SoundFont sample.
158
+ extern 'int fluid_sample_set_name(fluid_sample_t*, char*)'
159
+
160
+ # Set the pitch of a sample.
161
+ extern 'int fluid_sample_set_pitch(fluid_sample_t*, int, int)'
162
+
163
+ # Assign sample data to a SoundFont sample.
164
+ extern 'int fluid_sample_set_sound_data' +
165
+ '(fluid_sample_t*, short*, char*,' +
166
+ ' unsigned int, unsigned int, short)'
167
+
168
+ # Returns the size of the fluid_sample_t structure.
169
+ extern 'size_t fluid_sample_sizeof(void)'
170
+
171
+ # Obtain private data previously set with fluid_sfloader_set_data().
172
+ extern 'void* fluid_sfloader_get_data(fluid_sfloader_t*)'
173
+
174
+ # Set custom callbacks to be used upon soundfont loading.
175
+ extern 'int fluid_sfloader_set_callbacks' +
176
+ '(fluid_sfloader_t*, fluid_sfloader_callback_open_t*,' +
177
+ ' fluid_sfloader_callback_read_t*, fluid_sfloader_callback_seek_t*,' +
178
+ ' fluid_sfloader_callback_tell_t*, fluid_sfloader_callback_close_t*)'
179
+
180
+ # Specify private data to be used by fluid_sfloader_load_t.
181
+ extern 'int fluid_sfloader_set_data(fluid_sfloader_t*, void*)'
182
+
183
+ ### .
184
+
185
+ # Retrieve the private data of a SoundFont instance.
186
+ extern 'void* fluid_sfont_get_data(fluid_sfont_t*)'
187
+
188
+ # Retrieve the unique ID of a SoundFont instance.
189
+ extern 'int fluid_sfont_get_id(fluid_sfont_t*)'
190
+
191
+ # Retrieve the name of a SoundFont instance.
192
+ extern 'char* fluid_sfont_get_name(fluid_sfont_t*)'
193
+
194
+ # Retrieve the preset assigned the a SoundFont instance for the
195
+ # given bank and preset number.
196
+ extern 'fluid_preset_t* fluid_sfont_get_preset(fluid_sfont_t*, int, int)'
197
+
198
+ # Virtual SoundFont preset iteration function.
199
+ extern 'fluid_preset_t* fluid_sfont_iteration_next(fluid_sfont_t*)'
200
+
201
+ # Starts / re-starts virtual preset iteration in a SoundFont.
202
+ extern 'void fluid_sfont_iteration_start(fluid_sfont_t*)'
203
+
204
+ # Set private data to use with a SoundFont instance.
205
+ extern 'int fluid_sfont_set_data(fluid_sfont_t*, void*)'
206
+
207
+ ### .
208
+
209
+ # Add a SoundFont loader to the synth.
210
+ extern 'void fluid_synth_add_sfloader(fluid_synth_t*, fluid_sfloader_t*)'
211
+
212
+ # Get active preset on a MIDI channel.
213
+ extern 'fluid_preset_t* fluid_synth_get_channel_preset(fluid_synth_t*, int)'
214
+
215
+
216
+ end
217
+ end
218
+
219
+
220
+ #
221
+ #
222
+ #
223
+ class FiddleFluidSynth
224
+ module SoundFontsLoaderIF
225
+ end
226
+ extend SoundFontsLoaderIF
227
+ include SoundFontsLoaderIF
228
+ end
229
+
230
+
231
+ # Lifecycle Functions (SoundFont Loader).
232
+ #
233
+ #
234
+ class FiddleFluidSynth
235
+ module SoundFontsLoaderIF
236
+
237
+ #
238
+ def sfloader_new( load: , free: )
239
+ ret = C.new_fluid_sfloader(load,free)
240
+ ret
241
+ end
242
+ def defsfloader_new( settings )
243
+ ret = C.new_fluid_defsfloader(settings)
244
+ ret
245
+ end
246
+ def sfloader_delete( loader )
247
+ ret = C.delete_fluid_sfloader(loader)
248
+ ret
249
+ end
250
+
251
+ end
252
+ end
253
+
254
+ # Lifecycle Functions (SoundFont).
255
+ #
256
+ #
257
+ class FiddleFluidSynth
258
+ module SoundFontsLoaderIF
259
+
260
+ #
261
+ # ==== See Also
262
+ # - `#preset_get_sfont()`
263
+ # - synth/soundfont_management.rb:`#synth_get_sfont()`
264
+ # - synth/soundfont_management.rb:`#synth_get_sfont_by_id()`
265
+ # - synth/soundfont_management.rb:`#synth_get_sfont_by_name()`
266
+ #
267
+ # def sfont_new( get_name: , get_preset: , iter_start: , iter_next: , free: )
268
+ def sfont_new( get_name: nil, get_preset: nil,
269
+ iter_start: nil, iter_next: nil, free: nil )
270
+ ret = C.new_fluid_sfont(
271
+ get_name, get_preset, iter_start, iter_next, free)
272
+ #ng. if ret.null? || ret.nil?
273
+ if ret.nil? || ret.null?
274
+ ret = nil
275
+ else
276
+ ret.extend(Interface::SoundFont)
277
+ end
278
+ ret
279
+ end
280
+ def sfont_delete( sfont )
281
+ ret = C.delete_fluid_sfont(sfont)
282
+ ret
283
+ end
284
+
285
+ end
286
+ end
287
+
288
+ # Lifecycle Functions (Preset).
289
+ #
290
+ #
291
+ class FiddleFluidSynth
292
+ module SoundFontsLoaderIF
293
+
294
+ #
295
+ # ==== See Also
296
+ # - `#sfont_get_preset()`
297
+ #
298
+ def preset_new( get_name: nil, get_preset: nil,
299
+ iter_start: nil, iter_next: nil, noteon: nil,
300
+ free: nil )
301
+ ret = C.new_fluid_preset(
302
+ get_name, get_preset, iter_start, iter_next, noteon, free)
303
+ #ng. if ret.null? || ret.nil?
304
+ if ret.nil? || ret.null?
305
+ ret = nil
306
+ else
307
+ ret.extend(Interface::SoundFont::Preset)
308
+ end
309
+ ret
310
+ end
311
+ def preset_delete( preset )
312
+ ret = C.delete_fluid_preset(preset)
313
+ ret
314
+ end
315
+
316
+ end
317
+ end
318
+
319
+ # Lifecycle Functions (Sample).
320
+ #
321
+ #
322
+ class FiddleFluidSynth
323
+ module SoundFontsLoaderIF
324
+
325
+ def sample_new( )
326
+ ret = C.new_fluid_sample()
327
+ #ng. if ret.null? || ret.nil?
328
+ if ret.nil? || ret.null?
329
+ ret = nil
330
+ else
331
+ ret.extend(Interface::SoundFont::Sample)
332
+ end
333
+ ret
334
+ end
335
+ def sample_delete( sample )
336
+ ret = C.delete_fluid_sample(sample)
337
+ ret
338
+ end
339
+
340
+ end
341
+ end
342
+
343
+
344
+ # Functions.
345
+ #
346
+ #
347
+ class FiddleFluidSynth
348
+ module SoundFontsLoaderIF
349
+
350
+ # for Preset.
351
+ def preset_get_banknum( preset )
352
+ ret = C.fluid_preset_get_banknum(preset)
353
+ ret
354
+ end
355
+ alias preset_get_bknum preset_get_banknum
356
+
357
+ def preset_get_data( preset )
358
+ ret = C.fluid_preset_get_data(preset)
359
+ ret
360
+ end
361
+ def preset_get_name( preset )
362
+ # ret = C.fluid_preset_get_name(preset)
363
+ ret = C.fluid_preset_get_name(preset).to_s
364
+ ret
365
+ end
366
+ def preset_get_num( preset )
367
+ ret = C.fluid_preset_get_num(preset)
368
+ ret
369
+ end
370
+
371
+ #
372
+ # ==== See Also
373
+ # - `#sfont_new()`
374
+ #
375
+ def preset_get_sfont( preset )
376
+ ret = C.fluid_preset_get_sfont(preset)
377
+ #ng. if ret.null? || ret.nil?
378
+ if ret.nil? || ret.null?
379
+ ret = nil
380
+ else
381
+ ret.extend(Interface::SoundFont)
382
+ end
383
+ ret
384
+ end
385
+ def preset_set_data( preset, data: )
386
+ ret = C.fluid_preset_set_data(preset,data)
387
+ ret
388
+ end
389
+
390
+ # for Sample.
391
+ def sample_set_loop( sample, loop_start: , loop_end: )
392
+ ret = C.fluid_sample_set_loop(sample,loop_start,loop_end)
393
+ ret
394
+ end
395
+ def sample_set_name( sample, name: )
396
+ ret = C.fluid_sample_set_name(sample,name)
397
+ ret
398
+ end
399
+ def sample_set_pitch( sample, root_key: , fine_tune: )
400
+ ret = C.fluid_sample_set_pitch(sample,root_key,fine_tune)
401
+ ret
402
+ end
403
+ def sample_set_sound_data( sample,
404
+ data: , data24: ,
405
+ nbframes: , sample_rate: , copy_data: )
406
+ ret = C.sample_preset_set_sound_data(
407
+ sample,data,data24,nbframes,sample_rate,copy_data)
408
+ ret
409
+ end
410
+
411
+ #
412
+ def sample_sizeof()
413
+ ret = C.fluid_sample_sizeof()
414
+ ret
415
+ end
416
+
417
+ end
418
+ end
419
+
420
+
421
+ class FiddleFluidSynth
422
+ module SoundFontsLoaderIF
423
+
424
+ # for sfloader.
425
+ def sfloader_get_data( loader )
426
+ ret = C.fluid_sfloader_get_data(loader)
427
+ ret
428
+ end
429
+
430
+ def sfloader_set_callbacks( loader, open: , read: , seek: , tell: , close: )
431
+ ret = C.fluid_sfloader_set_callbacks(loader,open,read,seek,tell,close)
432
+ ret
433
+ end
434
+
435
+ #
436
+ def sfloader_set_data( loader, data: )
437
+ ret = C.fluid_sfloader_set_data(loader,data)
438
+ ret
439
+ end
440
+
441
+ # for SoundFont.
442
+ def sfont_get_data( sfont = self.sfont )
443
+ ret = C.fluid_sfont_get_data(sfont)
444
+ ret
445
+ end
446
+ def sfont_get_id( sfont = self.sfont )
447
+ ret = C.fluid_sfont_get_id(sfont)
448
+ ret
449
+ end
450
+ def sfont_get_name( sfont = self.sfont )
451
+ ret = C.fluid_sfont_get_name(sfont).to_s
452
+ ret
453
+ end
454
+
455
+ #
456
+ # ==== See Also
457
+ # - `#preset_new()`
458
+ #
459
+ # def sfont_get_preset( sfont, bknum: , prenum: )
460
+ def sfont_get_preset( sfont = self.sfont, bknum: , prenum: )
461
+ ret = C.fluid_sfont_get_preset(sfont, bknum, prenum)
462
+ #ng. if ret.null? || ret.nil?
463
+ if ret.nil? || ret.null?
464
+ ret = nil
465
+ else
466
+ ret.extend(Interface::SoundFont::Preset)
467
+ end
468
+ ret
469
+ end
470
+
471
+ #
472
+ def sfont_iteration_next( sfont = self.sfont )
473
+ ret = C.fluid_sfont_iteration_next(sfont)
474
+ #ng. if ret.null? || ret.nil?
475
+ if ret.nil? || ret.null?
476
+ ret = nil
477
+ else
478
+ ret.extend(Interface::SoundFont::Preset)
479
+ end
480
+ ret
481
+ end
482
+ def sfont_iteration_start( sfont = self.sfont )
483
+ ret = C.fluid_sfont_iteration_start(sfont)
484
+ ret
485
+ end
486
+ def sfont_set_data( sfont = self.sfont, data: )
487
+ ret = C.fluid_sfont_set_data(sfont, data)
488
+ ret
489
+ end
490
+
491
+ # synth...?
492
+ def synth_add_sfloader( synth = self.synth, loader: )
493
+ ret = C.fluid_synth_add_sfloader(synth, loader)
494
+ ret
495
+ end
496
+
497
+ def synth_get_channel_preset( synth = self.synth, ch: )
498
+ ret = C.fluid_synth_get_channel_preset(synth, ch)
499
+ ret
500
+ end
501
+
502
+ end
503
+ end
504
+
505
+
506
+ #### endof filename: soundfonts/loader.rb