sndfile 0.2.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: c232895c9482256a13565c57f1b26856ac2ccd9c
4
+ data.tar.gz: bb4388474d9bfbab60c29f1eb8e42881bd96d44a
5
+ SHA512:
6
+ metadata.gz: ea60311ff4bbe116e07ffb3f4ea6f29e8d72e9429090223594a0ce8773b9222645815433bd25b1c1a897b9bcbef49f70a1e16d736de9516d70b5a729524a79b0
7
+ data.tar.gz: 7c173364cdf387773e3896c8a1cc6b526af6751e67f90510561cd0d251c7867b93587b1017dda8c1e6cbdccc579997c78651075217a1e2c7382488c9e0645ef8
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format d
2
+ --color
@@ -3,8 +3,8 @@ before_install:
3
3
  - sudo apt-get update -qq
4
4
  - sudo apt-get install -qq libffi-dev libffi-ruby libgsl0-dev libsndfile1-dev
5
5
  rvm:
6
- - 1.8.7
7
6
  - 1.9.3
7
+ - 2.0.0
8
8
  notifications:
9
9
  recipients:
10
10
  - ronen@barzel.org
data/README.md CHANGED
@@ -31,21 +31,32 @@ or, in a Gemfile
31
31
 
32
32
  Usage
33
33
  =====
34
+
34
35
  Here's a simple example, that reads an arbitrary source file and produces a WAV file at half the volume:
35
36
 
36
37
  fin = Sndfile::File.new(inpath)
37
- Sndfile::File.open(outpath, :mode => :WRITE, :format => :WAV, :encoding => :PCM_16, :channels => fin.channels, :samplerate => fin.samplerate) do |fout|
38
+ Sndfile::File.open(outpath, :mode => :WRITE, :format => :WAV, :encoding => :PCM_16, :channels => fin.info.channels, :samplerate => fin.info.samplerate) do |fout|
38
39
  while data = fin.read(10000)
39
40
  fout.write(data * 0.5)
40
41
  end
41
42
  end
42
43
 
