aubio 0.3.4 → 0.3.5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: eaa1dc334733e618f7f8272a421894fac350213f48b93e59b177d49e01a71c1c
4
- data.tar.gz: d857822bd9d8ec7f7bd76cbf572e79c1a07a479ad191c30f5a9052131e242726
3
+ metadata.gz: 9fc99bdb6d49e019a2b9c191f0a4abebb23b8d09046158a2dac7c9520364ea96
4
+ data.tar.gz: '01368333aac8d7e716332e4a340b1fa870500afdac82099ced8ad15cb245a0ad'
5
5
  SHA512:
6
- metadata.gz: fdfe5eb61b80fd531f9ca5880d648bb4726662296ce575779b06f10d0779db3a269c057464c09d4a741cb304a57cec064dbe6013931ed3a43f12d1d451608868
7
- data.tar.gz: e062505345d9045572fffac90d2a91de73ae204605dda9a101c889f7688425007f5719192bf60449ecd523f7a7c392d8ed47ce0ecc5c03a28f0eadd9ad9f1bae
6
+ metadata.gz: db793a973410c4ca64cad4f5f94ce4e309ed4b5074a254e770b000d8d726a18a178419f674ec8a2bf10f114b62606a02776cb9da1d8218a9236abee45e07feb5
7
+ data.tar.gz: ed1a6fdd7d08bd0ec0d047b645625d02b88777060b3be09253a5413c2422269c8b4a17a7abdbf7ef8047b9045d2fc7f8bb7933347d55790863ea372cb094799b
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Aubio
4
- VERSION = '0.3.4'
4
+ VERSION = '0.3.5'
5
5
  end
File without changes
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aubio
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.4
4
+ version: 0.3.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Xavier Riley
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-06-29 00:00:00.000000000 Z
11
+ date: 2020-08-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ffi
@@ -127,16 +127,15 @@ files:
127
127
  - Rakefile
128
128
  - aubio-ffi-generator.rb
129
129
  - aubio.gemspec
130
- - aubio.rb
131
130
  - bin/console
132
131
  - bin/setup
133
- - lib/aubio.rb
134
132
  - lib/aubio/aubio-ffi.rb
135
133
  - lib/aubio/beats.rb
136
134
  - lib/aubio/legacy_api.rb
137
135
  - lib/aubio/onsets.rb
138
136
  - lib/aubio/pitches.rb
139
137
  - lib/aubio/version.rb
138
+ - lib/ruby_aubio.rb
140
139
  homepage: https://github.com/xavriley/ruby-aubio
141
140
  licenses:
142
141
  - MIT
