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,679 @@
|
|
1
|
+
#
|
2
|
+
# filename: fiddle-fluidstynth/sequencer/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
|
+
# Create, modify, query and destroy sequencer events.
|
12
|
+
# ==== References
|
13
|
+
# - API Reference, MIDI Sequencer/[Sequencer Events](https://www.fluidsynth.org/api/group__sequencer.html)
|
14
|
+
# - [library fiddle](https://docs.ruby-lang.org/ja/latest/library/fiddle.html)
|
15
|
+
# ==== See Also
|
16
|
+
# - midi_input/events.rb
|
17
|
+
|
18
|
+
# Enumerations
|
19
|
+
#
|
20
|
+
#
|
21
|
+
|
22
|
+
# Sequencer event type enumeration.
|
23
|
+
enum(
|
24
|
+
:fluid_seq_event_type,
|
25
|
+
FLUID_SEQ_NOTE: 0,
|
26
|
+
FLUID_SEQ_NOTEON: nil,
|
27
|
+
FLUID_SEQ_NOTEOFF: nil,
|
28
|
+
FLUID_SEQ_ALLSOUNDSOFF: nil,
|
29
|
+
FLUID_SEQ_ALLNOTESOFF: nil,
|
30
|
+
FLUID_SEQ_BANKSELECT: nil,
|
31
|
+
FLUID_SEQ_PROGRAMCHANGE: nil,
|
32
|
+
FLUID_SEQ_PROGRAMSELECT: nil,
|
33
|
+
FLUID_SEQ_PITCHBEND: nil,
|
34
|
+
FLUID_SEQ_PITCHWHEELSENS: nil,
|
35
|
+
FLUID_SEQ_MODULATION: nil,
|
36
|
+
|
37
|
+
FLUID_SEQ_SUSTAIN: nil,
|
38
|
+
FLUID_SEQ_CONTROLCHANGE: nil,
|
39
|
+
FLUID_SEQ_PAN: nil,
|
40
|
+
FLUID_SEQ_VOLUME: nil,
|
41
|
+
FLUID_SEQ_REVERBSEND: nil,
|
42
|
+
FLUID_SEQ_CHORUSSEND: nil,
|
43
|
+
FLUID_SEQ_TIMER: nil,
|
44
|
+
FLUID_SEQ_CHANNELPRESSURE: nil,
|
45
|
+
FLUID_SEQ_KEYPRESSURE: nil,
|
46
|
+
FLUID_SEQ_SYSTEMRESET: nil,
|
47
|
+
|
48
|
+
FLUID_SEQ_UNREGISTERING: nil,
|
49
|
+
FLUID_SEQ_SCALE: nil,
|
50
|
+
FLUID_SEQ_LASTEVENT: nil)
|
51
|
+
|
52
|
+
|
53
|
+
#
|
54
|
+
module C
|
55
|
+
|
56
|
+
# Lifecycle Functions (MIDI Sequencer).
|
57
|
+
#
|
58
|
+
#
|
59
|
+
|
60
|
+
# Create a new sequencer event structure.
|
61
|
+
extern 'fluid_event_t* new_fluid_event(void)'
|
62
|
+
|
63
|
+
# Delete a sequencer event structure.
|
64
|
+
extern 'void delete_fluid_event(fluid_event_t*)'
|
65
|
+
|
66
|
+
|
67
|
+
# Functions.
|
68
|
+
#
|
69
|
+
#
|
70
|
+
|
71
|
+
# Set a sequencer event to be a all notes off event.
|
72
|
+
extern 'void fluid_event_all_notes_off(fluid_event_t*, int)'
|
73
|
+
|
74
|
+
# Set a sequencer event to be an all sounds off event.
|
75
|
+
extern 'void fluid_event_all_sounds_off(fluid_event_t*, int)'
|
76
|
+
|
77
|
+
# Set a sequencer event to be a bank select event.
|
78
|
+
extern 'void fluid_event_bank_select(fluid_event_t*, int, short)'
|
79
|
+
|
80
|
+
# Set a sequencer event to be a channel-wide aftertouch event.
|
81
|
+
extern 'void fluid_event_channel_pressure(fluid_event_t*, int, int)'
|
82
|
+
|
83
|
+
# Set a sequencer event to be a chorus send event.
|
84
|
+
extern 'void fluid_event_chorus_send(fluid_event_t*, int, int)'
|
85
|
+
|
86
|
+
# Set a sequencer event to be a MIDI control change event.
|
87
|
+
extern 'void fluid_event_control_change(fluid_event_t*, int, short, int)'
|
88
|
+
|
89
|
+
# Transforms an incoming MIDI event (from a MIDI driver or MIDI router)
|
90
|
+
# to a sequencer event.
|
91
|
+
extern 'int fluid_event_from_midi_event' +
|
92
|
+
'(fluid_event_t*, fluid_midi_event_t*)'
|
93
|
+
|
94
|
+
|
95
|
+
### getters.
|
96
|
+
|
97
|
+
# Get the MIDI bank field from a sequencer event structure.
|
98
|
+
extern 'short fluid_event_get_bank(fluid_event_t*)'
|
99
|
+
|
100
|
+
# Get the MIDI channel field from a sequencer event structure.
|
101
|
+
extern 'int fluid_event_get_channel(fluid_event_t*)'
|
102
|
+
|
103
|
+
# Get the MIDI control number field from a sequencer event structure.
|
104
|
+
extern 'short fluid_event_get_control(fluid_event_t*)'
|
105
|
+
|
106
|
+
# Get the data field from a sequencer event structure.
|
107
|
+
extern 'void* fluid_event_get_data(fluid_event_t*)'
|
108
|
+
|
109
|
+
# Get the dest sequencer client from a sequencer event structure.
|
110
|
+
extern 'fluid_seq_id_t fluid_event_get_dest(fluid_event_t*)'
|
111
|
+
|
112
|
+
# Get the duration field from a sequencer event structure.
|
113
|
+
extern 'unsigned int fluid_event_get_duration(fluid_event_t*)'
|
114
|
+
|
115
|
+
# Get the MIDI note field from a sequencer event structure.
|
116
|
+
extern 'short fluid_event_get_key(fluid_event_t*)'
|
117
|
+
|
118
|
+
# Get the pitch field from a sequencer event structure.
|
119
|
+
extern 'int fluid_event_get_pitch(fluid_event_t*)'
|
120
|
+
|
121
|
+
# Get the MIDI program field from a sequencer event structure.
|
122
|
+
extern 'int fluid_event_get_program(fluid_event_t*)'
|
123
|
+
|
124
|
+
# Gets time scale field from a sequencer event structure.
|
125
|
+
extern 'double fluid_event_get_scale(fluid_event_t*)'
|
126
|
+
|
127
|
+
# Get the SoundFont ID field from a sequencer event structure.
|
128
|
+
extern 'unsigned int fluid_event_get_sfont_id(fluid_event_t*)'
|
129
|
+
|
130
|
+
# Get the source sequencer client from a sequencer event structure.
|
131
|
+
extern 'fluid_seq_id_t fluid_event_get_source(fluid_event_t*)'
|
132
|
+
|
133
|
+
# Get the event type (fluid_seq_event_type) field from a sequencer
|
134
|
+
# event structure.
|
135
|
+
extern 'int fluid_event_get_type(fluid_event_t*)'
|
136
|
+
|
137
|
+
# Get the value field from a sequencer event structure.
|
138
|
+
extern 'int fluid_event_get_value(fluid_event_t*)'
|
139
|
+
|
140
|
+
# Get the MIDI velocity field from a sequencer event structure.
|
141
|
+
extern 'short fluid_event_get_velocity(fluid_event_t*)'
|
142
|
+
|
143
|
+
### .
|
144
|
+
|
145
|
+
# Set a sequencer event to be a polyphonic aftertouch event.
|
146
|
+
extern 'void fluid_event_key_pressure(fluid_event_t*, int, short, int)'
|
147
|
+
|
148
|
+
# Set a sequencer event to be a modulation event.
|
149
|
+
extern 'void fluid_event_modulation(fluid_event_t*, int, int)'
|
150
|
+
|
151
|
+
# Set a sequencer event to be a note duration event.
|
152
|
+
extern 'void fluid_event_note' +
|
153
|
+
'(fluid_event_t*, int, short, short, unsigned int)'
|
154
|
+
|
155
|
+
# Set a sequencer event to be a note off event.
|
156
|
+
extern 'void fluid_event_noteoff(fluid_event_t*, int, short)'
|
157
|
+
|
158
|
+
# Set a sequencer event to be a note on event.
|
159
|
+
extern 'void fluid_event_noteon(fluid_event_t*, int, short, short)'
|
160
|
+
|
161
|
+
# Set a sequencer event to be a stereo pan event.
|
162
|
+
extern 'void fluid_event_pan(fluid_event_t*, int, int)'
|
163
|
+
|
164
|
+
# Set a sequencer event to be a pitch bend event.
|
165
|
+
extern 'void fluid_event_pitch_bend(fluid_event_t*, int, int)'
|
166
|
+
|
167
|
+
# Set a sequencer event to be a pitch wheel sensitivity event.
|
168
|
+
extern 'void fluid_event_pitch_wheelsens(fluid_event_t*, int, int)'
|
169
|
+
|
170
|
+
# Set a sequencer event to be a program change event.
|
171
|
+
extern 'void fluid_event_program_change(fluid_event_t*, int, int)'
|
172
|
+
|
173
|
+
# Set a sequencer event to be a program select event.
|
174
|
+
extern 'void fluid_event_program_select' +
|
175
|
+
'(fluid_event_t*, int, unsigned int, short, short)'
|
176
|
+
|
177
|
+
# Set a sequencer event to be a reverb send event.
|
178
|
+
extern 'void fluid_event_reverb_send(fluid_event_t*, int, int)'
|
179
|
+
|
180
|
+
# Set a sequencer event to be a scale change event.
|
181
|
+
extern 'void fluid_event_scale(fluid_event_t*, double)'
|
182
|
+
|
183
|
+
# Set destination of this sequencer event, i.e.
|
184
|
+
extern 'void fluid_event_set_dest(fluid_event_t*, fluid_seq_id_t)'
|
185
|
+
|
186
|
+
# Set source of a sequencer event.
|
187
|
+
extern 'void fluid_event_set_source(fluid_event_t*, fluid_seq_id_t)'
|
188
|
+
|
189
|
+
# Set a sequencer event to be a MIDI sustain event.
|
190
|
+
extern 'void fluid_event_sustain(fluid_event_t*, int, int)'
|
191
|
+
|
192
|
+
# Set a sequencer event to be a midi system reset event.
|
193
|
+
extern 'void fluid_event_system_reset(fluid_event_t*)'
|
194
|
+
|
195
|
+
# Set a sequencer event to be a timer event.
|
196
|
+
extern 'void fluid_event_timer(fluid_event_t*, void*)'
|
197
|
+
|
198
|
+
# Set a sequencer event to be an unregistering event.
|
199
|
+
extern 'void fluid_event_unregistering(fluid_event_t*)'
|
200
|
+
|
201
|
+
# Set a sequencer event to be a volume event.
|
202
|
+
extern 'void fluid_event_volume(fluid_event_t*, int, int)'
|
203
|
+
|
204
|
+
end
|
205
|
+
end
|
206
|
+
|
207
|
+
|
208
|
+
#
|
209
|
+
#
|
210
|
+
#
|
211
|
+
class FiddleFluidSynth
|
212
|
+
|
213
|
+
#
|
214
|
+
module SequencerEventIF
|
215
|
+
module EventIF; end
|
216
|
+
end
|
217
|
+
|
218
|
+
#
|
219
|
+
extend SequencerEventIF
|
220
|
+
include SequencerEventIF
|
221
|
+
|
222
|
+
end
|
223
|
+
|
224
|
+
|
225
|
+
# Lifecycle Functions (SequencerEventIF).
|
226
|
+
#
|
227
|
+
#
|
228
|
+
class FiddleFluidSynth
|
229
|
+
module SequencerEventIF
|
230
|
+
|
231
|
+
#
|
232
|
+
def event_new()
|
233
|
+
ret = C.new_fluid_event()
|
234
|
+
if ret.nil? || ret.null?
|
235
|
+
ret = nil
|
236
|
+
else
|
237
|
+
ret.extend(EventIF)
|
238
|
+
end
|
239
|
+
ret
|
240
|
+
end
|
241
|
+
|
242
|
+
def event_delete( ev )
|
243
|
+
ret = C.delete_fluid_event(ev)
|
244
|
+
ret
|
245
|
+
end
|
246
|
+
|
247
|
+
#ng. def seq_event( type, ..., &blk )
|
248
|
+
def seq_event( type, ... )
|
249
|
+
ev = event_new()
|
250
|
+
ev.set_type(type, ...)
|
251
|
+
|
252
|
+
# blk.(ev)
|
253
|
+
yield(ev)
|
254
|
+
|
255
|
+
event_delete(ev)
|
256
|
+
end
|
257
|
+
|
258
|
+
end
|
259
|
+
end
|
260
|
+
|
261
|
+
|
262
|
+
# Functions (SequencerEventIF).
|
263
|
+
#
|
264
|
+
#
|
265
|
+
class FiddleFluidSynth
|
266
|
+
module SequencerEventIF
|
267
|
+
|
268
|
+
### getters.
|
269
|
+
|
270
|
+
def event_get_bank( ev )
|
271
|
+
ret = C.fluid_event_get_bank(ev)
|
272
|
+
ret
|
273
|
+
end
|
274
|
+
alias event_get_bknum event_get_bank
|
275
|
+
|
276
|
+
def event_get_channel( ev )
|
277
|
+
ret = C.fluid_event_get_channel(ev)
|
278
|
+
ret
|
279
|
+
end
|
280
|
+
|
281
|
+
def event_get_control( ev )
|
282
|
+
ret = C.fluid_event_get_control(ev)
|
283
|
+
ret
|
284
|
+
end
|
285
|
+
|
286
|
+
def event_get_data( ev )
|
287
|
+
ret = C.fluid_event_get_data(ev)
|
288
|
+
ret
|
289
|
+
end
|
290
|
+
|
291
|
+
def event_get_dest( ev )
|
292
|
+
ret = C.fluid_event_get_dest(ev)
|
293
|
+
ret
|
294
|
+
end
|
295
|
+
|
296
|
+
def event_get_duration( ev )
|
297
|
+
ret = C.fluid_event_get_duration(ev)
|
298
|
+
ret
|
299
|
+
end
|
300
|
+
|
301
|
+
def event_get_key( ev )
|
302
|
+
ret = C.fluid_event_get_key(ev)
|
303
|
+
ret
|
304
|
+
end
|
305
|
+
|
306
|
+
def event_get_pitch( ev )
|
307
|
+
ret = C.fluid_event_get_pitch(ev)
|
308
|
+
ret
|
309
|
+
end
|
310
|
+
|
311
|
+
def event_get_program( ev )
|
312
|
+
ret = C.fluid_event_get_program(ev)
|
313
|
+
ret
|
314
|
+
end
|
315
|
+
|
316
|
+
def event_get_scale( ev )
|
317
|
+
ret = C.fluid_event_get_scale(ev)
|
318
|
+
ret
|
319
|
+
end
|
320
|
+
|
321
|
+
def event_get_sfont_id( ev )
|
322
|
+
ret = C.fluid_event_get_sfont_id(ev)
|
323
|
+
ret
|
324
|
+
end
|
325
|
+
alias event_get_sfid event_get_sfont_id
|
326
|
+
|
327
|
+
def event_get_source( ev )
|
328
|
+
ret = C.fluid_event_get_source(ev)
|
329
|
+
ret
|
330
|
+
end
|
331
|
+
alias event_get_src event_get_source
|
332
|
+
|
333
|
+
def event_get_type( ev )
|
334
|
+
ret = C.fluid_event_get_type(ev)
|
335
|
+
ret
|
336
|
+
end
|
337
|
+
|
338
|
+
def event_get_value( ev )
|
339
|
+
ret = C.fluid_event_get_value(ev)
|
340
|
+
ret
|
341
|
+
end
|
342
|
+
|
343
|
+
def event_get_velocity( ev )
|
344
|
+
ret = C.fluid_event_get_velocity(ev)
|
345
|
+
ret
|
346
|
+
end
|
347
|
+
|
348
|
+
|
349
|
+
### Type Setters.
|
350
|
+
|
351
|
+
#
|
352
|
+
def event_note( ev, ch: , key: , vel: , duration: )
|
353
|
+
ret = C.fluid_event_note(ev, ch, key, vel, duration)
|
354
|
+
ret
|
355
|
+
end
|
356
|
+
|
357
|
+
def event_noteon( ev, ch: , key: , vel: )
|
358
|
+
ret = C.fluid_event_noteon(ev, ch, key, vel)
|
359
|
+
ret
|
360
|
+
end
|
361
|
+
|
362
|
+
def event_noteoff( ev, ch: , key: )
|
363
|
+
ret = C.fluid_event_noteoff(ev, ch, key)
|
364
|
+
ret
|
365
|
+
end
|
366
|
+
|
367
|
+
#
|
368
|
+
def event_all_sounds_off( ev, ch: )
|
369
|
+
ret = C.fluid_event_all_sounds_off(ev, ch)
|
370
|
+
ret
|
371
|
+
end
|
372
|
+
|
373
|
+
def event_all_notes_off( ev, ch: )
|
374
|
+
ret = C.fluid_event_all_notes_off(ev, ch)
|
375
|
+
ret
|
376
|
+
end
|
377
|
+
|
378
|
+
def event_bank_select( ev, ch: , bknum: )
|
379
|
+
ret = C.fluid_event_bank_select(ev, ch, bknum)
|
380
|
+
ret
|
381
|
+
end
|
382
|
+
|
383
|
+
# def event_program_change( ev, ch: , prenum: )
|
384
|
+
def event_program_change( ev, ch: , pgnum: nil, prenum: nil,
|
385
|
+
_pgnum: pgnum||prenum)
|
386
|
+
ret = C.fluid_event_program_change(ev, ch, _pgnum)
|
387
|
+
ret
|
388
|
+
end
|
389
|
+
|
390
|
+
def event_program_select( ev, ch: , sfid: , bknum: ,
|
391
|
+
prenum: nil, pgnum: nil,
|
392
|
+
_prenum: prenum||pgnum )
|
393
|
+
ret = C.fluid_event_program_select(ev, ch, sfid, bknum, _prenum)
|
394
|
+
ret
|
395
|
+
end
|
396
|
+
|
397
|
+
# def event_pitch_bend( ev, ch: , val: )
|
398
|
+
def event_pitch_bend( ev, ch: , pitch: nil, val: nil,
|
399
|
+
_pitch: pitch || val)
|
400
|
+
ret = C.fluid_event_pitch_bend(ev, ch, _pitch)
|
401
|
+
ret
|
402
|
+
end
|
403
|
+
|
404
|
+
def event_pitch_wheelsens( ev, ch: , val: )
|
405
|
+
ret = C.fluid_event_pitch_wheelsens(ev, ch, val)
|
406
|
+
ret
|
407
|
+
end
|
408
|
+
|
409
|
+
def event_modulation( ev, ch: , val: )
|
410
|
+
ret = C.fluid_event_modulation(ev, ch, val)
|
411
|
+
ret
|
412
|
+
end
|
413
|
+
|
414
|
+
|
415
|
+
#
|
416
|
+
def event_sustain( ev, ch: , val: )
|
417
|
+
ret = C.fluid_event_sustain(ev, ch, val)
|
418
|
+
ret
|
419
|
+
end
|
420
|
+
|
421
|
+
def event_control_change( ev, ch: , ctrl: , val: )
|
422
|
+
ret = C.fluid_event_control_change(ev, ch, ctrl, val)
|
423
|
+
ret
|
424
|
+
end
|
425
|
+
|
426
|
+
def event_pan( ev, ch: , val: )
|
427
|
+
ret = C.fluid_event_pan(ev, ch, val)
|
428
|
+
ret
|
429
|
+
end
|
430
|
+
|
431
|
+
def event_volume( ev, ch: , val: )
|
432
|
+
ret = C.fluid_event_volume(ev, ch, val)
|
433
|
+
ret
|
434
|
+
end
|
435
|
+
|
436
|
+
def event_reverb_send( ev, ch: , val: )
|
437
|
+
ret = C.fluid_event_reverb_send(ev, ch, val)
|
438
|
+
ret
|
439
|
+
end
|
440
|
+
|
441
|
+
def event_chorus_send( ev, ch: , val: )
|
442
|
+
ret = C.fluid_event_chorus_send(ev, ch, val)
|
443
|
+
ret
|
444
|
+
end
|
445
|
+
|
446
|
+
def event_timer( ev, data: )
|
447
|
+
ret = C.fluid_event_timer(ev,data)
|
448
|
+
ret
|
449
|
+
end
|
450
|
+
|
451
|
+
def event_channel_pressure( ev, ch: , val: )
|
452
|
+
ret = C.fluid_event_channel_pressure(ev, ch, val)
|
453
|
+
ret
|
454
|
+
end
|
455
|
+
|
456
|
+
def event_key_pressure( ev, ch: , key: , val: )
|
457
|
+
ret = C.fluid_event_key_pressure(ev,ch,key,val)
|
458
|
+
ret
|
459
|
+
end
|
460
|
+
|
461
|
+
def event_system_reset( ev )
|
462
|
+
ret = C.fluid_event_system_reset(ev)
|
463
|
+
ret
|
464
|
+
end
|
465
|
+
|
466
|
+
#
|
467
|
+
def event_unregistering( ev )
|
468
|
+
ret = C.fluid_event_unregistering(ev)
|
469
|
+
ret
|
470
|
+
end
|
471
|
+
|
472
|
+
def event_scale( ev, scale: )
|
473
|
+
ret = C.fluid_event_scale(ev,scale)
|
474
|
+
ret
|
475
|
+
end
|
476
|
+
|
477
|
+
# last_event.
|
478
|
+
|
479
|
+
|
480
|
+
### .
|
481
|
+
|
482
|
+
#
|
483
|
+
#
|
484
|
+
# ==== Returns
|
485
|
+
# FLUID_OK or FLUID_FAILED.
|
486
|
+
#
|
487
|
+
def event_from_midi_event( ev, midi_ev: )
|
488
|
+
ret = C.fluid_event_from_midi_event(ev, midi_ev)
|
489
|
+
ret
|
490
|
+
end
|
491
|
+
|
492
|
+
|
493
|
+
### setters.
|
494
|
+
|
495
|
+
def event_set_dest( ev, dest: )
|
496
|
+
ret = C.fluid_event_set_dest(ev,dest)
|
497
|
+
ret
|
498
|
+
end
|
499
|
+
|
500
|
+
def event_set_source( ev, src: )
|
501
|
+
ret = C.fluid_event_set_source(ev,src)
|
502
|
+
ret
|
503
|
+
end
|
504
|
+
alias event_set_src event_set_source
|
505
|
+
|
506
|
+
|
507
|
+
end
|
508
|
+
end
|
509
|
+
|
510
|
+
|
511
|
+
#
|
512
|
+
#
|
513
|
+
#
|
514
|
+
class FiddleFluidSynth
|
515
|
+
module SequencerEventIF::EventIF
|
516
|
+
|
517
|
+
# getter only.
|
518
|
+
#
|
519
|
+
#
|
520
|
+
|
521
|
+
[
|
522
|
+
:bank,
|
523
|
+
:channel,
|
524
|
+
:control,
|
525
|
+
:data,
|
526
|
+
# :dest,
|
527
|
+
:duration,
|
528
|
+
:key,
|
529
|
+
:pitch,
|
530
|
+
:program, # alias as pgnum, prenum.
|
531
|
+
:scale,
|
532
|
+
:sfont_id, # alias sfid.
|
533
|
+
# :source,
|
534
|
+
:type,
|
535
|
+
:value, # alias as val.
|
536
|
+
:velocity, # alias vel, velc.
|
537
|
+
].each do |_meth|
|
538
|
+
meth_name = _meth
|
539
|
+
call_name = 'event_get_'+_meth.to_s
|
540
|
+
|
541
|
+
define_method(meth_name){|_self = self.itself|
|
542
|
+
FFS.send(call_name, _self)
|
543
|
+
}
|
544
|
+
end
|
545
|
+
# ex.
|
546
|
+
# def bank( _self = self.itself )
|
547
|
+
# FFS.event_get_bank(_self)
|
548
|
+
# end
|
549
|
+
|
550
|
+
### Aliases.
|
551
|
+
alias bknum bank
|
552
|
+
|
553
|
+
alias ch channel
|
554
|
+
alias chan channel
|
555
|
+
alias ctrl control
|
556
|
+
|
557
|
+
alias pgnum program
|
558
|
+
alias prenum program
|
559
|
+
|
560
|
+
alias sfid sfont_id
|
561
|
+
|
562
|
+
alias val value
|
563
|
+
alias vel velocity
|
564
|
+
alias velc velocity
|
565
|
+
|
566
|
+
#
|
567
|
+
#
|
568
|
+
#
|
569
|
+
def from_midi_event( midi_ev, _self = self.itself )
|
570
|
+
FFS.event_from_midi_event(_self, midi_ev)
|
571
|
+
end
|
572
|
+
|
573
|
+
# getter+setter.
|
574
|
+
#
|
575
|
+
#
|
576
|
+
def dest( _self = self.itself )
|
577
|
+
FFS.event_get_dest(_self)
|
578
|
+
end
|
579
|
+
def dest=( _dst, _self = self.itself )
|
580
|
+
FFS.event_set_dest(_self, dest: _dst)
|
581
|
+
end
|
582
|
+
alias dst dest
|
583
|
+
alias dst= dest=
|
584
|
+
|
585
|
+
#
|
586
|
+
def source( _self = self.itself )
|
587
|
+
FFS.event_get_source(_self)
|
588
|
+
end
|
589
|
+
def source=( _src, _self = self.itself )
|
590
|
+
FFS.event_set_source(_self, src: _src)
|
591
|
+
end
|
592
|
+
alias src source
|
593
|
+
alias src= source=
|
594
|
+
|
595
|
+
# setters (types)
|
596
|
+
#
|
597
|
+
#
|
598
|
+
EVENT_TYPE_ARY = [
|
599
|
+
#
|
600
|
+
:note, :noteon, :noteoff,
|
601
|
+
:all_sounds_off, :all_notes_off,
|
602
|
+
:bank_select,
|
603
|
+
:program_change, :program_select,
|
604
|
+
:pitch_bend, :pitch_wheelsens,
|
605
|
+
:modulation,
|
606
|
+
|
607
|
+
#
|
608
|
+
:sustain,
|
609
|
+
:control_change,
|
610
|
+
:pan,
|
611
|
+
:volume,
|
612
|
+
:reverb_send,
|
613
|
+
:chorus_send,
|
614
|
+
:timer,
|
615
|
+
:channel_pressure, :key_pressure,
|
616
|
+
:system_reset,
|
617
|
+
|
618
|
+
#
|
619
|
+
:unregistering,
|
620
|
+
:scale,
|
621
|
+
# last.
|
622
|
+
]
|
623
|
+
def set_type_alias( kn )
|
624
|
+
ret = kn.to_s.downcase.to_sym
|
625
|
+
case kn
|
626
|
+
when /^cc$/i
|
627
|
+
ret = :control_change
|
628
|
+
when /^mod$/i
|
629
|
+
ret = :modulation
|
630
|
+
when /^pc$/i
|
631
|
+
ret = :program_change
|
632
|
+
when /^psel$/i
|
633
|
+
ret = :program_select
|
634
|
+
when /^ps$/i
|
635
|
+
ret = :program_select
|
636
|
+
end
|
637
|
+
|
638
|
+
ret
|
639
|
+
end
|
640
|
+
|
641
|
+
def set_type( type, ... )
|
642
|
+
_type = set_type_alias(type)
|
643
|
+
|
644
|
+
type_s = _type.to_s.downcase
|
645
|
+
unless EVENT_TYPE_ARY.include? type_s.to_sym
|
646
|
+
raise "No such event type: #{type}. Select one of #{EVENT_TYPE_ARY}."
|
647
|
+
end
|
648
|
+
|
649
|
+
#
|
650
|
+
meth_type = "event_" + type_s
|
651
|
+
FFS.send(meth_type, self, ...)
|
652
|
+
|
653
|
+
end
|
654
|
+
|
655
|
+
# action (set_type).
|
656
|
+
#
|
657
|
+
#
|
658
|
+
tmp = EVENT_TYPE_ARY.dup
|
659
|
+
tmp = tmp - [ :scale ]
|
660
|
+
tmp.each do |_meth|
|
661
|
+
#
|
662
|
+
meth_name = "set_" + _meth.to_s
|
663
|
+
|
664
|
+
#
|
665
|
+
define_method(meth_name){| *args, **kwargs |
|
666
|
+
self.send('set_type', _meth, *args, **kwargs)
|
667
|
+
}
|
668
|
+
end
|
669
|
+
def set_scale( v )
|
670
|
+
set_type(:scale, scale: v)
|
671
|
+
end
|
672
|
+
|
673
|
+
end
|
674
|
+
end
|
675
|
+
|
676
|
+
|
677
|
+
|
678
|
+
|
679
|
+
#### endof filename: fiddle-fluidstynth/sequencer/events.rb
|