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.
- checksums.yaml +7 -0
- data/.standard.yml +3 -0
- data/CHANGELOG.md +5 -0
- data/LICENSE.txt +21 -0
- data/README.md +138 -0
- data/Rakefile +14 -0
- data/examples/enum.rb +30 -0
- data/examples/example.sf2 +0 -0
- data/examples/ffs_arpeggio.rb +252 -0
- data/examples/ffs_example.rb +47 -0
- data/examples/ffs_fx.rb +200 -0
- data/examples/ffs_metronome.rb +260 -0
- data/examples/ffs_midiplay.rb +122 -0
- data/examples/ffs_simple.rb +45 -0
- data/examples/ffs_test1.rb +41 -0
- data/examples/ffs_test3.rb +50 -0
- data/examples/fiddle-pointer.rb +18 -0
- data/examples/presets-each.rb +66 -0
- data/examples/presets-full_scan.rb +59 -0
- data/examples/settings-each.rb +106 -0
- data/exe/ffs_midiplay.rb +122 -0
- data/lib/fiddle_fluidsynth/audio_output/driver.rb +104 -0
- data/lib/fiddle_fluidsynth/audio_output/file_renderer.rb +84 -0
- data/lib/fiddle_fluidsynth/audio_output.rb +7 -0
- data/lib/fiddle_fluidsynth/command_interface/command_interface.rb +90 -0
- data/lib/fiddle_fluidsynth/command_interface/handler.rb +95 -0
- data/lib/fiddle_fluidsynth/command_interface/server.rb +79 -0
- data/lib/fiddle_fluidsynth/command_interface/shell.rb +76 -0
- data/lib/fiddle_fluidsynth/command_interface.rb +9 -0
- data/lib/fiddle_fluidsynth/core_ext/fiddle.rb +142 -0
- data/lib/fiddle_fluidsynth/core_ext/module.rb +123 -0
- data/lib/fiddle_fluidsynth/fiddle_fluidsynth.rb +172 -0
- data/lib/fiddle_fluidsynth/logging/logging.rb +82 -0
- data/lib/fiddle_fluidsynth/logging.rb +6 -0
- data/lib/fiddle_fluidsynth/midi_input/driver.rb +77 -0
- data/lib/fiddle_fluidsynth/midi_input/events.rb +255 -0
- data/lib/fiddle_fluidsynth/midi_input/midi_input.rb +70 -0
- data/lib/fiddle_fluidsynth/midi_input/player.rb +289 -0
- data/lib/fiddle_fluidsynth/midi_input/router.rb +225 -0
- data/lib/fiddle_fluidsynth/midi_input.rb +11 -0
- data/lib/fiddle_fluidsynth/misc/misc.rb +162 -0
- data/lib/fiddle_fluidsynth/misc.rb +6 -0
- data/lib/fiddle_fluidsynth/sequencer/events.rb +679 -0
- data/lib/fiddle_fluidsynth/sequencer/sequencer.rb +384 -0
- data/lib/fiddle_fluidsynth/sequencer.rb +7 -0
- data/lib/fiddle_fluidsynth/settings/settings.rb +465 -0
- data/lib/fiddle_fluidsynth/settings.rb +6 -0
- data/lib/fiddle_fluidsynth/soundfonts/generators.rb +128 -0
- data/lib/fiddle_fluidsynth/soundfonts/loader.rb +506 -0
- data/lib/fiddle_fluidsynth/soundfonts/modulators.rb +247 -0
- data/lib/fiddle_fluidsynth/soundfonts/soundfonts.rb +64 -0
- data/lib/fiddle_fluidsynth/soundfonts/voices.rb +178 -0
- data/lib/fiddle_fluidsynth/soundfonts.rb +11 -0
- data/lib/fiddle_fluidsynth/synth/audio_rendering.rb +100 -0
- data/lib/fiddle_fluidsynth/synth/effect/chorus.rb +269 -0
- data/lib/fiddle_fluidsynth/synth/effect/iir_filter.rb +81 -0
- data/lib/fiddle_fluidsynth/synth/effect/ladspa.rb +172 -0
- data/lib/fiddle_fluidsynth/synth/effect/reverb.rb +207 -0
- data/lib/fiddle_fluidsynth/synth/effect.rb +10 -0
- data/lib/fiddle_fluidsynth/synth/midi/messages.rb +292 -0
- data/lib/fiddle_fluidsynth/synth/midi/setup.rb +235 -0
- data/lib/fiddle_fluidsynth/synth/midi/tuning.rb +128 -0
- data/lib/fiddle_fluidsynth/synth/midi.rb +9 -0
- data/lib/fiddle_fluidsynth/synth/params/params.rb +200 -0
- data/lib/fiddle_fluidsynth/synth/params.rb +8 -0
- data/lib/fiddle_fluidsynth/synth/soundfont_management.rb +210 -0
- data/lib/fiddle_fluidsynth/synth/synth.rb +114 -0
- data/lib/fiddle_fluidsynth/synth/voice_control.rb +94 -0
- data/lib/fiddle_fluidsynth/synth.rb +18 -0
- data/lib/fiddle_fluidsynth/types/types.rb +131 -0
- data/lib/fiddle_fluidsynth/types.rb +10 -0
- data/lib/fiddle_fluidsynth/util/callback.rb +585 -0
- data/lib/fiddle_fluidsynth/util/interface/settings.rb +689 -0
- data/lib/fiddle_fluidsynth/util/interface/soundfont.rb +115 -0
- data/lib/fiddle_fluidsynth/util/interface/soundfont_preset.rb +69 -0
- data/lib/fiddle_fluidsynth/util/interface/soundfont_sample.rb +61 -0
- data/lib/fiddle_fluidsynth/util/interface.rb +11 -0
- data/lib/fiddle_fluidsynth/util/module_hier.rb +403 -0
- data/lib/fiddle_fluidsynth/util/util.rb +467 -0
- data/lib/fiddle_fluidsynth/util-after.rb +12 -0
- data/lib/fiddle_fluidsynth/util.rb +37 -0
- data/lib/fiddle_fluidsynth/version.rb +10 -0
- data/lib/fiddle_fluidsynth.rb +57 -0
- data/sig/fiddle_fluidsynth.rbs +4 -0
- metadata +128 -0
@@ -0,0 +1,210 @@
|
|
1
|
+
#
|
2
|
+
# filename: fiddle-fluidsynth/synth/soundfont_management.rb
|
3
|
+
#
|
4
|
+
|
5
|
+
|
6
|
+
# References
|
7
|
+
# - fluidsynth.org, [API Reference](https://www.fluidsynth.org/api/modules.html)
|
8
|
+
#
|
9
|
+
class FiddleFluidSynth
|
10
|
+
|
11
|
+
# Functions to load and unload SoundFonts.
|
12
|
+
# ==== References
|
13
|
+
# - API Reference, Synthesizer/[SoundFont Management](https://www.fluidsynth.org/api/group__audio__rendering.html)
|
14
|
+
# - [library fiddle](https://docs.ruby-lang.org/ja/latest/library/fiddle.html)
|
15
|
+
#
|
16
|
+
|
17
|
+
#
|
18
|
+
module C
|
19
|
+
|
20
|
+
# Lifecycle Functions.
|
21
|
+
#
|
22
|
+
#
|
23
|
+
|
24
|
+
|
25
|
+
# Functions.
|
26
|
+
#
|
27
|
+
#
|
28
|
+
|
29
|
+
# Add a SoundFont.
|
30
|
+
extern 'int fluid_synth_add_sfont(fluid_synth_t*, void*)'
|
31
|
+
|
32
|
+
# Get bank offset of a loaded SoundFont.
|
33
|
+
extern 'int fluid_synth_get_bank_offset(fluid_synth_t*, int)'
|
34
|
+
|
35
|
+
# Get SoundFont by index.
|
36
|
+
extern 'fluid_sfont_t* fluid_synth_get_sfont(fluid_synth_t*, unsigned int)'
|
37
|
+
|
38
|
+
# Get SoundFont by ID.
|
39
|
+
extern 'fluid_sfont_t* fluid_synth_get_sfont_by_id(fluid_synth_t*, int)'
|
40
|
+
|
41
|
+
# Get SoundFont by name.
|
42
|
+
extern 'fluid_sfont_t* fluid_synth_get_sfont_by_name(fluid_synth_t*, char*)'
|
43
|
+
|
44
|
+
# Remove a SoundFont from the SoundFont stack without deleting it.
|
45
|
+
extern 'int fluid_synth_remove_sfont(fluid_synth_t*, fluid_sfont_t*)'
|
46
|
+
|
47
|
+
# Offset the bank numbers of a loaded SoundFont, i.e. subtract offset
|
48
|
+
# from any bank number when assigning instruments.
|
49
|
+
extern 'int fluid_synth_set_bank_offset(fluid_synth_t*, int, int)'
|
50
|
+
|
51
|
+
# Count number of loaded SoundFont files.
|
52
|
+
extern 'int fluid_synth_sfcount(fluid_synth_t*)'
|
53
|
+
|
54
|
+
# Load a SoundFont file (filename is interpreted by SoundFont loaders).
|
55
|
+
extern 'int fluid_synth_sfload(fluid_synth_t*, char*, int)'
|
56
|
+
|
57
|
+
# Reload a SoundFont.
|
58
|
+
extern 'int fluid_synth_sfreload(fluid_synth_t*, int)'
|
59
|
+
|
60
|
+
# Schedule a SoundFont for unloading.
|
61
|
+
extern 'int fluid_synth_sfunload(fluid_synth_t*, int, int)'
|
62
|
+
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
|
67
|
+
#
|
68
|
+
#
|
69
|
+
#
|
70
|
+
class FiddleFluidSynth
|
71
|
+
module Interface
|
72
|
+
module SoundFont; end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
|
77
|
+
# Lifecycle Functions.
|
78
|
+
#
|
79
|
+
#
|
80
|
+
|
81
|
+
|
82
|
+
# Functions.
|
83
|
+
#
|
84
|
+
#
|
85
|
+
class FiddleFluidSynth
|
86
|
+
|
87
|
+
#
|
88
|
+
def synth_add_sfont( synth=self.synth, sfont: )
|
89
|
+
ret = C.fluid_synth_add_sfont(synth,sfont)
|
90
|
+
ret
|
91
|
+
end
|
92
|
+
|
93
|
+
def synth_get_bank_offset( synth=self.synth, sfid: )
|
94
|
+
ret = C.fluid_synth_get_bank_sfont(synth, sfid)
|
95
|
+
ret
|
96
|
+
end
|
97
|
+
|
98
|
+
#
|
99
|
+
# ==== See Also
|
100
|
+
# - soundfonts/loader.rb/`.#sfont_new()`
|
101
|
+
#
|
102
|
+
def synth_get_sfont( synth=self.synth, num: )
|
103
|
+
ret = C.fluid_synth_get_sfont(synth, num)
|
104
|
+
# ret.extend(Interface::SoundFont)
|
105
|
+
if ret.nil? || ret.null?
|
106
|
+
ret = nil
|
107
|
+
else
|
108
|
+
ret.extend(Interface::SoundFont)
|
109
|
+
end
|
110
|
+
ret
|
111
|
+
end
|
112
|
+
|
113
|
+
#
|
114
|
+
# ==== See Also
|
115
|
+
# - soundfonts/loader.rb/`.#sfont_new()`
|
116
|
+
#
|
117
|
+
# def synth_get_sfont_by_id( synth: , id: )
|
118
|
+
def synth_get_sfont_by_id( synth=self.synth, id: )
|
119
|
+
ret = C.fluid_synth_get_sfont_by_id(synth, id)
|
120
|
+
# ret.extend(Interface::SoundFont)
|
121
|
+
if ret.nil? || ret.null?
|
122
|
+
ret = nil
|
123
|
+
else
|
124
|
+
ret.extend(Interface::SoundFont)
|
125
|
+
end
|
126
|
+
ret
|
127
|
+
end
|
128
|
+
|
129
|
+
#
|
130
|
+
# ==== See Also
|
131
|
+
# - soundfonts/loader.rb/`.#sfont_new()`
|
132
|
+
#
|
133
|
+
def synth_get_sfont_by_name( synth=self.synth, name: )
|
134
|
+
ret = C.fluid_synth_get_sfont_by_name(synth, name)
|
135
|
+
# ret.extend(Interface::SoundFont)
|
136
|
+
if ret.nil? || ret.null?
|
137
|
+
ret = nil
|
138
|
+
else
|
139
|
+
ret.extend(Interface::SoundFont)
|
140
|
+
end
|
141
|
+
ret
|
142
|
+
end
|
143
|
+
|
144
|
+
#
|
145
|
+
def synth_remove_sfont( synth=self.synth, sfont: )
|
146
|
+
ret = C.fluid_synth_remove_sfont(synth,sfont)
|
147
|
+
ret
|
148
|
+
end
|
149
|
+
|
150
|
+
#
|
151
|
+
def synth_set_bank_offset( synth=self.synth, sfid: , offset: )
|
152
|
+
ret = C.fluid_synth_set_bank_offset(synth, sfid, offset)
|
153
|
+
ret
|
154
|
+
end
|
155
|
+
|
156
|
+
#
|
157
|
+
# ==== See Also
|
158
|
+
# - #synth_sfload()
|
159
|
+
#
|
160
|
+
def synth_sfcount( synth = self.synth )
|
161
|
+
ret = C.fluid_synth_sfcount(synth)
|
162
|
+
ret
|
163
|
+
end
|
164
|
+
|
165
|
+
#
|
166
|
+
# def synth_sfload( synth: , filename: , reset_presets: )
|
167
|
+
def synth_sfload( synth=self.synth,
|
168
|
+
filename: , reset_presets: self.reset_presets,
|
169
|
+
verbose_f: false )
|
170
|
+
#
|
171
|
+
$stderr.print "(**) loading SoundFont: #{filename}..." if verbose_f
|
172
|
+
if reset_presets
|
173
|
+
_reset_presets = 1
|
174
|
+
else
|
175
|
+
_reset_presets = 0
|
176
|
+
end
|
177
|
+
|
178
|
+
ret = C.fluid_synth_sfload(synth,filename, _reset_presets)
|
179
|
+
if ret == FLUID_FAILED
|
180
|
+
$stderr.puts
|
181
|
+
raise "Cannot load soundfont: #{self.soundfont_full_path}"
|
182
|
+
else
|
183
|
+
$stderr.puts " ok (#{ret})."
|
184
|
+
end
|
185
|
+
|
186
|
+
@sfid_last = ret
|
187
|
+
@sfid_ary << @sfid_last
|
188
|
+
|
189
|
+
$stderr.puts "(**) @sfid_ary: #{@sfid_ary} (SoundFont count:" +
|
190
|
+
" #{self.synth_sfcount(synth)}/synth: 0x#{synth.to_i.to_s(16)})" if verbose_f
|
191
|
+
|
192
|
+
ret
|
193
|
+
end
|
194
|
+
|
195
|
+
def synth_sfreload( synth=self.synth, id: self.sfid)
|
196
|
+
ret = C.fluid_synth_sfreload(synth,id)
|
197
|
+
ret
|
198
|
+
end
|
199
|
+
|
200
|
+
def synth_sfunload( synth=self.synth, id: self.sfid,
|
201
|
+
reset_presets: self.reset_presets )
|
202
|
+
ret = C.fluid_synth_sfunload(synth,id,reset_presets)
|
203
|
+
ret
|
204
|
+
end
|
205
|
+
|
206
|
+
|
207
|
+
end
|
208
|
+
|
209
|
+
|
210
|
+
#### endof filename: fiddle-fluidsynth/synth/soundfont_management.rb
|
@@ -0,0 +1,114 @@
|
|
1
|
+
#
|
2
|
+
# filename: fiddle-fluidsynth/synth/synth.rb
|
3
|
+
#
|
4
|
+
|
5
|
+
|
6
|
+
# References
|
7
|
+
# - fluidstynth.org, [API Reference](https://www.fluidsynth.org/api/modules.html)
|
8
|
+
#
|
9
|
+
class FiddleFluidSynth
|
10
|
+
|
11
|
+
#
|
12
|
+
module C
|
13
|
+
|
14
|
+
# SoundFont synthesizer.
|
15
|
+
# ==== References
|
16
|
+
# - API Reference, [Synthesizer](https://www.fluidsynth.org/api/group__synth.html)
|
17
|
+
# - [library fiddle](https://docs.ruby-lang.org/ja/latest/library/fiddle.html)
|
18
|
+
#
|
19
|
+
|
20
|
+
# Lifecycle Functions.
|
21
|
+
#
|
22
|
+
#
|
23
|
+
|
24
|
+
# Create new FluidSynth instance.
|
25
|
+
extern 'fluid_synth_t* new_fluid_synth(fluid_settings_t*)'
|
26
|
+
|
27
|
+
# Delete a FluidSynth instance.
|
28
|
+
extern 'void delete_fluid_synth(fluid_synth_t*)'
|
29
|
+
|
30
|
+
|
31
|
+
# Functions.
|
32
|
+
#
|
33
|
+
#
|
34
|
+
|
35
|
+
# Get a textual representation of the last error.
|
36
|
+
extern 'char* fluid_synth_error(fluid_synth_t*)'
|
37
|
+
|
38
|
+
# Get the synth CPU load value.
|
39
|
+
extern 'double fluid_synth_get_cpu_load(fluid_synth_t*)'
|
40
|
+
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
|
45
|
+
# Lifecycle Functions.
|
46
|
+
#
|
47
|
+
#
|
48
|
+
class FiddleFluidSynth
|
49
|
+
|
50
|
+
#
|
51
|
+
def self.synth_new( settings )
|
52
|
+
ret = C.new_fluid_synth(settings)
|
53
|
+
ret
|
54
|
+
end
|
55
|
+
def synth_new( settings=self.settings )
|
56
|
+
# ret = C.new_fluid_synth(settings)
|
57
|
+
self.class.synth_new(settings)
|
58
|
+
end
|
59
|
+
|
60
|
+
def self.synth_delete( synth )
|
61
|
+
ret = C.delete_fluid_synth(synth)
|
62
|
+
ret
|
63
|
+
end
|
64
|
+
def synth_delete( synth=self.synth )
|
65
|
+
# ret = C.delete_fluid_synth(synth)
|
66
|
+
# ret
|
67
|
+
self.class.synth_delete(synth)
|
68
|
+
end
|
69
|
+
|
70
|
+
end
|
71
|
+
|
72
|
+
|
73
|
+
# Functions.
|
74
|
+
#
|
75
|
+
#
|
76
|
+
class FiddleFluidSynth
|
77
|
+
|
78
|
+
#
|
79
|
+
def synth_error( synth=self.synth )
|
80
|
+
deprecated_msg(__method__)
|
81
|
+
ret = C.fluid_synth_error(synth)
|
82
|
+
ret
|
83
|
+
end
|
84
|
+
|
85
|
+
#
|
86
|
+
def synth_get_cpu_load( synth=self.synth )
|
87
|
+
ret = C.fluid_synth_get_cpu_load(synth)
|
88
|
+
ret
|
89
|
+
end
|
90
|
+
|
91
|
+
# in soundfonts/loader.rb:
|
92
|
+
#
|
93
|
+
# def synth_add_sfloader( synth = self.synth, loader: )
|
94
|
+
# ret = C.fluid_synth_add_sfloader(synth, loader)
|
95
|
+
# ret
|
96
|
+
# end
|
97
|
+
#
|
98
|
+
# def synth_get_channel_preset( synth = self.synth, ch: )
|
99
|
+
# ret = C.fluid_synth_get_channel_preset(synth, ch)
|
100
|
+
# ret
|
101
|
+
# end
|
102
|
+
|
103
|
+
|
104
|
+
# in settings/settings.rb:
|
105
|
+
#
|
106
|
+
# def synth_get_settings( synth = self.synth )
|
107
|
+
# self.class.synth_get_settings(synth)
|
108
|
+
# end
|
109
|
+
|
110
|
+
|
111
|
+
end
|
112
|
+
|
113
|
+
|
114
|
+
#### endof filename: fiddle-fluidsynth/synth/synth.rb
|
@@ -0,0 +1,94 @@
|
|
1
|
+
#
|
2
|
+
# filename: fiddle-fluidstynth/synth/voice_control.rb
|
3
|
+
#
|
4
|
+
|
5
|
+
|
6
|
+
# References
|
7
|
+
# - fluidsynth.org, [API Reference](https://www.fluidsynth.org/api/modules.html)
|
8
|
+
#
|
9
|
+
class FiddleFluidSynth
|
10
|
+
|
11
|
+
# Low-level access to synthesis voices.
|
12
|
+
# ==== References
|
13
|
+
# - API Reference, Synthesizer/[Voice Control](https://www.fluidsynth.org/api/group__voice__control.html)
|
14
|
+
# - [library fiddle](https://docs.ruby-lang.org/ja/latest/library/fiddle.html)
|
15
|
+
#
|
16
|
+
|
17
|
+
#
|
18
|
+
module C
|
19
|
+
|
20
|
+
# Lifecycle Functions.
|
21
|
+
#
|
22
|
+
#
|
23
|
+
|
24
|
+
|
25
|
+
# Functions.
|
26
|
+
#
|
27
|
+
#
|
28
|
+
|
29
|
+
# Allocate a synthesis voice.
|
30
|
+
extern 'fluid_voice_t* fluid_synth_alloc_voice' +
|
31
|
+
'(fluid_synth_t*, fluid_sample_t*, int, int, int)'
|
32
|
+
|
33
|
+
# Get list of currently playing voices.
|
34
|
+
extern 'void fluid_synth_get_voicelist' +
|
35
|
+
'(fluid_synth_t*, fluid_voice_t*, int, int)'
|
36
|
+
|
37
|
+
# Create and start voices using an arbitrary preset and a MIDI note
|
38
|
+
# on event.
|
39
|
+
extern 'int fluid_synth_start' +
|
40
|
+
'(fluid_synth_t*, unsigned int, fluid_preset_t*, int, int, int, int)'
|
41
|
+
|
42
|
+
# Activate a voice previously allocated with fluid_synth_alloc_voice().
|
43
|
+
extern 'void fluid_synth_start_voice(fluid_synth_t*, fluid_voice_t*)'
|
44
|
+
|
45
|
+
# Stop notes for a given note event voice ID.
|
46
|
+
extern 'int fluid_synth_stop(fluid_synth_t*, unsigned int)'
|
47
|
+
|
48
|
+
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
|
53
|
+
# Lifecycle Functions.
|
54
|
+
#
|
55
|
+
#
|
56
|
+
|
57
|
+
|
58
|
+
# Functions.
|
59
|
+
#
|
60
|
+
#
|
61
|
+
class FiddleFluidSynth
|
62
|
+
|
63
|
+
#
|
64
|
+
def synth_alloc_voice( synth=self.synth, sample: , ch: , key: , vel: )
|
65
|
+
ret = C.fluid_synth_alloc_voice(synth,sample,ch,key,vel)
|
66
|
+
ret
|
67
|
+
end
|
68
|
+
|
69
|
+
def synth_get_voicelist( synth=self.synth, buf: , bufsize: , id: )
|
70
|
+
ret = C.fluid_synth_get_voicelist(synth,buf,bufsize,id)
|
71
|
+
ret
|
72
|
+
end
|
73
|
+
|
74
|
+
def synth_start( synth=self.synth,
|
75
|
+
id: , preset: , audio_ch: , ch: , key: , vel: )
|
76
|
+
ret = C.fluid_synth_start(synth, id, preset, audio_ch, ch, key, vel)
|
77
|
+
ret
|
78
|
+
end
|
79
|
+
|
80
|
+
def synth_start_voice( synth=self.synth, voice: )
|
81
|
+
ret = C.fluid_synth_start_voice(synth, voice)
|
82
|
+
ret
|
83
|
+
end
|
84
|
+
|
85
|
+
def synth_stop( synth=self.synth, voice_id: )
|
86
|
+
ret = C.fluid_synth_stop(synth, voice_id)
|
87
|
+
ret
|
88
|
+
end
|
89
|
+
|
90
|
+
|
91
|
+
end
|
92
|
+
|
93
|
+
|
94
|
+
#### endof filename: fiddle-fluidstynth/synth/voice_control.rb
|
@@ -0,0 +1,18 @@
|
|
1
|
+
#
|
2
|
+
# filename: soundfonts.rb
|
3
|
+
#
|
4
|
+
|
5
|
+
# [Synthesizer](https://www.fluidsynth.org/api/group__synth.html)
|
6
|
+
#
|
7
|
+
#
|
8
|
+
require_relative "./synth/synth"
|
9
|
+
|
10
|
+
#
|
11
|
+
require_relative "./synth/audio_rendering"
|
12
|
+
require_relative "./synth/effect"
|
13
|
+
require_relative "./synth/midi"
|
14
|
+
require_relative "./synth/soundfont_management"
|
15
|
+
require_relative "./synth/params"
|
16
|
+
require_relative "./synth/voice_control"
|
17
|
+
|
18
|
+
####
|
@@ -0,0 +1,131 @@
|
|
1
|
+
#
|
2
|
+
# filename: fiddle-fluidstynth/types/types.rb
|
3
|
+
#
|
4
|
+
|
5
|
+
|
6
|
+
# References
|
7
|
+
# - fluidsynth.org, [API Reference](https://www.fluidsynth.org/api/modules.html)
|
8
|
+
#
|
9
|
+
class FiddleFluidSynth
|
10
|
+
|
11
|
+
# Type declarations.
|
12
|
+
# ==== References
|
13
|
+
# - API References, [Types](https://www.fluidsynth.org/api/group__Types.html)
|
14
|
+
# - [library fiddle](https://docs.ruby-lang.org/ja/latest/library/fiddle.html)
|
15
|
+
#
|
16
|
+
|
17
|
+
#
|
18
|
+
module C
|
19
|
+
|
20
|
+
# these typealias-es are just for readability.
|
21
|
+
#
|
22
|
+
#
|
23
|
+
|
24
|
+
#
|
25
|
+
#
|
26
|
+
#
|
27
|
+
typealias 'size_t', 'unsigned int'
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
# Audio driver instance.
|
32
|
+
typealias 'fluid_audio_driver_t', 'void'
|
33
|
+
|
34
|
+
# Shell Command Handler.
|
35
|
+
typealias 'fluid_cmd_handler_t', 'void'
|
36
|
+
|
37
|
+
# Command handler hash table.
|
38
|
+
typealias 'fluid_cmd_hash_t', 'void'
|
39
|
+
|
40
|
+
# Sequencer event.
|
41
|
+
typealias 'fluid_event_t', 'void'
|
42
|
+
|
43
|
+
# Callback struct to perform custom file loading of soundfonts.
|
44
|
+
typealias 'fluid_file_callbacks_t', 'void'
|
45
|
+
|
46
|
+
# Audio file renderer instance.
|
47
|
+
typealias 'fluid_file_renderer_t', 'void'
|
48
|
+
|
49
|
+
# Input stream descriptor.
|
50
|
+
typealias 'fluid_istream_t', 'int'
|
51
|
+
|
52
|
+
# LADSPA effects instance.
|
53
|
+
typealias 'fluid_ladspa_fx_t', 'void'
|
54
|
+
|
55
|
+
# A typedef for C99's type long long, which is at least 64-bit wide,
|
56
|
+
# as guaranteed by the C99.
|
57
|
+
typealias 'fluid_long_long_t', 'long long'
|
58
|
+
|
59
|
+
# MIDI driver instance.
|
60
|
+
typealias 'fluid_midi_driver_t', 'void'
|
61
|
+
|
62
|
+
# MIDI event.
|
63
|
+
typealias 'fluid_midi_event_t', 'void'
|
64
|
+
|
65
|
+
# MIDI router rule.
|
66
|
+
typealias 'fluid_midi_router_rule_t', 'void'
|
67
|
+
|
68
|
+
# MIDI router instance.
|
69
|
+
typealias 'fluid_midi_router_t', 'void'
|
70
|
+
|
71
|
+
# SoundFont modulator.
|
72
|
+
typealias 'fluid_mod_t', 'void'
|
73
|
+
|
74
|
+
# Output stream descriptor.
|
75
|
+
typealias 'fluid_ostream_t', 'int'
|
76
|
+
|
77
|
+
# MIDI player instance.
|
78
|
+
typealias 'fluid_player_t', 'void'
|
79
|
+
|
80
|
+
# SoundFont preset.
|
81
|
+
typealias 'fluid_preset_t', 'void'
|
82
|
+
|
83
|
+
# SoundFont sample.
|
84
|
+
typealias 'fluid_sample_t', 'void'
|
85
|
+
|
86
|
+
# Unique client IDs used by the sequencer and fluid_event_t, obtained
|
87
|
+
# by fluid_sequencer_register_client() and
|
88
|
+
# fluid_sequencer_register_fluidsynth()
|
89
|
+
typealias 'fluid_seq_id_t', 'short'
|
90
|
+
|
91
|
+
# Sequencer instance.
|
92
|
+
typealias 'fluid_sequencer_t', 'void'
|
93
|
+
|
94
|
+
# TCP/IP shell server instance.
|
95
|
+
typealias 'fluid_server_t', 'void'
|
96
|
+
|
97
|
+
# Configuration settings instance.
|
98
|
+
typealias 'fluid_settings_t', 'void'
|
99
|
+
|
100
|
+
# SoundFont loader plugin.
|
101
|
+
typealias 'fluid_sfloader_t', 'void'
|
102
|
+
|
103
|
+
# SoundFont.
|
104
|
+
typealias 'fluid_sfont_t', 'void'
|
105
|
+
|
106
|
+
# Command shell.
|
107
|
+
typealias 'fluid_shell_t', 'void'
|
108
|
+
|
109
|
+
# Synthesizer instance.
|
110
|
+
typealias 'fluid_synth_t', 'void'
|
111
|
+
|
112
|
+
# Synthesis voice instance.
|
113
|
+
typealias 'fluid_voice_t', 'void'
|
114
|
+
|
115
|
+
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
|
120
|
+
#
|
121
|
+
#
|
122
|
+
#
|
123
|
+
class FiddleFluidSynth
|
124
|
+
|
125
|
+
# typedefs are declaration only in header file. So we must NOT define here...
|
126
|
+
# nothing to do.
|
127
|
+
|
128
|
+
end
|
129
|
+
|
130
|
+
|
131
|
+
#### endof filename: fiddle-fluidstynth/types/types.rb
|