# File lib/audio/sndfile.rb, line 38 def initialize(path, mode='r', info=nil) if info.nil? info = SF_INFO.new end modes = {:r => SFM_READ, :w => SFM_WRITE, :rw => SFM_RDWR} unless Numeric === mode mode = modes[mode.to_sym] end unless [SFM_READ, SFM_WRITE, SFM_RDWR].include? mode raise ArgumentError, "Invalid mode" end sf = Sndfile.sf_open(path.to_s, mode, info) @sf = sf @info = info @mode = modes.invert[mode] if block_given? yield self self.close end end