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,82 @@
|
|
1
|
+
#
|
2
|
+
# filename: fiddle-fluidstynth/logging/logging.rb
|
3
|
+
#
|
4
|
+
|
5
|
+
|
6
|
+
# References
|
7
|
+
# - [API Reference](https://www.fluidsynth.org/api/modules.html)
|
8
|
+
#
|
9
|
+
class FiddleFluidSynth
|
10
|
+
|
11
|
+
# Logging interface.
|
12
|
+
# ==== References
|
13
|
+
# - API References, [Logging](https://www.fluidsynth.org/api/group__logging.html)
|
14
|
+
# - [library fiddle](https://docs.ruby-lang.org/ja/latest/library/fiddle.html)
|
15
|
+
#
|
16
|
+
|
17
|
+
# Enumerations
|
18
|
+
#
|
19
|
+
#
|
20
|
+
|
21
|
+
### FluidSynth log levels.
|
22
|
+
enum(
|
23
|
+
:fluid_log_level,
|
24
|
+
FLUID_PANIC: nil, # The synth can't function correctly any more.
|
25
|
+
FLUID_ERR: nil, # Serious error occurred.
|
26
|
+
FLUID_WARN: nil, # Warning.
|
27
|
+
FLUID_INFO: nil, # Verbose informational messages.
|
28
|
+
FLUID_DBG: nil, # Debugging messages.
|
29
|
+
LAST_LOG_LEVEL: nil)
|
30
|
+
|
31
|
+
#
|
32
|
+
module C
|
33
|
+
|
34
|
+
# Typedefs
|
35
|
+
#
|
36
|
+
#
|
37
|
+
|
38
|
+
# Log function handler callback type used by fluid_set_log_function().
|
39
|
+
typealias 'fluid_log_function_t', 'void*'
|
40
|
+
|
41
|
+
# Functions.
|
42
|
+
#
|
43
|
+
#
|
44
|
+
|
45
|
+
# Default log function which prints to the stderr.
|
46
|
+
extern 'void fluid_default_log_function(int, char*, void*)'
|
47
|
+
|
48
|
+
# Print a message to the log.
|
49
|
+
extern 'int fluid_log(int, char*, ...)'
|
50
|
+
|
51
|
+
# Installs a new log function for a specified log level.
|
52
|
+
extern 'fluid_log_function_t fluid_set_log_function' +
|
53
|
+
'(int, fluid_log_function_t, void*)'
|
54
|
+
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
|
59
|
+
#
|
60
|
+
#
|
61
|
+
#
|
62
|
+
class FiddleFluidSynth
|
63
|
+
|
64
|
+
def self.default_log_function( level: , message: , data: )
|
65
|
+
ret = C.fluid_default_log_function(level, message, data)
|
66
|
+
ret
|
67
|
+
end
|
68
|
+
|
69
|
+
def self.log( level: , fmt: , **args )
|
70
|
+
ret = C.fluid_log(level, fmt, args)
|
71
|
+
ret
|
72
|
+
end
|
73
|
+
|
74
|
+
def self.set_log_function( level: , func: , data: )
|
75
|
+
ret = C.fluid_set_log_function(level, func, data)
|
76
|
+
ret
|
77
|
+
end
|
78
|
+
|
79
|
+
end
|
80
|
+
|
81
|
+
|
82
|
+
#### endof filename: fiddle-fluidstynth/logging/logging.rb
|
@@ -0,0 +1,77 @@
|
|
1
|
+
#
|
2
|
+
# filename: fiddle-fluidstynth/midi_input/driver.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 for managing MIDI drivers.
|
12
|
+
# ==== References
|
13
|
+
# - MIDI Input/[MIDI Driver](https://www.fluidsynth.org/api/group__midi__driver.html)
|
14
|
+
# - [library fiddle](https://docs.ruby-lang.org/ja/latest/library/fiddle.html)
|
15
|
+
#
|
16
|
+
|
17
|
+
#
|
18
|
+
module C
|
19
|
+
|
20
|
+
|
21
|
+
# Lifecycle Functions.
|
22
|
+
#
|
23
|
+
#
|
24
|
+
|
25
|
+
# Create a new MIDI driver instance.
|
26
|
+
# [MIDI driver settings](https://www.fluidsynth.org/api/settings_midi.html)
|
27
|
+
# [Settings Reference](https://www.fluidsynth.org/api/fluidsettings.html)
|
28
|
+
#
|
29
|
+
extern 'fluid_midi_driver_t* new_fluid_midi_driver' +
|
30
|
+
'(fluid_settings_t*, handle_midi_event_func_t*, void*)'
|
31
|
+
|
32
|
+
# Delete a MIDI driver instance.
|
33
|
+
extern 'void delete_fluid_midi_driver(fluid_midi_driver_t*)' #
|
34
|
+
|
35
|
+
|
36
|
+
# Functions.
|
37
|
+
#
|
38
|
+
#
|
39
|
+
|
40
|
+
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
|
45
|
+
#
|
46
|
+
#
|
47
|
+
#
|
48
|
+
class FiddleFluidSynth
|
49
|
+
|
50
|
+
#
|
51
|
+
#
|
52
|
+
# ==== See Also
|
53
|
+
# - util/callback.rb
|
54
|
+
#
|
55
|
+
def self.midi_driver_new( settings: ,
|
56
|
+
handler: Midi_event_func_default, handler_data: nil )
|
57
|
+
ret = C.new_fluid_midi_driver(settings, handler, handler_data)
|
58
|
+
ret
|
59
|
+
end
|
60
|
+
def midi_driver_new( settings = self.settings,
|
61
|
+
handler: Midi_event_func_default, handler_data: nil )
|
62
|
+
self.class.midi_driver_new(
|
63
|
+
settings: settings, handler: handler, handler_data: handler_data)
|
64
|
+
end
|
65
|
+
|
66
|
+
def self.midi_driver_delete( driver )
|
67
|
+
ret = C.delete_fluid_midi_driver(driver)
|
68
|
+
ret
|
69
|
+
end
|
70
|
+
def midi_driver_delete( driver )
|
71
|
+
self.class.midi_driver_delete(driver)
|
72
|
+
end
|
73
|
+
|
74
|
+
end
|
75
|
+
|
76
|
+
|
77
|
+
#### endof filename: fiddle-fluidstynth/midi_input/driver.rb
|
@@ -0,0 +1,255 @@
|
|
1
|
+
#
|
2
|
+
# filename: fiddle-fluidstynth/midi_input/events.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 create, modify, query and delete MIDI events.
|
12
|
+
# ==== References
|
13
|
+
# - API Reference, MIDI Input/[MIDI Events](https://www.fluidsynth.org/api/group__midi__events.html)
|
14
|
+
# - [library fiddle](https://docs.ruby-lang.org/ja/latest/library/fiddle.html)
|
15
|
+
# ==== See Also
|
16
|
+
# - sequencer/events.rb
|
17
|
+
|
18
|
+
#
|
19
|
+
module C
|
20
|
+
|
21
|
+
# Lifecycle Functions.
|
22
|
+
#
|
23
|
+
#
|
24
|
+
|
25
|
+
# Create a MIDI event structure.
|
26
|
+
extern 'fluid_midi_event_t* new_fluid_midi_event(void)'
|
27
|
+
|
28
|
+
# Delete MIDI event structure.
|
29
|
+
extern 'void delete_fluid_midi_event(fluid_midi_event_t*)'
|
30
|
+
|
31
|
+
|
32
|
+
# Functions.
|
33
|
+
#
|
34
|
+
#
|
35
|
+
|
36
|
+
# Get the channel field of a MIDI event structure.
|
37
|
+
extern 'int fluid_midi_event_get_channel(fluid_midi_event_t*)'
|
38
|
+
|
39
|
+
# Get the control number of a MIDI event structure.
|
40
|
+
extern 'int fluid_midi_event_get_control(fluid_midi_event_t*)'
|
41
|
+
|
42
|
+
# Get the key field of a MIDI event structure.
|
43
|
+
extern 'int fluid_midi_event_get_key(fluid_midi_event_t*)'
|
44
|
+
|
45
|
+
# Get the lyric of a MIDI event structure.
|
46
|
+
# FIXME. void**
|
47
|
+
# extern 'int fluid_midi_event_get_lyrics(void*, void**, void*)'
|
48
|
+
extern 'int fluid_midi_event_get_lyrics(fluid_midi_event_t*, void*, void*)'
|
49
|
+
|
50
|
+
# Get the pitch field of a MIDI event structure.
|
51
|
+
extern 'int fluid_midi_event_get_pitch(fluid_midi_event_t*)'
|
52
|
+
|
53
|
+
# Get the program field of a MIDI event structure.
|
54
|
+
extern 'int fluid_midi_event_get_program(fluid_midi_event_t*)'
|
55
|
+
|
56
|
+
# Get the text of a MIDI event structure.
|
57
|
+
# FIXME. void**
|
58
|
+
# extern 'int fluid_midi_event_get_text(void*, void**, void*)'
|
59
|
+
extern 'int fluid_midi_event_get_text(fluid_midi_event_t*, void*, void*)'
|
60
|
+
|
61
|
+
# Get the event type field of a MIDI event structure.
|
62
|
+
extern 'int fluid_midi_event_get_type(fluid_midi_event_t*)'
|
63
|
+
|
64
|
+
# Get the value field from a MIDI event structure.
|
65
|
+
extern 'int fluid_midi_event_get_value(fluid_midi_event_t*)'
|
66
|
+
|
67
|
+
# Get the velocity field of a MIDI event structure.
|
68
|
+
extern 'int fluid_midi_event_get_velocity(fluid_midi_event_t*)'
|
69
|
+
|
70
|
+
###
|
71
|
+
|
72
|
+
# Set the channel field of a MIDI event structure.
|
73
|
+
extern 'int fluid_midi_event_set_channel(fluid_midi_event_t*, int)'
|
74
|
+
|
75
|
+
# Set the control field of a MIDI event structure.
|
76
|
+
extern 'int fluid_midi_event_set_control(fluid_midi_event_t*, int)'
|
77
|
+
|
78
|
+
# Set the key field of a MIDI event structure.
|
79
|
+
extern 'int fluid_midi_event_set_key(fluid_midi_event_t*, int)'
|
80
|
+
|
81
|
+
# Assign lyric data to a MIDI event structure.
|
82
|
+
extern 'int fluid_midi_event_set_lyrics' +
|
83
|
+
'(fluid_midi_event_t*, void*, int, int)'
|
84
|
+
|
85
|
+
# Set the pitch field of a MIDI event structure.
|
86
|
+
extern 'int fluid_midi_event_set_pitch(fluid_midi_event_t*, int)'
|
87
|
+
|
88
|
+
# Set the program field of a MIDI event structure.
|
89
|
+
extern 'int fluid_midi_event_set_program(fluid_midi_event_t*, int)'
|
90
|
+
|
91
|
+
# Assign sysex data to a MIDI event structure.
|
92
|
+
extern 'int fluid_midi_event_set_sysex(fluid_midi_event_t*, void*, int, int)'
|
93
|
+
|
94
|
+
# Assign text data to a MIDI event structure.
|
95
|
+
extern 'int fluid_midi_event_set_text(fluid_midi_event_t*, void*, int, int)'
|
96
|
+
|
97
|
+
# Set the event type field of a MIDI event structure.
|
98
|
+
extern 'int fluid_midi_event_set_type(fluid_midi_event_t*, int)'
|
99
|
+
|
100
|
+
# Set the value field of a MIDI event structure.
|
101
|
+
extern 'int fluid_midi_event_set_value(fluid_midi_event_t*, int)'
|
102
|
+
|
103
|
+
# Set the velocity field of a MIDI event structure.
|
104
|
+
extern 'int fluid_midi_event_set_velocity(fluid_midi_event_t*, int)'
|
105
|
+
|
106
|
+
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
|
111
|
+
# Lifecycle Functions.
|
112
|
+
#
|
113
|
+
#
|
114
|
+
class FiddleFluidSynth
|
115
|
+
|
116
|
+
def self.midi_event_new()
|
117
|
+
ret = C.new_fluid_midi_event()
|
118
|
+
ret
|
119
|
+
end
|
120
|
+
def midi_event_new()
|
121
|
+
self.class.midi_event_new()
|
122
|
+
end
|
123
|
+
|
124
|
+
def self.midi_event_delete( ev )
|
125
|
+
ret = C.delete_fluid_midi_event(ev)
|
126
|
+
ret
|
127
|
+
end
|
128
|
+
def midi_event_delete( ev )
|
129
|
+
self.class.midi_event_delete(ev)
|
130
|
+
end
|
131
|
+
|
132
|
+
end
|
133
|
+
|
134
|
+
|
135
|
+
# Functions.
|
136
|
+
#
|
137
|
+
#
|
138
|
+
|
139
|
+
### getter-related midi event.
|
140
|
+
class FiddleFluidSynth
|
141
|
+
|
142
|
+
def midi_event_get_channel( ev )
|
143
|
+
ret = C.fluid_midi_event_get_channel(ev)
|
144
|
+
ret
|
145
|
+
end
|
146
|
+
|
147
|
+
def midi_event_get_control( ev )
|
148
|
+
ret = C.fluid_midi_event_get_control(ev)
|
149
|
+
ret
|
150
|
+
end
|
151
|
+
|
152
|
+
def midi_event_get_key( ev )
|
153
|
+
ret = C.fluid_midi_event_get_key(ev)
|
154
|
+
ret
|
155
|
+
end
|
156
|
+
|
157
|
+
def midi_event_get_lyrics( ev, data, size )
|
158
|
+
ret = C.fluid_midi_event_get_lyrics(ev, data, size)
|
159
|
+
ret
|
160
|
+
end
|
161
|
+
|
162
|
+
def midi_event_get_pitch( ev )
|
163
|
+
ret = C.fluid_midi_event_get_pitch(ev)
|
164
|
+
ret
|
165
|
+
end
|
166
|
+
|
167
|
+
def midi_event_get_program( ev )
|
168
|
+
ret = C.fluid_midi_event_get_program(ev)
|
169
|
+
ret
|
170
|
+
end
|
171
|
+
|
172
|
+
def midi_event_get_text( ev, data: , size: )
|
173
|
+
ret = C.fluid_midi_event_get_text(ev, data, size)
|
174
|
+
ret
|
175
|
+
end
|
176
|
+
|
177
|
+
def midi_event_get_type( ev )
|
178
|
+
ret = C.fluid_midi_event_get_type(ev)
|
179
|
+
ret
|
180
|
+
end
|
181
|
+
|
182
|
+
def midi_event_get_value( ev )
|
183
|
+
ret = C.fluid_midi_event_get_value(ev)
|
184
|
+
ret
|
185
|
+
end
|
186
|
+
|
187
|
+
def midi_event_get_velocity( ev )
|
188
|
+
ret = C.fluid_midi_event_get_velocity(ev)
|
189
|
+
ret
|
190
|
+
end
|
191
|
+
|
192
|
+
end
|
193
|
+
|
194
|
+
### setter-related midi events.
|
195
|
+
class FiddleFluidSynth
|
196
|
+
|
197
|
+
def midi_event_set_channel( ev, ch: )
|
198
|
+
ret = C.fluid_midi_event_set_channel(ev, ch)
|
199
|
+
ret
|
200
|
+
end
|
201
|
+
|
202
|
+
def midi_event_set_control( ev, ctrl: )
|
203
|
+
ret = C.fluid_midi_event_set_control(ev, ctrl)
|
204
|
+
ret
|
205
|
+
end
|
206
|
+
|
207
|
+
def midi_event_set_key( ev, key: )
|
208
|
+
ret = C.fluid_midi_event_set_key(ev, key)
|
209
|
+
ret
|
210
|
+
end
|
211
|
+
|
212
|
+
def midi_event_set_lyrics( ev, data: , size: , dynamic: )
|
213
|
+
ret = C.fluid_midi_event_set_lyrics(ev, data, size, dynamic)
|
214
|
+
ret
|
215
|
+
end
|
216
|
+
|
217
|
+
def midi_event_set_pitch( ev, val: )
|
218
|
+
ret = C.fluid_midi_event_set_pitch(ev, val)
|
219
|
+
ret
|
220
|
+
end
|
221
|
+
|
222
|
+
def midi_event_set_program( ev, val: )
|
223
|
+
ret = C.fluid_midi_event_set_program(ev, val)
|
224
|
+
ret
|
225
|
+
end
|
226
|
+
|
227
|
+
def midi_event_set_sysex( ev, data: , size: , dynamic: )
|
228
|
+
ret = C.fluid_midi_event_set_sysex(ev, data, size, dynamic)
|
229
|
+
ret
|
230
|
+
end
|
231
|
+
|
232
|
+
def midi_event_set_text( ev, data: , size: , dynamic: )
|
233
|
+
ret = C.fluid_midi_event_set_text(ev, data, size, dynamic)
|
234
|
+
ret
|
235
|
+
end
|
236
|
+
|
237
|
+
def midi_event_set_type( ev, type: )
|
238
|
+
ret = C.fluid_midi_event_set_type(ev, type)
|
239
|
+
ret
|
240
|
+
end
|
241
|
+
|
242
|
+
def midi_event_set_value( ev, val: )
|
243
|
+
ret = C.fluid_midi_event_set_value(ev, val)
|
244
|
+
ret
|
245
|
+
end
|
246
|
+
|
247
|
+
def midi_event_set_velocity( ev, val: )
|
248
|
+
ret = C.fluid_midi_event_set_velocity(ev, val)
|
249
|
+
ret
|
250
|
+
end
|
251
|
+
|
252
|
+
end
|
253
|
+
|
254
|
+
|
255
|
+
#### endof filename: fiddle-fluidstynth/midi_input/events.rb
|
@@ -0,0 +1,70 @@
|
|
1
|
+
#
|
2
|
+
# filename: fiddle-fluidstynth/midi_input/midi_input.rb
|
3
|
+
#
|
4
|
+
|
5
|
+
|
6
|
+
# References
|
7
|
+
# - fluidsynth.org, [API Reference](https://www.fluidsynth.org/api/modules.html)
|
8
|
+
#
|
9
|
+
class FiddleFluidSynth
|
10
|
+
|
11
|
+
# MIDI Input Subsystem.
|
12
|
+
# ==== References
|
13
|
+
# - MIDI Input/[MIDI Driver](https://www.fluidsynth.org/api/group__midi__driver.html)
|
14
|
+
# - [library fiddle](https://docs.ruby-lang.org/ja/latest/library/fiddle.html)
|
15
|
+
#
|
16
|
+
|
17
|
+
#
|
18
|
+
module C
|
19
|
+
|
20
|
+
# Typedefs.
|
21
|
+
#
|
22
|
+
#
|
23
|
+
|
24
|
+
# Generic callback function for MIDI event handler.
|
25
|
+
# typedef int(*handle_midi_event_func_t) (void *data, fluid_midi_event_t *event)
|
26
|
+
typealias 'handle_midi_event_func_t', 'void*'
|
27
|
+
|
28
|
+
# Generic callback function fired once by MIDI tick change.
|
29
|
+
# typedef int(*handle_midi_tick_func_t) (void *data, int tick)
|
30
|
+
typealias 'handle_midi_tick_func_t', 'void*'
|
31
|
+
|
32
|
+
|
33
|
+
# Lifecycle Functions.
|
34
|
+
#
|
35
|
+
#
|
36
|
+
|
37
|
+
|
38
|
+
# Functions.
|
39
|
+
#
|
40
|
+
#
|
41
|
+
|
42
|
+
# Handle MIDI event from MIDI router, used as a callback function.
|
43
|
+
extern 'int fluid_synth_handle_midi_event(void*, fluid_midi_event_t*)'
|
44
|
+
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
|
49
|
+
#
|
50
|
+
#
|
51
|
+
#
|
52
|
+
class FiddleFluidSynth
|
53
|
+
|
54
|
+
#
|
55
|
+
# ==== See ALso
|
56
|
+
# - midi_input/router.rb
|
57
|
+
# - util/callback.rb:define_tick_callback().
|
58
|
+
#
|
59
|
+
def self.synth_handle_midi_event( data, event )
|
60
|
+
ret = C.fluid_synth_handle_midi_event(data, event)
|
61
|
+
ret
|
62
|
+
end
|
63
|
+
def synth_handle_midi_event( data, event )
|
64
|
+
self.class.synth_handle_midi_event(data, event)
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
68
|
+
|
69
|
+
|
70
|
+
#### endof filename: fiddle-fluidstynth/midi_input/midi_input.rb
|