# 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