data/aubio.rb DELETED
@@ -1,466 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'ffi'
4
-
5
- module Aubio
6
- extend FFI::Library
7
- ffi_lib '/usr/local/Cellar/aubio/0.4.2/lib/libaubio.4.2.2.dylib'
8
-
9
- # tempo
10
- attach_function :new_aubio_tempo, %i[string int int int], :pointer
11
- attach_function :aubio_tempo_do, %i[pointer pointer pointer], :void
12
- attach_function :aubio_tempo_get_last, [:pointer], :int
13
- attach_function :aubio_tempo_get_last_s, [:pointer], :float
14
- attach_function :aubio_tempo_get_last_ms, [:pointer], :float
15
- attach_function :aubio_tempo_set_silence, %i[pointer float], :int
16
- attach_function :aubio_tempo_get_silence, [:pointer], :float
17
- attach_function :aubio_tempo_set_threshold, %i[pointer float], :int
18
- attach_function :aubio_tempo_get_threshold, [:pointer], :float
19
- attach_function :aubio_tempo_get_bpm, [:pointer], :float
20
- attach_function :aubio_tempo_get_confidence, [:pointer], :float
21
- attach_function :del_aubio_tempo, [:pointer], :void
22
-
23
- # beattracking / misc
24
- attach_function :new_aubio_beattracking, %i[int int int], :pointer
25
- attach_function :aubio_beattracking_do, %i[pointer pointer pointer], :void
26
- attach_function :aubio_beattracking_get_bpm, [:pointer], :float
27
- attach_function :aubio_filter_do, %i[pointer pointer], :void
28
- attach_function :new_aubio_filter_a_weighting, [:int], :pointer
29
-
30
- # source
31
- attach_function :new_aubio_source, %i[string int int], :pointer
32
- attach_function :aubio_source_do, %i[pointer pointer pointer], :void
33
- attach_function :aubio_source_do_multi, %i[pointer pointer pointer], :void
34
- attach_function :aubio_source_get_samplerate, [:pointer], :int
35
- attach_function :aubio_source_get_channels, [:pointer], :int
36
- attach_function :aubio_source_seek, %i[pointer int], :int
37
- attach_function :aubio_source_close, [:pointer], :int
38
- attach_function :del_aubio_source, [:pointer], :void
39
-
40
- # sink
41
- attach_function :new_aubio_sink, %i[string int], :pointer
42
- attach_function :aubio_sink_preset_samplerate, %i[pointer int], :void
43
- attach_function :aubio_sink_preset_channels, %i[pointer int], :void
44
- attach_function :aubio_sink_get_samplerate, [:pointer], :int
45
- attach_function :aubio_sink_get_channels, [:pointer], :int
46
- attach_function :aubio_sink_do, %i[pointer pointer int], :void
47
- attach_function :aubio_sink_do_multi, %i[pointer pointer int], :void
48
- attach_function :aubio_sink_close, [:pointer], :int
49
- attach_function :del_aubio_sink, [:pointer], :void
50
-
51
- # onset
52
- attach_function :new_aubio_onset, %i[string int int int], :pointer
53
- attach_function :aubio_onset_do, %i[pointer pointer pointer], :void
54
- attach_function :aubio_onset_get_last, [:pointer], :int
55
- attach_function :aubio_onset_get_last_s, [:pointer], :float
56
- attach_function :aubio_onset_get_last_ms, [:pointer], :float
57
- attach_function :aubio_onset_set_silence, %i[pointer float], :int
58
- attach_function :aubio_onset_get_silence, [:pointer], :float
59
- attach_function :aubio_onset_get_descriptor, [:pointer], :float
60
- attach_function :aubio_onset_get_thresholded_descriptor, [:pointer], :float
61
- attach_function :aubio_onset_set_threshold, %i[pointer float], :int
62
- attach_function :aubio_onset_set_minioi, %i[pointer int], :int
63
- attach_function :aubio_onset_set_minioi_s, %i[pointer int], :int
64
- attach_function :aubio_onset_set_minioi_ms, %i[pointer float], :int
65
- attach_function :aubio_onset_set_delay, %i[pointer int], :int
66
- attach_function :aubio_onset_set_delay_s, %i[pointer int], :int
67
- attach_function :aubio_onset_set_delay_ms, %i[pointer float], :int
68
- attach_function :aubio_onset_get_minioi, [:pointer], :int
69
- attach_function :aubio_onset_get_minioi_s, [:pointer], :float
70
- attach_function :aubio_onset_get_minioi_ms, [:pointer], :float
71
- attach_function :aubio_onset_get_delay, [:pointer], :int
72
- attach_function :aubio_onset_get_delay_s, [:pointer], :float
73
- attach_function :aubio_onset_get_delay_ms, [:pointer], :float
74
- attach_function :aubio_onset_get_threshold, [:pointer], :float
75
- attach_function :del_aubio_onset, [:pointer], :void
76
-
77
- # pitch
78
- attach_function :new_aubio_pitch, %i[string int int int], :pointer
79
- attach_function :aubio_pitch_do, %i[pointer pointer pointer], :void
80
- attach_function :aubio_pitch_set_tolerance, %i[pointer int], :int
81
- attach_function :aubio_pitch_set_unit, %i[pointer string], :int
82
- attach_function :aubio_pitch_set_silence, %i[pointer float], :int
83
- attach_function :aubio_pitch_get_silence, [:pointer], :float
84
- attach_function :aubio_pitch_get_confidence, [:pointer], :float
85
- attach_function :del_aubio_pitch, [:pointer], :void
86
-
87
- # new fvec
88
- attach_function :new_fvec, [:int], :pointer
89
- attach_function :del_fvec, [:pointer], :void
90
- attach_function :fvec_get_sample, %i[pointer int], :float
91
- attach_function :fvec_set_sample, %i[pointer float int], :void
92
- attach_function :fvec_get_data, [:pointer], :float
93
- attach_function :fvec_print, [:pointer], :void
94
- attach_function :fvec_set_all, %i[pointer float], :void
95
- attach_function :fvec_zeros, [:pointer], :void
96
- attach_function :fvec_rev, [:pointer], :void
97
- attach_function :fvec_weight, %i[pointer pointer], :void
98
- attach_function :fvec_copy, %i[pointer pointer], :void
99
- attach_function :fvec_ones, [:pointer], :void
100
-
101
- def self.onsets(path, params = {})
102
- sample_rate = params[:sample_rate] || 44_100
103
- window_size = params[:window_size] || 1024
104
- hop_size = params[:hop_size] || 512
105
-
106
- # parser.add_option("-O","--onset-method",
107
- # action="store", dest="onset_method", default='default',
108
- # metavar = "<onset_method>",
109
- # help="onset detection method [default=default] \
110
- # complexdomain|hfc|phase|specdiff|energy|kl|mkl")
111
- onset_method = params[:onset_method] || 'default'
112
-
113
- # # cutting methods
114
- # parser.add_option("-b","--beat",
115
- # action="store_true", dest="beat", default=False,
116
- # help="use beat locations")
117
- beat = params[:beat] || false
118
- # """
119
- # parser.add_option("-S","--silencecut",
120
- # action="store_true", dest="silencecut", default=False,
121
- # help="use silence locations")
122
- silencecut = params[:silencecut] || false
123
-
124
- # parser.add_option("-s","--silence",
125
- # metavar = "<value>",
126
- # action="store", dest="silence", default=-70,
127
- # help="silence threshold [default=-70]")
128
- silence = params[:silence] || -70
129
-
130
- # """
131
- # # algorithm parameters
132
- # parser.add_option("-r", "--samplerate",
133
- # metavar = "<freq>", type='int',
134
- # action="store", dest="samplerate", default=0,
135
- # help="samplerate at which the file should be represented")
136
- # parser.add_option("-B","--bufsize",
137
- # action="store", dest="bufsize", default=512,
138
- # metavar = "<size>", type='int',
139
- # help="buffer size [default=512]")
140
- # parser.add_option("-H","--hopsize",
141
- # metavar = "<size>", type='int',
142
- # action="store", dest="hopsize", default=256,
143
- # help="overlap size [default=256]")
144
- # parser.add_option("-t","--onset-threshold",
145
- # metavar = "<value>", type="float",
146
- # action="store", dest="threshold", default=0.3,
147
- # help="onset peak picking threshold [default=0.3]")
148
- # parser.add_option("-c","--cut",
149
- # action="store_true", dest="cut", default=False,
150
- # help="cut input sound file at detected labels \
151
- # best used with option -L")
152
-
153
- # # minioi
154
- # parser.add_option("-M","--minioi",
155
- # metavar = "<value>", type='string',
156
- # action="store", dest="minioi", default="12ms",
157
- # help="minimum inter onset interval [default=12ms]")
158
-
159
- # """
160
- # parser.add_option("-D","--delay",
161
- # action = "store", dest = "delay", type = "float",
162
- # metavar = "<seconds>", default=0,
163
- # help="number of seconds to take back [default=system]\
164
- # default system delay is 3*hopsize/samplerate")
165
- # parser.add_option("-C","--dcthreshold",
166
- # metavar = "<value>",
167
- # action="store", dest="dcthreshold", default=1.,
168
- # help="onset peak picking DC component [default=1.]")
169
- # parser.add_option("-L","--localmin",
170
- # action="store_true", dest="localmin", default=False,
171
- # help="use local minima after peak detection")
172
- # parser.add_option("-d","--derivate",
173
- # action="store_true", dest="derivate", default=False,
174
- # help="derivate onset detection function")
175
- # parser.add_option("-z","--zerocross",
176
- # metavar = "<value>",
177
- # action="store", dest="zerothres", default=0.008,
178
- # help="zero-crossing threshold for slicing [default=0.00008]")
179
- # """
180
- # # plotting functions
181
- # """
182
- # parser.add_option("-p","--plot",
183
- # action="store_true", dest="plot", default=False,
184
- # help="draw plot")
185
- # parser.add_option("-x","--xsize",
186
- # metavar = "<size>",
187
- # action="store", dest="xsize", default=1.,
188
- # type='float', help="define xsize for plot")
189
- # parser.add_option("-y","--ysize",
190
- # metavar = "<size>",
191
- # action="store", dest="ysize", default=1.,
192
- # type='float', help="define ysize for plot")
193
- # parser.add_option("-f","--function",
194
- # action="store_true", dest="func", default=False,
195
- # help="print detection function")
196
- # parser.add_option("-n","--no-onsets",
197
- # action="store_true", dest="nplot", default=False,
198
- # help="do not plot detected onsets")
199
- # parser.add_option("-O","--outplot",
200
- # metavar = "<output_image>",
201
- # action="store", dest="outplot", default=None,
202
- # help="save plot to output.{ps,png}")
203
- # parser.add_option("-F","--spectrogram",
204
- # action="store_true", dest="spectro", default=False,
205
- # help="add spectrogram to the plot")
206
- # """
207
- # parser.add_option("-o","--output", type = str,
208
- # metavar = "<outputdir>",
209
- # action="store", dest="output_directory", default=None,
210
- # help="specify path where slices of the original file should be created")
211
- # parser.add_option("--cut-until-nsamples", type = int,
212
- # metavar = "<samples>",
213
- # action = "store", dest = "cut_until_nsamples", default = None,
214
- # help="how many extra samples should be added at the end of each slice")
215
- # parser.add_option("--cut-until-nslices", type = int,
216
- # metavar = "<slices>",
217
- # action = "store", dest = "cut_until_nslices", default = None,
218
- # help="how many extra slices should be added at the end of each slice")
219
-
220
- # parser.add_option("-v","--verbose",
221
- # action="store_true", dest="verbose", default=True,
222
- # help="make lots of noise [default]")
223
- # parser.add_option("-q","--quiet",
224
- # action="store_false", dest="verbose", default=True,
225
- # help="be quiet")
226
- # (options, args) = parser.parse_args()
227
- # if not options.source_file:
228
- # import os.path
229
- # if len(args) == 1:
230
- # options.source_file = args[0]
231
- # else:
232
- # print "no file name given\n", usage
233
- # sys.exit(1)
234
- # return options, args
235
-
236
- source = new_aubio_source(path, sample_rate, hop_size)
237
- onset = new_aubio_onset('default', 512, hop_size)
238
- aubio_onset_set_minioi_ms(onset, 12.0)
239
- aubio_onset_set_threshold(onset, 0.3)
240
-
241
- timestamps = []
242
- total_frames = 0
243
- # create output for source
244
- samples = new_fvec(hop_size)
245
- total_frames_counter = 0
246
- tmp_read = FFI::MemoryPointer.new(:int)
247
-
248
- loop do
249
- aubio_source_do(source, samples, tmp_read)
250
- end
251
- # if options.beat:
252
- # o = tempo(options.onset_method, bufsize, hopsize)
253
- # else:
254
- # o = onset(options.onset_method, bufsize, hopsize)
255
- # if options.minioi:
256
- # if options.minioi.endswith('ms'):
257
- # o.set_minioi_ms(int(options.minioi[:-2]))
258
- # elif options.minioi.endswith('s'):
259
- # o.set_minioi_s(int(options.minioi[:-1]))
260
- # else:
261
- # o.set_minioi(int(options.minioi))
262
- # o.set_threshold(options.threshold)
263
-
264
- # timestamps = []
265
- # total_frames = 0
266
- # # analyze pass
267
- # while True:
268
- # samples, read = s()
269
- # if o(samples):
270
- # timestamps.append (o.get_last())
271
- # if options.verbose: print "%.4f" % o.get_last_s()
272
- # total_frames += read
273
- # if read < hopsize: break
274
- # del s
275
- # # print some info
276
- # nstamps = len(timestamps)
277
- # duration = float (total_frames) / float(samplerate)
278
- # info = 'found %(nstamps)d timestamps in %(source_file)s' % locals()
279
- # info += ' (total %(duration).2fs at %(samplerate)dHz)\n' % locals()
280
- # sys.stderr.write(info)
281
-
282
- # # cutting pass
283
- # if options.cut and nstamps > 0:
284
- # # generate output files
285
- # from aubio.slicing import slice_source_at_stamps
286
- # timestamps_end = None
287
- # if options.cut_until_nslices and options.cut_until_nsamples:
288
- # print "warning: using cut_until_nslices, but cut_until_nsamples is set"
289
- # if options.cut_until_nsamples:
290
- # timestamps_end = [t + options.cut_until_nsamples for t in timestamps[1:]]
291
- # timestamps_end += [ 1e120 ]
292
- # if options.cut_until_nslices:
293
- # timestamps_end = [t for t in timestamps[1 + options.cut_until_nslices:]]
294
- # timestamps_end += [ 1e120 ] * (options.cut_until_nslices + 1)
295
- # slice_source_at_stamps(source_file, timestamps, timestamps_end = timestamps_end,
296
- # output_dir = options.output_directory,
297
- # samplerate = samplerate)
298
-
299
- # # print some info
300
- # duration = float (total_frames) / float(samplerate)
301
- # info = 'created %(nstamps)d slices from %(source_file)s' % locals()
302
- # info += ' (total %(duration).2fs at %(samplerate)dHz)\n' % locals()
303
- # sys.stderr.write(info)
304
- end
305
-
306
- def self.get_features(path, params = {})
307
- sample_rate = params[:sample_rate] || 44_100
308
- window_size = params[:window_size] || 1024
309
- hop_size = params[:hop_size] || 512
310
-
311
- source = new_aubio_source(path, sample_rate, hop_size)
312
- calculated_sample_rate = aubio_source_get_samplerate(source)
313
- puts "samplerate: #{calculated_sample_rate}"
314
-
315
- onset = new_aubio_onset('default', window_size, hop_size, sample_rate)
316
- aubio_onset_set_minioi_ms(onset, 12.0)
317
- aubio_onset_set_threshold(onset, 0.3)
318
- onsets = []
319
-
320
- pitch = new_aubio_pitch('default', window_size, hop_size, sample_rate)
321
- aubio_pitch_set_unit(pitch, 'Hz')
322
-
323
- # create output for source
324
- samples = new_fvec(hop_size)
325
- # create output for pitch and beat
326
- out_fvec = new_fvec(1)
327
- total_frames_counter = 0
328
- tmp_read = FFI::MemoryPointer.new(:int)
329
-
330
- loop do
331
- aubio_source_do(source, samples, tmp_read)
332
-
333
- aubio_pitch_do(pitch, samples, out_fvec)
334
-
335
- cur_time = total_frames_counter / sample_rate
336
- last_pitch = fvec_get_sample(out_fvec, 0)
337
-
338
- # puts "pitch at #{cur_time} seconds: #{last_pitch} Hz"
339
-
340
- aubio_onset_do(onset, samples, out_fvec)
341
- is_onset = fvec_get_sample(out_fvec, 0)
342
-
343
- if is_onset > 0.0
344
- last_onset = aubio_onset_get_last_s(onset)
345
- onsets << last_onset
346
- puts "onset at #{last_onset}"
347
- end
348
-
349
- read = tmp_read.read_int
350
- total_frames_counter += read
351
- break if read != hop_size
352
- end
353
-
354
- cur_time = total_frames_counter.to_f / sample_rate
355
- puts "total time : #{cur_time} seconds (#{total_frames_counter} frames)"
356
- puts "found #{onsets.length} onsets total"
357
-
358
- # cleanup
359
- del_aubio_source(source)
360
- del_aubio_onset(onset)
361
- del_aubio_pitch(pitch)
362
-
363
- onsets
364
- end
365
-
366
- # # change comments, swap args, convert to sym
367
-
368
- # intPtr = 'int'
369
- # stringPtr = "string" #ref.refType(ref.types.CString);
370
-
371
- # {
372
- # "aubio_tempo_do": [ "void", [ "pointer", "pointer", "pointer"]],
373
- # "aubio_tempo_get_last": [ "int", ["pointer"]],
374
- # "aubio_tempo_get_last_s": [ "float", ["pointer"]],
375
- # "aubio_tempo_get_last_ms": [ "float", ["pointer"]],
376
- # "aubio_tempo_set_silence": [ "int", ["pointer", "float"]],
377
- # "aubio_tempo_get_silence": [ "float", ["pointer"]],
378
- # "aubio_tempo_set_threshold": [ "int", ["pointer", "float"]],
379
- # "aubio_tempo_get_threshold": [ "float", ["pointer"]],
380
- # "aubio_tempo_get_bpm": [ "float", ["pointer"]],
381
- # "aubio_tempo_get_confidence": [ "float", ["pointer"]],
382
- # "del_aubio_tempo": [ "void", ["pointer"]],
383
-
384
- # # beattracking / misc
385
- # "new_aubio_beattracking": [ "pointer", [ "int", "int", "int"]],
386
- # "aubio_beattracking_do": [ "void", [ "pointer", "pointer", "pointer"]],
387
- # "aubio_beattracking_get_bpm": [ "float", ["pointer"]],
388
- # "aubio_filter_do": [ "void", [ "pointer", "pointer" ]],
389
- # "new_aubio_filter_a_weighting": [ "pointer", [ "int" ]],
390
-
391
- # # source
392
- # "new_aubio_source": [ "pointer", [ "string", "int", "int" ]],
393
- # "aubio_source_do": [ "void", [ "pointer", "pointer", intPtr ]],
394
- # "aubio_source_do_multi": [ "void", [ "pointer", "pointer", intPtr ]],
395
- # "aubio_source_get_samplerate": [ "int", [ "pointer" ]],
396
- # "aubio_source_get_channels": [ "int", [ "pointer" ]],
397
- # "aubio_source_seek": [ "int", [ "pointer", "int" ]],
398
- # "aubio_source_close": [ "int", [ "pointer" ]],
399
- # "del_aubio_source": [ "void", [ "pointer" ]],
400
-
401
- # # sink
402
- # "new_aubio_sink": [ "pointer", [ "string", "int" ]],
403
- # "aubio_sink_preset_samplerate": [ "void", [ "pointer", "int" ]],
404
- # "aubio_sink_preset_channels": [ "void", [ "pointer", "int" ]],
405
- # "aubio_sink_get_samplerate": [ "int", [ "pointer" ]],
406
- # "aubio_sink_get_channels": [ "int", [ "pointer" ]],
407
- # "aubio_sink_do": ["void", ["pointer", "pointer", "int"]],
408
- # "aubio_sink_do_multi": ["void", ["pointer", "pointer", "int"]],
409
- # "aubio_sink_close": [ "int", [ "pointer" ]],
410
- # "del_aubio_sink": [ "void", [ "pointer" ]],
411
-
412
- # # onset
413
- # "new_aubio_onset": [ "pointer", [ "string", "int", "int", "int"]],
414
- # "aubio_onset_do": [ "void", [ "pointer", "pointer", "pointer"]],
415
- # "aubio_onset_get_last": [ "int", ["pointer"]],
416
- # "aubio_onset_get_last_s": [ "float", ["pointer"]],
417
- # "aubio_onset_get_last_ms": [ "float", ["pointer"]],
418
- # "aubio_onset_set_silence": [ "int", ["pointer", "float"]],
419
- # "aubio_onset_get_silence": [ "float", ["pointer"]],
420
- # "aubio_onset_get_descriptor": [ "float", ["pointer"]],
421
- # "aubio_onset_get_thresholded_descriptor": [ "float", ["pointer"]],
422
- # "aubio_onset_set_threshold": [ "int", ["pointer", "float"]],
423
- # "aubio_onset_set_minioi": [ "int", ["pointer", "int"]],
424
- # "aubio_onset_set_minioi_s": [ "int", ["pointer", "int"]],
425
- # "aubio_onset_set_minioi_ms": [ "int", ["pointer", "float"]],
426
- # "aubio_onset_set_delay": [ "int", ["pointer", "int"]],
427
- # "aubio_onset_set_delay_s": [ "int", ["pointer", "int"]],
428
- # "aubio_onset_set_delay_ms": [ "int", ["pointer", "float"]],
429
- # "aubio_onset_get_minioi": [ "int", ["pointer"]],
430
- # "aubio_onset_get_minioi_s": [ "float", ["pointer"]],
431
- # "aubio_onset_get_minioi_ms": [ "float", ["pointer"]],
432
- # "aubio_onset_get_delay": [ "int", ["pointer"]],
433
- # "aubio_onset_get_delay_s": [ "float", ["pointer"]],
434
- # "aubio_onset_get_delay_ms": [ "float", ["pointer"]],
435
- # "aubio_onset_get_threshold": [ "float", ["pointer"]],
436
- # "del_aubio_onset": [ "void", ["pointer"]],
437
-
438
- # # pitch
439
- # "new_aubio_pitch": [ "pointer", [ "string", "int", "int", "int"]],
440
- # "aubio_pitch_do": ["void", ["pointer", "pointer", "pointer"]],
441
- # "aubio_pitch_set_tolerance": [ "int", ["pointer", "int"]],
442
- # "aubio_pitch_set_unit": ["int", ["pointer", "string"]],
443
- # "aubio_pitch_set_silence": ["int", ["pointer", "float"]],
444
- # "aubio_pitch_get_silence": ["float", ["pointer"]],
445
- # "aubio_pitch_get_confidence": ["float", ["pointer"]],
446
- # "del_aubio_pitch": [ "void", ["pointer"]],
447
-
448
- # # fvec
449
- # "new_fvec": [ "pointer", [ "int" ]],
450
- # "del_fvec": [ "void", [ "pointer" ]],
451
- # "fvec_get_sample": [ "float", [ "pointer", "int" ]],
452
- # "fvec_set_sample": [ "void", [ "pointer", "float", "int" ]],
453
- # "fvec_get_data": [ "float", [ "pointer" ]],
454
- # "fvec_print": [ "void", [ "pointer" ]],
455
- # "fvec_set_all": [ "void", [ "pointer", "float" ]],
456
- # "fvec_zeros": [ "void", [ "pointer" ]],
457
- # "fvec_rev": [ "void", [ "pointer" ]],
458
- # "fvec_weight": [ "void", [ "pointer", "pointer" ]],
459
- # "fvec_copy": [ "void", [ "pointer", "pointer" ]],
460
- # "fvec_ones": [ "void", [ "pointer" ]],
461
- # }.each do |k,v|
462
- # puts "attach_function :#{k.to_sym}, #{v.last.map(&:to_sym)}, :#{v.first.to_sym}"
463
- # end
464
- end
465
-
466
- puts Aubio.get_features('/Applications/Sonic Pi.app/etc/samples/loop_amen.flac', hop_size: 256, sample_rate: 44_100).inspect