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,115 @@
1
+ #
2
+ # filename: util/interface/soundfont.rb
3
+ #
4
+ require 'fiddle'
5
+ require 'fiddle/import'
6
+
7
+
8
+ #
9
+ #
10
+ #
11
+ class FiddleFluidSynth
12
+
13
+ #
14
+ module Interface
15
+ module SoundFont; end
16
+ end
17
+
18
+ end
19
+
20
+
21
+ # SoundFont getters/setters.
22
+ #
23
+ #
24
+ module FiddleFluidSynth::Interface
25
+ module SoundFont
26
+
27
+ FFS = FiddleFluidSynth
28
+
29
+ ### from soundfonts/loader.rb
30
+
31
+ #
32
+ def data( _self: self.itself )
33
+ FFS.sfont_get_data(_self)
34
+ end
35
+ def set_data( data, _self: self.itself )
36
+ FFS.sfont_set_data(_self, data: data)
37
+ end
38
+
39
+ def id( _self: self.itself )
40
+ FFS.sfont_get_id(_self)
41
+ end
42
+ alias sfid id
43
+
44
+ def name( _self: self.itself )
45
+ FFS.sfont_get_name(_self)
46
+ end
47
+
48
+ #
49
+ # ==== Args
50
+ # bknum:: bank number.
51
+ # prenum:: preset number.
52
+ # ==== Returns
53
+ # nil or Preset instance.
54
+ def preset( bknum: , prenum: , _self: self.itself )
55
+ FFS.sfont_get_preset(_self, bknum: bknum, prenum: prenum)
56
+ end
57
+
58
+ #
59
+ def preset_iter_reset( _self: self.itself )
60
+ FFS.sfont_iteration_start(_self)
61
+ end
62
+
63
+ def each_preset( _self: self.itself, debug_f: false, &blk )
64
+ #
65
+ # self.preset_iter_reset()
66
+ self.preset_iter_reset(_self: _self)
67
+ preset = nil
68
+ cnt = 0
69
+ $stderr.puts "{#{__method__}} cnt: #{cnt}," +
70
+ " preset: #{preset.inspect}" if debug_f
71
+
72
+
73
+ # until (preset = FFS.sfont_iteration_next(_self))&.null?
74
+ # while (preset = FFS.sfont_iteration_next(_self)) # ok.
75
+ #
76
+ #ng. while (preset = FFS.sfont_iteration_next(_self),
77
+ # #(preset && !preset.null?))
78
+ # (preset))
79
+ #ng. while ((preset = FFS.sfont_iteration_next(_self)),
80
+ # (preset && !preset.null?))
81
+ #ng. while (preset = FFS.sfont_iteration_next(_self)),
82
+ # (preset && !preset.null?)
83
+
84
+ while [preset = FFS.sfont_iteration_next(_self),
85
+ (preset && !preset.null?)].last
86
+
87
+ $stderr.puts "{#{__method__}} cnt: #{cnt}," +
88
+ " preset: #{preset.inspect}:#{preset.class}," +
89
+ " null?: #{preset.null?}" if debug_f
90
+
91
+ blk.(preset)
92
+ cnt += 1
93
+ end
94
+ $stderr.puts "{#{__method__}} LAST: cnt: #{cnt}," +
95
+ " preset: #{preset.inspect}:#{preset.class}" if debug_f
96
+
97
+ cnt
98
+ end
99
+ alias preset_iter each_preset
100
+
101
+ def presets( _self: self.itself, debug_f: false )
102
+ ret = []
103
+
104
+ self.each_preset(debug_f: debug_f){|pres| ret << pres }
105
+ $stderr.puts "{#{__method__}} ret (#{ret.size}):" +
106
+ " #{ret.first.name} - #{ret.last.name}" if debug_f
107
+ ret
108
+ end
109
+ alias all_presets presets
110
+
111
+ end
112
+ end
113
+
114
+
115
+ #### endof filename: util/interface/soundfont.rb
@@ -0,0 +1,69 @@
1
+ #
2
+ # filename: util/interface/soundfont_preset.rb
3
+ #
4
+ require 'fiddle'
5
+ require 'fiddle/import'
6
+
7
+
8
+ #
9
+ #
10
+ #
11
+ class FiddleFluidSynth
12
+
13
+ #
14
+ module Interface
15
+ module SoundFont
16
+ module Preset; end
17
+ end
18
+ end
19
+
20
+ end
21
+
22
+
23
+ # SoundFont getters/setters.
24
+ #
25
+ #
26
+ module FiddleFluidSynth::Interface
27
+ module SoundFont::Preset
28
+
29
+ FFS = FiddleFluidSynth
30
+
31
+ ### from soundfonts/loader.rb
32
+
33
+ #
34
+ def banknum( _self: self.itself )
35
+ FFS.preset_get_banknum(_self)
36
+ end
37
+ alias bknum banknum
38
+
39
+ #
40
+ def data( _self: self.itself )
41
+ FFS.preset_get_data(_self, data: data)
42
+ end
43
+
44
+ def set_data( data, _self: self.itself )
45
+ FFS.preset_set_data(_self, data: data)
46
+ end
47
+
48
+ #
49
+ def num( _self: self.itself )
50
+ FFS.preset_get_num(_self)
51
+ end
52
+ alias prenum num
53
+
54
+ #
55
+ def name( _self: self.itself )
56
+ FFS.preset_get_name(_self)
57
+ end
58
+
59
+ #
60
+ def sfont( _self: self.itself )
61
+ FFS.preset_get_sfont(_self)
62
+ end
63
+ alias soundfont sfont
64
+
65
+ end
66
+ end
67
+
68
+
69
+ #### endof filename: util/interface/soundfont_preset.rb
@@ -0,0 +1,61 @@
1
+ #
2
+ # filename: util/interface/soundfont_sample.rb
3
+ #
4
+ require 'fiddle'
5
+ require 'fiddle/import'
6
+
7
+
8
+ #
9
+ #
10
+ #
11
+ class FiddleFluidSynth
12
+
13
+ #
14
+ module Interface
15
+ module SoundFont
16
+ module Sample; end
17
+ end
18
+ end
19
+
20
+ end
21
+
22
+
23
+ # SoundFont getters/setters.
24
+ #
25
+ #
26
+ module FiddleFluidSynth::Interface
27
+ module SoundFont::Sample
28
+
29
+ FFS = FiddleFluidSynth
30
+
31
+ ### from soundfonts/loader.rb
32
+
33
+ #
34
+ def set_loop( loop_start: , loop_end: , _self: self.itself )
35
+ FFS.sample_set_loop(_self, loop_start, loop_end)
36
+ end
37
+ def set_name( name, _self: self.itself )
38
+ FFS.sample_set_name(_self, name: name)
39
+ end
40
+
41
+ def set_pitch( root_key: , fine_tune: , _self: self.itself )
42
+ FFS.sample_set_pitch(_self, root_key: root_key, fine_tune: fine_tune)
43
+ end
44
+
45
+ def set_sound_data( data: , data24: ,
46
+ nbframes: , sample_rate: , copy_data: ,
47
+ _self: self.itself )
48
+ FFS.sample_set_sound_data(
49
+ _self, data: data, data24: data24,
50
+ nbframes: nbframes, sample_rate: sample_rate, copy_data: copy_data)
51
+ end
52
+
53
+ def sizeof( _self: self.itself )
54
+ FFS.sample_sizeof()
55
+ end
56
+
57
+ end
58
+ end
59
+
60
+
61
+ #### endof filename: util/interface/soundfont_sample.rb
@@ -0,0 +1,11 @@
1
+ #
2
+ #
3
+ #
4
+
5
+ require_relative "./interface/settings"
6
+ require_relative "./interface/soundfont"
7
+ require_relative "./interface/soundfont_preset"
8
+ require_relative "./interface/soundfont_sample"
9
+
10
+
11
+ ####
@@ -0,0 +1,403 @@
1
+ #
2
+ # filename: fiddle-fluidsynth/util/module_hier.rb
3
+ #
4
+
5
+
6
+ #
7
+ #
8
+ #
9
+ class FiddleFluidSynth
10
+
11
+ #
12
+ class ModuleBase
13
+ #
14
+ class AudioOutput < ModuleBase; end
15
+ class CommandInterface < ModuleBase; end
16
+ class Logging < ModuleBase; end
17
+
18
+ class Settings < ModuleBase; end
19
+ class Synthesizer < ModuleBase; end
20
+
21
+ class SoundFont < ModuleBase; end
22
+
23
+ end
24
+
25
+ #
26
+ module SoundFont_IF
27
+ def id
28
+ end
29
+ end
30
+
31
+ end
32
+
33
+
34
+ #
35
+ #
36
+ #
37
+ class FiddleFluidSynth
38
+
39
+ #
40
+ # should be called from FiddleFluidSynth#initialize()
41
+ #
42
+ def init_objects( top = self )
43
+ #
44
+ @object = ModuleBase.new(
45
+ parent: top, fluidsynth_instance: top, value: nil)
46
+
47
+ end
48
+ attr_reader :object
49
+
50
+ end
51
+
52
+
53
+ #
54
+ #
55
+ #
56
+ class FiddleFluidSynth
57
+
58
+ #
59
+ class ModuleBase
60
+ def initialize( parent: , fluidsynth_instance: , value: , sub_new_f: true )
61
+ @parent = parent
62
+ @value = value
63
+ @fluidsynth_instance = fluidsynth_instance
64
+
65
+ #
66
+ if sub_new_f
67
+ self.init_sub
68
+ end
69
+
70
+ end
71
+ attr_reader :parent
72
+ attr_accessor :value
73
+ #ng. alias :itself :value # ng... i dont know why...
74
+ alias :itself :value
75
+ #def itself; self.value; end # ok.
76
+ # alias :object :value
77
+ alias :obj :value
78
+ attr_reader :fluidsynth_instance
79
+
80
+ def init_sub
81
+ @settings = Settings.new(
82
+ parent: self,
83
+ fluidsynth_instance: fluidsynth_instance, value: nil)
84
+ #@audio_output = AudioOutput.new(parent: self, fluidsynth_instance: fluidsynth_instance, value: nil)
85
+ #@commandInterface = CommandInterface.new(parent: self, fluidsynth_instance: fluidsynth_instance, value: nil)
86
+ #@logging = Logging.new(parent: self, fluidsynth_instance: fluidsynth_instance, value: nil)
87
+ @soundfont = SoundFont.new(
88
+ parent: self,
89
+ fluidsynth_instance: fluidsynth_instance,
90
+ value: fluidsynth_instance.sfonts.first)
91
+ end
92
+ attr_reader :settings
93
+
94
+ #
95
+ def soundfont( at_sfid = 1 )
96
+ @soundfont.sfid = at_sfid
97
+ @soundfont
98
+ end
99
+
100
+ end
101
+
102
+ end
103
+
104
+ #
105
+ #
106
+ #
107
+ class FiddleFluidSynth::ModuleBase
108
+
109
+ class Settings
110
+ def initialize( parent: , fluidsynth_instance: , value: , sub_new_f: true )
111
+ # super
112
+ super(parent: parent, fluidsynth_instance: fluidsynth_instance,
113
+ value: fluidsynth_instance.settings, sub_new_f: false)
114
+
115
+ if sub_new_f
116
+ self.init_sub
117
+ end
118
+
119
+ end
120
+ def value; self.fluidsynth_instance.settings; end
121
+ def init_sub
122
+ end
123
+ end
124
+
125
+ end
126
+
127
+ #
128
+ #
129
+ #
130
+ class FiddleFluidSynth::ModuleBase
131
+
132
+ class Synthesizer
133
+ def initialize( parent: , fluidsynth_instance: , value: , sub_new_f: true )
134
+ super(parent: parent, fluidsynth_instance: fluidsynth_instance,
135
+ value: fluidsynth_instance.synth, sub_new_f: false)
136
+
137
+ if sub_new_f
138
+ self.init_sub
139
+ end
140
+
141
+ end
142
+ def value; self.fluidsynth_instance.synth; end
143
+ def init_sub
144
+ end
145
+ end
146
+
147
+ end
148
+
149
+
150
+ # SoundFont
151
+ #
152
+ #
153
+ class FiddleFluidSynth::ModuleBase
154
+ #
155
+ class SoundFont
156
+ class Bank < SoundFont; end
157
+ class Bank::Presets < Bank; end
158
+ end
159
+
160
+ # SoundFont.
161
+ # this hierachy represents an array of SoundFonts.
162
+ #
163
+ class SoundFont
164
+
165
+ #
166
+ #
167
+ # ==== Args
168
+ # value:: NOT used.
169
+ #
170
+ def initialize( parent: , fluidsynth_instance: , value: nil, sub_new_f: true )
171
+ #_val = parent.sfonts[@sfid-1]
172
+ super(parent: parent, fluidsynth_instance: fluidsynth_instance,
173
+ value: value, sub_new_f: false)
174
+
175
+ #
176
+ unless value.nil?
177
+ @sfid = fluidsynth_instance.sfont_get_id(value)
178
+ else
179
+ @sfid = nil
180
+ end
181
+ @map_preset = {
182
+ sfid: {
183
+ bknum: {
184
+ prenum: { },
185
+ },
186
+ },
187
+ }
188
+
189
+ #
190
+ if sub_new_f
191
+ self.init_sub
192
+ end
193
+
194
+ end
195
+ attr_accessor :sfid
196
+ attr_reader :map_preset
197
+
198
+ # def value( _sfid = self.sfid )
199
+ def value( debug_f: false )
200
+ _sfid = self.sfid
201
+ # ret = self.fluidsynth_instance.sfonts[_sfid-1]
202
+ # ret = self.fluidsynth_instance.synth_get_sfont_by_id(_sfid)
203
+ idx = self.fluidsynth_instance.sfid_ary.index(_sfid)
204
+ ret = self.fluidsynth_instance.sfonts[idx]
205
+ $stderr.puts "{#{self.class}##{__method__}} _sfid: #{_sfid}," +
206
+ " 0x#{ret.to_i.to_s(16)}:#{ret.class}" if debug_f
207
+ ret
208
+ end
209
+
210
+ def count
211
+ ret = self.fluidsynth_instance.synth_sfcount()
212
+ ret
213
+ end
214
+
215
+ #
216
+ #
217
+ #
218
+ def init_sub
219
+ @bank = Bank.new(
220
+ parent: self, fluidsynth_instance: fluidsynth_instance,
221
+ value: nil, sub_new_f: true)
222
+ end
223
+ def bank( at_bknum = 0)
224
+ # @bank.bank = at_bknum
225
+ @bank.bknum = at_bknum
226
+ @bank
227
+ end
228
+
229
+ #
230
+ def full_path
231
+ parent.soundfont_fullpath
232
+ end
233
+
234
+ def load( filename: self.full_path, reset_presets: parent.reset_presets,
235
+ synth: self.fluidsynth_instance.synth )
236
+ self.fluidsynth_instance.synth_sfload(
237
+ filename: filename, reset_presets: reset_presets, synth: synth)
238
+ end
239
+
240
+ #
241
+ def name( sfont = self.value )
242
+ # name = self.fluidsynth_instance.sfont_get_name(sfont).to_s
243
+ name = self.fluidsynth_instance.sfont_get_name(sfont)
244
+ ret = name
245
+ ret
246
+ end
247
+
248
+ #
249
+ #
250
+ #
251
+ def preset_iter_reset( _sfont = self.value )
252
+ self.fluidsynth_instance.sfont_iteration_start(_sfont)
253
+ end
254
+
255
+ #
256
+ #
257
+ # ====
258
+ # &blk:: {|preset| }
259
+ #
260
+ # ==== See Also
261
+ # - fluidsynth_settings_foreach()
262
+ #
263
+ def preset_iter( debug_f: false, &blk )
264
+ sfont = self.value
265
+ cnt = 0
266
+ self.preset_iter_reset(sfont)
267
+ preset = self.fluidsynth_instance.sfont_iteration_next(sfont)
268
+ cnt += 1
269
+
270
+ #ng. while !(preset&.null?)
271
+ while !(preset.nil? || preset.null?)
272
+ $stderr.puts "cnt: #{cnt}: #{preset.inspect}" if debug_f
273
+ blk.call(preset)
274
+
275
+ preset = self.fluidsynth_instance.sfont_iteration_next(sfont)
276
+ cnt += 1
277
+ end
278
+
279
+ cnt
280
+ end
281
+ alias each_preset preset_iter
282
+
283
+ def scan_presets
284
+ _sfnm = self.name
285
+ @map_preset[_sfnm] = {}
286
+
287
+ #
288
+ ret = self.each_preset{|preset|
289
+ bknum = self.fluidsynth_instance.preset_get_banknum(preset)
290
+ prenum = self.fluidsynth_instance.preset_get_num(preset)
291
+ prename = self.fluidsynth_instance.preset_get_name(preset)
292
+
293
+ @map_preset[_sfnm][bknum] ||= {}
294
+ @map_preset[_sfnm][bknum][prenum] = prename
295
+ }
296
+
297
+ ret
298
+ end
299
+
300
+ end
301
+ end
302
+
303
+
304
+ #
305
+ #
306
+ #
307
+ class FiddleFluidSynth::ModuleBase::SoundFont
308
+
309
+ #
310
+ class Bank
311
+ def initialize( parent: , fluidsynth_instance: , value: , sub_new_f: true )
312
+ super(parent: parent, fluidsynth_instance: fluidsynth_instance,
313
+ value: fluidsynth_instance.synth, sub_new_f: false)
314
+
315
+ if sub_new_f
316
+ self.init_sub
317
+ end
318
+
319
+ end
320
+ attr_accessor :bknum
321
+ def value
322
+ # TODO:
323
+ end
324
+ def init_sub
325
+ @presets = Bank::Presets.new(
326
+ parent: self, fluidsynth_instance: fluidsynth_instance,
327
+ value: nil, sub_new_f: true)
328
+ end
329
+ def presets( prenum = @presets.num )
330
+ @presets.num = prenum
331
+ @presets
332
+ end
333
+
334
+ end
335
+ end
336
+
337
+
338
+ #
339
+ #
340
+ #
341
+ class FiddleFluidSynth::ModuleBase::SoundFont::Bank
342
+
343
+ #
344
+ class Presets
345
+ def initialize( parent: , fluidsynth_instance: , value: , sub_new_f: true )
346
+ super(parent: parent, fluidsynth_instance: fluidsynth_instance,
347
+ value: fluidsynth_instance.synth, sub_new_f: false)
348
+
349
+ #
350
+ @num = nil
351
+
352
+ #
353
+ if sub_new_f
354
+ self.init_sub
355
+ end
356
+
357
+ end
358
+ attr_accessor :num
359
+
360
+ def value
361
+ bknum = self.parent.bknum
362
+ prenum = self.num
363
+ sfont = self.parent.parent.value
364
+
365
+ ret = self.fluidsynth_instance.
366
+ sfont_get_preset(sfont: sfont, bknum: bknum, prenum: prenum)
367
+ ret
368
+ end
369
+ def init_sub
370
+ # nothing todo.
371
+ end
372
+
373
+ # .
374
+ def name
375
+ preset_obj = self.value
376
+
377
+ _name = self.fluidsynth_instance.preset_get_name(preset_obj).to_s
378
+
379
+ ret = _name
380
+ ret
381
+ end
382
+
383
+ def bknum
384
+ preset_obj = self.value
385
+
386
+ _bknum = self.fluidsynth_instance.preset_get_banknum(preset_obj)
387
+ ret = _bknum
388
+ ret
389
+ end
390
+
391
+ def pre_num
392
+ preset_obj = self.value
393
+
394
+ _num = self.fluidsynth_instance.preset_get_num(preset_obj)
395
+ ret = _num
396
+ ret
397
+ end
398
+
399
+ end
400
+ end
401
+
402
+
403
+ #### endof filename: fiddle-fluidsynth/util/module_hier.rb