Class: DSP::Waveform

Inherits:
Data
  • Object
show all
Defined in:
lib/dsprb/waveform.rb,
sig/dsprb.rbs

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(samples:, sample_rate:) ⇒ Waveform

Returns a new instance of Waveform.

Raises:

  • (ArgumentError)


5
6
7
8
9
10
# File 'lib/dsprb/waveform.rb', line 5

def initialize(samples:, sample_rate:)
  rate = Float(sample_rate)
  raise ArgumentError, "sample rate must be positive, got #{rate}" unless rate.positive?

  super(samples: samples, sample_rate: rate)
end

Instance Attribute Details

#sample_rateObject (readonly)

Returns the value of attribute sample_rate

Returns:

  • (Object)

    the current value of sample_rate



4
5
6
# File 'lib/dsprb/waveform.rb', line 4

def sample_rate
  @sample_rate
end

#samplesObject (readonly)

Returns the value of attribute samples

Returns:

  • (Object)

    the current value of samples



4
5
6
# File 'lib/dsprb/waveform.rb', line 4

def samples
  @samples
end

Class Method Details

.newWaveform

Parameters:

  • samples: (samples)
  • sample_rate: (::Numeric)

Returns:



60
# File 'sig/dsprb.rbs', line 60

def self.new: (samples: samples, sample_rate: ::Numeric) -> Waveform

Instance Method Details

#duration::Float

Returns:

  • (::Float)


14
# File 'lib/dsprb/waveform.rb', line 14

def duration = samples.length / sample_rate

#empty?Boolean

Returns:

  • (Boolean)


18
# File 'lib/dsprb/waveform.rb', line 18

def empty? = samples.empty?

#frames(window:, hop:) ⇒ ::Array[frame]

Parameters:

  • window: (::Integer)
  • hop: (::Integer)

Returns:

  • (::Array[frame])


20
# File 'lib/dsprb/waveform.rb', line 20

def frames(window:, hop:) = Framing.frames(samples, window: window, hop: hop)

#length::Integer

Returns:

  • (::Integer)


12
# File 'lib/dsprb/waveform.rb', line 12

def length = samples.length

#nyquist::Float

Returns:

  • (::Float)


16
# File 'lib/dsprb/waveform.rb', line 16

def nyquist = sample_rate / 2.0

#seconds_to_samples(seconds) ⇒ ::Integer

Parameters:

  • (::Numeric)

Returns:

  • (::Integer)


22
# File 'lib/dsprb/waveform.rb', line 22

def seconds_to_samples(seconds) = (seconds * sample_rate).round

#to_h::Hash[::Symbol, untyped]

Returns:

  • (::Hash[::Symbol, untyped])


68
# File 'sig/dsprb.rbs', line 68

def to_h: () -> ::Hash[::Symbol, untyped]

#withWaveform

Parameters:

  • (Object)

Returns:



67
# File 'sig/dsprb.rbs', line 67

def with: (**untyped) -> Waveform