43
- See the [RDOC](http://rubydoc.info/gems/sndfile) for more info.
44
+ The audio file info, available as `Sndfile::File#info` as per the above example, is an instance of `Sndfile::Info`. You can also query it directly for a file:
45
+
46
+ info = Sndfile::File.info(filepath) #=> an instance of Sndfile::Info
47
+ # => info.format
48
+ # => info.encoding
49
+ # => info.endian
50
+ # => info.frames
51
+ # => info.samplerate
52
+ # => info.channels
53
+
54
+ See the [RDOC](http://rubydoc.info/gems/sndfile) for complete details
44
55
 
45
56
  Compatibility
46
57
  =============
47
58
 
48
- Currently works with ruby 1.8.7 and 1.9.3
59
+ Known to work with MRI ruby 1.9.3, and 2.0.0
49
60
 
50
61
 
51
62
  History
@@ -53,7 +64,8 @@ History
53
64
 
54
65
  Release notes:
55
66
 
56
- * 0.2.0 - support ruby 1.8.7. thanks to [youpy](https://github.com/youpy)
67
+ * 1.0.0 - Add Sndfile::Info. Deprecate individual accessors. No longer support ruby 1.8.7
68
+ * 0.2.0 - Support ruby 1.8.7. Thanks to [youpy](https://github.com/youpy)
57
69
  * 0.1.3 - Back to ruby-gsl-ng: memory leaks fixed
58
70
  * 0.1.2 - Use ruby-gsl-ngx to avoid memory leaks
59
71
  * 0.1.1 - Clean up vestigial includes in integration test
@@ -6,4 +6,5 @@ require 'gsl-ng/matrix'
6
6
  require 'sndfile/enums'
7
7
  require 'sndfile/error'
8
8
  require 'sndfile/sndfile_api'
9
+ require 'sndfile/info'
9
10
  require 'sndfile/file'
@@ -3,6 +3,8 @@ module Sndfile
3
3
  class File
4
4
  include SndfileApi
5
5
 
6
+ attr_reader :info
7
+
6
8
  #
7
9
  # Without a block, this is the same as File.new(path, opts).
8
10
  # With a block, yields the File object to the block and ensures that
@@ -21,6 +23,13 @@ module Sndfile
21
23
  end
22
24
  end
23
25
 
26
+ # Returns the `Info` for a file.
27
+ #
28
+ # Equivalent to File.open(path) { |f| f.info }
29
+ def self.info(path)
30
+ open(path) { |f| f.info }
31
+ end
32
+
24
33
  #
25
34
  # Create a File instance. Options are:
26
35
  #
@@ -46,13 +55,15 @@ module Sndfile
46
55
  )
47
56
 
48
57
  @path = path
49
- @sfinfo = SfInfo.new
58
+ sfinfo = SfInfo.new
50
59
  if opts.mode == :WRITE or opts.format == :RAW
51
- @sfinfo[:format] = Enums::Format[opts.format]|Enums::Encoding[opts.encoding]|Enums::Endian[opts.endian]
52
- @sfinfo[:channels] = opts.channels
53
- @sfinfo[:samplerate] = opts.samplerate
60
+ sfinfo[:format] = Enums::Format[opts.format]|Enums::Encoding[opts.encoding]|Enums::Endian[opts.endian]
61
+ sfinfo[:channels] = opts.channels
62
+ sfinfo[:samplerate] = opts.samplerate
54
63
  end
55
- @sfpointer = sf_open(path.to_s, opts.mode, @sfinfo)
64
+ @sfpointer = sf_open(path.to_s, opts.mode, sfinfo)
65
+ @info = Info.from_sfinfo(sfinfo)
66
+
56
67
  check_error
57
68
  sf_command @sfpointer, :SFC_SET_CLIPPING, nil, 1
58
69
  check_error
@@ -65,90 +76,13 @@ module Sndfile
65
76
  check_error sf_close(@sfpointer)
66
77
  end
67
78
 
68
- # Returns the format of the file, which is one of
69
- #
70
- # :WAV - Microsoft WAV format (little endian).
71
- # :AIFF - Apple/SGI AIFF format (big endian).
72
- # :AU - Sun/NeXT AU format (big endian).
73
- # :RAW - RAW PCM data.
74
- # :PAF - Ensoniq PARIS file format.
75
- # :SVX - Amiga IFF / SVX8 / SV16 format.
76
- # :NIST - Sphere NIST format.
77
- # :VOC - VOC files.
78
- # :IRCAM - Berkeley/IRCAM/CARL
79
- # :W64 - Sonic Foundry's 64 bit RIFF/WAV
80
- # :MAT4 - Matlab (tm) V4.2 / GNU Octave 2.0
81
- # :MAT5 - Matlab (tm) V5.0 / GNU Octave 2.1
82
- # :PVF - Portable Voice Format
83
- # :XI - Fasttracker 2 Extended Instrument
84
- # :HTK - HMM Tool Kit format
85
- # :SDS - Midi Sample Dump Standard
86
- # :AVR - Audio Visual Research
87
- # :WAVEX - MS WAVE with WAVEFORMATEX
88
- # :SD2 - Sound Designer 2
89
- # :FLAC - FLAC lossless file format
90
- # :CAF - Core Audio File format
91
- # :WVE - Psion WVE format
92
- # :OGG - Xiph OGG container
93
- # :MPC2K - Akai MPC 2000 sampler
94
- # :RF64 - RF64 WAV file
95
- def format
96
- Format[@sfinfo[:format] & FORMAT_MASK]
97
- end
98
-
99
- # Returns the encoding of the file data, which is one of:
100
- #
101
- # :PCM_S8 - Signed 8 bit data
102
- # :PCM_16 - Signed 16 bit data
103
- # :PCM_24 - Signed 24 bit data
104
- # :PCM_32 - Signed 32 bit data
105
- # :PCM_U8 - Unsigned 8 bit data (WAV and RAW only)
106
- # :FLOAT - 32 bit float data
107
- # :DOUBLE - 64 bit float data
108
- # :ULAW - U-Law encoded.
109
- # :ALAW - A-Law encoded.
110
- # :IMA_ADPCM - IMA ADPCM.
111
- # :MS_ADPCM - Microsoft ADPCM.
112
- # :GSM610 - GSM 6.10 encoding.
113
- # :VOX_ADPCM - Oki Dialogic ADPCM encoding.
114
- # :G721_32 - 32kbs G721 ADPCM encoding.
115
- # :G723_24 - 24kbs G723 ADPCM encoding.
116
- # :G723_40 - 40kbs G723 ADPCM encoding.
117
- # :DWVW_12 - 12 bit Delta Width Variable Word encoding.
118
- # :DWVW_16 - 16 bit Delta Width Variable Word encoding.
119
- # :DWVW_24 - 24 bit Delta Width Variable Word encoding.
120
- # :DWVW_N - N bit Delta Width Variable Word encoding.
121
- # :DPCM_8 - 8 bit differential PCM (XI only)
122
- # :DPCM_16 - 16 bit differential PCM (XI only)
123
- # :VORBIS - Xiph Vorbis encoding.
124
- def encoding
125
- Encoding[@sfinfo[:format] & ENCODING_MASK]
126
- end
127
-
128
- # Returns the endian-ness of the data, one of:
129
- #
130
- # :FILE - Default file endian-ness.
131
- # :LITTLE - Force little endian-ness.
132
- # :BIG - Force big endian-ness.
133
- # :CPU - Force CPU endian-ness.
134
- def endian
135
- Endian[@sfinfo[:format] & ENDIAN_MASK]
136
- end
137
-
138
- # Returns the number of frames (samples) in the file
139
- def frames
140
- @sfinfo[:frames]
141
- end
142
-
143
- # Returns the sample rate, frames per second
144
- def samplerate
145
- @sfinfo[:samplerate]
79
+ Info.keys.each do |method|
80
+ define_method method do
81
+ warn "[DEPRECATION]: Sndfile::File: `#{method}` is deprecated. Use `info.#{method}` instead"
82
+ info.send method
83
+ end
146
84
  end
147
85
 
148
- # Returns the number of channels of data
149
- def channels
150
- @sfinfo[:channels]
151
- end
152
86
 
153
87
  # Reads frames from the file, returning the data in a GSLng::Matrix of
154
88
  # dimensions frames x channels. (For convenience, the height and width
@@ -162,14 +96,14 @@ module Sndfile
162
96
  # May raise Sndfile::Error in case of error.
163
97
  def read(nframes)
164
98
 
165
- buf = GSLng::Matrix.new(nframes, channels)
99
+ buf = GSLng::Matrix.new(nframes, info.channels)
166
100
 
167
101
  count = sf_readf_double @sfpointer, buf.data_ptr, nframes
168
102
  check_error
169
103
  case count
170
104
  when 0 then nil
171
105
  when nframes then buf
172
- else buf.view(0, 0, count, channels)
106
+ else buf.view(0, 0, count, info.channels)
173
107
  end
174
108
  end
175
109
 
@@ -0,0 +1,104 @@
1
+ require 'key_struct'
2
+
3
+ module Sndfile
4
+
5
+ # The Info class encapsulates the metdata about the audio contents.
6
+
7
+ class Info < KeyStruct[:format, :encoding, :endian, :frames, :samplerate, :channels]
8
+ include Enums
9
+
10
+ # :nodoc:
11
+ def self.from_sfinfo(sfinfo)
12
+ new(
13
+ :format => Format[sfinfo[:format] & FORMAT_MASK],
14
+ :encoding => Encoding[sfinfo[:format] & ENCODING_MASK],
15
+ :endian => Endian[sfinfo[:format] & ENDIAN_MASK],
16
+ :frames => sfinfo[:frames],
17
+ :samplerate => sfinfo[:samplerate],
18
+ :channels => sfinfo[:channels]
19
+ )
20
+ end
21
+
22
+ ##
23
+ # :attr_accessor: format
24
+ # The file format, expressed as one of the following symbols:
25
+ #
26
+ # :WAV - Microsoft WAV format (little endian).
27
+ # :AIFF - Apple/SGI AIFF format (big endian).
28
+ # :AU - Sun/NeXT AU format (big endian).
29
+ # :RAW - RAW PCM data.
30
+ # :PAF - Ensoniq PARIS file format.
31
+ # :SVX - Amiga IFF / SVX8 / SV16 format.
32
+ # :NIST - Sphere NIST format.
33
+ # :VOC - VOC files.
34
+ # :IRCAM - Berkeley/IRCAM/CARL
35
+ # :W64 - Sonic Foundry's 64 bit RIFF/WAV
36
+ # :MAT4 - Matlab (tm) V4.2 / GNU Octave 2.0
37
+ # :MAT5 - Matlab (tm) V5.0 / GNU Octave 2.1
38
+ # :PVF - Portable Voice Format
39
+ # :XI - Fasttracker 2 Extended Instrument
40
+ # :HTK - HMM Tool Kit format
41
+ # :SDS - Midi Sample Dump Standard
42
+ # :AVR - Audio Visual Research
43
+ # :WAVEX - MS WAVE with WAVEFORMATEX
44
+ # :SD2 - Sound Designer 2
45
+ # :FLAC - FLAC lossless file format
46
+ # :CAF - Core Audio File format
47
+ # :WVE - Psion WVE format
48
+ # :OGG - Xiph OGG container
49
+ # :MPC2K - Akai MPC 2000 sampler
50
+ # :RF64 - RF64 WAV file
51
+ #
52
+
53
+ ##
54
+ # :attr_accessor: encoding
55
+ # The file encoding, expressed as one of the following symbols:
56
+ #
57
+ # :PCM_S8 - Signed 8 bit data
58
+ # :PCM_16 - Signed 16 bit data
59
+ # :PCM_24 - Signed 24 bit data
60
+ # :PCM_32 - Signed 32 bit data
61
+ # :PCM_U8 - Unsigned 8 bit data (WAV and RAW only)
62
+ # :FLOAT - 32 bit float data
63
+ # :DOUBLE - 64 bit float data
64
+ # :ULAW - U-Law encoded.
65
+ # :ALAW - A-Law encoded.
66
+ # :IMA_ADPCM - IMA ADPCM.
67
+ # :MS_ADPCM - Microsoft ADPCM.
68
+ # :GSM610 - GSM 6.10 encoding.
69
+ # :VOX_ADPCM - Oki Dialogic ADPCM encoding.
70
+ # :G721_32 - 32kbs G721 ADPCM encoding.
71
+ # :G723_24 - 24kbs G723 ADPCM encoding.
72
+ # :G723_40 - 40kbs G723 ADPCM encoding.
73
+ # :DWVW_12 - 12 bit Delta Width Variable Word encoding.
74
+ # :DWVW_16 - 16 bit Delta Width Variable Word encoding.
75
+ # :DWVW_24 - 24 bit Delta Width Variable Word encoding.
76
+ # :DWVW_N - N bit Delta Width Variable Word encoding.
77
+ # :DPCM_8 - 8 bit differential PCM (XI only)
78
+ # :DPCM_16 - 16 bit differential PCM (XI only)
79
+ # :VORBIS - Xiph Vorbis encoding.
80
+
81
+ ##
82
+ # :attr_accessor: endian
83
+ # The endian-ness of the data, expressed as one of the following symbols:
84
+ #
85
+ # :FILE - Default file endian-ness.
86
+ # :LITTLE - Force little endian-ness.
87
+ # :BIG - Force big endian-ness.
88
+ # :CPU - Force CPU endian-ness.
89
+
90
+ ##
91
+ # :attr_accessor: frames
92
+ # The number of frames (samples) in the file
93
+
94
+ ##
95
+ # :attr_accessor: samplerate
96
+ # The sample rate, frames per second
97
+
98
+ ##
99
+ # :attr_accessor: channels
100
+ # Returns the number of channels of data, e.g. 1 for mono and 2 for
101
+ # stereo
102
+
103
+ end
104
+ end
@@ -1,3 +1,3 @@
1
1
  module Sndfile
2
- VERSION = "0.2.0"
2
+ VERSION = "1.0.0"
3
3
  end
@@ -15,9 +15,11 @@ Gem::Specification.new do |gem|
15
15
  gem.require_paths = ["lib"]
16
16
  gem.version = Sndfile::VERSION
17
17
 
18
+ gem.required_ruby_version = ">= 1.9.2"
18
19
  gem.add_dependency("ffi")
19
20
  gem.add_dependency("ruby-gsl-ng")
20
21
  gem.add_dependency("hash_keyword_args")
22
+ gem.add_dependency("key_struct")
21
23
 
22
24
  gem.add_development_dependency 'rake'
23
25
  gem.add_development_dependency 'rdoc'
@@ -1,8 +1,27 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Sndfile do
3
+ describe Sndfile::File do
4
4
 
5
- it "should return correct file info" do
5
+ it "File.info returns correct file info" do
6
+ info = Sndfile::File.info(INPUTS_DIR + "ComputerMagic.wav")
7
+ info.format.should == :WAV
8
+ info.encoding.should == :PCM_16
9
+ info.endian.should == :FILE
10
+ info.frames.should == 223451
11
+ info.samplerate.should == 44100
12
+ info.channels.should == 2
13
+ end
14
+
15
+ it "File#info returns correct info structure" do
16
+ file = INPUTS_DIR + "ComputerMagic.wav"
17
+ info = Sndfile::File.info(file)
18
+ Sndfile::File.open(file) do |f|
19
+ f.info.should == info
20
+ end
21
+ end
22
+
23
+ it "deprecates info methods" do
24
+ Sndfile::File.any_instance.should_receive(:warn).with(/DEPRECATION/).exactly(6).times
6
25
  Sndfile::File.open(INPUTS_DIR + "ComputerMagic.wav") do |f|
7
26
  f.format.should == :WAV
8
27
  f.encoding.should == :PCM_16
@@ -13,7 +32,7 @@ describe Sndfile do
13
32
  end
14
33
  end
15
34
 
16
- it "should raise an error when it can't open the file" do
35
+ it "raises an error when it can't open the file" do
17
36
  expect { Sndfile::File.open("/no/such/file") }.to raise_error Sndfile::Error
18
37
  end
19
38
 
@@ -7,7 +7,7 @@ describe "Integration" do
7
7
  outpath, refpath = out_ref_paths("copy.wav")
8
8
 
9
9
  fin = Sndfile::File.open(inpath)
10
- Sndfile::File.open(outpath, :mode => :WRITE, :format => :WAV, :encoding => :PCM_16, :channels => 2, :samplerate => fin.samplerate) do |fout|
10
+ Sndfile::File.open(outpath, :mode => :WRITE, :format => :WAV, :encoding => :PCM_16, :channels => 2, :samplerate => fin.info.samplerate) do |fout|
11
11
  while data = fin.read(12345)
12
12
  fout.write(data)
13
13
  end
@@ -21,13 +21,13 @@ describe "Integration" do
21
21
  outpath, refpath = out_ref_paths("mix.wav")
22
22
 
23
23
  fin1 = Sndfile::File.open(inpath1)
24
- fin1.channels.should == 2
24
+ fin1.info.channels.should == 2
25
25
 
26
26
  fin2 = Sndfile::File.open(inpath2)
27
- fin2.channels.should == 1
28
- fin1.samplerate.should == fin2.samplerate
27
+ fin2.info.channels.should == 1
28
+ fin1.info.samplerate.should == fin2.info.samplerate
29
29
 
30
- Sndfile::File.open(outpath, :mode => :WRITE, :format => :WAV, :encoding => :PCM_16, :channels => 2, :samplerate => fin1.samplerate) do |fout|
30
+ Sndfile::File.open(outpath, :mode => :WRITE, :format => :WAV, :encoding => :PCM_16, :channels => 2, :samplerate => fin1.info.samplerate) do |fout|
31
31
  while true
32
32
  a = fin1.read(10000)
33
33
  b = fin2.read(10000)
@@ -60,7 +60,7 @@ describe "Integration" do
60
60
  outpath, refpath = out_ref_paths("half.wav")
61
61
 
62
62
  fin = Sndfile::File.open(inpath)
63
- Sndfile::File.open(outpath, :mode => :WRITE, :format => :WAV, :encoding => :PCM_16, :channels => 2, :samplerate => fin.samplerate) do |fout|
63
+ Sndfile::File.open(outpath, :mode => :WRITE, :format => :WAV, :encoding => :PCM_16, :channels => 2, :samplerate => fin.info.samplerate) do |fout|
64
64
  while data = fin.read(10000)
65
65
  fout.write(data * 0.5)
66
66
  end
metadata CHANGED
@@ -1,142 +1,139 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sndfile
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
5
- prerelease:
4
+ version: 1.0.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - ronen barzel
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-01-20 00:00:00.000000000 Z
11
+ date: 2013-08-11 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: ffi
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - '>='
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - '>='
28
25
  - !ruby/object:Gem::Version
29
26
  version: '0'
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: ruby-gsl-ng
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - '>='
36
32
  - !ruby/object:Gem::Version
37
33
  version: '0'
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - '>='
44
39
  - !ruby/object:Gem::Version
45
40
  version: '0'
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: hash_keyword_args
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ! '>='
45
+ - - '>='
52
46
  - !ruby/object:Gem::Version
53
47
  version: '0'
54
48
  type: :runtime
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ! '>='
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: key_struct
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
60
67
  - !ruby/object:Gem::Version
61
68
  version: '0'
62
69
  - !ruby/object:Gem::Dependency
63
70
  name: rake
64
71
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
72
  requirements:
67
- - - ! '>='
73
+ - - '>='
68
74
  - !ruby/object:Gem::Version
69
75
  version: '0'
70
76
  type: :development
71
77
  prerelease: false
72
78
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
79
  requirements:
75
- - - ! '>='
80
+ - - '>='
76
81
  - !ruby/object:Gem::Version
77
82
  version: '0'
78
83
  - !ruby/object:Gem::Dependency
79
84
  name: rdoc
80
85
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
86
  requirements:
83
- - - ! '>='
87
+ - - '>='
84
88
  - !ruby/object:Gem::Version
85
89
  version: '0'
86
90
  type: :development
87
91
  prerelease: false
88
92
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
93
  requirements:
91
- - - ! '>='
94
+ - - '>='
92
95
  - !ruby/object:Gem::Version
93
96
  version: '0'
94
97
  - !ruby/object:Gem::Dependency
95
98
  name: rspec
96
99
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
100
  requirements:
99
- - - ! '>='
101
+ - - '>='
100
102
  - !ruby/object:Gem::Version
101
103
  version: '0'
102
104
  type: :development
103
105
  prerelease: false
104
106
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
107
  requirements:
107
- - - ! '>='
108
+ - - '>='
108
109
  - !ruby/object:Gem::Version
109
110
  version: '0'
110
111
  - !ruby/object:Gem::Dependency
111
112
  name: simplecov
112
113
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
114
  requirements:
115
- - - ! '>='
115
+ - - '>='
116
116
  - !ruby/object:Gem::Version
117
117
  version: '0'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
121
  requirements:
123
- - - ! '>='
122
+ - - '>='
124
123
  - !ruby/object:Gem::Version
125
124
  version: '0'
126
125
  - !ruby/object:Gem::Dependency
127
126
  name: simplecov-gem-adapter
128
127
  requirement: !ruby/object:Gem::Requirement
129
- none: false
130
128
  requirements:
131
- - - ! '>='
129
+ - - '>='
132
130
  - !ruby/object:Gem::Version
133
131
  version: '0'
134
132
  type: :development
135
133
  prerelease: false
136
134
  version_requirements: !ruby/object:Gem::Requirement
137
- none: false
138
135
  requirements:
139
- - - ! '>='
136
+ - - '>='
140
137
  - !ruby/object:Gem::Version
141
138
  version: '0'
142
139
  description: Ruby wrapper for libsndfile. Reads/writes data as GSL matrices, to allow
@@ -148,6 +145,7 @@ extensions: []
148
145
  extra_rdoc_files: []
149
146
  files:
150
147
  - .gitignore
148
+ - .rspec
151
149
  - .travis.yml
152
150
  - Gemfile
153
151
  - README.md
@@ -157,6 +155,7 @@ files:
157
155
  - lib/sndfile/enums.rb
158
156
  - lib/sndfile/error.rb
159
157
  - lib/sndfile/file.rb
158
+ - lib/sndfile/info.rb
160
159
  - lib/sndfile/sndfile_api.rb
161
160
  - lib/sndfile/version.rb
162
161
  - sndfile.gemspec
@@ -170,27 +169,26 @@ files:
170
169
  - spec/spec_helper.rb
171
170
  homepage: https://github.com/ronen/sndfile
172
171
  licenses: []
172
+ metadata: {}
173
173
  post_install_message:
174
174
  rdoc_options: []
175
175
  require_paths:
176
176
  - lib
177
177
  required_ruby_version: !ruby/object:Gem::Requirement
178
- none: false
179
178
  requirements:
180
- - - ! '>='
179
+ - - '>='
181
180
  - !ruby/object:Gem::Version
182
- version: '0'
181
+ version: 1.9.2
183
182
  required_rubygems_version: !ruby/object:Gem::Requirement
184
- none: false
185
183
  requirements:
186
- - - ! '>='
184
+ - - '>='
187
185
  - !ruby/object:Gem::Version
188
186
  version: '0'
189
187
  requirements: []
190
188
  rubyforge_project:
191
- rubygems_version: 1.8.24
189
+ rubygems_version: 2.0.3
192
190
  signing_key:
193
- specification_version: 3
191
+ specification_version: 4
194
192
  summary: Ruby wrapper for libsndfile. Reads/writes data as GSL matrices, to allow
195
193
  fast processing.
196
194
  test_files: